AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
ntv2signalrouter.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
7 #include "ntv2signalrouter.h"
8 #include "ntv2routingexpert.h"
9 #include "ntv2debug.h"
10 #include "ntv2utils.h"
11 #include "ntv2devicefeatures.hh"
12 #include "ntv2registerexpert.h"
13 #include "ajabase/system/debug.h"
14 #include "ajabase/common/common.h"
15 #include <memory.h>
16 #include <stdio.h>
17 #include <assert.h>
18 #include <algorithm>
19 
20 using namespace std;
21 
22 // Logging helpers
23 #define HEX16(__x__) "0x" << hex << setw(16) << setfill('0') << uint64_t(__x__) << dec
24 #define INSTP(_p_) HEX16(uint64_t(_p_))
25 #define SRiFAIL(__x__) AJA_sERROR (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
26 #define SRiWARN(__x__) AJA_sWARNING(AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
27 #define SRiNOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
28 #define SRiINFO(__x__) AJA_sINFO (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
29 #define SRiDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_RoutingGeneric, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
30 #define SRFAIL(__x__) AJA_sERROR (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__)
31 #define SRWARN(__x__) AJA_sWARNING(AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__)
32 #define SRNOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__)
33 #define SRINFO(__x__) AJA_sINFO (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__)
34 #define SRDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_RoutingGeneric, AJAFUNC << ": " << __x__)
35 
36 static NTV2StringList & Tokenize (const string & inString, NTV2StringList & outTokens, const string & inDelimiters = " ", bool inTrimEmpty = false)
37 {
38  string::size_type pos (0), lastPos (0);
39  outTokens.clear ();
40  while (true)
41  {
42  pos = inString.find_first_of (inDelimiters, lastPos);
43  if (pos == string::npos)
44  {
45  pos = inString.length ();
46  if (pos != lastPos || !inTrimEmpty)
47  outTokens.push_back (NTV2StringList::value_type (inString.data () + lastPos, NTV2StringList::size_type(pos - lastPos)));
48  break;
49  }
50  else
51  {
52  if (pos != lastPos || !inTrimEmpty)
53  outTokens.push_back (NTV2StringList::value_type (inString.data () + lastPos, NTV2StringList::size_type(pos - lastPos)));
54  }
55  lastPos = pos + 1;
56  }
57  return outTokens;
58 }
59 
61 
62 bool CNTV2SignalRouter::AddConnection (const NTV2InputXptID inSignalInput, const NTV2OutputXptID inSignalOutput)
63 {
64  mConnections.insert (NTV2SignalConnection (inSignalInput, inSignalOutput));
65  SRiDBG(NTV2InputCrosspointIDToString(inSignalInput) << ", " << NTV2OutputCrosspointIDToString(inSignalOutput) << ": " << *this);
66  return true;
67 }
68 
69 
70 bool CNTV2SignalRouter::HasInput (const NTV2InputXptID inSignalInput) const
71 {
72  return mConnections.find (inSignalInput) != mConnections.end ();
73 }
74 
75 
77 {
78  NTV2XptConnectionsConstIter it(mConnections.find(inSignalInput));
79  return it != mConnections.end() ? it->second : NTV2_XptBlack;
80 }
81 
82 
83 bool CNTV2SignalRouter::HasConnection (const NTV2InputXptID inSignalInput, const NTV2OutputXptID inSignalOutput) const
84 {
85  NTV2XptConnectionsConstIter iter (mConnections.find (inSignalInput));
86  if (iter == mConnections.end())
87  return false;
88  return iter->second == inSignalOutput;
89 }
90 
91 
92 bool CNTV2SignalRouter::RemoveConnection (const NTV2InputXptID inSignalInput, const NTV2OutputXptID inSignalOutput)
93 {
94  NTV2XptConnectionsIter iter (mConnections.find (inSignalInput));
95  if (iter == mConnections.end())
96  return false; // Not in map
97  if (iter->second != inSignalOutput)
98  return false; // No match
99  mConnections.erase (iter);
100  return true;
101 }
102 
103 
104 static const ULWord sSignalRouterRegMasks[] = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 };
105 static const ULWord sSignalRouterRegShifts[] = { 0, 8, 16, 24 };
106 
107 
109 {
110  Reset();
111  for (NTV2InputXptIDSetConstIter it(inInputs.begin()); it != inInputs.end(); ++it)
112  {
113  uint32_t regNum(0), maskNdx(0);
115  NTV2RegisterReadsConstIter iter (::FindFirstMatchingRegisterNumber(regNum, inRegReads));
116  if (iter == inRegReads.end())
117  continue;
118 
119  NTV2_ASSERT(iter->registerNumber == regNum);
120  NTV2_ASSERT(iter->registerMask == 0xFFFFFFFF);
121  NTV2_ASSERT(iter->registerShift == 0);
122  NTV2_ASSERT(maskNdx < 4);
123  const uint32_t regValue (iter->registerValue & sSignalRouterRegMasks[maskNdx]);
124  const NTV2OutputXptID outputXpt (NTV2OutputXptID(regValue >> sSignalRouterRegShifts[maskNdx]));
125  if (outputXpt != NTV2_XptBlack)
126  mConnections.insert(NTV2SignalConnection (*it, outputXpt));
127  } // for each NTV2InputXptID
128  return true;
129 }
130 
131 
133 {
134  outRegWrites.clear ();
135 
136  for (NTV2XptConnectionsConstIter iter (mConnections.begin ()); iter != mConnections.end (); ++iter)
137  {
138  const NTV2InputXptID inputXpt(iter->first);
139  const NTV2OutputXptID outputXpt(iter->second);
140  uint32_t regNum(0), ndx(999);
141 
142  if (!CNTV2RegisterExpert::GetCrosspointSelectGroupRegisterInfo (inputXpt, regNum, ndx) || !regNum || ndx > 3)
143  {
144  outRegWrites.clear();
145  return false;
146  }
147 
148  const NTV2RegInfo regInfo (regNum, outputXpt, sSignalRouterRegMasks[ndx], sSignalRouterRegShifts[ndx]);
149  try
150  {
151  outRegWrites.push_back (regInfo);
152  }
153  catch (const bad_alloc &)
154  {
155  outRegWrites.clear ();
156  return false;
157  }
158  }
159  SRiDBG(outRegWrites);
160  return true;
161 }
162 
163 
165  NTV2XptConnections & outChanged, NTV2XptConnections & outMissing) const
166 {
167  outNew.clear(); outChanged.clear(); outMissing.clear();
168  // Check that my connections are also in RHS:
169  for (NTV2XptConnectionsConstIter it(mConnections.begin()); it != mConnections.end(); ++it)
170  {
171  const NTV2SignalConnection & connection (*it);
172  const NTV2InputXptID inputXpt(connection.first);
173  const NTV2OutputXptID outputXpt(connection.second);
174  if (inRHS.HasConnection(inputXpt, outputXpt))
175  ;
176  else if (inRHS.HasInput(inputXpt))
177  outChanged.insert(NTV2Connection(inputXpt, inRHS.GetConnectedOutput(inputXpt))); // Connection changed from this
178  else
179  outNew.insert(connection); // Connection is new in me, not in RHS
180  }
181 
182  // Check that RHS' connections are also in me...
183  const NTV2XptConnections connectionsRHS(inRHS.GetConnections());
184  for (NTV2XptConnectionsConstIter it(connectionsRHS.begin()); it != connectionsRHS.end(); ++it)
185  {
186  const NTV2SignalConnection & connectionRHS (*it);
187  const NTV2InputXptID inputXpt(connectionRHS.first);
188  const NTV2OutputXptID outputXpt(connectionRHS.second);
189  NTV2XptConnectionsConstIter pFind (mConnections.find(inputXpt));
190  if (pFind == mConnections.end()) // If not found in me...
191  outMissing.insert(connectionRHS); // ...in RHS, but missing in me
192  else if (pFind->second != outputXpt) // If output xpt differs...
193  outChanged.insert(connectionRHS); // ...then 'connection' is changed (in RHS, not in me)
194  }
195 
196  return outNew.empty() && outChanged.empty() && outMissing.empty(); // Return true if identical
197 }
198 
199 
200 ostream & CNTV2SignalRouter::Print (ostream & inOutStream, const bool inForRetailDisplay) const
201 {
202  if (inForRetailDisplay)
203  {
204  inOutStream << mConnections.size() << " routing entries:" << endl;
205  for (NTV2XptConnectionsConstIter iter (mConnections.begin()); iter != mConnections.end(); ++iter)
206  inOutStream << ::NTV2InputCrosspointIDToString(iter->first, inForRetailDisplay)
207  << " <== " << ::NTV2OutputCrosspointIDToString(iter->second, inForRetailDisplay) << endl;
208  }
209  else
210  {
211  for (NTV2XptConnectionsConstIter iter (mConnections.begin()); iter != mConnections.end(); ++iter)
212  inOutStream << CNTV2SignalRouter::NTV2InputCrosspointIDToString(iter->first)
213  << " <== " << CNTV2SignalRouter::NTV2OutputCrosspointIDToString(iter->second) << endl;
214  }
215  return inOutStream;
216 }
217 
218 
219 bool CNTV2SignalRouter::PrintCode (string & outCode, const PrintCodeConfig & inConfig) const
220 {
221  return ToCodeString(outCode, mConnections, inConfig);
222 
223 } // PrintCode
224 
225 
226 bool CNTV2SignalRouter::ToCodeString (string & outCode, const NTV2XptConnections & inConnections,
227  const PrintCodeConfig & inConfig)
228 {
229  ostringstream oss;
230 
231  outCode.clear ();
232 
233  if (inConfig.mShowComments)
234  {
235  oss << inConfig.mPreCommentText << DEC(inConnections.size()) << " routing ";
236  oss << ((inConnections.size () == 1) ? "entry:" : "entries:");
237  oss << inConfig.mPostCommentText << inConfig.mLineBreakText;
238  }
239 
240  if (inConfig.mShowDeclarations)
241  {
242  if (inConfig.mUseRouter)
243  oss << inConfig.mPreClassText << "CNTV2SignalRouter" << inConfig.mPostClassText
244  << "\t"<< inConfig.mPreVariableText << inConfig.mRouterVarName<< inConfig.mPostVariableText;
245  else
246  oss << inConfig.mPreClassText << "CNTV2Card" << inConfig.mPostClassText
247  << "\t" << inConfig.mPreVariableText << inConfig.mDeviceVarName<< inConfig.mPostVariableText;
248  oss << ";" << inConfig.mLineBreakText;
249  }
250 
251  const string varName (inConfig.mUseRouter ? inConfig.mRouterVarName : inConfig.mDeviceVarName);
252  const string variableNameText (inConfig.mPreVariableText + varName + inConfig.mPostVariableText);
253  const string funcName (inConfig.mUseRouter ? "AddConnection" : "Connect");
254  const string functionCallText (inConfig.mPreFunctionText + funcName + inConfig.mPostFunctionText);
255  for (NTV2XptConnectionsConstIter iter (inConnections.begin ()); iter != inConnections.end (); ++iter)
256  {
257  const string inXptStr (inConfig.mPreXptText + ::NTV2InputCrosspointIDToString(iter->first, false) + inConfig.mPostXptText);
258  const string outXptStr (inConfig.mPreXptText + ::NTV2OutputCrosspointIDToString(iter->second, false) + inConfig.mPostXptText);
259 
260  oss << variableNameText << "." << functionCallText << " (" << inXptStr << ", " << outXptStr << ");";
261 
262  if (inConfig.mShowComments)
263  {
264  NTV2XptConnectionsConstIter pNew(inConfig.mNew.find(iter->first));
265  NTV2XptConnectionsConstIter pChanged(inConfig.mChanged.find(iter->first));
266  if (pNew != inConfig.mNew.end() && pNew->second == iter->second)
267  oss << inConfig.mFieldBreakText << inConfig.mPreCommentText << "New" << inConfig.mPostCommentText;
268  else if (pChanged != inConfig.mChanged.end() && pChanged->second != iter->second)
269  oss << inConfig.mFieldBreakText << inConfig.mPreCommentText << "Changed from "
270  << ::NTV2OutputCrosspointIDToString(pChanged->second, false) << inConfig.mPostCommentText;
271  }
272  oss << inConfig.mLineBreakText;
273  } // for each connection
274 
275  if (inConfig.mShowComments)
276  for (NTV2XptConnectionsConstIter pGone(inConfig.mMissing.begin()); pGone != inConfig.mMissing.end(); ++pGone)
277  if (inConnections.find(pGone->first) == inConnections.end())
278  {
279  if (inConfig.mUseRouter)
280  oss << inConfig.mPreCommentText << varName << "." << "RemoveConnection" << " ("
281  << ::NTV2InputCrosspointIDToString(pGone->first, false)
282  << ", " << ::NTV2OutputCrosspointIDToString(pGone->second, false)
283  << ");" << inConfig.mPostCommentText
284  << inConfig.mFieldBreakText << inConfig.mPreCommentText << "Deleted" << inConfig.mPostCommentText
285  << inConfig.mLineBreakText;
286  else
287  oss << inConfig.mPreCommentText << varName << "." << "Disconnect" << " ("
288  << ::NTV2InputCrosspointIDToString(pGone->first, false)
289  << ");" << inConfig.mPostCommentText << inConfig.mFieldBreakText
290  << inConfig.mPreCommentText
291  << "From " << ::NTV2OutputCrosspointIDToString(pGone->second, false)
292  << inConfig.mPostCommentText << inConfig.mLineBreakText;
293  }
294 
295  outCode = oss.str();
296  return true;
297 }
298 
299 
301  : mShowComments (true),
302  mShowDeclarations (true),
303  mUseRouter (false),
304  mPreCommentText ("// "),
305  mPostCommentText (),
306  mPreClassText (),
307  mPostClassText (),
308  mPreVariableText (),
309  mPostVariableText (),
310  mPreXptText (),
311  mPostXptText (),
312  mPreFunctionText (),
313  mPostFunctionText (),
314  mDeviceVarName ("device"),
315  mRouterVarName ("router"),
316  mLineBreakText ("\n"),
317  mFieldBreakText ("\t"),
318  mNew (),
319  mChanged (),
320  mMissing ()
321 {
322 }
323 
324 
325 bool CNTV2SignalRouter::Initialize (void) // STATIC
326 {
329  return pExpert ? true : false;
330 } // Initialize
331 
332 
333 bool CNTV2SignalRouter::Deinitialize (void) // STATIC
334 {
336 }
337 
338 
339 bool CNTV2SignalRouter::IsInitialized (void) // STATIC
340 {
343  return pExpert ? true : false;
344 }
345 
346 
348 {
351  return pExpert ? pExpert->InputXptToString(inInputXpt) : string();
352 }
353 
354 
356 {
359  return pExpert ? pExpert->OutputXptToString(inOutputXpt) : string();
360 }
361 
362 
364 {
367  return pExpert ? pExpert->StringToInputXpt(inStr) : NTV2_INPUT_CROSSPOINT_INVALID;
368 }
369 
370 
372 {
375  return pExpert ? pExpert->StringToOutputXpt(inStr) : NTV2_OUTPUT_CROSSPOINT_INVALID;
376 }
377 
378 
379 bool CNTV2SignalRouter::GetWidgetIDs (const NTV2DeviceID inDeviceID, NTV2WidgetIDSet & outWidgets) // STATIC
380 {
381  outWidgets.clear();
382  for (NTV2WidgetID widgetID(NTV2WidgetID(NTV2_WIDGET_FIRST)); NTV2_IS_VALID_WIDGET(widgetID); widgetID = NTV2WidgetID(widgetID+1))
383  if (::NTV2DeviceCanDoWidget (inDeviceID, widgetID))
384  outWidgets.insert(widgetID);
385  return !outWidgets.empty();
386 }
387 
388 
389 bool CNTV2SignalRouter::GetWidgetsForInput (const NTV2InputXptID inInputXpt, NTV2WidgetIDSet & outWidgetIDs) // STATIC
390 {
391  outWidgetIDs.clear();
394  return pExpert ? pExpert->GetWidgetsForInput(inInputXpt, outWidgetIDs) : false;
395 }
396 
397 
398 bool CNTV2SignalRouter::GetWidgetForInput (const NTV2InputXptID inInputXpt, NTV2WidgetID & outWidgetID, const NTV2DeviceID inDeviceID) // STATIC
399 {
400  outWidgetID = NTV2_WIDGET_INVALID;
401  NTV2WidgetIDSet wgts;
402  if (!GetWidgetsForInput(inInputXpt, wgts))
403  return false;
404  if (inDeviceID == DEVICE_ID_NOTFOUND)
405  outWidgetID = *(wgts.begin());
406  else
407  for (NTV2WidgetIDSetConstIter it(wgts.begin()); it != wgts.end(); ++it)
408  if (::NTV2DeviceCanDoWidget(inDeviceID, *it))
409  {
410  outWidgetID = *it;
411  break;
412  }
413  return outWidgetID != NTV2_WIDGET_INVALID;
414 }
415 
416 
417 bool CNTV2SignalRouter::GetWidgetsForOutput (const NTV2OutputXptID inOutputXpt, NTV2WidgetIDSet & outWidgetIDs) // STATIC
418 {
419  outWidgetIDs.clear();
422  return pExpert ? pExpert->GetWidgetsForOutput(inOutputXpt, outWidgetIDs) : false;
423 }
424 
425 
426 bool CNTV2SignalRouter::GetWidgetForOutput (const NTV2OutputXptID inOutputXpt, NTV2WidgetID & outWidgetID, const NTV2DeviceID inDeviceID) // STATIC
427 {
428  outWidgetID = NTV2_WIDGET_INVALID;
429  NTV2WidgetIDSet wgts;
430  {
432  if (!GetWidgetsForOutput(inOutputXpt, wgts))
433  return false;
434  }
435  if (inDeviceID == DEVICE_ID_NOTFOUND)
436  outWidgetID = *(wgts.begin());
437  else
438  for (NTV2WidgetIDSetConstIter it(wgts.begin()); it != wgts.end(); ++it)
439  if (::NTV2DeviceCanDoWidget(inDeviceID, *it))
440  {
441  outWidgetID = *it;
442  break;
443  }
444  return outWidgetID != NTV2_WIDGET_INVALID;
445 }
446 
447 
448 bool CNTV2SignalRouter::GetWidgetInputs (const NTV2WidgetID inWidgetID, NTV2InputXptIDSet & outInputs) // STATIC
449 {
450  outInputs.clear();
452  return pExpert ? pExpert->GetWidgetInputs(inWidgetID, outInputs) : false;
453 }
454 
455 
456 bool CNTV2SignalRouter::GetAllWidgetInputs (const NTV2DeviceID inDeviceID, NTV2InputXptIDSet & outInputs) // STATIC
457 {
458  outInputs.clear();
459  NTV2WidgetIDSet widgetIDs;
460  if (!GetWidgetIDs (inDeviceID, widgetIDs))
461  return false; // Fail
462 
463  for (NTV2WidgetIDSetConstIter iter(widgetIDs.begin()); iter != widgetIDs.end (); ++iter)
464  {
465  NTV2InputXptIDSet inputs;
466  CNTV2SignalRouter::GetWidgetInputs (*iter, inputs);
467  outInputs.insert(inputs.begin(), inputs.end());
468  }
469  return true;
470 }
471 
472 
473 bool CNTV2SignalRouter::GetAllRoutingRegInfos (const NTV2InputXptIDSet & inInputs, NTV2RegisterWrites & outRegInfos) // STATIC
474 {
475  outRegInfos.clear();
476 
477  set<uint32_t> regNums;
478  uint32_t regNum(0), maskNdx(0);
479  for (NTV2InputXptIDSetConstIter it(inInputs.begin()); it != inInputs.end(); ++it)
481  if (regNums.find(regNum) == regNums.end())
482  regNums.insert(regNum);
483  for (set<uint32_t>::const_iterator iter(regNums.begin()); iter != regNums.end(); ++iter)
484  outRegInfos.push_back(NTV2RegInfo(*iter));
485 
486  return true;
487 }
488 
489 
490 bool CNTV2SignalRouter::GetWidgetOutputs (const NTV2WidgetID inWidgetID, NTV2OutputXptIDSet & outOutputs) // STATIC
491 {
492  outOutputs.clear();
494  return pExpert ? pExpert->GetWidgetOutputs(inWidgetID, outOutputs) : false;
495 }
496 
498 {
500  return pExpert ? pExpert->IsRGBOnlyInputXpt(inInputXpt) : false;
501 }
502 
504 {
506  return pExpert ? pExpert->IsYUVOnlyInputXpt(inInputXpt) : false;
507 }
508 
510 {
512  return pExpert ? pExpert->IsKeyInputXpt(inInputXpt) : false;
513 }
514 
516 {
518  if (pExpert)
519  return pExpert->WidgetIDToChannel(inWidgetID);
520  return NTV2_CHANNEL_INVALID;
521 }
522 
524 {
526  if (pExpert)
527  return pExpert->WidgetIDFromTypeAndChannel(inWidgetType, inChannel);
528  return NTV2_WIDGET_INVALID;
529 }
530 
532 {
534  if (pExpert)
535  return pExpert->WidgetIDToType(inWidgetID);
536  return NTV2WidgetType_Invalid;
537 }
538 
540 {
542  return pExpert ? pExpert->IsSDIWidget(inWidgetType) : false;
543 }
544 
546 {
548  return pExpert ? pExpert->IsSDIInWidget(inWidgetType) : false;
549 }
550 
552 {
554  return pExpert ? pExpert->IsSDIOutWidget(inWidgetType) : false;
555 }
556 
558 {
560  return pExpert ? pExpert->Is3GSDIWidget(inWidgetType) : false;
561 }
562 
564 {
566  return pExpert ? pExpert->Is12GSDIWidget(inWidgetType) : false;
567 }
568 
570 {
572  return pExpert ? pExpert->IsDualLinkWidget(inWidgetType) : false;
573 }
574 
576 {
578  return pExpert ? pExpert->IsDualLinkInWidget(inWidgetType) : false;
579 }
580 
582 {
584  return pExpert ? pExpert->IsDualLinkOutWidget(inWidgetType) : false;
585 }
586 
588 {
590  return pExpert ? pExpert->IsHDMIWidget(inWidgetType) : false;
591 }
592 
594 {
596  return pExpert ? pExpert->IsHDMIInWidget(inWidgetType) : false;
597 }
598 
600 {
602  return pExpert ? pExpert->IsHDMIOutWidget(inWidgetType) : false;
603 }
604 
605 bool CNTV2SignalRouter::GetConnectionsFromRegs (const NTV2InputXptIDSet & inInputXptIDs, const NTV2RegisterReads & inRegValues, NTV2XptConnections & outConnections)
606 {
607  outConnections.clear();
608  for (NTV2InputXptIDSetConstIter it(inInputXptIDs.begin()); it != inInputXptIDs.end(); ++it)
609  {
610  uint32_t regNum(0), maskNdx(0);
612  NTV2RegisterReadsConstIter iter (::FindFirstMatchingRegisterNumber(regNum, inRegValues));
613  if (iter == inRegValues.end())
614  continue;
615 
616  if (iter->registerNumber != regNum)
617  return false; // Register numbers must match here
618  if (iter->registerMask != 0xFFFFFFFF)
619  return false; // Mask must be 0xFFFFFFFF
620  if (iter->registerShift)
621  return false; // Shift must be zero
622  NTV2_ASSERT(maskNdx < 4);
623  const uint32_t regValue (iter->registerValue & sSignalRouterRegMasks[maskNdx]);
624  const NTV2OutputXptID outputXpt (NTV2OutputXptID(regValue >> sSignalRouterRegShifts[maskNdx]));
625  if (outputXpt != NTV2_XptBlack)
626  outConnections.insert(NTV2SignalConnection (*it, outputXpt));
627  } // for each NTV2InputXptID
628  return true;
629 }
630 
631 
633  const NTV2XptConnections & inRHS,
634  NTV2XptConnections & outNew,
635  NTV2XptConnections & outMissing)
636 {
637  outNew.clear(); outMissing.clear();
638  // Check that LHS connections are also in RHS:
639  for (NTV2XptConnectionsConstIter it(inLHS.begin()); it != inLHS.end(); ++it)
640  {
641  const NTV2SignalConnection & LHSconnection(*it);
642  const NTV2InputXptID inputXpt(LHSconnection.first);
643  const NTV2OutputXptID outputXpt(LHSconnection.second);
644  NTV2XptConnectionsConstIter RHSit(inRHS.find(inputXpt));
645  if (RHSit == inRHS.end())
646  outMissing.insert(LHSconnection); // LHSConnection's inputXpt missing from RHS
647  else if (RHSit->second == outputXpt)
648  ; // LHS's input xpt connected to same output xpt as RHS
649  else
650  {
651  outMissing.insert(LHSconnection); // LHS connection missing from RHS
652  outNew.insert(*RHSit); // RHS connection is new
653  }
654  }
655 
656  // Check that RHS connections are also in LHS...
657  for (NTV2XptConnectionsConstIter it(inRHS.begin()); it != inRHS.end(); ++it)
658  {
659  const NTV2SignalConnection & connectionRHS (*it);
660  const NTV2InputXptID inputXpt(connectionRHS.first);
661  const NTV2OutputXptID outputXpt(connectionRHS.second);
662  NTV2XptConnectionsConstIter LHSit(inLHS.find(inputXpt));
663  if (LHSit == inLHS.end()) // If RHS input xpt not in LHS...
664  outNew.insert(connectionRHS); // ...then RHS connection is new
665  else if (LHSit->second != outputXpt) // Else if output xpt changed...
666  // Should've already been handled in previous for loop
667  NTV2_ASSERT(outMissing.find(LHSit->first) != outMissing.end() && outNew.find(LHSit->first) != outNew.end());
668  }
669 
670  return outNew.empty() && outMissing.empty(); // Return true if identical
671 }
672 
673 
674 bool CNTV2SignalRouter::CreateFromString (const string & inString, NTV2XptConnections & outConnections) // STATIC
675 {
676  NTV2StringList lines;
677  string stringToParse(inString); aja::strip(aja::lower(stringToParse));
678  aja::replace(stringToParse, " ", "");
679  aja::replace(stringToParse, "\t", "");
680  aja::replace(stringToParse, "&lt;","<"); // in case uuencoded
681 
682  outConnections.clear();
683  if (Tokenize(stringToParse, lines, "\n\r", true).empty()) // Split the string at line breaks
684  {
685  SRWARN("No lines resulted from input string '" << stringToParse << "'");
686  return true; // Nothing there
687  }
688 
689  if (lines.front().find("<==") != string::npos)
690  {
691 // SRDBG(lines.size() << " lines");
692  for (NTV2StringListConstIter pEachLine(lines.begin()); pEachLine != lines.end(); ++pEachLine)
693  {
694 // SRDBG(" line '" << *pEachLine << "'");
695  size_t pos (pEachLine->find("<=="));
696  if (pos == string::npos)
697  {SRFAIL("Parse error: '<==' missing in line '" << *pEachLine << "'"); return false;}
698  string leftPiece (pEachLine->substr(0, pos)); aja::strip(leftPiece);
699  string rightPiece (pEachLine->substr(pos + 3, pEachLine->length())); aja::strip(rightPiece);
700  NTV2InputXptID inputXpt (StringToNTV2InputCrosspointID(leftPiece));
701  NTV2OutputXptID outputXpt (StringToNTV2OutputCrosspointID(rightPiece));
702  //SRDBG(" L'" << leftPiece << "', R'" << rightPiece << "'");
703  if (inputXpt == NTV2_INPUT_CROSSPOINT_INVALID)
704  {SRFAIL("Parse error: invalid input crosspoint from '" << leftPiece << "' from line '" << *pEachLine << "'"); return false;}
705  if (outConnections.find(inputXpt) != outConnections.end())
706  SRWARN("Overwriting " << ::NTV2InputCrosspointIDToString(inputXpt) << "-" << ::NTV2OutputCrosspointIDToString(outConnections[inputXpt])
707  << " with " << ::NTV2InputCrosspointIDToString(inputXpt) << "-" << ::NTV2OutputCrosspointIDToString(outputXpt));
708  outConnections.insert(NTV2Connection(inputXpt, outputXpt));
709  } // for each line
710  }
711  else if (lines.front().find("connect(") != string::npos)
712  {
713  for (NTV2StringListConstIter pLine(lines.begin()); pLine != lines.end(); ++pLine)
714  {
715  string line(*pLine); aja::strip(line);
716  if (line.empty())
717  continue;
718 // SRDBG(" line '" << line << "'");
719  size_t openParenPos(line.find("(")), closedParenPos(line.find(");"));
720  if (openParenPos == string::npos || closedParenPos == string::npos || openParenPos > closedParenPos)
721  {SRFAIL("Parse error: '(' or ');' missing in line '" << line << "'"); return false;}
722  string remainder(line.substr(openParenPos+1, closedParenPos - openParenPos - 1));
723  NTV2StringList xptNames;
724  aja::split(remainder, ',', xptNames);
725  if (xptNames.size() < 2 || xptNames.size() > 2)
726  {SRFAIL("Parse error: " << DEC(xptNames.size()) << " 'Connect' parameter(s) found, expected 2"); return false;}
727  NTV2InputXptID inputXpt (StringToNTV2InputCrosspointID(xptNames.at(0)));
728  NTV2OutputXptID outputXpt (StringToNTV2OutputCrosspointID(xptNames.at(1)));
729  //SRDBG(" L'" << xptNames.at(0) << "', R'" << xptNames.at(1) << "'");
730  if (inputXpt == NTV2_INPUT_CROSSPOINT_INVALID)
731  {SRFAIL("Parse error: invalid input crosspoint from '" << xptNames.at(0) << "' from line '" << *pLine << "'"); return false;}
732  if (outputXpt == NTV2_OUTPUT_CROSSPOINT_INVALID)
733  {SRFAIL("Parse error: invalid output crosspoint from '" << xptNames.at(1) << "' from line '" << *pLine << "'"); return false;}
734  if (outConnections.find(inputXpt) != outConnections.end())
735  SRWARN("Overwriting " << ::NTV2InputCrosspointIDToString(inputXpt) << "-" << ::NTV2OutputCrosspointIDToString(outConnections[inputXpt])
736  << " with " << ::NTV2InputCrosspointIDToString(inputXpt) << "-" << ::NTV2OutputCrosspointIDToString(outputXpt));
737  outConnections.insert(NTV2Connection(inputXpt, outputXpt));
738  } // for each line
739  }
740  else
741  {SRFAIL("Unable to parse '" << lines.front() << "' -- expected '.contains(' or '<=='"); return false;}
742  SRINFO(DEC(outConnections.size()) << " connection(s) created from input string");
743  return true;
744 }
745 
746 
747 bool CNTV2SignalRouter::CreateFromString (const string & inString, CNTV2SignalRouter & outRouter) // STATIC
748 {
749  NTV2XptConnections connections;
750  outRouter.Reset();
751  if (!CreateFromString(inString, connections))
752  return false;
753  return outRouter.ResetFrom(connections);
754 }
755 
757 
758 
759 
761 
762 NTV2InputXptID GetFrameBufferInputXptFromChannel (const NTV2Channel inChannel, const bool inIsBInput)
763 {
768  if (NTV2_IS_VALID_CHANNEL (inChannel))
769  return inIsBInput ? gFrameBufferBInputs [inChannel] : gFrameBufferInputs [inChannel];
770  else
772 }
773 
774 
775 NTV2InputXptID GetCSCInputXptFromChannel (const NTV2Channel inChannel, const bool inIsKeyInput)
776 {
781  if (NTV2_IS_VALID_CHANNEL(inChannel))
782  return inIsKeyInput ? gCSCKeyInput[inChannel] : gCSCVideoInput[inChannel];
783  else
785 }
786 
787 
789 {
792  return NTV2_IS_VALID_CHANNEL(inLUT) ? gLUTInput[inLUT] : NTV2_INPUT_CROSSPOINT_INVALID;
793 }
794 
795 
796 NTV2InputXptID GetDLInInputXptFromChannel (const NTV2Channel inChannel, const bool inLinkB)
797 {
802  if (NTV2_IS_VALID_CHANNEL(inChannel))
803  return inLinkB ? gDLBInputs[inChannel] : gDLInputs[inChannel];
804  else
806 }
807 
809 {
812  if (NTV2_IS_VALID_CHANNEL(inChannel))
813  return gDLOutInputs[inChannel];
814  else
816 }
817 
818 
819 NTV2OutputXptID GetCSCOutputXptFromChannel (const NTV2Channel inChannel, const bool inIsKey, const bool inIsRGB)
820 {
827  if (NTV2_IS_VALID_CHANNEL(inChannel))
828  {
829  if (inIsKey)
830  return gCSCKeyOutputs[inChannel];
831  else
832  return inIsRGB ? gCSCRGBOutputs[inChannel] : gCSCYUVOutputs[inChannel];
833  }
834  else
836 }
837 
839 {
842  return NTV2_IS_VALID_CHANNEL(inLUT) ? gLUTRGBOutputs[inLUT] : NTV2_OUTPUT_CROSSPOINT_INVALID;
843 }
844 
845 NTV2OutputXptID GetFrameBufferOutputXptFromChannel (const NTV2Channel inChannel, const bool inIsRGB, const bool inIs425)
846 {
855  if (NTV2_IS_VALID_CHANNEL(inChannel))
856  if (inIs425)
857  return inIsRGB ? gFrameBufferRGB425Outputs[inChannel] : gFrameBufferYUV425Outputs[inChannel];
858  else
859  return inIsRGB ? gFrameBufferRGBOutputs[inChannel] : gFrameBufferYUVOutputs[inChannel];
860  else
862 }
863 
864 
865 NTV2OutputXptID GetInputSourceOutputXpt (const NTV2InputSource inInputSource, const bool inIsSDI_DS2, const bool inIsHDMI_RGB, const UWord inHDMI_Quadrant)
866 {
867  static const NTV2OutputXptID gHDMIInputOutputs [4][4] = { { NTV2_XptHDMIIn1, NTV2_XptHDMIIn1Q2, NTV2_XptHDMIIn1Q3, NTV2_XptHDMIIn1Q4 },
871  static const NTV2OutputXptID gHDMIInputRGBOutputs [4][4] = { { NTV2_XptHDMIIn1RGB, NTV2_XptHDMIIn1Q2RGB, NTV2_XptHDMIIn1Q3RGB, NTV2_XptHDMIIn1Q4RGB },
875 
876  if (NTV2_INPUT_SOURCE_IS_SDI (inInputSource))
878  else if (NTV2_INPUT_SOURCE_IS_HDMI (inInputSource))
879  {
880  NTV2Channel channel = ::NTV2InputSourceToChannel (inInputSource);
881  if (inHDMI_Quadrant < 4)
882  return inIsHDMI_RGB ? gHDMIInputRGBOutputs [channel][inHDMI_Quadrant] : gHDMIInputOutputs [channel][inHDMI_Quadrant];
883  else
885  }
886  else if (NTV2_INPUT_SOURCE_IS_ANALOG (inInputSource))
887  return NTV2_XptAnalogIn;
888  else
890 }
891 
892 
893 NTV2OutputXptID GetSDIInputOutputXptFromChannel (const NTV2Channel inChannel, const bool inIsDS2)
894 {
895  static const NTV2OutputXptID gSDIInputOutputs [] = { NTV2_XptSDIIn1, NTV2_XptSDIIn2, NTV2_XptSDIIn3, NTV2_XptSDIIn4,
899  if (NTV2_IS_VALID_CHANNEL(inChannel))
900  return inIsDS2 ? gSDIInputDS2Outputs[inChannel] : gSDIInputOutputs[inChannel];
901  else
903 }
904 
905 NTV2OutputXptID GetDLOutOutputXptFromChannel(const NTV2Channel inChannel, const bool inIsLinkB)
906 {
911  if (NTV2_IS_VALID_CHANNEL(inChannel))
912  return inIsLinkB ? gDLOutDS2Outputs[inChannel] : gDLOutOutputs[inChannel];
913  else
915 }
916 
918 {
921  if (NTV2_IS_VALID_CHANNEL(inChannel))
922  return gDLInOutputs[inChannel];
923  else
925 }
926 
927 
928 NTV2InputXptID GetOutputDestInputXpt (const NTV2OutputDestination inOutputDest, const bool inIsSDI_DS2, const UWord inHDMI_Quadrant)
929 {
931  if (NTV2_OUTPUT_DEST_IS_SDI(inOutputDest))
932  return ::GetSDIOutputInputXpt (::NTV2OutputDestinationToChannel(inOutputDest), inIsSDI_DS2);
933  else if (NTV2_OUTPUT_DEST_IS_HDMI(inOutputDest))
934  return inHDMI_Quadrant > 3 ? NTV2_XptHDMIOutInput : gHDMIOutputInputs[inHDMI_Quadrant];
935  else if (NTV2_OUTPUT_DEST_IS_ANALOG(inOutputDest))
936  return NTV2_XptAnalogOutInput;
937  else
939 }
940 
941 
942 NTV2InputXptID GetSDIOutputInputXpt (const NTV2Channel inChannel, const bool inIsDS2)
943 {
948  if (NTV2_IS_VALID_CHANNEL (inChannel))
949  return inIsDS2 ? gSDIOutputDS2Inputs [inChannel] : gSDIOutputInputs [inChannel];
950  else
952 }
953 
954 
955 NTV2OutputXptID GetMixerOutputXptFromChannel (const NTV2Channel inChannel, const bool inIsKey)
956 {
961  if (NTV2_IS_VALID_CHANNEL(inChannel))
962  return inIsKey ? gMixerKeyYUVOutputs[inChannel] : gMixerVidYUVOutputs[inChannel];
963  else
965 }
966 
967 
968 NTV2InputXptID GetMixerFGInputXpt (const NTV2Channel inChannel, const bool inIsKey)
969 {
974  if (NTV2_IS_VALID_CHANNEL(inChannel))
975  return inIsKey ? gMixerFGKeyInputs[inChannel] : gMixerFGVideoInputs[inChannel];
976  else
978 }
979 
980 
981 NTV2InputXptID GetMixerBGInputXpt (const NTV2Channel inChannel, const bool inIsKey)
982 {
987  if (NTV2_IS_VALID_CHANNEL(inChannel))
988  return inIsKey ? gMixerBGKeyInputs[inChannel] : gMixerBGVideoInputs[inChannel];
989  else
991 }
992 
993 NTV2InputXptID GetTSIMuxInputXptFromChannel (const NTV2Channel inChannel, const bool inLinkB)
994 {
999  if (NTV2_IS_VALID_CHANNEL(inChannel))
1000  return inLinkB ? gDLBInputs[inChannel] : gDLInputs[inChannel];
1001  else
1003 }
1004 
1005 NTV2OutputXptID GetTSIMuxOutputXptFromChannel (const NTV2Channel inChannel, const bool inLinkB, const bool inIsRGB)
1006 {
1015  if (NTV2_IS_VALID_CHANNEL(inChannel))
1016  {
1017  if (inLinkB)
1018  return inIsRGB ? gMuxBRGBOutputs[inChannel] : gMuxBYUVOutputs[inChannel];
1019  else
1020  return inIsRGB ? gMuxARGBOutputs[inChannel] : gMuxAYUVOutputs[inChannel];
1021  }
1022  else
1024 }
1026 
1027 
1028 // static
1029 bool CNTV2SignalRouter::GetRouteROMInfoFromReg (const ULWord inRegNum, const ULWord inRegVal,
1030  NTV2InputXptID & outInputXpt, NTV2OutputXptIDSet & outOutputXpts, const bool inAppendOutputXpts)
1031 {
1032  static const ULWord firstROMReg(kRegFirstValidXptROMRegister);
1033  static const ULWord firstInpXpt(NTV2_FIRST_INPUT_CROSSPOINT);
1034  if (!inAppendOutputXpts)
1035  outOutputXpts.clear();
1036  outInputXpt = NTV2_INPUT_CROSSPOINT_INVALID;
1037  if (inRegNum < uint32_t(kRegFirstValidXptROMRegister))
1038  return false;
1039  if (inRegNum >= uint32_t(kRegInvalidValidXptROMRegister))
1040  return false;
1041 
1042  const ULWord regOffset(inRegNum - firstROMReg);
1043  const ULWord bitOffset((regOffset % 4) * 32);
1044  outInputXpt = NTV2InputXptID(firstInpXpt + regOffset / 4UL); // 4 regs per inputXpt
1045  if (!inRegVal)
1046  return true; // No bits set
1047 
1049  NTV2_ASSERT(pExpert);
1050  for (UWord bitNdx(0); bitNdx < 32; bitNdx++)
1051  if (inRegVal & ULWord(1UL << bitNdx))
1052  {
1053  const NTV2OutputXptID yuvOutputXpt (NTV2OutputXptID((bitOffset + bitNdx) & 0x0000007F));
1054  const NTV2OutputXptID rgbOutputXpt (NTV2OutputXptID(yuvOutputXpt | 0x80));
1055  if (pExpert && pExpert->IsOutputXptValid(yuvOutputXpt))
1056  outOutputXpts.insert(yuvOutputXpt);
1057  if (pExpert && pExpert->IsOutputXptValid(rgbOutputXpt))
1058  outOutputXpts.insert(rgbOutputXpt);
1059  }
1060  return true;
1061 }
1062 
1063 // static
1065 {
1066  outConnections.clear();
1067  for (NTV2RegReadsConstIter iter(inROMRegs.begin()); iter != inROMRegs.end(); ++iter)
1068  {
1069  if (iter->registerNumber < kRegFirstValidXptROMRegister || iter->registerNumber >= kRegInvalidValidXptROMRegister)
1070  continue; // Skip -- not a ROM reg
1072  NTV2OutputXptIDSet outputXpts;
1073  if (GetRouteROMInfoFromReg (iter->registerNumber, iter->registerValue, inputXpt, outputXpts, true))
1074  for (NTV2OutputXptIDSetConstIter it(outputXpts.begin()); it != outputXpts.end(); ++it)
1075  outConnections.insert(NTV2Connection(inputXpt, *it));
1076  }
1077  return !outConnections.empty();
1078 }
1079 
1080 // static
1082 {
1083  outROMRegs.clear();
1084  for (uint32_t regNum(kRegFirstValidXptROMRegister); regNum < kRegInvalidValidXptROMRegister; regNum++)
1085  outROMRegs.push_back(NTV2RegInfo(regNum));
1086  return true;
1087 }
1088 
1089 
1091 
1092 ostream & operator << (ostream & inOutStream, const CNTV2SignalRouter & inObj)
1093 {
1094  inObj.Print (inOutStream);
1095  return inOutStream;
1096 }
1097 
1098 
1099 ostream & operator << (ostream & inOutStream, const NTV2OutputXptIDSet & inObj)
1100 {
1101  NTV2OutputXptIDSetConstIter iter(inObj.begin());
1102  while (iter != inObj.end())
1103  {
1104  inOutStream << ::NTV2OutputCrosspointIDToString(*iter, false);
1105  ++iter;
1106  if (iter == inObj.end())
1107  break;
1108  inOutStream << ", ";
1109  }
1110  return inOutStream;
1111 }
1112 
1113 ostream & operator << (ostream & inOutStream, const NTV2InputXptIDSet & inObj)
1114 {
1115  NTV2InputXptIDSetConstIter iter(inObj.begin());
1116  while (iter != inObj.end())
1117  {
1118  inOutStream << ::NTV2InputCrosspointIDToString(*iter, false);
1119  ++iter;
1120  if (iter == inObj.end())
1121  break;
1122  inOutStream << ", ";
1123  }
1124  return inOutStream;
1125 }
1126 
1128 {
1129  registerNum = inRHS.registerNumber;
1130  mask = inRHS.registerMask;
1131  shift = inRHS.registerShift;
1132  value = inRHS.registerValue;
1133  return *this;
1134 }
1135 
1136 ostream & operator << (ostream & inOutStream, const NTV2WidgetIDSet & inObj)
1137 {
1138  for (NTV2WidgetIDSetConstIter iter (inObj.begin ()); iter != inObj.end (); )
1139  {
1140  inOutStream << ::NTV2WidgetIDToString (*iter, true);
1141  if (++iter != inObj.end ())
1142  inOutStream << ",";
1143  }
1144  return inOutStream;
1145 }
1146 
1147 ostream & operator << (ostream & inOutStream, const NTV2XptConnections & inObj)
1148 {
1149  for (NTV2XptConnectionsConstIter it(inObj.begin()); it != inObj.end(); )
1150  {
1151  inOutStream << ::NTV2InputCrosspointIDToString(it->first) << "-" << ::NTV2OutputCrosspointIDToString(it->second);
1152  if (++it != inObj.end())
1153  inOutStream << ", ";
1154  }
1155  return inOutStream;
1156 }
1157 
NTV2_XptFrameBuffer6YUV
@ NTV2_XptFrameBuffer6YUV
Definition: ntv2enums.h:2597
NTV2_XptFrameBuffer8_DS2RGB
@ NTV2_XptFrameBuffer8_DS2RGB
Definition: ntv2enums.h:2655
CNTV2RegisterExpert::GetCrosspointSelectGroupRegisterInfo
static bool GetCrosspointSelectGroupRegisterInfo(const NTV2InputCrosspointID inInputXpt, uint32_t &outXptRegNum, uint32_t &outMaskIndex)
Answers with the crosspoint select register and mask information for a given widget input.
Definition: ntv2registerexpert.cpp:4719
SRFAIL
#define SRFAIL(__x__)
Definition: ntv2signalrouter.cpp:30
NTV2_XptFrameBuffer4YUV
@ NTV2_XptFrameBuffer4YUV
Definition: ntv2enums.h:2552
NTV2_XptDualLinkIn3DSInput
@ NTV2_XptDualLinkIn3DSInput
Definition: ntv2enums.h:2789
SRINFO
#define SRINFO(__x__)
Definition: ntv2signalrouter.cpp:33
NTV2_XptMixer4BGKeyInput
@ NTV2_XptMixer4BGKeyInput
Definition: ntv2enums.h:2820
NTV2_XptMixer3FGVidInput
@ NTV2_XptMixer3FGVidInput
Definition: ntv2enums.h:2819
CNTV2SignalRouter::PrintCodeConfig::mShowComments
bool mShowComments
If true, show comments in the generated code.
Definition: ntv2signalrouter.h:193
FindFirstMatchingRegisterNumber
NTV2RegReadsConstIter FindFirstMatchingRegisterNumber(const uint32_t inRegNum, const NTV2RegReads &inRegInfos)
Returns a const iterator to the first entry in the NTV2RegInfo collection with a matching register nu...
Definition: ntv2publicinterface.cpp:3451
CNTV2SignalRouter::NTV2OutputCrosspointIDToString
static std::string NTV2OutputCrosspointIDToString(const NTV2OutputXptID inOutputXpt)
Returns a string containing the most compact human-readable form for a given output crosspoint.
Definition: ntv2signalrouter.cpp:355
NTV2_XptHDMIOutInput
@ NTV2_XptHDMIOutInput
Definition: ntv2enums.h:2824
CNTV2SignalRouter::WidgetIDToChannel
static NTV2Channel WidgetIDToChannel(const NTV2WidgetID inWidgetID)
Definition: ntv2signalrouter.cpp:515
NTV2_XptHDMIIn2
@ NTV2_XptHDMIIn2
Definition: ntv2enums.h:2656
NTV2_Xpt425Mux1AInput
@ NTV2_Xpt425Mux1AInput
Definition: ntv2enums.h:2833
NTV2_XptSDIIn5DS2
@ NTV2_XptSDIIn5DS2
Definition: ntv2enums.h:2589
NTV2InputSourceToChannel
NTV2Channel NTV2InputSourceToChannel(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2Channel value.
Definition: ntv2utils.cpp:5107
NTV2_XptDualLinkOut7Input
@ NTV2_XptDualLinkOut7Input
Definition: ntv2enums.h:2806
NTV2_Xpt425Mux2BRGB
@ NTV2_Xpt425Mux2BRGB
Definition: ntv2enums.h:2631
NTV2_XptDuallinkOut8DS2
@ NTV2_XptDuallinkOut8DS2
Definition: ntv2enums.h:2623
NTV2WidgetType_Invalid
@ NTV2WidgetType_Invalid
Definition: ntv2enums.h:3050
GetFrameBufferInputXptFromChannel
NTV2InputXptID GetFrameBufferInputXptFromChannel(const NTV2Channel inChannel, const bool inIsBInput)
Definition: ntv2signalrouter.cpp:762
NTV2RegReadsConstIter
NTV2RegWritesConstIter NTV2RegReadsConstIter
A handy const (read-only) iterator for iterating over the contents of an NTV2RegisterReads instance.
Definition: ntv2publicinterface.h:4015
NTV2_Xpt425Mux1ARGB
@ NTV2_Xpt425Mux1ARGB
Definition: ntv2enums.h:2625
NTV2RoutingEntry
Definition: ntv2publicinterface.h:4044
GetSDIOutputInputXpt
NTV2InputXptID GetSDIOutputInputXpt(const NTV2Channel inChannel, const bool inIsDS2)
Definition: ntv2signalrouter.cpp:942
NTV2_Xpt425Mux1BRGB
@ NTV2_Xpt425Mux1BRGB
Definition: ntv2enums.h:2627
NTV2_XptFrameBuffer1_DS2YUV
@ NTV2_XptFrameBuffer1_DS2YUV
Definition: ntv2enums.h:2640
NTV2_XptSDIOut4InputDS2
@ NTV2_XptSDIOut4InputDS2
Definition: ntv2enums.h:2775
GetOutputDestInputXpt
NTV2InputXptID GetOutputDestInputXpt(const NTV2OutputDestination inOutputDest, const bool inIsSDI_DS2, const UWord inHDMI_Quadrant)
Definition: ntv2signalrouter.cpp:928
NTV2OutputDestination
NTV2OutputDestination
Identifies a specific video output destination.
Definition: ntv2enums.h:1301
GetLUTInputXptFromChannel
NTV2InputXptID GetLUTInputXptFromChannel(const NTV2Channel inLUT)
Definition: ntv2signalrouter.cpp:788
NTV2_XptMixer2KeyYUV
@ NTV2_XptMixer2KeyYUV
Definition: ntv2enums.h:2545
CNTV2SignalRouter::PrintCodeConfig::mFieldBreakText
std::string mFieldBreakText
Text to use for field breaks.
Definition: ntv2signalrouter.h:209
CNTV2SignalRouter::PrintCodeConfig::mChanged
NTV2XptConnections mChanged
Optional, to show changed connections.
Definition: ntv2signalrouter.h:211
CNTV2SignalRouter::PrintCodeConfig::mLineBreakText
std::string mLineBreakText
Text to use for line breaks.
Definition: ntv2signalrouter.h:208
NTV2_XptSDIIn3DS2
@ NTV2_XptSDIIn3DS2
Definition: ntv2enums.h:2563
NTV2_XptDualLinkIn2DSInput
@ NTV2_XptDualLinkIn2DSInput
Definition: ntv2enums.h:2787
NTV2_XptFrameBuffer2RGB
@ NTV2_XptFrameBuffer2RGB
Definition: ntv2enums.h:2524
NTV2InputXptIDSet
std::set< NTV2InputXptID > NTV2InputXptIDSet
A collection of distinct NTV2InputXptID values.
Definition: ntv2signalrouter.h:26
NTV2_XptMixer2BGKeyInput
@ NTV2_XptMixer2BGKeyInput
Definition: ntv2enums.h:2812
kRegInvalidValidXptROMRegister
@ kRegInvalidValidXptROMRegister
Definition: ntv2publicinterface.h:848
NTV2_XptMixer2FGKeyInput
@ NTV2_XptMixer2FGKeyInput
Definition: ntv2enums.h:2814
NTV2_XptLUT7Input
@ NTV2_XptLUT7Input
Definition: ntv2enums.h:2762
NTV2_XptSDIOut3InputDS2
@ NTV2_XptSDIOut3InputDS2
Definition: ntv2enums.h:2773
NTV2_XptDuallinkOut7
@ NTV2_XptDuallinkOut7
Definition: ntv2enums.h:2620
NTV2_XptSDIIn6DS2
@ NTV2_XptSDIIn6DS2
Definition: ntv2enums.h:2590
aja::strip
std::string & strip(std::string &str, const std::string &ws)
Definition: common.cpp:461
NTV2RegInfo::registerValue
ULWord registerValue
My register value to use in a ReadRegister or WriteRegister call.
Definition: ntv2publicinterface.h:3934
NTV2_XptCSC2KeyYUV
@ NTV2_XptCSC2KeyYUV
Definition: ntv2enums.h:2527
NTV2XptConnectionsConstIter
NTV2XptConnections::const_iterator NTV2XptConnectionsConstIter
Definition: ntv2signalrouter.h:40
NTV2_XptCSC7VidInput
@ NTV2_XptCSC7VidInput
Definition: ntv2enums.h:2752
NTV2Channel
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
Definition: ntv2enums.h:1334
NTV2_XptCSC5KeyInput
@ NTV2_XptCSC5KeyInput
Definition: ntv2enums.h:2749
NTV2_XptDuallinkOut1
@ NTV2_XptDuallinkOut1
Definition: ntv2enums.h:2520
SRiDBG
#define SRiDBG(__x__)
Definition: ntv2signalrouter.cpp:29
NTV2_XptDualLinkIn1Input
@ NTV2_XptDualLinkIn1Input
Definition: ntv2enums.h:2784
AJARefPtr
I am a reference-counted pointer template class. I am intended to be a proxy for an underlying object...
Definition: ajarefptr.h:89
CNTV2SignalRouter::IsSDIInputWidgetType
static bool IsSDIInputWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:545
NTV2_XptSDIOut5InputDS2
@ NTV2_XptSDIOut5InputDS2
Definition: ntv2enums.h:2777
NTV2WidgetType
NTV2WidgetType
Definition: ntv2enums.h:3004
aja::split
void split(const std::string &str, const char delim, std::vector< std::string > &elems)
Definition: common.cpp:350
GetInputSourceOutputXpt
NTV2OutputXptID GetInputSourceOutputXpt(const NTV2InputSource inInputSource, const bool inIsSDI_DS2, const bool inIsHDMI_RGB, const UWord inHDMI_Quadrant)
Definition: ntv2signalrouter.cpp:865
NTV2_ASSERT
#define NTV2_ASSERT(_expr_)
Definition: ajatypes.h:508
NTV2_XptCSC4VidInput
@ NTV2_XptCSC4VidInput
Definition: ntv2enums.h:2746
NTV2_XptFrameBuffer3_DS2YUV
@ NTV2_XptFrameBuffer3_DS2YUV
Definition: ntv2enums.h:2644
NTV2_FIRST_INPUT_CROSSPOINT
@ NTV2_FIRST_INPUT_CROSSPOINT
Definition: ntv2enums.h:2723
CNTV2SignalRouter::GetConnectionsFromRegs
static bool GetConnectionsFromRegs(const NTV2InputXptIDSet &inInputXptIDs, const NTV2RegisterReads &inRegValues, NTV2XptConnections &outConnections)
Converts a set of crosspoint registers into a set of crosspoint connections.
Definition: ntv2signalrouter.cpp:605
NTV2_XptSDIIn1DS2
@ NTV2_XptSDIIn1DS2
Definition: ntv2enums.h:2542
NTV2_Xpt425Mux3ARGB
@ NTV2_Xpt425Mux3ARGB
Definition: ntv2enums.h:2633
CNTV2SignalRouter::HasConnection
virtual bool HasConnection(const NTV2InputXptID inSignalInput, const NTV2OutputXptID inSignalOutput) const
Answers true if I contain a connection between the specified input (signal sink) and output (signal s...
Definition: ntv2signalrouter.cpp:83
CNTV2SignalRouter::GetWidgetOutputs
static bool GetWidgetOutputs(const NTV2WidgetID inWidgetID, NTV2OutputXptIDSet &outOutputs)
Returns the output crosspoints known to be "owned" by the given widget.
Definition: ntv2signalrouter.cpp:490
NTV2_XptMixer3BGKeyInput
@ NTV2_XptMixer3BGKeyInput
Definition: ntv2enums.h:2816
CNTV2SignalRouter::CompareConnections
static bool CompareConnections(const NTV2XptConnections &inLHS, const NTV2XptConnections &inRHS, NTV2XptConnections &outNew, NTV2XptConnections &outRemoved)
Compares two sets of crosspoint connections.
Definition: ntv2signalrouter.cpp:632
NTV2_XptSDIIn2DS2
@ NTV2_XptSDIIn2DS2
Definition: ntv2enums.h:2543
NTV2_XptDualLinkIn8Input
@ NTV2_XptDualLinkIn8Input
Definition: ntv2enums.h:2798
NTV2_XptDualLinkIn5DSInput
@ NTV2_XptDualLinkIn5DSInput
Definition: ntv2enums.h:2793
NTV2_XptDuallinkOut7DS2
@ NTV2_XptDuallinkOut7DS2
Definition: ntv2enums.h:2621
NTV2_XptFrameBuffer8YUV
@ NTV2_XptFrameBuffer8YUV
Definition: ntv2enums.h:2601
NTV2_XptFrameBuffer4_DS2YUV
@ NTV2_XptFrameBuffer4_DS2YUV
Definition: ntv2enums.h:2646
NTV2_XptFrameBuffer3YUV
@ NTV2_XptFrameBuffer3YUV
Definition: ntv2enums.h:2550
NTV2_XptFrameBuffer3DS2Input
@ NTV2_XptFrameBuffer3DS2Input
Definition: ntv2enums.h:2729
NTV2_XptLUT3Input
@ NTV2_XptLUT3Input
Definition: ntv2enums.h:2758
NTV2_XptCSC7KeyYUV
@ NTV2_XptCSC7KeyYUV
Definition: ntv2enums.h:2614
CNTV2SignalRouter::PrintCodeConfig::mUseRouter
bool mUseRouter
If true, use calls to CNTV2DeviceRouter instead of CNTV2Card.
Definition: ntv2signalrouter.h:195
NTV2_Xpt425Mux2AYUV
@ NTV2_Xpt425Mux2AYUV
Definition: ntv2enums.h:2628
CNTV2SignalRouter::PrintCodeConfig::mPreFunctionText
std::string mPreFunctionText
Function name prefix text.
Definition: ntv2signalrouter.h:204
CNTV2SignalRouter::PrintCodeConfig::mPostClassText
std::string mPostClassText
Class postfix text.
Definition: ntv2signalrouter.h:199
NTV2_XptMixer4KeyYUV
@ NTV2_XptMixer4KeyYUV
Definition: ntv2enums.h:2607
NTV2OutputDestinationToChannel
NTV2Channel NTV2OutputDestinationToChannel(const NTV2OutputDestination inOutputDest)
Converts a given NTV2OutputDestination to its equivalent NTV2Channel value.
Definition: ntv2utils.cpp:5215
GetFrameBufferOutputXptFromChannel
NTV2OutputXptID GetFrameBufferOutputXptFromChannel(const NTV2Channel inChannel, const bool inIsRGB, const bool inIs425)
Definition: ntv2signalrouter.cpp:845
CNTV2SignalRouter::GetRegisterWrites
virtual bool GetRegisterWrites(NTV2RegisterWrites &outRegWrites) const
Returns a sequence of NTV2RegInfo values that can be written to an NTV2 device using its WriteRegiste...
Definition: ntv2signalrouter.cpp:132
CNTV2SignalRouter::PrintCodeConfig::mRouterVarName
std::string mRouterVarName
Name to use for CNTV2DeviceRouter variable.
Definition: ntv2signalrouter.h:207
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
NTV2_XptFrameBuffer7_DS2RGB
@ NTV2_XptFrameBuffer7_DS2RGB
Definition: ntv2enums.h:2653
NTV2_Xpt425Mux2BYUV
@ NTV2_Xpt425Mux2BYUV
Definition: ntv2enums.h:2630
SRWARN
#define SRWARN(__x__)
Definition: ntv2signalrouter.cpp:31
NTV2_WIDGET_INVALID
@ NTV2_WIDGET_INVALID
Definition: ntv2enums.h:2999
NTV2_XptMixer3FGKeyInput
@ NTV2_XptMixer3FGKeyInput
Definition: ntv2enums.h:2818
NTV2_XptSDIOut7Input
@ NTV2_XptSDIOut7Input
Definition: ntv2enums.h:2780
CNTV2SignalRouter::IsInitialized
static bool IsInitialized(void)
Definition: ntv2signalrouter.cpp:339
NTV2_XptDuallinkIn7
@ NTV2_XptDuallinkIn7
Definition: ntv2enums.h:2680
NTV2_XptCSC6VidYUV
@ NTV2_XptCSC6VidYUV
Definition: ntv2enums.h:2609
NTV2_XptFrameBuffer1RGB
@ NTV2_XptFrameBuffer1RGB
Definition: ntv2enums.h:2515
CNTV2SignalRouter::PrintCodeConfig::mPostVariableText
std::string mPostVariableText
Variable postfix text.
Definition: ntv2signalrouter.h:201
NTV2_XptDuallinkOut6DS2
@ NTV2_XptDuallinkOut6DS2
Definition: ntv2enums.h:2619
NTV2_XptHDMIOutQ3Input
@ NTV2_XptHDMIOutQ3Input
Definition: ntv2enums.h:2827
NTV2_XptSDIOut2InputDS2
@ NTV2_XptSDIOut2InputDS2
Definition: ntv2enums.h:2771
NTV2_XptFrameBuffer4Input
@ NTV2_XptFrameBuffer4Input
Definition: ntv2enums.h:2730
CNTV2SignalRouter::Initialize
static bool Initialize(void)
Explicitly allocates and initializes the Routing Expert singleton.
Definition: ntv2signalrouter.cpp:325
NTV2_XptSDIOut8InputDS2
@ NTV2_XptSDIOut8InputDS2
Definition: ntv2enums.h:2783
NTV2InputXptID
enum NTV2InputCrosspointID NTV2InputXptID
NTV2_XptFrameBuffer3Input
@ NTV2_XptFrameBuffer3Input
Definition: ntv2enums.h:2728
NTV2_XptHDMIIn2Q2
@ NTV2_XptHDMIIn2Q2
Definition: ntv2enums.h:2658
NTV2_OUTPUT_CROSSPOINT_INVALID
@ NTV2_OUTPUT_CROSSPOINT_INVALID
Definition: ntv2enums.h:2687
NTV2_XptDualLinkOut5Input
@ NTV2_XptDualLinkOut5Input
Definition: ntv2enums.h:2804
GetDLInOutputXptFromChannel
NTV2OutputXptID GetDLInOutputXptFromChannel(const NTV2Channel inChannel)
Definition: ntv2signalrouter.cpp:917
NTV2_XptSDIOut4Input
@ NTV2_XptSDIOut4Input
Definition: ntv2enums.h:2774
CNTV2SignalRouter::GetAllRoutingRegInfos
static bool GetAllRoutingRegInfos(const NTV2InputXptIDSet &inInputs, NTV2RegisterWrites &outRegInfos)
Returns all routing registers for the given set of input crosspoints.
Definition: ntv2signalrouter.cpp:473
NTV2_XptFrameBuffer6_DS2RGB
@ NTV2_XptFrameBuffer6_DS2RGB
Definition: ntv2enums.h:2651
NTV2_XptCSC5KeyYUV
@ NTV2_XptCSC5KeyYUV
Definition: ntv2enums.h:2558
NTV2_XptMixer4BGVidInput
@ NTV2_XptMixer4BGVidInput
Definition: ntv2enums.h:2821
CNTV2SignalRouter::Is12GSDIWidgetType
static bool Is12GSDIWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:563
NTV2RoutingEntry::operator=
NTV2RoutingEntry & operator=(const NTV2RegInfo &inRHS)
Assigns an NTV2RegInfo to me.
Definition: ntv2signalrouter.cpp:1127
ntv2debug.h
NTV2_XptCSC7VidYUV
@ NTV2_XptCSC7VidYUV
Definition: ntv2enums.h:2612
CNTV2SignalRouter::IsHDMIOutWidgetType
static bool IsHDMIOutWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:599
NTV2_XptCSC1VidInput
@ NTV2_XptCSC1VidInput
Definition: ntv2enums.h:2740
NTV2_Xpt425Mux3AInput
@ NTV2_Xpt425Mux3AInput
Definition: ntv2enums.h:2837
NTV2_XptCSC4KeyInput
@ NTV2_XptCSC4KeyInput
Definition: ntv2enums.h:2747
GetSDIInputOutputXptFromChannel
NTV2OutputXptID GetSDIInputOutputXptFromChannel(const NTV2Channel inChannel, const bool inIsDS2)
Definition: ntv2signalrouter.cpp:893
NTV2_XptCSC6KeyInput
@ NTV2_XptCSC6KeyInput
Definition: ntv2enums.h:2751
NTV2_XptFrameBuffer3RGB
@ NTV2_XptFrameBuffer3RGB
Definition: ntv2enums.h:2551
NTV2_XptMixer2VidYUV
@ NTV2_XptMixer2VidYUV
Definition: ntv2enums.h:2544
NTV2_XptSDIIn4DS2
@ NTV2_XptSDIIn4DS2
Definition: ntv2enums.h:2564
NTV2_XptFrameBuffer7DS2Input
@ NTV2_XptFrameBuffer7DS2Input
Definition: ntv2enums.h:2737
RoutingExpert::DisposeInstance
static bool DisposeInstance(void)
Definition: ntv2routingexpert.cpp:37
NTV2_XptCSC3KeyInput
@ NTV2_XptCSC3KeyInput
Definition: ntv2enums.h:2745
NTV2_XptHDMIIn2Q2RGB
@ NTV2_XptHDMIIn2Q2RGB
Definition: ntv2enums.h:2659
NTV2_Xpt425Mux2BInput
@ NTV2_Xpt425Mux2BInput
Definition: ntv2enums.h:2836
CNTV2SignalRouter::PrintCodeConfig::mPostCommentText
std::string mPostCommentText
Comment postfix text.
Definition: ntv2signalrouter.h:197
NTV2_CHANNEL_INVALID
@ NTV2_CHANNEL_INVALID
Definition: ntv2enums.h:1345
NTV2_XptLUT2Input
@ NTV2_XptLUT2Input
Definition: ntv2enums.h:2757
NTV2_XptDualLinkIn7DSInput
@ NTV2_XptDualLinkIn7DSInput
Definition: ntv2enums.h:2797
NTV2_XptFrameBuffer6Input
@ NTV2_XptFrameBuffer6Input
Definition: ntv2enums.h:2734
NTV2_XptDualLinkIn3Input
@ NTV2_XptDualLinkIn3Input
Definition: ntv2enums.h:2788
NTV2_XptHDMIIn2Q4RGB
@ NTV2_XptHDMIIn2Q4RGB
Definition: ntv2enums.h:2663
CNTV2SignalRouter::HasInput
virtual bool HasInput(const NTV2InputXptID inSignalInput) const
Answers true if I contain a connection that involves the given input (signal sink).
Definition: ntv2signalrouter.cpp:70
ntv2signalrouter.h
Declares CNTV2SignalRouter class.
CNTV2SignalRouter::NTV2InputCrosspointIDToString
static std::string NTV2InputCrosspointIDToString(const NTV2InputXptID inInputXpt)
Returns a string containing the most compact human-readable form for a given input crosspoint.
Definition: ntv2signalrouter.cpp:347
NTV2_XptCSC6KeyYUV
@ NTV2_XptCSC6KeyYUV
Definition: ntv2enums.h:2611
NTV2_XptFrameBuffer2_DS2YUV
@ NTV2_XptFrameBuffer2_DS2YUV
Definition: ntv2enums.h:2642
NTV2_XptMixer4FGVidInput
@ NTV2_XptMixer4FGVidInput
Definition: ntv2enums.h:2823
NTV2_XptDualLinkIn7Input
@ NTV2_XptDualLinkIn7Input
Definition: ntv2enums.h:2796
NTV2_XptLUT1Input
@ NTV2_XptLUT1Input
Definition: ntv2enums.h:2756
CNTV2SignalRouter::ToCodeString
static bool ToCodeString(std::string &outCode, const NTV2XptConnections &inConnections, const PrintCodeConfig &inConfig=PrintCodeConfig())
Converts the given map of crosspoint connections into source code.
Definition: ntv2signalrouter.cpp:226
NTV2WidgetIDSetConstIter
NTV2WidgetIDSet::const_iterator NTV2WidgetIDSetConstIter
An iterator for iterating over a read-only NTV2WidgetIDSet.
Definition: ntv2signalrouter.h:33
NTV2_XptFrameBuffer4_DS2RGB
@ NTV2_XptFrameBuffer4_DS2RGB
Definition: ntv2enums.h:2647
NTV2InputXptIDSetConstIter
NTV2InputXptIDSet::const_iterator NTV2InputXptIDSetConstIter
A const iterator for iterating over an NTV2InputXptIDSet.
Definition: ntv2signalrouter.h:27
NTV2_XptFrameBuffer1_DS2RGB
@ NTV2_XptFrameBuffer1_DS2RGB
Definition: ntv2enums.h:2641
CNTV2SignalRouter::IsSDIOutputWidgetType
static bool IsSDIOutputWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:551
ntv2routingexpert.h
Declares RoutingExpert class used by CNTV2SignalRouter.
NTV2_XptCSC3VidRGB
@ NTV2_XptCSC3VidRGB
Definition: ntv2enums.h:2570
aja::lower
std::string & lower(std::string &str)
Definition: common.cpp:436
CNTV2SignalRouter::GetConnectedOutput
virtual NTV2OutputXptID GetConnectedOutput(const NTV2InputXptID inSignalInput) const
Definition: ntv2signalrouter.cpp:76
NTV2_XptFrameBuffer2_DS2RGB
@ NTV2_XptFrameBuffer2_DS2RGB
Definition: ntv2enums.h:2643
NTV2_XptFrameBuffer7Input
@ NTV2_XptFrameBuffer7Input
Definition: ntv2enums.h:2736
NTV2_XptHDMIIn1Q2RGB
@ NTV2_XptHDMIIn1Q2RGB
Definition: ntv2enums.h:2580
NTV2RegInfo::registerNumber
ULWord registerNumber
My register number to use in a ReadRegister or WriteRegister call.
Definition: ntv2publicinterface.h:3933
NTV2_XptFrameBuffer1Input
@ NTV2_XptFrameBuffer1Input
Definition: ntv2enums.h:2724
NTV2_XptCSC3KeyYUV
@ NTV2_XptCSC3KeyYUV
Definition: ntv2enums.h:2571
CNTV2SignalRouter::GetConnections
virtual NTV2XptConnections GetConnections(void) const
Definition: ntv2signalrouter.h:142
NTV2_XptDuallinkOut3
@ NTV2_XptDuallinkOut3
Definition: ntv2enums.h:2565
NTV2_XptDualLinkIn2Input
@ NTV2_XptDualLinkIn2Input
Definition: ntv2enums.h:2786
NTV2_XptCSC4VidRGB
@ NTV2_XptCSC4VidRGB
Definition: ntv2enums.h:2573
NTV2_XptCSC1VidYUV
@ NTV2_XptCSC1VidYUV
Definition: ntv2enums.h:2510
NTV2_XptSDIIn7
@ NTV2_XptSDIIn7
Definition: ntv2enums.h:2591
GetTSIMuxInputXptFromChannel
NTV2InputXptID GetTSIMuxInputXptFromChannel(const NTV2Channel inChannel, const bool inLinkB)
Definition: ntv2signalrouter.cpp:993
NTV2RegInfo::registerMask
ULWord registerMask
My register mask value to use in a ReadRegister or WriteRegister call.
Definition: ntv2publicinterface.h:3935
NTV2_XptFrameBuffer7_DS2YUV
@ NTV2_XptFrameBuffer7_DS2YUV
Definition: ntv2enums.h:2652
NTV2_XptLUT6Out
@ NTV2_XptLUT6Out
Definition: ntv2enums.h:2682
CNTV2SignalRouter::PrintCodeConfig::mPreCommentText
std::string mPreCommentText
Comment prefix text.
Definition: ntv2signalrouter.h:196
aja::replace
std::string & replace(std::string &str, const std::string &from, const std::string &to)
Definition: common.cpp:110
CNTV2SignalRouter::GetRouteROMInfoFromReg
static bool GetRouteROMInfoFromReg(const ULWord inROMRegNum, const ULWord inROMRegValue, NTV2InputXptID &outInputXpt, NTV2OutputXptIDSet &outOutputXpts, const bool inAppendOutputXpts=false)
Answers with the NTV2InputXptID and NTV2OutputXptIDSet for the given ROM register value.
Definition: ntv2signalrouter.cpp:1029
NTV2_XptCSC5VidRGB
@ NTV2_XptCSC5VidRGB
Definition: ntv2enums.h:2557
ULWord
uint32_t ULWord
Definition: ajatypes.h:255
Tokenize
static NTV2StringList & Tokenize(const string &inString, NTV2StringList &outTokens, const string &inDelimiters=" ", bool inTrimEmpty=false)
Definition: ntv2signalrouter.cpp:36
NTV2DeviceCanDoWidget
bool NTV2DeviceCanDoWidget(const NTV2DeviceID inDeviceID, const NTV2WidgetID inWidgetID)
Definition: ntv2devicefeatures.hpp:31308
CNTV2SignalRouter::CreateFromString
static bool CreateFromString(const std::string &inString, NTV2XptConnections &outConnections)
Decodes a given string into a map of crosspoint connections.
NTV2_OUTPUT_DEST_IS_HDMI
#define NTV2_OUTPUT_DEST_IS_HDMI(_dest_)
Definition: ntv2enums.h:1321
NTV2_XptLUT5Out
@ NTV2_XptLUT5Out
Definition: ntv2enums.h:2675
NTV2_XptCSC4VidYUV
@ NTV2_XptCSC4VidYUV
Definition: ntv2enums.h:2572
NTV2_XptSDIIn3
@ NTV2_XptSDIIn3
Definition: ntv2enums.h:2561
NTV2_XptSDIIn8
@ NTV2_XptSDIIn8
Definition: ntv2enums.h:2592
NTV2_XptMixer1FGKeyInput
@ NTV2_XptMixer1FGKeyInput
Definition: ntv2enums.h:2810
NTV2_XptSDIIn7DS2
@ NTV2_XptSDIIn7DS2
Definition: ntv2enums.h:2593
CNTV2SignalRouter::IsRGBOnlyInputXpt
static bool IsRGBOnlyInputXpt(const NTV2InputXptID inInputXpt)
Definition: ntv2signalrouter.cpp:497
NTV2_XptHDMIIn1Q2
@ NTV2_XptHDMIIn1Q2
Definition: ntv2enums.h:2579
NTV2_XptFrameBuffer1YUV
@ NTV2_XptFrameBuffer1YUV
Definition: ntv2enums.h:2514
NTV2_XptSDIOut2Input
@ NTV2_XptSDIOut2Input
Definition: ntv2enums.h:2770
NTV2_XptDuallinkOut2DS2
@ NTV2_XptDuallinkOut2DS2
Definition: ntv2enums.h:2555
NTV2_XptDuallinkOut1DS2
@ NTV2_XptDuallinkOut1DS2
Definition: ntv2enums.h:2554
NTV2_XptDuallinkOut4DS2
@ NTV2_XptDuallinkOut4DS2
Definition: ntv2enums.h:2568
CNTV2SignalRouter::PrintCodeConfig::mPostFunctionText
std::string mPostFunctionText
Function name postfix text.
Definition: ntv2signalrouter.h:205
GetLUTOutputXptFromChannel
NTV2OutputXptID GetLUTOutputXptFromChannel(const NTV2Channel inLUT)
Definition: ntv2signalrouter.cpp:838
NTV2_XptFrameBuffer8_DS2YUV
@ NTV2_XptFrameBuffer8_DS2YUV
Definition: ntv2enums.h:2654
CNTV2SignalRouter::PrintCodeConfig::mShowDeclarations
bool mShowDeclarations
If true, show variable declarations in the generated code.
Definition: ntv2signalrouter.h:194
CNTV2SignalRouter::Is3GSDIWidgetType
static bool Is3GSDIWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:557
NTV2_XptHDMIIn4RGB
@ NTV2_XptHDMIIn4RGB
Definition: ntv2enums.h:2667
NTV2RegisterReadsConstIter
NTV2RegWritesConstIter NTV2RegisterReadsConstIter
Definition: ntv2publicinterface.h:4015
NTV2_XptLUT4Out
@ NTV2_XptLUT4Out
Definition: ntv2enums.h:2674
sSignalRouterRegMasks
static const ULWord sSignalRouterRegMasks[]
Definition: ntv2signalrouter.cpp:104
CNTV2SignalRouter::PrintCodeConfig::mNew
NTV2XptConnections mNew
Optional, to show new connections.
Definition: ntv2signalrouter.h:210
CNTV2SignalRouter::PrintCodeConfig::mPostXptText
std::string mPostXptText
Crosspoint variable postfix text.
Definition: ntv2signalrouter.h:203
NTV2InputCrosspointIDToString
std::string NTV2InputCrosspointIDToString(const NTV2InputCrosspointID inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:5874
NTV2_XptDuallinkIn5
@ NTV2_XptDuallinkIn5
Definition: ntv2enums.h:2678
NTV2_Xpt425Mux4BRGB
@ NTV2_Xpt425Mux4BRGB
Definition: ntv2enums.h:2639
NTV2_OUTPUT_DEST_IS_ANALOG
#define NTV2_OUTPUT_DEST_IS_ANALOG(_dest_)
Definition: ntv2enums.h:1322
UWord
uint16_t UWord
Definition: ajatypes.h:253
NTV2RegisterReads
NTV2RegWrites NTV2RegisterReads
Definition: ntv2publicinterface.h:4014
GetTSIMuxOutputXptFromChannel
NTV2OutputXptID GetTSIMuxOutputXptFromChannel(const NTV2Channel inChannel, const bool inLinkB, const bool inIsRGB)
Definition: ntv2signalrouter.cpp:1005
NTV2_XptCSC7VidRGB
@ NTV2_XptCSC7VidRGB
Definition: ntv2enums.h:2613
NTV2_XptFrameBuffer6_DS2YUV
@ NTV2_XptFrameBuffer6_DS2YUV
Definition: ntv2enums.h:2650
NTV2_XptCSC8VidInput
@ NTV2_XptCSC8VidInput
Definition: ntv2enums.h:2754
NTV2_XptDualLinkOut4Input
@ NTV2_XptDualLinkOut4Input
Definition: ntv2enums.h:2803
NTV2_XptHDMIIn1Q4RGB
@ NTV2_XptHDMIIn1Q4RGB
Definition: ntv2enums.h:2584
NTV2_XptCSC8VidRGB
@ NTV2_XptCSC8VidRGB
Definition: ntv2enums.h:2616
NTV2_XptCSC3VidInput
@ NTV2_XptCSC3VidInput
Definition: ntv2enums.h:2744
ntv2utils.h
Declares numerous NTV2 utility functions.
NTV2_XptLUT2Out
@ NTV2_XptLUT2Out
Definition: ntv2enums.h:2669
NTV2_XptLUT8Input
@ NTV2_XptLUT8Input
Definition: ntv2enums.h:2763
NTV2_XptFrameBuffer8DS2Input
@ NTV2_XptFrameBuffer8DS2Input
Definition: ntv2enums.h:2739
NTV2_XptMixer2FGVidInput
@ NTV2_XptMixer2FGVidInput
Definition: ntv2enums.h:2815
NTV2_INPUT_SOURCE_IS_HDMI
#define NTV2_INPUT_SOURCE_IS_HDMI(_inpSrc_)
Definition: ntv2enums.h:1263
CNTV2SignalRouter::StringToNTV2InputCrosspointID
static NTV2InputXptID StringToNTV2InputCrosspointID(const std::string &inStr)
Returns a string containing the most compact human-readable form for a given input crosspoint.
Definition: ntv2signalrouter.cpp:363
NTV2_XptHDMIIn2Q3RGB
@ NTV2_XptHDMIIn2Q3RGB
Definition: ntv2enums.h:2661
NTV2_XptFrameBuffer5_DS2RGB
@ NTV2_XptFrameBuffer5_DS2RGB
Definition: ntv2enums.h:2649
NTV2OutputXptIDSet
std::set< NTV2OutputXptID > NTV2OutputXptIDSet
A collection of distinct NTV2OutputXptID values.
Definition: ntv2signalrouter.h:18
NTV2_Xpt425Mux4AYUV
@ NTV2_Xpt425Mux4AYUV
Definition: ntv2enums.h:2636
CNTV2SignalRouter::PrintCodeConfig::mDeviceVarName
std::string mDeviceVarName
Name to use for CNTV2Card variable.
Definition: ntv2signalrouter.h:206
NTV2_XptSDIOut1InputDS2
@ NTV2_XptSDIOut1InputDS2
Definition: ntv2enums.h:2769
NTV2_XptAnalogIn
@ NTV2_XptAnalogIn
Definition: ntv2enums.h:2533
NTV2_XptFrameBuffer1DS2Input
@ NTV2_XptFrameBuffer1DS2Input
Definition: ntv2enums.h:2725
NTV2_XptSDIIn6
@ NTV2_XptSDIIn6
Definition: ntv2enums.h:2588
NTV2Connection
std::pair< NTV2InputXptID, NTV2OutputXptID > NTV2Connection
This links an NTV2InputXptID and an NTV2OutputXptID.
Definition: ntv2signalrouter.h:38
NTV2_Xpt425Mux2ARGB
@ NTV2_Xpt425Mux2ARGB
Definition: ntv2enums.h:2629
NTV2WidgetID
NTV2WidgetID
Definition: ntv2enums.h:2878
NTV2_Xpt425Mux1AYUV
@ NTV2_Xpt425Mux1AYUV
Definition: ntv2enums.h:2624
CNTV2SignalRouter::PrintCodeConfig::mPreClassText
std::string mPreClassText
Class prefix text.
Definition: ntv2signalrouter.h:198
GetDLInInputXptFromChannel
NTV2InputXptID GetDLInInputXptFromChannel(const NTV2Channel inChannel, const bool inLinkB)
Definition: ntv2signalrouter.cpp:796
NTV2_Xpt425Mux3BInput
@ NTV2_Xpt425Mux3BInput
Definition: ntv2enums.h:2838
NTV2_XptHDMIOutQ1Input
@ NTV2_XptHDMIOutQ1Input
Definition: ntv2enums.h:2825
NTV2_Xpt425Mux1BYUV
@ NTV2_Xpt425Mux1BYUV
Definition: ntv2enums.h:2626
CNTV2SignalRouter
This class is a collection of widget input-to-output connections that can be applied all-at-once to a...
Definition: ntv2signalrouter.h:55
CNTV2SignalRouter::WidgetIDFromTypeAndChannel
static NTV2WidgetID WidgetIDFromTypeAndChannel(const NTV2WidgetType inWidgetType, const NTV2Channel inChannel)
Definition: ntv2signalrouter.cpp:523
NTV2_XptSDIIn8DS2
@ NTV2_XptSDIIn8DS2
Definition: ntv2enums.h:2594
NTV2StringList
std::vector< std::string > NTV2StringList
Definition: ntv2utils.h:1143
RoutingExpert::GetInstance
static RoutingExpertPtr GetInstance(const bool inCreateIfNecessary=true)
Definition: ntv2routingexpert.cpp:29
NTV2_XptLUT4Input
@ NTV2_XptLUT4Input
Definition: ntv2enums.h:2759
NTV2_XptBlack
@ NTV2_XptBlack
Definition: ntv2enums.h:2505
NTV2RegInfo
struct NTV2RegInfo NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
NTV2_INPUT_CROSSPOINT_INVALID
@ NTV2_INPUT_CROSSPOINT_INVALID
Definition: ntv2enums.h:2858
NTV2_XptHDMIIn4
@ NTV2_XptHDMIIn4
Definition: ntv2enums.h:2666
NTV2_OUTPUT_DEST_IS_SDI
#define NTV2_OUTPUT_DEST_IS_SDI(_dest_)
Definition: ntv2enums.h:1323
NTV2_XptFrameBuffer4DS2Input
@ NTV2_XptFrameBuffer4DS2Input
Definition: ntv2enums.h:2731
NTV2_XptCSC1KeyYUV
@ NTV2_XptCSC1KeyYUV
Definition: ntv2enums.h:2522
GetMixerFGInputXpt
NTV2InputXptID GetMixerFGInputXpt(const NTV2Channel inChannel, const bool inIsKey)
Definition: ntv2signalrouter.cpp:968
NTV2_IS_VALID_CHANNEL
#define NTV2_IS_VALID_CHANNEL(__x__)
Definition: ntv2enums.h:1348
NTV2_XptMixer3VidYUV
@ NTV2_XptMixer3VidYUV
Definition: ntv2enums.h:2603
NTV2_XptSDIOut5Input
@ NTV2_XptSDIOut5Input
Definition: ntv2enums.h:2776
CNTV2SignalRouter::Compare
virtual bool Compare(const CNTV2SignalRouter &inRHS, NTV2XptConnections &outNew, NTV2XptConnections &outChanged, NTV2XptConnections &outMissing) const
Compares me with another routing, and returns three connection mappings as a result of the comparison...
Definition: ntv2signalrouter.cpp:164
NTV2_XptSDIIn2
@ NTV2_XptSDIIn2
Definition: ntv2enums.h:2507
NTV2_XptHDMIIn2RGB
@ NTV2_XptHDMIIn2RGB
Definition: ntv2enums.h:2657
CNTV2SignalRouter::GetWidgetIDs
static bool GetWidgetIDs(const NTV2DeviceID inDeviceID, NTV2WidgetIDSet &outWidgets)
Returns the widget IDs supported by the given device.
Definition: ntv2signalrouter.cpp:379
NTV2_XptDuallinkIn6
@ NTV2_XptDuallinkIn6
Definition: ntv2enums.h:2679
CNTV2SignalRouter::GetAllWidgetInputs
static bool GetAllWidgetInputs(const NTV2DeviceID inDeviceID, NTV2InputXptIDSet &outInputs)
Returns all known widget input crosspoints for the given device.
Definition: ntv2signalrouter.cpp:456
CNTV2SignalRouter::IsDualLinkOutWidgetType
static bool IsDualLinkOutWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:581
CNTV2SignalRouter::IsHDMIWidgetType
static bool IsHDMIWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:587
NTV2InputSource
NTV2InputSource
Identifies a specific video input source.
Definition: ntv2enums.h:1244
AJAAutoLock
Definition: lock.h:91
ntv2devicefeatures.hh
Declares NTV2DeviceCanDo... and NTV2DeviceGetNum... functions. This module is included at compile tim...
CNTV2SignalRouter::ResetFromRegisters
virtual bool ResetFromRegisters(const NTV2InputXptIDSet &inInputXpts, const NTV2RegisterReads &inRegReads)
Resets me, erasing any/all existing connections, then rebuilding my connections from the given regist...
Definition: ntv2signalrouter.cpp:108
NTV2_XptDualLinkIn4Input
@ NTV2_XptDualLinkIn4Input
Definition: ntv2enums.h:2790
NTV2_XptCSC4KeyYUV
@ NTV2_XptCSC4KeyYUV
Definition: ntv2enums.h:2574
NTV2_XptSDIOut8Input
@ NTV2_XptSDIOut8Input
Definition: ntv2enums.h:2782
NTV2_XptLUT5Input
@ NTV2_XptLUT5Input
Definition: ntv2enums.h:2760
NTV2_XptFrameBuffer8RGB
@ NTV2_XptFrameBuffer8RGB
Definition: ntv2enums.h:2602
NTV2_XptCSC8KeyInput
@ NTV2_XptCSC8KeyInput
Definition: ntv2enums.h:2755
NTV2_XptMixer1FGVidInput
@ NTV2_XptMixer1FGVidInput
Definition: ntv2enums.h:2811
CNTV2SignalRouter::GetWidgetForOutput
static bool GetWidgetForOutput(const NTV2OutputXptID inOutputXpt, NTV2WidgetID &outWidgetID, const NTV2DeviceID inDeviceID=DEVICE_ID_NOTFOUND)
Returns the widget that "owns" the specified output crosspoint.
Definition: ntv2signalrouter.cpp:426
NTV2_XptFrameBuffer8Input
@ NTV2_XptFrameBuffer8Input
Definition: ntv2enums.h:2738
NTV2_XptHDMIIn2Q3
@ NTV2_XptHDMIIn2Q3
Definition: ntv2enums.h:2660
NTV2_XptMixer4FGKeyInput
@ NTV2_XptMixer4FGKeyInput
Definition: ntv2enums.h:2822
CNTV2SignalRouter::GetWidgetsForInput
static bool GetWidgetsForInput(const NTV2InputXptID inInputXpt, NTV2WidgetIDSet &outWidgetIDs)
Returns the widgets that "own" the specified input crosspoint.
Definition: ntv2signalrouter.cpp:389
GetMixerOutputXptFromChannel
NTV2OutputXptID GetMixerOutputXptFromChannel(const NTV2Channel inChannel, const bool inIsKey)
Definition: ntv2signalrouter.cpp:955
DEC
#define DEC(__x__)
Definition: ntv2publicinterface.h:5606
NTV2_XptHDMIIn1Q4
@ NTV2_XptHDMIIn1Q4
Definition: ntv2enums.h:2583
NTV2_XptFrameBuffer6RGB
@ NTV2_XptFrameBuffer6RGB
Definition: ntv2enums.h:2598
NTV2_XptDualLinkIn6DSInput
@ NTV2_XptDualLinkIn6DSInput
Definition: ntv2enums.h:2795
NTV2_XptLUT3Out
@ NTV2_XptLUT3Out
Definition: ntv2enums.h:2673
NTV2_XptFrameBuffer2Input
@ NTV2_XptFrameBuffer2Input
Definition: ntv2enums.h:2726
false
#define false
Definition: ntv2devicefeatures.h:25
NTV2_XptDualLinkIn8DSInput
@ NTV2_XptDualLinkIn8DSInput
Definition: ntv2enums.h:2799
NTV2_XptFrameBuffer4RGB
@ NTV2_XptFrameBuffer4RGB
Definition: ntv2enums.h:2553
NTV2OutputXptIDSetConstIter
NTV2OutputXptIDSet::const_iterator NTV2OutputXptIDSetConstIter
A const iterator for iterating over an NTV2OutputXptIDSet.
Definition: ntv2signalrouter.h:19
common.h
Private include file for all ajabase sources.
NTV2_XptMixer1BGVidInput
@ NTV2_XptMixer1BGVidInput
Definition: ntv2enums.h:2809
NTV2_XptDuallinkIn8
@ NTV2_XptDuallinkIn8
Definition: ntv2enums.h:2681
NTV2RegisterWrites
std::vector< NTV2RegInfo > NTV2RegisterWrites
Definition: ntv2publicinterface.h:4011
NTV2_Xpt425Mux4ARGB
@ NTV2_Xpt425Mux4ARGB
Definition: ntv2enums.h:2637
NTV2SignalConnection
std::pair< NTV2InputXptID, NTV2OutputXptID > NTV2SignalConnection
Definition: ntv2signalrouter.h:38
NTV2_XptMixer3BGVidInput
@ NTV2_XptMixer3BGVidInput
Definition: ntv2enums.h:2817
NTV2_XptHDMIIn1
@ NTV2_XptHDMIIn1
Definition: ntv2enums.h:2534
NTV2_XptHDMIIn1RGB
@ NTV2_XptHDMIIn1RGB
Definition: ntv2enums.h:2535
NTV2_XptCSC7KeyInput
@ NTV2_XptCSC7KeyInput
Definition: ntv2enums.h:2753
gRoutingExpertLock
static AJALock gRoutingExpertLock
Definition: ntv2routingexpert.h:141
CNTV2SignalRouter::IsDualLinkWidgetType
static bool IsDualLinkWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:569
GetMixerBGInputXpt
NTV2InputXptID GetMixerBGInputXpt(const NTV2Channel inChannel, const bool inIsKey)
Definition: ntv2signalrouter.cpp:981
CNTV2SignalRouter::Print
virtual std::ostream & Print(std::ostream &inOutStream, const bool inForRetailDisplay=false) const
Prints me in a human-readable format to the given output stream.
Definition: ntv2signalrouter.cpp:200
NTV2_XptDualLinkOut3Input
@ NTV2_XptDualLinkOut3Input
Definition: ntv2enums.h:2802
NTV2XptConnections
std::map< NTV2InputXptID, NTV2OutputXptID > NTV2XptConnections
Definition: ntv2signalrouter.h:39
NTV2_XptDuallinkIn3
@ NTV2_XptDuallinkIn3
Definition: ntv2enums.h:2676
NTV2_XptFrameBuffer2YUV
@ NTV2_XptFrameBuffer2YUV
Definition: ntv2enums.h:2523
std
Definition: json.hpp:5362
CNTV2SignalRouter::IsDualLinkInWidgetType
static bool IsDualLinkInWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:575
CNTV2SignalRouter::WidgetIDToType
static NTV2WidgetType WidgetIDToType(const NTV2WidgetID inWidgetID)
Definition: ntv2signalrouter.cpp:531
NTV2_XptFrameBuffer5RGB
@ NTV2_XptFrameBuffer5RGB
Definition: ntv2enums.h:2596
NTV2_XptFrameBuffer5DS2Input
@ NTV2_XptFrameBuffer5DS2Input
Definition: ntv2enums.h:2733
kRegFirstValidXptROMRegister
@ kRegFirstValidXptROMRegister
Definition: ntv2publicinterface.h:845
NTV2_XptFrameBuffer5_DS2YUV
@ NTV2_XptFrameBuffer5_DS2YUV
Definition: ntv2enums.h:2648
NTV2_XptSDIIn1
@ NTV2_XptSDIIn1
Definition: ntv2enums.h:2506
CNTV2SignalRouter::PrintCodeConfig::mPreXptText
std::string mPreXptText
Crosspoint variable prefix text.
Definition: ntv2signalrouter.h:202
CNTV2SignalRouter::PrintCode
virtual bool PrintCode(std::string &outCode, const PrintCodeConfig &inConfig=PrintCodeConfig()) const
Prints me as source code to the given output stream.
Definition: ntv2signalrouter.cpp:219
NTV2_XptFrameBuffer7YUV
@ NTV2_XptFrameBuffer7YUV
Definition: ntv2enums.h:2599
NTV2_XptDualLinkIn5Input
@ NTV2_XptDualLinkIn5Input
Definition: ntv2enums.h:2792
NTV2_XptSDIOut6Input
@ NTV2_XptSDIOut6Input
Definition: ntv2enums.h:2778
NTV2_XptMixer2BGVidInput
@ NTV2_XptMixer2BGVidInput
Definition: ntv2enums.h:2813
CNTV2SignalRouter::StringToNTV2OutputCrosspointID
static NTV2OutputXptID StringToNTV2OutputCrosspointID(const std::string &inStr)
Returns the output crosspoint that corresponds to the given string.
Definition: ntv2signalrouter.cpp:371
sSignalRouterRegShifts
static const ULWord sSignalRouterRegShifts[]
Definition: ntv2signalrouter.cpp:105
NTV2_XptDuallinkOut6
@ NTV2_XptDuallinkOut6
Definition: ntv2enums.h:2618
GetCSCOutputXptFromChannel
NTV2OutputXptID GetCSCOutputXptFromChannel(const NTV2Channel inChannel, const bool inIsKey, const bool inIsRGB)
Definition: ntv2signalrouter.cpp:819
NTV2_XptDuallinkOut5DS2
@ NTV2_XptDuallinkOut5DS2
Definition: ntv2enums.h:2576
NTV2_XptDualLinkIn6Input
@ NTV2_XptDualLinkIn6Input
Definition: ntv2enums.h:2794
NTV2_XptHDMIIn1Q3
@ NTV2_XptHDMIIn1Q3
Definition: ntv2enums.h:2581
CNTV2SignalRouter::GetWidgetInputs
static bool GetWidgetInputs(const NTV2WidgetID inWidgetID, NTV2InputXptIDSet &outInputs)
Returns the input crosspoints known to be "owned" by the given widget.
Definition: ntv2signalrouter.cpp:448
NTV2PossibleConnections
std::multimap< NTV2InputXptID, NTV2OutputXptID > NTV2PossibleConnections
A map of zero or more one-to-many possible NTV2InputXptID to NTV2OutputXptID connections.
Definition: ntv2signalrouter.h:41
NTV2_XptCSC5VidYUV
@ NTV2_XptCSC5VidYUV
Definition: ntv2enums.h:2556
NTV2_XptDuallinkIn4
@ NTV2_XptDuallinkIn4
Definition: ntv2enums.h:2677
NTV2_XptCSC2VidRGB
@ NTV2_XptCSC2VidRGB
Definition: ntv2enums.h:2526
NTV2_XptDualLinkOut6Input
@ NTV2_XptDualLinkOut6Input
Definition: ntv2enums.h:2805
NTV2_XptDualLinkOut2Input
@ NTV2_XptDualLinkOut2Input
Definition: ntv2enums.h:2801
GetDLOutInputXptFromChannel
NTV2InputXptID GetDLOutInputXptFromChannel(const NTV2Channel inChannel)
Definition: ntv2signalrouter.cpp:808
CNTV2SignalRouter::GetWidgetForInput
static bool GetWidgetForInput(const NTV2InputXptID inInputXpt, NTV2WidgetID &outWidgetID, const NTV2DeviceID inDeviceID=DEVICE_ID_NOTFOUND)
Returns the widget that "owns" the specified input crosspoint.
Definition: ntv2signalrouter.cpp:398
NTV2_XptDualLinkIn4DSInput
@ NTV2_XptDualLinkIn4DSInput
Definition: ntv2enums.h:2791
true
#define true
Definition: ntv2devicefeatures.h:26
NTV2_XptFrameBuffer6DS2Input
@ NTV2_XptFrameBuffer6DS2Input
Definition: ntv2enums.h:2735
NTV2_XptHDMIOutQ4Input
@ NTV2_XptHDMIOutQ4Input
Definition: ntv2enums.h:2828
NTV2_Xpt425Mux4BInput
@ NTV2_Xpt425Mux4BInput
Definition: ntv2enums.h:2840
CNTV2SignalRouter::IsYUVOnlyInputXpt
static bool IsYUVOnlyInputXpt(const NTV2InputXptID inInputXpt)
Definition: ntv2signalrouter.cpp:503
NTV2StringListConstIter
NTV2StringList::const_iterator NTV2StringListConstIter
Definition: ntv2utils.h:1145
NTV2_XptCSC3VidYUV
@ NTV2_XptCSC3VidYUV
Definition: ntv2enums.h:2569
NTV2_XptHDMIIn2Q4
@ NTV2_XptHDMIIn2Q4
Definition: ntv2enums.h:2662
NTV2_WIDGET_FIRST
#define NTV2_WIDGET_FIRST
Identifies firmware widgets that logically can have zero or more signal inputs (identified by NTV2Inp...
Definition: ntv2enums.h:2877
CNTV2SignalRouter::IsHDMIInWidgetType
static bool IsHDMIInWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:593
CNTV2SignalRouter::PrintCodeConfig::PrintCodeConfig
PrintCodeConfig()
Default constructor sets the following default settings:
Definition: ntv2signalrouter.cpp:300
NTV2_XptHDMIOutQ2Input
@ NTV2_XptHDMIOutQ2Input
Definition: ntv2enums.h:2826
NTV2_XptFrameBuffer5Input
@ NTV2_XptFrameBuffer5Input
Definition: ntv2enums.h:2732
CNTV2SignalRouter::RemoveConnection
virtual bool RemoveConnection(const NTV2InputXptID inSignalInput, const NTV2OutputXptID inSignalOutput)
Removes the connection between the specified input (signal sink) and output (signal source).
Definition: ntv2signalrouter.cpp:92
CNTV2SignalRouter::PrintCodeConfig
Definition: ntv2signalrouter.h:191
NTV2_XptLUT1Out
@ NTV2_XptLUT1Out
Definition: ntv2enums.h:2509
CNTV2SignalRouter::IsSDIWidgetType
static bool IsSDIWidgetType(const NTV2WidgetType inWidgetType)
Definition: ntv2signalrouter.cpp:539
NTV2_Xpt425Mux4AInput
@ NTV2_Xpt425Mux4AInput
Definition: ntv2enums.h:2839
NTV2_XptCSC1VidRGB
@ NTV2_XptCSC1VidRGB
Definition: ntv2enums.h:2511
NTV2_XptLUT7Out
@ NTV2_XptLUT7Out
Definition: ntv2enums.h:2683
NTV2_INPUT_SOURCE_IS_SDI
#define NTV2_INPUT_SOURCE_IS_SDI(_inpSrc_)
Definition: ntv2enums.h:1265
NTV2_XptSDIIn4
@ NTV2_XptSDIIn4
Definition: ntv2enums.h:2562
NTV2OutputXptID
enum NTV2OutputCrosspointID NTV2OutputXptID
NTV2_XptDuallinkIn1
@ NTV2_XptDuallinkIn1
Definition: ntv2enums.h:2668
NTV2RegInfo::registerShift
ULWord registerShift
My register shift value to use in a ReadRegister or WriteRegister call.
Definition: ntv2publicinterface.h:3936
NTV2_XptCSC8VidYUV
@ NTV2_XptCSC8VidYUV
Definition: ntv2enums.h:2615
NTV2_IS_VALID_WIDGET
#define NTV2_IS_VALID_WIDGET(__w__)
Definition: ntv2enums.h:3002
NTV2RegReads
NTV2RegWrites NTV2RegReads
An ordered sequence of zero or more NTV2RegInfo structs intended for ReadRegister.
Definition: ntv2publicinterface.h:4014
CNTV2SignalRouter::Deinitialize
static bool Deinitialize(void)
Explicitly deinitializes and deallocates the Routing Expert singleton.
Definition: ntv2signalrouter.cpp:333
NTV2_XptFrameBuffer3_DS2RGB
@ NTV2_XptFrameBuffer3_DS2RGB
Definition: ntv2enums.h:2645
NTV2_XptDuallinkIn2
@ NTV2_XptDuallinkIn2
Definition: ntv2enums.h:2672
NTV2_XptSDIOut7InputDS2
@ NTV2_XptSDIOut7InputDS2
Definition: ntv2enums.h:2781
NTV2_Xpt425Mux3AYUV
@ NTV2_Xpt425Mux3AYUV
Definition: ntv2enums.h:2632
NTV2_XptCSC2VidYUV
@ NTV2_XptCSC2VidYUV
Definition: ntv2enums.h:2525
GetCSCInputXptFromChannel
NTV2InputXptID GetCSCInputXptFromChannel(const NTV2Channel inChannel, const bool inIsKeyInput)
Definition: ntv2signalrouter.cpp:775
NTV2_XptCSC6VidRGB
@ NTV2_XptCSC6VidRGB
Definition: ntv2enums.h:2610
CNTV2SignalRouter::MakeRouteROMRegisters
static bool MakeRouteROMRegisters(NTV2RegReads &outROMRegisters)
Prepares an initialized, zeroed NTV2RegReads that's prepared to read all ROM registers from a device.
Definition: ntv2signalrouter.cpp:1081
NTV2_XptMixer4VidYUV
@ NTV2_XptMixer4VidYUV
Definition: ntv2enums.h:2606
NTV2OutputCrosspointIDToString
std::string NTV2OutputCrosspointIDToString(const NTV2OutputCrosspointID inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:6017
NTV2_XptDuallinkOut5
@ NTV2_XptDuallinkOut5
Definition: ntv2enums.h:2575
NTV2_XptFrameBuffer5YUV
@ NTV2_XptFrameBuffer5YUV
Definition: ntv2enums.h:2595
NTV2_XptSDIIn5
@ NTV2_XptSDIIn5
Definition: ntv2enums.h:2587
operator<<
ostream & operator<<(ostream &inOutStream, const CNTV2SignalRouter &inObj)
Definition: ntv2signalrouter.cpp:1092
NTV2_XptDuallinkOut8
@ NTV2_XptDuallinkOut8
Definition: ntv2enums.h:2622
NTV2_XptMixer1BGKeyInput
@ NTV2_XptMixer1BGKeyInput
Definition: ntv2enums.h:2808
NTV2_XptCSC5VidInput
@ NTV2_XptCSC5VidInput
Definition: ntv2enums.h:2748
CNTV2SignalRouter::ResetFrom
virtual bool ResetFrom(const NTV2XptConnections &inConnections)
Resets me, replacing any/all existing connections with the given connections.
Definition: ntv2signalrouter.h:125
NTV2_INPUT_SOURCE_IS_ANALOG
#define NTV2_INPUT_SOURCE_IS_ANALOG(_inpSrc_)
Definition: ntv2enums.h:1264
NTV2_XptCSC2KeyInput
@ NTV2_XptCSC2KeyInput
Definition: ntv2enums.h:2743
NTV2_XptMixer3KeyYUV
@ NTV2_XptMixer3KeyYUV
Definition: ntv2enums.h:2604
CNTV2SignalRouter::GetWidgetsForOutput
static bool GetWidgetsForOutput(const NTV2OutputXptID inOutputXpt, NTV2WidgetIDSet &outWidgetIDs)
Returns the widgets that "own" the specified output crosspoint.
Definition: ntv2signalrouter.cpp:417
CNTV2SignalRouter::Reset
virtual void Reset(void)
Resets me, erasing any/all existing connections.
Definition: ntv2signalrouter.h:108
NTV2_XptFrameBuffer2DS2Input
@ NTV2_XptFrameBuffer2DS2Input
Definition: ntv2enums.h:2727
NTV2_XptMixer1VidYUV
@ NTV2_XptMixer1VidYUV
Definition: ntv2enums.h:2528
ntv2registerexpert.h
Declares the CNTV2RegisterExpert class.
NTV2_XptCSC8KeyYUV
@ NTV2_XptCSC8KeyYUV
Definition: ntv2enums.h:2617
NTV2WidgetIDToString
std::string NTV2WidgetIDToString(const NTV2WidgetID inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6222
NTV2_Xpt425Mux3BRGB
@ NTV2_Xpt425Mux3BRGB
Definition: ntv2enums.h:2635
NTV2_Xpt425Mux3BYUV
@ NTV2_Xpt425Mux3BYUV
Definition: ntv2enums.h:2634
NTV2_XptMixer1KeyYUV
@ NTV2_XptMixer1KeyYUV
Definition: ntv2enums.h:2529
NTV2_XptCSC2VidInput
@ NTV2_XptCSC2VidInput
Definition: ntv2enums.h:2742
CNTV2SignalRouter::AddConnection
virtual bool AddConnection(const NTV2InputXptID inSignalInput, const NTV2OutputXptID inSignalOutput=NTV2_XptBlack)
Adds a connection between a widget's signal input (sink) and another widget's signal output (source).
Definition: ntv2signalrouter.cpp:62
NTV2_XptFrameBuffer7RGB
@ NTV2_XptFrameBuffer7RGB
Definition: ntv2enums.h:2600
NTV2_XptAnalogOutInput
@ NTV2_XptAnalogOutInput
Definition: ntv2enums.h:2841
CNTV2SignalRouter::GetPossibleConnections
static bool GetPossibleConnections(const NTV2RegReads &inROMRegisters, NTV2PossibleConnections &outConnections)
Answers with the implemented crosspoint connections as obtained from the given ROM registers.
Definition: ntv2signalrouter.cpp:1064
NTV2_XptLUT6Input
@ NTV2_XptLUT6Input
Definition: ntv2enums.h:2761
memory.h
Declares the AJAMemory class.
DEVICE_ID_NOTFOUND
@ DEVICE_ID_NOTFOUND
Invalid or "not found".
Definition: ntv2enums.h:92
NTV2_XptLUT8Out
@ NTV2_XptLUT8Out
Definition: ntv2enums.h:2684
NTV2_XptSDIOut1Input
@ NTV2_XptSDIOut1Input
Definition: ntv2enums.h:2768
NTV2_XptCSC1KeyInput
@ NTV2_XptCSC1KeyInput
Definition: ntv2enums.h:2741
NTV2WidgetIDSet
std::set< NTV2WidgetID > NTV2WidgetIDSet
A collection of distinct NTV2WidgetID values.
Definition: ntv2signalrouter.h:32
NTV2_Xpt425Mux1BInput
@ NTV2_Xpt425Mux1BInput
Definition: ntv2enums.h:2834
NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
Definition: ntv2publicinterface.h:3931
NTV2_XptHDMIIn1Q3RGB
@ NTV2_XptHDMIIn1Q3RGB
Definition: ntv2enums.h:2582
CNTV2SignalRouter::PrintCodeConfig::mMissing
NTV2XptConnections mMissing
Optional, to show deleted connections.
Definition: ntv2signalrouter.h:212
debug.h
Declares the AJADebug class.
NTV2_XptSDIOut6InputDS2
@ NTV2_XptSDIOut6InputDS2
Definition: ntv2enums.h:2779
CNTV2SignalRouter::IsKeyInputXpt
static bool IsKeyInputXpt(const NTV2InputXptID inInputXpt)
Definition: ntv2signalrouter.cpp:509
NTV2_XptSDIOut3Input
@ NTV2_XptSDIOut3Input
Definition: ntv2enums.h:2772
NTV2_XptDuallinkOut4
@ NTV2_XptDuallinkOut4
Definition: ntv2enums.h:2567
NTV2_XptDualLinkIn1DSInput
@ NTV2_XptDualLinkIn1DSInput
Definition: ntv2enums.h:2785
NTV2_Xpt425Mux2AInput
@ NTV2_Xpt425Mux2AInput
Definition: ntv2enums.h:2835
GetDLOutOutputXptFromChannel
NTV2OutputXptID GetDLOutOutputXptFromChannel(const NTV2Channel inChannel, const bool inIsLinkB)
Definition: ntv2signalrouter.cpp:905
NTV2_XptDuallinkOut2
@ NTV2_XptDuallinkOut2
Definition: ntv2enums.h:2540
NTV2_Xpt425Mux4BYUV
@ NTV2_Xpt425Mux4BYUV
Definition: ntv2enums.h:2638
NTV2_XptDualLinkOut1Input
@ NTV2_XptDualLinkOut1Input
Definition: ntv2enums.h:2800
NTV2_XptHDMIIn3RGB
@ NTV2_XptHDMIIn3RGB
Definition: ntv2enums.h:2665
NTV2_XptDuallinkOut3DS2
@ NTV2_XptDuallinkOut3DS2
Definition: ntv2enums.h:2566
NTV2_XptHDMIIn3
@ NTV2_XptHDMIIn3
Definition: ntv2enums.h:2664
NTV2_XptCSC6VidInput
@ NTV2_XptCSC6VidInput
Definition: ntv2enums.h:2750
NTV2_XptDualLinkOut8Input
@ NTV2_XptDualLinkOut8Input
Definition: ntv2enums.h:2807
CNTV2SignalRouter::PrintCodeConfig::mPreVariableText
std::string mPreVariableText
Variable prefix text.
Definition: ntv2signalrouter.h:200