13 #define HEX16(__x__) "0x" << std::hex << std::setw(16) << std::setfill('0') << uint64_t(__x__) << std::dec 14 #define INSTP(_p_) HEX16(uint64_t(_p_)) 15 #define SRiFAIL(__x__) AJA_sERROR (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 16 #define SRiWARN(__x__) AJA_sWARNING(AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 17 #define SRiNOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 18 #define SRiINFO(__x__) AJA_sINFO (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 19 #define SRiDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 20 #define SRFAIL(__x__) AJA_sERROR (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__) 21 #define SRWARN(__x__) AJA_sWARNING(AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__) 22 #define SRNOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__) 23 #define SRINFO(__x__) AJA_sINFO (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__) 24 #define SRDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__) 52 RoutingExpert::RoutingExpert()
54 InitInputXpt2String();
55 InitOutputXpt2String();
56 InitInputXpt2WidgetIDs();
57 InitOutputXpt2WidgetIDs();
58 InitWidgetIDToChannels();
59 InitWidgetIDToWidgetTypes();
63 #if defined(DUMP_WIDGETID_TO_INPUT_XPTS_MMAP) 68 #endif // defined(DUMP_WIDGETID_TO_INPUT_XPTS_MMAP) 82 return iter != gInputXpt2String.end() ? iter->second : std::string();
90 return iter != gOutputXpt2String.end() ? iter->second : std::string();
108 return iter != gString2OutputXpt.end() ? iter->second :
NTV2_XptBlack;
116 if (iter->first == inWidgetID) {
128 if (iter->first == inWidgetID)
149 outWidgetIDs.clear();
151 iter != gOutputXpt2WidgetIDs.end() && iter->first == inOutputXpt;
153 outWidgetIDs.insert(iter->second);
154 return !outWidgetIDs.empty();
161 outWidgetIDs.clear();
163 while (iter != gInputXpt2WidgetIDs.end() && iter->first == inInputXpt)
165 outWidgetIDs.insert(iter->second);
168 return !outWidgetIDs.empty();
177 while (iter != gWidget2InputXpts.end() && iter->first == inWidgetID)
179 outInputs.insert(iter->second);
182 return !outInputs.empty();
191 while (iter != gWidget2OutputXpts.end() && iter->first == inWidgetID)
193 outOutputs.insert(iter->second);
196 return !outOutputs.empty();
203 return gOutputXpt2WidgetIDs.find(inOutputXpt) != gOutputXpt2WidgetIDs.end();
210 return gRGBOnlyInputXpts.find(inInputXpt) != gRGBOnlyInputXpts.end();
217 return gYUVOnlyInputXpts.find(inInputXpt) != gYUVOnlyInputXpts.end();
224 return gKeyInputXpts.find(inInputXpt) != gKeyInputXpts.end();
231 return gSDIWidgetTypes.find(inWidgetType) != gSDIWidgetTypes.end();
238 return gSDIInWidgetTypes.find(inWidgetType) != gSDIInWidgetTypes.end();
245 return gSDIOutWidgetTypes.find(inWidgetType) != gSDIOutWidgetTypes.end();
252 return gSDI3GWidgetTypes.find(inWidgetType) != gSDI3GWidgetTypes.end();
259 return gSDI12GWidgetTypes.find(inWidgetType) != gSDI12GWidgetTypes.end();
266 return gDualLinkWidgetTypes.find(inWidgetType) != gDualLinkWidgetTypes.end();
273 return gDualLinkInWidgetTypes.find(inWidgetType) != gDualLinkInWidgetTypes.end();
280 return gDualLinkOutWidgetTypes.find(inWidgetType) != gDualLinkOutWidgetTypes.end();
287 return gHDMIWidgetTypes.find(inWidgetType) != gHDMIWidgetTypes.end();
294 return gHDMIInWidgetTypes.find(inWidgetType) != gHDMIInWidgetTypes.end();
301 return gHDMIOutWidgetTypes.find(inWidgetType) != gHDMIOutWidgetTypes.end();
305 #define NTV2SR_ASSIGN_BOTH(enumToStrMap, strToEnumMap, inEnum, inNameStr) \ 307 enumToStrMap[inEnum] = inNameStr; \ 308 std::string lowerstr_(#inEnum); \ 309 strToEnumMap[aja::lower(lowerstr_)] = inEnum; \ 312 void RoutingExpert::InitInputXpt2String(
void)
315 std::string lowerstr;
440 std::string lowerStr(iter->second);
aja::lower(lowerStr);
441 gString2InputXpt [lowerStr] = iter->first;
475 void RoutingExpert::InitOutputXpt2String(
void)
655 std::string lowerStr(iter->second);
aja::lower(lowerStr);
656 gString2OutputXpt [lowerStr] = iter->first;
733 void RoutingExpert::InitInputXpt2WidgetIDs(
void)
984 void RoutingExpert::InitOutputXpt2WidgetIDs(
void)
1196 void RoutingExpert::InitWidgetIDToChannels(
void)
1329 void RoutingExpert::InitWidgetIDToWidgetTypes(
void)
NTV2InputXptID StringToInputXpt(const std::string &inStr) const
OutputXpt2WidgetIDs::const_iterator OutputXpt2WidgetIDsConstIter
bool IsKeyInputXpt(const NTV2InputXptID inInputXpt) const
String2InputXpt::const_iterator String2InputXptConstIter
std::string NTV2WidgetIDToString(const NTV2WidgetID inValue, const bool inCompactDisplay=false)
bool GetWidgetsForInput(const NTV2InputXptID inInputXpt, NTV2WidgetIDSet &outWidgetIDs) const
Declares the AJADebug class.
Widget2Types::const_iterator Widget2TypesConstIter
NTV2OutputXptID StringToOutputXpt(const std::string &inStr) const
std::pair< NTV2WidgetID, NTV2WidgetType > Widget2TypePair
bool IsHDMIWidget(const NTV2WidgetType inWidgetType) const
static int32_t Decrement(int32_t volatile *pTarget)
std::pair< NTV2OutputXptID, NTV2WidgetID > OutputXpt2WidgetIDPair
static uint32_t gInstanceTally(0)
Widget2InputXpts::const_iterator Widget2InputXptsConstIter
OutputXpt2String::const_iterator OutputXpt2StringConstIter
#define NTV2SR_ASSIGN_BOTH(enumToStrMap, strToEnumMap, inEnum, inNameStr)
static uint32_t gLivingInstances(0)
I am a reference-counted pointer template class. I am intended to be a proxy for an underlying object...
std::pair< NTV2InputXptID, NTV2WidgetID > InputXpt2WidgetIDPair
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
bool IsDualLinkWidget(const NTV2WidgetType inWidgetType) const
#define NTV2_ASSERT(_expr_)
Widget2Channels::const_iterator Widget2ChannelsConstIter
std::pair< NTV2WidgetID, NTV2InputXptID > Widget2InputXptPair
bool IsRGBOnlyInputXpt(const NTV2InputXptID inInputXpt) const
Declares RoutingExpert class used by CNTV2SignalRouter.
NTV2WidgetID WidgetIDFromTypeAndChannel(const NTV2WidgetType inWidgetType, const NTV2Channel inChannel)
std::string NTV2InputCrosspointIDToString(const NTV2InputCrosspointID inValue, const bool inForRetailDisplay=false)
InputXpt2WidgetIDs::const_iterator InputXpt2WidgetIDsConstIter
bool Is12GSDIWidget(const NTV2WidgetType inWidgetType) const
std::set< NTV2WidgetID > NTV2WidgetIDSet
A collection of distinct NTV2WidgetID values.
static int32_t Increment(int32_t volatile *pTarget)
Specifies channel or FrameStore 8 (or the 8th item).
bool IsOutputXptValid(const NTV2OutputXptID inOutputXpt) const
InputXpt2String::const_iterator InputXpt2StringConstIter
Specifies channel or FrameStore 2 (or the 2nd item).
String2OutputXpt::const_iterator String2OutputXptConstIter
bool IsSDIOutWidget(const NTV2WidgetType inWidgetType) const
NTV2Channel WidgetIDToChannel(const NTV2WidgetID inWidgetID)
static uint32_t NumInstances(void)
bool GetWidgetsForOutput(const NTV2OutputXptID inOutputXpt, NTV2WidgetIDSet &outWidgetIDs) const
bool GetWidgetInputs(const NTV2WidgetID inWidgetID, NTV2InputXptIDSet &outInputs) const
static RoutingExpertPtr gpRoutingExpert
static bool DisposeInstance(void)
std::string & strip(std::string &str, const std::string &ws)
std::pair< NTV2WidgetID, NTV2OutputXptID > Widget2OutputXptPair
bool IsDualLinkInWidget(const NTV2WidgetType inWidgetType) const
bool IsDualLinkOutWidget(const NTV2WidgetType inWidgetType) const
bool IsSDIInWidget(const NTV2WidgetType inWidgetType) const
bool IsSDIWidget(const NTV2WidgetType inWidgetType) const
std::set< NTV2InputXptID > NTV2InputXptIDSet
A collection of distinct NTV2InputXptID values.
static AJALock gRoutingExpertLock
NTV2WidgetType WidgetIDToType(const NTV2WidgetID inWidgetID)
bool IsYUVOnlyInputXpt(const NTV2InputXptID inInputXpt) const
static RoutingExpertPtr GetInstance(const bool inCreateIfNecessary=true)
Specifies channel or FrameStore 1 (or the first item).
bool GetWidgetOutputs(const NTV2WidgetID inWidgetID, NTV2OutputXptIDSet &outOutputs) const
Specifies channel or FrameStore 4 (or the 4th item).
enum NTV2InputCrosspointID NTV2InputXptID
Specifies channel or FrameStore 5 (or the 5th item).
Private include file for all ajabase sources.
std::string InputXptToString(const NTV2InputXptID inInputXpt) const
bool IsHDMIInWidget(const NTV2WidgetType inWidgetType) const
Specifies channel or FrameStore 6 (or the 6th item).
std::pair< NTV2WidgetID, NTV2Channel > Widget2ChannelPair
std::string OutputXptToString(const NTV2OutputXptID inOutputXpt) const
Specifies channel or FrameStore 7 (or the 7th item).
std::string & lower(std::string &str)
bool IsHDMIOutWidget(const NTV2WidgetType inWidgetType) const
Widget2OutputXpts::const_iterator Widget2OutputXptsConstIter
std::set< NTV2OutputXptID > NTV2OutputXptIDSet
A collection of distinct NTV2OutputXptID values.
enum NTV2OutputCrosspointID NTV2OutputXptID
bool Is3GSDIWidget(const NTV2WidgetType inWidgetType) const
Specifies channel or FrameStore 3 (or the 3rd item).