AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
ntv2routingexpert.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef NTV2ROUTINGEXPERT_H
9 #define NTV2ROUTINGEXPERT_H
10 
11 #include "ntv2signalrouter.h"
12 
13 #include "ajabase/system/lock.h"
15 
18 
20 {
21  public:
22  friend class CNTV2SignalRouter;
23 
24  static RoutingExpertPtr GetInstance(const bool inCreateIfNecessary = true);
25  static bool DisposeInstance(void);
26  static uint32_t NumInstances(void);
27 
28  private:
29  RoutingExpert();
30  public:
32 
33  protected:
34  std::string InputXptToString (const NTV2InputXptID inInputXpt) const;
35  std::string OutputXptToString (const NTV2OutputXptID inOutputXpt) const;
36  NTV2InputXptID StringToInputXpt (const std::string & inStr) const;
37  NTV2OutputXptID StringToOutputXpt (const std::string & inStr) const;
38  NTV2WidgetType WidgetIDToType (const NTV2WidgetID inWidgetID);
39  NTV2Channel WidgetIDToChannel(const NTV2WidgetID inWidgetID);
40  NTV2WidgetID WidgetIDFromTypeAndChannel(const NTV2WidgetType inWidgetType, const NTV2Channel inChannel);
41  bool GetWidgetsForOutput (const NTV2OutputXptID inOutputXpt, NTV2WidgetIDSet & outWidgetIDs) const;
42  bool GetWidgetsForInput (const NTV2InputXptID inInputXpt, NTV2WidgetIDSet & outWidgetIDs) const;
43  bool GetWidgetInputs (const NTV2WidgetID inWidgetID, NTV2InputXptIDSet & outInputs) const;
44  bool GetWidgetOutputs (const NTV2WidgetID inWidgetID, NTV2OutputXptIDSet & outOutputs) const;
45  bool IsOutputXptValid (const NTV2OutputXptID inOutputXpt) const;
46  bool IsRGBOnlyInputXpt (const NTV2InputXptID inInputXpt) const;
47  bool IsYUVOnlyInputXpt (const NTV2InputXptID inInputXpt) const;
48  bool IsKeyInputXpt (const NTV2InputXptID inInputXpt) const;
49  bool IsSDIWidget(const NTV2WidgetType inWidgetType) const;
50  bool IsSDIInWidget(const NTV2WidgetType inWidgetType) const;
51  bool IsSDIOutWidget(const NTV2WidgetType inWidgetType) const;
52  bool Is3GSDIWidget(const NTV2WidgetType inWidgetType) const;
53  bool Is12GSDIWidget(const NTV2WidgetType inWidgetType) const;
54  bool IsDualLinkWidget(const NTV2WidgetType inWidgetType) const;
55  bool IsDualLinkInWidget(const NTV2WidgetType inWidgetType) const;
56  bool IsDualLinkOutWidget(const NTV2WidgetType inWidgetType) const;
57  bool IsHDMIWidget(const NTV2WidgetType inWidgetType) const;
58  bool IsHDMIInWidget(const NTV2WidgetType inWidgetType) const;
59  bool IsHDMIOutWidget(const NTV2WidgetType inWidgetType) const;
60 
61  private:
62  void InitInputXpt2String(void);
63  void InitOutputXpt2String(void);
64  void InitInputXpt2WidgetIDs(void);
65  void InitOutputXpt2WidgetIDs(void);
66  void InitWidgetIDToChannels(void);
67  void InitWidgetIDToWidgetTypes(void);
68 
69  mutable AJALock gLock;
70  String2InputXpt gString2InputXpt;
71  InputXpt2String gInputXpt2String;
72  InputXpt2WidgetIDs gInputXpt2WidgetIDs;
73  String2OutputXpt gString2OutputXpt;
74  OutputXpt2String gOutputXpt2String;
75  OutputXpt2WidgetIDs gOutputXpt2WidgetIDs;
76  Widget2OutputXpts gWidget2OutputXpts;
77  Widget2InputXpts gWidget2InputXpts;
78  Widget2Channels gWidget2Channels;
79  Widget2Types gWidget2Types;
80  // NTV2InputXptID Helpers
81  NTV2InputXptIDSet gRGBOnlyInputXpts;
82  NTV2InputXptIDSet gYUVOnlyInputXpts;
83  NTV2InputXptIDSet gKeyInputXpts;
84  // NTV2WidgetType Helpers
85  NTV2WidgetTypeSet gSDIWidgetTypes;
86  NTV2WidgetTypeSet gSDI3GWidgetTypes;
87  NTV2WidgetTypeSet gSDI12GWidgetTypes;
88  NTV2WidgetTypeSet gSDIInWidgetTypes;
89  NTV2WidgetTypeSet gSDIOutWidgetTypes;
90  NTV2WidgetTypeSet gDualLinkWidgetTypes;
91  NTV2WidgetTypeSet gDualLinkInWidgetTypes;
92  NTV2WidgetTypeSet gDualLinkOutWidgetTypes;
93  NTV2WidgetTypeSet gHDMIWidgetTypes;
94  NTV2WidgetTypeSet gHDMIInWidgetTypes;
95  NTV2WidgetTypeSet gHDMIOutWidgetTypes;
96  NTV2WidgetTypeSet gAnalogWidgetTypes;
97 
98 }; // RoutingExpert
99 
100 static RoutingExpertPtr gpRoutingExpert; // RoutingExpert singleton
101 static AJALock gRoutingExpertLock; // Singleton guard mutex
102 
103 #endif
RoutingExpert::IsYUVOnlyInputXpt
bool IsYUVOnlyInputXpt(const NTV2InputXptID inInputXpt) const
Definition: ntv2routingexpert.cpp:213
gpRoutingExpert
static RoutingExpertPtr gpRoutingExpert
Definition: ntv2routingexpert.h:100
InputXpt2String
std::map< NTV2InputXptID, std::string > InputXpt2String
Definition: ntv2signalrouter.h:49
RoutingExpert::WidgetIDFromTypeAndChannel
NTV2WidgetID WidgetIDFromTypeAndChannel(const NTV2WidgetType inWidgetType, const NTV2Channel inChannel)
Definition: ntv2routingexpert.cpp:134
RoutingExpert::Is3GSDIWidget
bool Is3GSDIWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:248
Widget2OutputXpts
std::multimap< NTV2WidgetID, NTV2OutputXptID > Widget2OutputXpts
Definition: ntv2signalrouter.h:67
NTV2InputXptIDSet
std::set< NTV2InputXptID > NTV2InputXptIDSet
A collection of distinct NTV2InputXptID values.
Definition: ntv2signalrouter.h:26
String2InputXpt
std::map< std::string, NTV2InputXptID > String2InputXpt
Definition: ntv2signalrouter.h:46
NTV2Channel
NTV2Channel
These enum values are mostly used to identify a specific Frame Store. They're also commonly used to i...
Definition: ntv2enums.h:1305
AJARefPtr
I am a reference-counted pointer template class. I am intended to be a proxy for an underlying object...
Definition: ajarefptr.h:89
NTV2WidgetType
NTV2WidgetType
Definition: ntv2enums.h:2968
Widget2Channels
std::multimap< NTV2WidgetID, NTV2Channel > Widget2Channels
Definition: ntv2signalrouter.h:75
InputXpt2WidgetIDs
std::multimap< NTV2InputXptID, NTV2WidgetID > InputXpt2WidgetIDs
Definition: ntv2signalrouter.h:52
RoutingExpertPtr
AJARefPtr< RoutingExpert > RoutingExpertPtr
Definition: ntv2routingexpert.h:16
Widget2InputXpts
std::multimap< NTV2WidgetID, NTV2InputXptID > Widget2InputXpts
Definition: ntv2signalrouter.h:71
RoutingExpert::StringToOutputXpt
NTV2OutputXptID StringToOutputXpt(const std::string &inStr) const
Definition: ntv2routingexpert.cpp:102
RoutingExpert::NumInstances
static uint32_t NumInstances(void)
Definition: ntv2routingexpert.cpp:46
RoutingExpert::GetWidgetsForOutput
bool GetWidgetsForOutput(const NTV2OutputXptID inOutputXpt, NTV2WidgetIDSet &outWidgetIDs) const
Definition: ntv2routingexpert.cpp:145
NTV2InputXptID
enum NTV2InputCrosspointID NTV2InputXptID
String2OutputXpt
std::map< std::string, NTV2OutputXptID > String2OutputXpt
Definition: ntv2signalrouter.h:56
RoutingExpert::DisposeInstance
static bool DisposeInstance(void)
Definition: ntv2routingexpert.cpp:37
ntv2signalrouter.h
Declares CNTV2SignalRouter class.
RoutingExpert::IsKeyInputXpt
bool IsKeyInputXpt(const NTV2InputXptID inInputXpt) const
Definition: ntv2routingexpert.cpp:220
RoutingExpert::IsOutputXptValid
bool IsOutputXptValid(const NTV2OutputXptID inOutputXpt) const
Definition: ntv2routingexpert.cpp:199
lock.h
Declares the AJALock class.
RoutingExpert::IsSDIOutWidget
bool IsSDIOutWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:241
RoutingExpert::IsRGBOnlyInputXpt
bool IsRGBOnlyInputXpt(const NTV2InputXptID inInputXpt) const
Definition: ntv2routingexpert.cpp:206
RoutingExpert::IsHDMIWidget
bool IsHDMIWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:283
RoutingExpert::GetWidgetInputs
bool GetWidgetInputs(const NTV2WidgetID inWidgetID, NTV2InputXptIDSet &outInputs) const
Definition: ntv2routingexpert.cpp:171
RoutingExpert::Is12GSDIWidget
bool Is12GSDIWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:255
OutputXpt2String
std::map< NTV2OutputXptID, std::string > OutputXpt2String
Definition: ntv2signalrouter.h:59
RoutingExpert
Definition: ntv2routingexpert.h:19
RoutingExpert::IsSDIInWidget
bool IsSDIInWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:234
RoutingExpert::~RoutingExpert
~RoutingExpert()
Definition: ntv2routingexpert.cpp:71
NTV2OutputXptIDSet
std::set< NTV2OutputXptID > NTV2OutputXptIDSet
A collection of distinct NTV2OutputXptID values.
Definition: ntv2signalrouter.h:18
RoutingExpert::WidgetIDToType
NTV2WidgetType WidgetIDToType(const NTV2WidgetID inWidgetID)
Definition: ntv2routingexpert.cpp:111
NTV2WidgetID
NTV2WidgetID
Definition: ntv2enums.h:2842
NTV2WidgetTypeSet
std::set< NTV2WidgetType > NTV2WidgetTypeSet
Definition: ntv2signalrouter.h:82
RoutingExpert::IsDualLinkWidget
bool IsDualLinkWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:262
RoutingExpert::IsHDMIOutWidget
bool IsHDMIOutWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:297
CNTV2SignalRouter
This class is a collection of widget input-to-output connections that can be applied all-at-once to a...
Definition: ntv2signalrouter.h:94
RoutingExpert::GetInstance
static RoutingExpertPtr GetInstance(const bool inCreateIfNecessary=true)
Definition: ntv2routingexpert.cpp:29
AJALock
Definition: lock.h:30
RoutingExpert::StringToInputXpt
NTV2InputXptID StringToInputXpt(const std::string &inStr) const
Definition: ntv2routingexpert.cpp:93
gRoutingExpertLock
static AJALock gRoutingExpertLock
Definition: ntv2routingexpert.h:101
RoutingExpert::IsDualLinkInWidget
bool IsDualLinkInWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:269
RoutingExpert::OutputXptToString
std::string OutputXptToString(const NTV2OutputXptID inOutputXpt) const
Definition: ntv2routingexpert.cpp:85
RoutingExpert::IsDualLinkOutWidget
bool IsDualLinkOutWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:276
RoutingExpert::GetWidgetsForInput
bool GetWidgetsForInput(const NTV2InputXptID inInputXpt, NTV2WidgetIDSet &outWidgetIDs) const
Definition: ntv2routingexpert.cpp:157
Widget2Types
std::multimap< NTV2WidgetID, NTV2WidgetType > Widget2Types
Definition: ntv2signalrouter.h:79
NTV2OutputXptID
enum NTV2OutputCrosspointID NTV2OutputXptID
RoutingExpert::GetWidgetOutputs
bool GetWidgetOutputs(const NTV2WidgetID inWidgetID, NTV2OutputXptIDSet &outOutputs) const
Definition: ntv2routingexpert.cpp:185
RoutingExpert::WidgetIDToChannel
NTV2Channel WidgetIDToChannel(const NTV2WidgetID inWidgetID)
Definition: ntv2routingexpert.cpp:123
OutputXpt2WidgetIDs
std::multimap< NTV2OutputXptID, NTV2WidgetID > OutputXpt2WidgetIDs
Definition: ntv2signalrouter.h:62
ajarefptr.h
Defines the AJARefPtr template class.
RoutingExpert::InputXptToString
std::string InputXptToString(const NTV2InputXptID inInputXpt) const
Definition: ntv2routingexpert.cpp:77
NTV2WidgetIDSet
std::set< NTV2WidgetID > NTV2WidgetIDSet
A collection of distinct NTV2WidgetID values.
Definition: ntv2signalrouter.h:32
RoutingExpert::IsHDMIInWidget
bool IsHDMIInWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:290
RoutingExpert::IsSDIWidget
bool IsSDIWidget(const NTV2WidgetType inWidgetType) const
Definition: ntv2routingexpert.cpp:227