AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
ntv2democommon.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #include "ntv2democommon.h"
9 #include "ntv2devicescanner.h"
10 #include "ntv2devicefeatures.h"
11 #include "ntv2testpatterngen.h"
12 #include "ntv2debug.h"
13 #include "ntv2utils.h"
14 #include "ajabase/common/common.h"
15 #include <algorithm>
16 #include <map>
17 #include <iomanip>
18 #if defined (AJAMac) || defined (AJALinux)
19  #include <unistd.h>
20  #include <termios.h>
21 #endif
22 
23 using namespace std;
24 
27 
28 typedef map <string, NTV2VideoFormat> String2VideoFormatMap;
29 typedef String2VideoFormatMap::const_iterator String2VideoFormatMapConstIter;
30 
31 typedef map <string, NTV2FrameBufferFormat> String2PixelFormatMap;
32 typedef String2PixelFormatMap::const_iterator String2PixelFormatMapConstIter;
33 
34 typedef map <string, NTV2AudioSystem> String2AudioSystemMap;
35 typedef String2AudioSystemMap::const_iterator String2AudioSystemMapConstIter;
36 
37 typedef map <string, NTV2VANCMode> String2VANCModeMap;
38 typedef String2VANCModeMap::const_iterator String2VANCModeMapConstIter;
39 
40 typedef map <string, NTV2InputSource> String2InputSourceMap;
41 typedef String2InputSourceMap::const_iterator String2InputSourceMapConstIter;
42 
43 typedef map <string, NTV2OutputDestination> String2OutputDestMap;
44 typedef String2OutputDestMap::const_iterator String2OutputDestMapConstIter;
45 
46 typedef map <string, NTV2TCIndex> String2TCIndexMap;
47 typedef pair <string, NTV2TCIndex> String2TCIndexPair;
48 typedef String2TCIndexMap::const_iterator String2TCIndexMapConstIter;
49 
50 typedef map <string, string> String2TPNamesMap;
51 typedef pair <string, string> String2TPNamePair;
52 typedef String2TPNamesMap::const_iterator String2TPNamesMapConstIter;
53 
54 
55 static const string gGlobalMutexName ("com.aja.ntv2.mutex.demo");
88 
89 
91 {
92  public:
94  {
95  typedef pair <string, NTV2VideoFormat> String2VideoFormatPair;
96  typedef pair <string, NTV2FrameBufferFormat> String2PixelFormatPair;
97  typedef pair <string, NTV2AudioSystem> String2AudioSystemPair;
98  typedef pair <string, NTV2VANCMode> String2VANCModePair;
99  typedef pair <string, NTV2InputSource> String2InputSourcePair;
100  typedef pair <string, NTV2OutputDestination> String2OutputDestPair;
101 
102  NTV2_ASSERT (gNon4KFormats.empty ());
103  for (NTV2VideoFormat legalFormat (NTV2_FORMAT_UNKNOWN); legalFormat < NTV2_MAX_NUM_VIDEO_FORMATS; legalFormat = NTV2VideoFormat (legalFormat + 1))
104  {
105  string str;
106  if (!NTV2_IS_VALID_VIDEO_FORMAT (legalFormat))
107  continue;
108 
109  if (NTV2_IS_QUAD_QUAD_FORMAT(legalFormat))
110  g8KFormats.insert (legalFormat);
111  else if (NTV2_IS_4K_VIDEO_FORMAT (legalFormat))
112  g4KFormats.insert (legalFormat);
113  else
114  gNon4KFormats.insert (legalFormat);
115  gAllFormats.insert (legalFormat);
116 
117  if (legalFormat == NTV2_FORMAT_525_5994) str = "525i2997";
118  else if (legalFormat == NTV2_FORMAT_625_5000) str = "625i25";
119  else if (legalFormat == NTV2_FORMAT_525_2398) str = "525i2398";
120  else if (legalFormat == NTV2_FORMAT_525_2400) str = "525i24";
121  else
122  {
123  str = ::NTV2VideoFormatToString (legalFormat);
124  if (str.at (str.length () - 1) == 'a') // If it ends in "a"...
125  str.erase (str.length () - 1); // ...lop off the "a"
126 
127  if (str.find (".00") != string::npos) // If it ends in ".00"...
128  str.erase (str.find (".00"), 3); // ...lop off the ".00" (but keep the "b", if any)
129 
130  while (str.find (" ") != string::npos)
131  str.erase (str.find (" "), 1); // Remove all spaces
132 
133  if (str.find (".") != string::npos)
134  str.erase (str.find ("."), 1); // Remove "."
135 
136  str = CNTV2DemoCommon::ToLower (str); // Fold to lower case
137  }
138  gString2VideoFormatMap.insert (String2VideoFormatPair (str, legalFormat));
139  gString2VideoFormatMap.insert (String2VideoFormatPair (ULWordToString (legalFormat), legalFormat));
140  } // for each video format supported in demo apps
141 
142  // Add popular format names...
143  gString2VideoFormatMap.insert (String2VideoFormatPair ("sd", NTV2_FORMAT_525_5994));
144  gString2VideoFormatMap.insert (String2VideoFormatPair ("525i", NTV2_FORMAT_525_5994));
145  gString2VideoFormatMap.insert (String2VideoFormatPair ("625i", NTV2_FORMAT_625_5000));
146  gString2VideoFormatMap.insert (String2VideoFormatPair ("720p", NTV2_FORMAT_720p_5994));
147  gString2VideoFormatMap.insert (String2VideoFormatPair ("hd", NTV2_FORMAT_1080i_5994));
148  gString2VideoFormatMap.insert (String2VideoFormatPair ("1080i", NTV2_FORMAT_1080i_5994));
149  gString2VideoFormatMap.insert (String2VideoFormatPair ("1080i50", NTV2_FORMAT_1080i_5000));
150  gString2VideoFormatMap.insert (String2VideoFormatPair ("1080p", NTV2_FORMAT_1080p_5994_B));
151  gString2VideoFormatMap.insert (String2VideoFormatPair ("1080p50", NTV2_FORMAT_1080p_5000_B));
152 
153  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd", NTV2_FORMAT_4x1920x1080p_6000));
154  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd2398", NTV2_FORMAT_4x1920x1080p_2398));
155  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd24", NTV2_FORMAT_4x1920x1080p_2400));
156  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd25", NTV2_FORMAT_4x1920x1080p_2500));
157  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd50", NTV2_FORMAT_4x1920x1080p_5000));
158  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd5994", NTV2_FORMAT_4x1920x1080p_5994));
159  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd60", NTV2_FORMAT_4x1920x1080p_6000));
160 
161  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k", NTV2_FORMAT_4x2048x1080p_6000));
162  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k2398", NTV2_FORMAT_4x2048x1080p_2398));
163  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k24", NTV2_FORMAT_4x2048x1080p_2400));
164  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k25", NTV2_FORMAT_4x2048x1080p_2500));
165  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k4795", NTV2_FORMAT_4x2048x1080p_4795));
166  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k48", NTV2_FORMAT_4x2048x1080p_4800));
167  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k50", NTV2_FORMAT_4x2048x1080p_5000));
168  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k5994", NTV2_FORMAT_4x2048x1080p_5994));
169  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k60", NTV2_FORMAT_4x2048x1080p_6000));
170  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k11988", NTV2_FORMAT_4x2048x1080p_11988));
171  gString2VideoFormatMap.insert (String2VideoFormatPair ("4k120", NTV2_FORMAT_4x2048x1080p_12000));
172 
173  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd2", NTV2_FORMAT_4x3840x2160p_2398));
174  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd22398", NTV2_FORMAT_4x3840x2160p_2398));
175  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd224", NTV2_FORMAT_4x3840x2160p_2400));
176  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd225", NTV2_FORMAT_4x3840x2160p_2500));
177  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd250", NTV2_FORMAT_4x3840x2160p_5000));
178  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd25994", NTV2_FORMAT_4x3840x2160p_5994));
179  gString2VideoFormatMap.insert (String2VideoFormatPair ("uhd260", NTV2_FORMAT_4x3840x2160p_6000));
180 
181  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k", NTV2_FORMAT_4x4096x2160p_6000));
182  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k2398", NTV2_FORMAT_4x4096x2160p_2398));
183  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k24", NTV2_FORMAT_4x4096x2160p_2400));
184  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k25", NTV2_FORMAT_4x4096x2160p_2500));
185  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k4795", NTV2_FORMAT_4x4096x2160p_4795));
186  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k48", NTV2_FORMAT_4x4096x2160p_4800));
187  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k50", NTV2_FORMAT_4x4096x2160p_5000));
188  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k5994", NTV2_FORMAT_4x4096x2160p_5994));
189  gString2VideoFormatMap.insert (String2VideoFormatPair ("8k60", NTV2_FORMAT_4x4096x2160p_6000));
190 
191  NTV2_ASSERT (gPixelFormats.empty ());
192  for (NTV2FrameBufferFormat legalFormat (NTV2_FBF_10BIT_YCBCR); legalFormat < NTV2_FBF_NUMFRAMEBUFFERFORMATS; legalFormat = NTV2FrameBufferFormat (legalFormat + 1))
193  {
194  string str;
195  if (!NTV2_IS_VALID_FRAME_BUFFER_FORMAT (legalFormat))
196  continue;
197 
198  gPixelFormats.insert (legalFormat);
199  if (NTV2_IS_FBF_PLANAR (legalFormat))
200  gFBFsPlanar.insert (legalFormat);
201  if (NTV2_IS_FBF_RGB (legalFormat))
202  gFBFsRGB.insert (legalFormat);
203  if (NTV2_IS_FBF_PRORES (legalFormat))
204  gFBFsProRes.insert (legalFormat);
205  if (NTV2_FBF_HAS_ALPHA (legalFormat))
206  gFBFsAlpha.insert (legalFormat);
207  if (NTV2_FBF_IS_RAW (legalFormat))
208  gFBFsRaw.insert (legalFormat);
209 
210  str = ::NTV2FrameBufferFormatToString (legalFormat, true);
211  while (str.find (" ") != string::npos)
212  str.erase (str.find (" "), 1); // Remove all spaces
213 
214  while (str.find ("-") != string::npos)
215  str.erase (str.find ("-"), 1); // Remove all "-"
216 
217  if (str.find ("compatible") != string::npos)
218  str.erase (str.find ("compatible"), 10); // Remove "compatible"
219 
220  if (str.find ("ittle") != string::npos)
221  str.erase (str.find ("ittle"), 5); // Remove "ittle"
222 
223  if (str.find ("ndian") != string::npos)
224  str.erase (str.find ("ndian"), 5); // Remove "ndian"
225 
226  str = CNTV2DemoCommon::ToLower (str); // Fold to lower case
227 
228  gString2PixelFormatMap.insert (String2PixelFormatPair (str, legalFormat));
229 
230  str = ::NTV2FrameBufferFormatToString (legalFormat, false);
231  if (str.find ("NTV2_FBF_") == 0) // If it starts with "NTV2_FBF_"...
232  str.erase (0, 9); // ...lop it off
233 
234  while (str.find (" ") != string::npos)
235  str.erase (str.find (" "), 1); // Remove all spaces
236 
237  while (str.find ("_") != string::npos)
238  str.erase (str.find ("_"), 1); // Remove all "_"
239 
240  str = CNTV2DemoCommon::ToLower (str); // Fold to lower case
241 
242  gString2PixelFormatMap.insert (String2PixelFormatPair (str, legalFormat));
243  gString2PixelFormatMap.insert (String2PixelFormatPair (::NTV2FrameBufferFormatToString (legalFormat, false), legalFormat));
244  gString2PixelFormatMap.insert (String2PixelFormatPair (ULWordToString (legalFormat), legalFormat));
245  } // for each pixel format supported in demo apps
246 
247  // Add popular pixel format names...
248  gString2PixelFormatMap.insert (String2PixelFormatPair ("v210", NTV2_FBF_10BIT_YCBCR));
249  gString2PixelFormatMap.insert (String2PixelFormatPair ("yuv10", NTV2_FBF_10BIT_YCBCR));
250  gString2PixelFormatMap.insert (String2PixelFormatPair ("2vuy", NTV2_FBF_8BIT_YCBCR));
251  gString2PixelFormatMap.insert (String2PixelFormatPair ("uyvy", NTV2_FBF_8BIT_YCBCR));
252  gString2PixelFormatMap.insert (String2PixelFormatPair ("argb", NTV2_FBF_ARGB));
253  gString2PixelFormatMap.insert (String2PixelFormatPair ("argb8", NTV2_FBF_ARGB));
254  gString2PixelFormatMap.insert (String2PixelFormatPair ("bgra", NTV2_FBF_RGBA));
255  gString2PixelFormatMap.insert (String2PixelFormatPair ("bgra8", NTV2_FBF_RGBA));
256  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgba", NTV2_FBF_RGBA));
257  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgba8", NTV2_FBF_RGBA));
258  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgb10", NTV2_FBF_10BIT_RGB));
259  gString2PixelFormatMap.insert (String2PixelFormatPair ("yuy2", NTV2_FBF_8BIT_YCBCR_YUY2));
260  gString2PixelFormatMap.insert (String2PixelFormatPair ("abgr", NTV2_FBF_ABGR));
261  gString2PixelFormatMap.insert (String2PixelFormatPair ("abgr8", NTV2_FBF_ABGR));
262  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgb10dpx", NTV2_FBF_10BIT_DPX));
263  gString2PixelFormatMap.insert (String2PixelFormatPair ("yuv10dpx", NTV2_FBF_10BIT_YCBCR_DPX));
264  gString2PixelFormatMap.insert (String2PixelFormatPair ("ycbcr10dpx", NTV2_FBF_10BIT_YCBCR_DPX));
265  gString2PixelFormatMap.insert (String2PixelFormatPair ("dvcpro8", NTV2_FBF_8BIT_DVCPRO));
266  gString2PixelFormatMap.insert (String2PixelFormatPair ("i420", NTV2_FBF_8BIT_YCBCR_420PL3));
267  gString2PixelFormatMap.insert (String2PixelFormatPair ("hdv", NTV2_FBF_8BIT_HDV));
268  gString2PixelFormatMap.insert (String2PixelFormatPair ("hdv8", NTV2_FBF_8BIT_HDV));
269  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgb24", NTV2_FBF_24BIT_RGB));
270  gString2PixelFormatMap.insert (String2PixelFormatPair ("bgr24", NTV2_FBF_24BIT_BGR));
271  gString2PixelFormatMap.insert (String2PixelFormatPair ("ycbcra10", NTV2_FBF_10BIT_YCBCRA));
272  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgb10dpxle", NTV2_FBF_10BIT_DPX_LE));
273  gString2PixelFormatMap.insert (String2PixelFormatPair ("proresdvcpro", NTV2_FBF_PRORES_DVCPRO));
274  gString2PixelFormatMap.insert (String2PixelFormatPair ("proreshdv", NTV2_FBF_PRORES_HDV));
275  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgb10packed", NTV2_FBF_10BIT_RGB_PACKED));
276  gString2PixelFormatMap.insert (String2PixelFormatPair ("argb10", NTV2_FBF_10BIT_ARGB));
277  gString2PixelFormatMap.insert (String2PixelFormatPair ("argb16", NTV2_FBF_16BIT_ARGB));
278  gString2PixelFormatMap.insert (String2PixelFormatPair ("rgb10raw", NTV2_FBF_10BIT_RAW_RGB));
279  gString2PixelFormatMap.insert (String2PixelFormatPair ("ycbcr10raw", NTV2_FBF_10BIT_RAW_YCBCR));
280  gString2PixelFormatMap.insert (String2PixelFormatPair ("yuv10raw", NTV2_FBF_10BIT_RAW_YCBCR));
281 
282  // Audio systems...
283  for (uint8_t ndx (0); ndx < 8; ndx++)
284  gString2AudioSystemMap.insert (String2AudioSystemPair(ULWordToString (ndx + 1), NTV2AudioSystem(ndx)));
285 
286  // VANC Modes...
288  {
289  gString2VANCModeMap.insert (String2VANCModePair(aja::to_string(vm), vm));
290 // gString2VANCModeMap.insert (String2VANCModePair(::NTV2VANCModeToString(vm, false), vm));
291  gString2VANCModeMap.insert (String2VANCModePair(::NTV2VANCModeToString(vm, true), vm));
292  }
293 
294  // Input Sources...
299  for (NTV2InputSourceSetConstIter it(gInputSources.begin()); it != gInputSources.end(); ++it)
300  {
301  const NTV2InputSource src(*it);
302  string sSmall(::NTV2InputSourceToString(src, true)), sBig(::NTV2InputSourceToString(src, false));
303  gString2InputSourceMap.insert(String2InputSourcePair(sBig, src));
304  gString2InputSourceMap.insert(String2InputSourcePair(sSmall, src));
305  gString2InputSourceMap.insert(String2InputSourcePair(CNTV2DemoCommon::ToLower(sSmall), src));
306  if (NTV2_INPUT_SOURCE_IS_SDI(src))
307  {
308  sSmall.erase(0, 3); // Erase first 3 chars to leave just the number (e.g. "SDI3" becomes "3")
309  gString2InputSourceMap.insert(String2InputSourcePair(sSmall, src));
310  }
311  } // for each input source
312  gString2InputSourceMap.insert(String2InputSourcePair(string("hdmi"),NTV2_INPUTSOURCE_HDMI1));
313 
314  // Output Destinations...
316  for (NTV2OutputDestinationsConstIter it(gOutputDestinations.begin()); it != gOutputDestinations.end(); ++it)
317  {
318  const NTV2OutputDest dst(*it);
319  string sSmall(::NTV2OutputDestinationToString(dst, true)), sBig(::NTV2OutputDestinationToString(dst, false));
320  gString2OutputDestMap.insert(String2OutputDestPair(sBig, dst));
321  gString2OutputDestMap.insert(String2OutputDestPair(sSmall, dst));
322  gString2OutputDestMap.insert(String2OutputDestPair(CNTV2DemoCommon::ToLower(sSmall), dst));
323  if (NTV2_OUTPUT_DEST_IS_SDI(dst))
324  {
325  const string str(aja::to_string(UWord(::NTV2OutputDestinationToChannel(dst)+1)));
326  gString2OutputDestMap.insert(String2OutputDestPair(str, dst));
327  }
328  } // for each output dest
329  gString2OutputDestMap.insert(String2OutputDestPair(string("hdmi1"),NTV2_OUTPUTDESTINATION_HDMI));
330 
331  // TCIndexes...
332  for (uint16_t ndx (0); ndx < NTV2_MAX_NUM_TIMECODE_INDEXES; ndx++)
333  {
334  const NTV2TCIndex tcIndex (NTV2TCIndex(ndx+0));
335  gTCIndexes.insert (tcIndex);
336  gString2TCIndexMap.insert (String2TCIndexPair(ULWordToString(ndx), tcIndex));
337  gString2TCIndexMap.insert (String2TCIndexPair(::NTV2TCIndexToString(tcIndex, false), tcIndex));
339  if (NTV2_IS_ANALOG_TIMECODE_INDEX(tcIndex))
340  gTCIndexesAnalog.insert (tcIndex);
341  else
342  gTCIndexesSDI.insert (tcIndex);
343  if (NTV2_IS_ATC_LTC_TIMECODE_INDEX(tcIndex))
344  gTCIndexesATCLTC.insert (tcIndex);
346  gTCIndexesVITC1.insert (tcIndex);
348  gTCIndexesVITC2.insert (tcIndex);
349  }
350 
351  { // Test Patterns...
355  {
356  string tpName(tpNames.at(tp));
357  aja::replace(aja::replace(aja::replace(tpName, " ", ""), "%", ""), "_", "");
358  gString2TPNamesMap.insert(String2TPNamePair(aja::lower(tpName), tpNames.at(tp)));
359  ostringstream oss; oss << DEC(tp);
360  gString2TPNamesMap.insert(String2TPNamePair(oss.str(), tpNames.at(tp)));
361  }
362  for (NTV2StringListConstIter it(colorNames.begin()); it != colorNames.end(); ++it)
363  {
364  string colorName(*it);
365  aja::replace(aja::replace(aja::replace(colorName, " ", ""), "%", ""), "_", "");
366  gString2TPNamesMap.insert(String2TPNamePair(aja::lower(colorName), *it));
367  }
368  }
369  } // constructor
370  private:
371  string ULWordToString (const ULWord inNum)
372  {
373  ostringstream oss;
374  oss << inNum;
375  return oss.str ();
376  }
377 }; // constructor
378 
380 
381 
383 {
384  NTV2TimeCodesConstIter it(fTimecodes.find(inTCNdx));
385  if (it != fTimecodes.end())
386  return it->second;
387  return NTV2_RP188();
388 }
389 
391 {
392  size_t errorCount(0);
393  if (fVideoBuffer)
394  if (!inDevice.DMABufferLock(fVideoBuffer, true))
395  errorCount++;
396  if (fVideoBuffer2)
397  if (!inDevice.DMABufferLock(fVideoBuffer2, true))
398  errorCount++;
399  if (fAudioBuffer)
400  if (!inDevice.DMABufferLock(fAudioBuffer, true))
401  errorCount++;
402  if (fAncBuffer)
403  if (!inDevice.DMABufferLock(fAncBuffer, true))
404  errorCount++;
405  if (fAncBuffer2)
406  if (!inDevice.DMABufferLock(fAncBuffer2, true))
407  errorCount++;
408  return !errorCount;
409 }
410 
412 {
413  size_t errorCount(0);
414  if (fVideoBuffer)
415  if (!inDevice.DMABufferUnlock(fVideoBuffer))
416  errorCount++;
417  if (fVideoBuffer2)
418  if (!inDevice.DMABufferUnlock(fVideoBuffer2))
419  errorCount++;
420  if (fAudioBuffer)
421  if (!inDevice.DMABufferUnlock(fAudioBuffer))
422  errorCount++;
423  if (fAncBuffer)
424  if (!inDevice.DMABufferUnlock(fAncBuffer))
425  errorCount++;
426  if (fAncBuffer2)
427  if (!inDevice.DMABufferUnlock(fAncBuffer2))
428  errorCount++;
429  return !errorCount;
430 }
431 
432 
433 bool CNTV2DemoCommon::IsValidDevice (const string & inDeviceSpec)
434 {
435  CNTV2Card device;
436  const string deviceSpec (inDeviceSpec.empty() ? "0" : inDeviceSpec);
437  if (! CNTV2DeviceScanner::GetFirstDeviceFromArgument (deviceSpec, device))
438  {
439  if (deviceSpec != "LIST" && deviceSpec != "list" && deviceSpec != "?")
440  cerr << "## ERROR: Device spec '" << deviceSpec << "' not valid" << endl;
441  return false;
442  }
443  return true;
444 }
445 
446 
447 static string DeviceFilterString (const NTV2DeviceKinds inKinds)
448 {
449  if (inKinds == NTV2_DEVICEKIND_ALL)
450  return "any device";
451  else if (inKinds == NTV2_DEVICEKIND_NONE)
452  return "no device";
453 
454  vector<string> strs;
455  if (inKinds & NTV2_DEVICEKIND_INPUT)
456  strs.push_back("capture");
457  if (inKinds & NTV2_DEVICEKIND_OUTPUT)
458  strs.push_back("playout");
459  if (inKinds & NTV2_DEVICEKIND_SDI)
460  strs.push_back("SDI");
461  if (inKinds & NTV2_DEVICEKIND_HDMI)
462  strs.push_back("HDMI");
463  if (inKinds & NTV2_DEVICEKIND_ANALOG)
464  strs.push_back("analog video");
465  if (inKinds & NTV2_DEVICEKIND_SFP)
466  strs.push_back("IP/SFPs");
467  if (inKinds & NTV2_DEVICEKIND_EXTERNAL)
468  strs.push_back("Thunderbolt/PCMCIA");
469  if (inKinds & NTV2_DEVICEKIND_4K)
470  strs.push_back("4K");
471  if (inKinds & NTV2_DEVICEKIND_12G)
472  strs.push_back("12G SDI");
473  if (inKinds & NTV2_DEVICEKIND_6G)
474  strs.push_back("6G SDI");
475  if (inKinds & NTV2_DEVICEKIND_CUSTOM_ANC)
476  strs.push_back("custom Anc");
477  if (inKinds & NTV2_DEVICEKIND_RELAYS)
478  strs.push_back("SDI relays");
479  if (strs.empty())
480  return "??";
481 
482  ostringstream oss;
483  for (vector<string>::const_iterator it(strs.begin()); it != strs.end(); )
484  {
485  oss << *it;
486  if (++it != strs.end())
487  oss << " | ";
488  }
489  return oss.str();
490 }
491 
492 
494 {
495  ostringstream oss, hdr;
496  CNTV2Card device;
497  ULWord ndx(0);
498  const NTV2DeviceIDSet supportedDevices(::NTV2GetSupportedDevices(inKinds));
499  const string filterString(DeviceFilterString(inKinds));
500 
501  typedef map<NTV2DeviceID,UWord> DeviceTallies;
502  DeviceTallies tallies;
503 
504  for (ndx = 0; CNTV2DeviceScanner::GetDeviceAtIndex(ndx, device); ndx++)
505  {
506  const NTV2DeviceID deviceID(device.GetDeviceID());
507  string serialNum;
508  oss << endl
509  << DEC(ndx);
510  if (tallies.find(deviceID) == tallies.end())
511  {
512  tallies[deviceID] = 1;
513  oss << endl
514  << ToLower(::NTV2DeviceIDToString(deviceID));
515  }
516  else
517  {
518  const UWord num(tallies[deviceID]);
519  tallies.erase(deviceID);
520  tallies[deviceID] = num+1;
521  }
522  if (device.GetSerialNumberString(serialNum))
523  oss << endl
524  << serialNum;
525  if (inKinds != NTV2_DEVICEKIND_ALL && inKinds != NTV2_DEVICEKIND_NONE)
526  if (supportedDevices.find(deviceID) == supportedDevices.end())
527  oss << "\t## Doesn't support one of " << filterString;
528  oss << endl;
529  }
530 
531  if (!ndx)
532  return string("No devices\n");
533  hdr << DEC(ndx) << " local " << (ndx == 1 ? "device" : "devices") << " found:" << endl
534  << setw(16) << left << "Legal -d Values" << endl
535  << setw(16) << left << "----------------";
536  hdr << oss.str();
537  return hdr.str();
538 }
539 
540 
542 {
543  switch(inKinds)
544  {
545  case VIDEO_FORMATS_ALL: return gAllFormats;
546  case VIDEO_FORMATS_4KUHD: return g4KFormats;
547  case VIDEO_FORMATS_8KUHD2: return g8KFormats;
548  default: return gNon4KFormats;
549  }
550 }
551 
552 
553 string CNTV2DemoCommon::GetVideoFormatStrings (const NTV2VideoFormatKinds inKinds, const string inDeviceSpecifier)
554 {
555  const NTV2VideoFormatSet & formatSet (GetSupportedVideoFormats(inKinds));
556  ostringstream oss;
557  CNTV2Card theDevice;
558  if (!inDeviceSpecifier.empty())
559  CNTV2DeviceScanner::GetFirstDeviceFromArgument (inDeviceSpecifier, theDevice);
560 
561  oss << setw(25) << left << "Video Format" << "\t" << setw(16) << left << "Legal -v Values" << endl
562  << setw(25) << left << "------------------------" << "\t" << setw(16) << left << "----------------" << endl;
563  for (NTV2VideoFormatSetConstIter iter(formatSet.begin()); iter != formatSet.end(); ++iter)
564  {
565  string formatName (::NTV2VideoFormatToString (*iter));
567  if (*iter == it->second)
568  {
569  oss << setw(25) << left << formatName << "\t" << setw(16) << left << it->first;
570  if (!inDeviceSpecifier.empty() && theDevice.IsOpen() && !::NTV2DeviceCanDoVideoFormat(theDevice.GetDeviceID(), *iter))
571  oss << "\t## Incompatible with " << theDevice.GetDisplayName();
572  oss << endl;
573  formatName.clear();
574  }
575  oss << endl;
576  }
577  return oss.str();
578 }
579 
580 
582 {
583  if (inKinds == PIXEL_FORMATS_ALL)
584  return gPixelFormats;
585 
587 
588  if (inKinds & PIXEL_FORMATS_RGB)
589  result += gFBFsRGB;
590  if (inKinds & PIXEL_FORMATS_PLANAR)
591  result += gFBFsPlanar;
592  if (inKinds & PIXEL_FORMATS_RAW)
593  result += gFBFsRaw;
594  if (inKinds & PIXEL_FORMATS_PACKED)
595  result += gFBFsPacked;
596  if (inKinds & PIXEL_FORMATS_ALPHA)
597  result += gFBFsAlpha;
598 
599  return result;
600 }
601 
602 
603 string CNTV2DemoCommon::GetPixelFormatStrings (const NTV2PixelFormatKinds inKinds, const string inDeviceSpecifier)
604 {
605  const NTV2FrameBufferFormatSet & formatSet (GetSupportedPixelFormats (inKinds));
606  NTV2DeviceID deviceID (DEVICE_ID_NOTFOUND);
607  string displayName;
608  ostringstream oss;
609 
610  if (!inDeviceSpecifier.empty ())
611  {
612  CNTV2Card device;
613  CNTV2DeviceScanner::GetFirstDeviceFromArgument (inDeviceSpecifier, device);
614  if (device.IsOpen ())
615  {
616  deviceID = device.GetDeviceID ();
617  displayName = device.GetDisplayName ();
618  }
619  }
620 
621 
622  oss << setw (34) << left << "Frame Buffer Format" << "\t" << setw (32) << left << "Legal -p Values" << endl
623  << setw (34) << left << "----------------------------------" << "\t" << setw (32) << left << "--------------------------------" << endl;
624  for (NTV2FrameBufferFormatSetConstIter iter (formatSet.begin ()); iter != formatSet.end (); ++iter)
625  {
626  string formatName (::NTV2FrameBufferFormatToString (*iter, true));
628  if (*iter == it->second)
629  {
630  oss << setw (35) << left << formatName << "\t" << setw (25) << left << it->first;
631  if (!displayName.empty () && !::NTV2DeviceCanDoFrameBufferFormat (deviceID, *iter))
632  oss << "\t## Incompatible with " << displayName;
633  oss << endl;
634  formatName.clear ();
635  }
636  oss << endl;
637  }
638  return oss.str ();
639 }
640 
641 
643 {
645  if (iter == gString2VideoFormatMap.end())
646  return NTV2_FORMAT_UNKNOWN;
647  const NTV2VideoFormat format (iter->second);
648  if (inKinds == VIDEO_FORMATS_ALL)
649  return format;
650  if (inKinds == VIDEO_FORMATS_4KUHD && NTV2_IS_4K_VIDEO_FORMAT(format))
651  return format;
652  if (inKinds == VIDEO_FORMATS_8KUHD2 && NTV2_IS_QUAD_QUAD_FORMAT(format))
653  return format;
654  if (inKinds == VIDEO_FORMATS_NON_4KUHD && !NTV2_IS_4K_VIDEO_FORMAT(format))
655  return format;
656  return NTV2_FORMAT_UNKNOWN;
657 }
658 
659 
661 {
663  return iter != gString2PixelFormatMap.end () ? iter->second : NTV2_FBF_INVALID;
664 }
665 
666 
668 {
669  if (inKinds == NTV2_IOKINDS_ALL)
670  return gInputSources;
671 
672  NTV2InputSourceSet result;
673 
674  if (inKinds & NTV2_IOKINDS_SDI)
675  result += gInputSourcesSDI;
676  if (inKinds & NTV2_IOKINDS_HDMI)
677  result += gInputSourcesHDMI;
678  if (inKinds & NTV2_IOKINDS_ANALOG)
679  result += gInputSourcesAnalog;
680 
681  return result;
682 }
683 
684 
685 string CNTV2DemoCommon::GetInputSourceStrings (const NTV2IOKinds inKinds, const string inDeviceSpecifier)
686 {
687  const NTV2InputSourceSet & sourceSet (GetSupportedInputSources (inKinds));
688  ostringstream oss;
689  CNTV2Card theDevice;
690  if (!inDeviceSpecifier.empty ())
691  CNTV2DeviceScanner::GetFirstDeviceFromArgument (inDeviceSpecifier, theDevice);
692 
693  oss << setw (25) << left << "Input Source" << "\t" << setw (16) << left << "Legal -i Values" << endl
694  << setw (25) << left << "------------------------" << "\t" << setw (16) << left << "----------------" << endl;
695  for (NTV2InputSourceSetConstIter iter (sourceSet.begin ()); iter != sourceSet.end (); ++iter)
696  {
697  string sourceName (::NTV2InputSourceToString (*iter));
699  if (*iter == it->second)
700  {
701  oss << setw (25) << left << sourceName << "\t" << setw (16) << left << it->first;
702  if (!inDeviceSpecifier.empty () && theDevice.IsOpen () && !::NTV2DeviceCanDoInputSource (theDevice.GetDeviceID (), *iter))
703  oss << "\t## Incompatible with " << theDevice.GetDisplayName ();
704  oss << endl;
705  sourceName.clear ();
706  }
707  oss << endl;
708  }
709  return oss.str ();
710 }
711 
712 
714 {
716  if (iter == gString2InputSourceMap.end ())
718  return iter->second;
719 }
720 
721 
722 string CNTV2DemoCommon::GetOutputDestinationStrings (const string inDeviceSpecifier)
723 {
725  ostringstream oss;
726  CNTV2Card theDevice;
727  if (!inDeviceSpecifier.empty())
728  CNTV2DeviceScanner::GetFirstDeviceFromArgument(inDeviceSpecifier, theDevice);
729 
730  oss << setw (25) << left << "Output Destination" << "\t" << setw(16) << left << "Legal -o Values" << endl
731  << setw (25) << left << "------------------------" << "\t" << setw(16) << left << "----------------" << endl;
732  for (NTV2OutputDestinationsConstIter iter(dests.begin()); iter != dests.end(); ++iter)
733  {
734  string destName(::NTV2OutputDestinationToString(*iter));
735  for (String2OutputDestMapConstIter it(gString2OutputDestMap.begin ()); it != gString2OutputDestMap.end (); ++it)
736  if (*iter == it->second)
737  {
738  oss << setw(25) << left << destName << "\t" << setw(16) << left << it->first;
739  if (!inDeviceSpecifier.empty() && theDevice.IsOpen() && !::NTV2DeviceCanDoOutputDestination(theDevice.GetDeviceID(), *iter))
740  oss << "\t## Incompatible with " << theDevice.GetDisplayName();
741  oss << endl;
742  destName.clear();
743  }
744  oss << endl;
745  }
746  return oss.str ();
747 }
748 
749 
751 {
753  if (iter == gString2OutputDestMap.end())
755  return iter->second;
756 }
757 
758 
760 {
761  if (inKinds == TC_INDEXES_ALL)
762  return gTCIndexes;
763 
764  NTV2TCIndexes result;
765 
766  if (inKinds & TC_INDEXES_SDI)
767  result += gTCIndexesSDI;
768  if (inKinds & TC_INDEXES_ANALOG)
769  result += gTCIndexesAnalog;
770  if (inKinds & TC_INDEXES_ATCLTC)
771  result += gTCIndexesATCLTC;
772  if (inKinds & TC_INDEXES_VITC1)
773  result += gTCIndexesVITC1;
774  if (inKinds & TC_INDEXES_VITC2)
775  result += gTCIndexesVITC2;
776 
777  return result;
778 }
779 
781  const string inDeviceSpecifier,
782  const bool inIsInputOnly)
783 {
784  const NTV2TCIndexes & tcIndexes (GetSupportedTCIndexes (inKinds));
785  ostringstream oss;
786  CNTV2Card theDevice;
787  if (!inDeviceSpecifier.empty ())
788  CNTV2DeviceScanner::GetFirstDeviceFromArgument (inDeviceSpecifier, theDevice);
789 
790  oss << setw (25) << left << "Timecode Index" << "\t" << setw (16) << left << "Legal Values " << endl
791  << setw (25) << left << "------------------------" << "\t" << setw (16) << left << "----------------" << endl;
792  for (NTV2TCIndexesConstIter iter (tcIndexes.begin ()); iter != tcIndexes.end (); ++iter)
793  {
794  string tcNdxName (::NTV2TCIndexToString (*iter));
795  for (String2TCIndexMapConstIter it (gString2TCIndexMap.begin ()); it != gString2TCIndexMap.end (); ++it)
796  if (*iter == it->second)
797  {
798  oss << setw (25) << left << tcNdxName << "\t" << setw (16) << left << it->first;
799  if (!inDeviceSpecifier.empty () && theDevice.IsOpen ())
800  {
801  const NTV2DeviceID deviceID(theDevice.GetDeviceID());
802  const bool canDoTCIndex (inIsInputOnly ? ::NTV2DeviceCanDoInputTCIndex(deviceID, *iter)
803  : ::NTV2DeviceCanDoTCIndex(deviceID, *iter));
804  if (!canDoTCIndex)
805  oss << "\t## Incompatible with " << theDevice.GetDisplayName();
806  }
807  oss << endl;
808  tcNdxName.clear ();
809  }
810  oss << endl;
811  }
812  return oss.str ();
813 }
814 
815 
817 {
819  if (iter == gString2TCIndexMap.end ())
820  return NTV2_TCINDEX_INVALID;
821  return iter->second;
822 }
823 
824 
825 string CNTV2DemoCommon::GetAudioSystemStrings (const string inDeviceSpecifier)
826 {
827  NTV2DeviceID deviceID (DEVICE_ID_NOTFOUND);
828  string displayName;
829  ostringstream oss;
830 
831  if (!inDeviceSpecifier.empty())
832  {
833  CNTV2Card device;
834  CNTV2DeviceScanner::GetFirstDeviceFromArgument (inDeviceSpecifier, device);
835  if (device.IsOpen())
836  {
837  deviceID = device.GetDeviceID();
838  displayName = device.GetDisplayName();
839  }
840  }
841 
842  const UWord numAudioSystems (::NTV2DeviceGetNumAudioSystems(deviceID));
843  oss << setw(12) << left << "Audio System" << endl
844  << setw(12) << left << "------------" << endl;
845  for (UWord ndx(0); ndx < 8; ndx++)
846  {
847  oss << setw(12) << left << (ndx+1);
848  if (!displayName.empty() && ndx >= numAudioSystems)
849  oss << "\t## Incompatible with " << displayName;
850  oss << endl;
851  }
852  return oss.str();
853 }
854 
855 
857 {
859  return iter != gString2AudioSystemMap.end() ? iter->second : NTV2_AUDIOSYSTEM_INVALID;
860 }
861 
863 {
864  typedef map<string,string> NTV2StringMap;
865  NTV2StringSet keys;
866  for (String2VANCModeMapConstIter it(gString2VANCModeMap.begin()); it != gString2VANCModeMap.end(); ++it)
867  {
868  const string val(aja::to_string(it->second));
869  if (keys.find(val) == keys.end())
870  keys.insert(val);
871  }
872 
873  NTV2StringMap legals;
874  for (NTV2StringSet::const_iterator kit(keys.begin()); kit != keys.end(); ++kit)
875  {
876  NTV2VANCMode officialVM(NTV2VANCMode(aja::stoul(*kit)));
877  NTV2StringList legalValues;
878  for (String2VANCModeMapConstIter it(gString2VANCModeMap.begin()); it != gString2VANCModeMap.end(); ++it)
879  if (it->second == officialVM)
880  legalValues.push_back(it->first);
881  legals[aja::to_string(officialVM)] = aja::join(legalValues, ", ");
882  }
883 
884  ostringstream oss;
885  oss << setw(12) << left << "VANC Mode" << "\t" << setw(32) << left << "Legal --vanc Values " << endl
886  << setw(12) << left << "---------" << "\t" << setw(32) << left << "--------------------------------" << endl;
887  for (NTV2StringMap::const_iterator it(legals.begin()); it != legals.end(); ++it)
888  oss << setw(12) << left << it->first << "\t" << setw(32) << left << it->second << endl;
889  return oss.str();
890 }
891 
892 
894 {
896  return iter != gString2VANCModeMap.end() ? iter->second : NTV2_VANCMODE_INVALID;
897 }
898 
899 
901 {
902  typedef map<string,string> NTV2StringMap;
903  NTV2StringSet keys;
904  for (String2TPNamesMapConstIter it(gString2TPNamesMap.begin()); it != gString2TPNamesMap.end(); ++it)
905  if (keys.find(it->second) == keys.end())
906  keys.insert(it->second);
907 
908  NTV2StringMap legals;
909  for (NTV2StringSet::const_iterator kit(keys.begin()); kit != keys.end(); ++kit)
910  {
911  const string & officialPatName(*kit);
912  NTV2StringList legalValues;
913  for (String2TPNamesMapConstIter it(gString2TPNamesMap.begin()); it != gString2TPNamesMap.end(); ++it)
914  if (it->second == officialPatName)
915  legalValues.push_back(it->first);
916  legals[officialPatName] = aja::join(legalValues, ", ");
917  }
918 
919  ostringstream oss;
920  oss << setw(25) << left << "Test Pattern or Color " << "\t" << setw(22) << left << "Legal --pattern Values" << endl
921  << setw(25) << left << "------------------------" << "\t" << setw(22) << left << "----------------------" << endl;
922  for (NTV2StringMap::const_iterator it(legals.begin()); it != legals.end(); ++it)
923  oss << setw(25) << left << it->first << "\t" << setw(22) << left << it->second << endl;
924  return oss.str();
925 }
926 
927 
929 {
930  string tpName(inStr);
931  aja::lower(aja::strip(aja::replace(tpName, " ", "")));
933  return (it != gString2TPNamesMap.end()) ? it->second : "";
934 }
935 
936 
937 string CNTV2DemoCommon::ToLower (const string & inStr)
938 {
939  string result(inStr);
940  return aja::lower(result);
941 }
942 
943 
944 string CNTV2DemoCommon::StripFormatString (const std::string & inStr)
945 {
946  string result (inStr);
947  while (result.find (" ") != string::npos)
948  result.erase (result.find (" "), 1);
949  while (result.find ("00") != string::npos)
950  result.erase (result.find ("00"), 2);
951  while (result.find (".") != string::npos)
952  result.erase (result.find ("."), 1);
953  return result;
954 }
955 
956 
958 {
959  char result (0);
960  #if defined (AJAMac) || defined (AJALinux)
961  struct termios terminalStatus;
962  ::memset (&terminalStatus, 0, sizeof (terminalStatus));
963  if (::tcgetattr (0, &terminalStatus) < 0)
964  cerr << "tcsetattr()";
965  terminalStatus.c_lflag &= ~uint32_t(ICANON);
966  terminalStatus.c_lflag &= ~uint32_t(ECHO);
967  terminalStatus.c_cc[VMIN] = 1;
968  terminalStatus.c_cc[VTIME] = 0;
969  if (::tcsetattr (0, TCSANOW, &terminalStatus) < 0)
970  cerr << "tcsetattr ICANON";
971  if (::read (0, &result, 1) < 0)
972  cerr << "read()" << endl;
973  terminalStatus.c_lflag |= ICANON;
974  terminalStatus.c_lflag |= ECHO;
975  if (::tcsetattr (0, TCSADRAIN, &terminalStatus) < 0)
976  cerr << "tcsetattr ~ICANON" << endl;
977  #elif defined (MSWindows) || defined (AJAWindows)
978  HANDLE hdl (GetStdHandle (STD_INPUT_HANDLE));
979  DWORD nEvents (0);
980  INPUT_RECORD buffer;
981  PeekConsoleInput (hdl, &buffer, 1, &nEvents);
982  if (nEvents > 0)
983  {
984  ReadConsoleInput (hdl, &buffer, 1, &nEvents);
985  result = char (buffer.Event.KeyEvent.wVirtualKeyCode);
986  }
987  #endif
988  return result;
989 }
990 
991 
993 {
994  cout << "## Press Enter/Return key to exit: ";
995  cout.flush();
996  cin.get();
997 }
998 
999 
1001 {
1003  switch (inFrameRate)
1004  {
1005  case NTV2_FRAMERATE_6000: result = kTCFormat60fps; break;
1006  case NTV2_FRAMERATE_5994: result = kTCFormat60fpsDF; break;
1007  case NTV2_FRAMERATE_4800: result = kTCFormat48fps; break;
1008  case NTV2_FRAMERATE_4795: result = kTCFormat48fps; break;
1009  case NTV2_FRAMERATE_3000: result = kTCFormat30fps; break;
1010  case NTV2_FRAMERATE_2997: result = kTCFormat30fpsDF; break;
1011  case NTV2_FRAMERATE_2500: result = kTCFormat25fps; break;
1012  case NTV2_FRAMERATE_2400: result = kTCFormat24fps; break;
1013  case NTV2_FRAMERATE_2398: result = kTCFormat24fps; break;
1014  case NTV2_FRAMERATE_5000: result = kTCFormat50fps; break;
1015  default: break;
1016  }
1017  return result;
1018 
1019 } // NTV2FrameRate2TimecodeFormat
1020 
1021 
1023 {
1024  switch (inFrameRate)
1025  {
1028 #if !defined(NTV2_DEPRECATE_16_0)
1033 #endif
1034  case NTV2_FRAMERATE_5000: return AJA_FrameRate_5000;
1046 
1047  case NTV2_NUM_FRAMERATES:
1048  case NTV2_FRAMERATE_UNKNOWN: break;
1049  }
1050  return AJA_FrameRate_Unknown;
1051 } // GetAJAFrameRate
1052 
1053 
1055 {
1056  switch (inFormat)
1057  {
1060  case NTV2_FBF_ARGB: return AJA_PixelFormat_ARGB8;
1061  case NTV2_FBF_RGBA: return AJA_PixelFormat_RGBA8;
1064  case NTV2_FBF_ABGR: return AJA_PixelFormat_ABGR8;
1078 
1083 
1088 
1091  case NTV2_FBF_10BIT_ARGB:
1092  case NTV2_FBF_16BIT_ARGB:
1093  case NTV2_FBF_INVALID: break;
1094  }
1095  return AJA_PixelFormat_Unknown;
1096 } // GetAJAPixelFormat
1097 
1098 
1100 {
1101  static struct VideoFormatPair
1102  {
1103  NTV2VideoFormat vIn;
1104  NTV2VideoFormat vOut;
1105  } VideoFormatPairs[] = { // vIn vOut
1124 
1128 
1132  };
1133  for (size_t formatNdx(0); formatNdx < sizeof(VideoFormatPairs) / sizeof(VideoFormatPair); formatNdx++)
1134  if (VideoFormatPairs[formatNdx].vIn == inOutVideoFormat)
1135  {
1136  inOutVideoFormat = VideoFormatPairs[formatNdx].vOut;
1137  return true;
1138  }
1139  return false;
1140 
1141 } // get4KInputFormat
1142 
1144 {
1145  static struct VideoFormatPair
1146  {
1147  NTV2VideoFormat vIn;
1148  NTV2VideoFormat vOut;
1149  } VideoFormatPairs[] = { // vIn vOut
1176  };
1177  for (size_t formatNdx(0); formatNdx < sizeof(VideoFormatPairs) / sizeof(VideoFormatPair); formatNdx++)
1178  if (VideoFormatPairs[formatNdx].vIn == inOutVideoFormat)
1179  {
1180  inOutVideoFormat = VideoFormatPairs[formatNdx].vOut;
1181  return true;
1182  }
1183  return false;
1184 
1185 } // get8KInputFormat
1186 
1187 
1189 {
1190  return gGlobalMutexName.c_str();
1191 }
1192 
1193 static UWord GetNumTSIMuxers (const NTV2DeviceID inDeviceID)
1194 {
1195  UWord result(0);
1196  static const NTV2WidgetID s425MuxerIDs[] = {NTV2_Wgt425Mux1, NTV2_Wgt425Mux2, NTV2_Wgt425Mux3, NTV2_Wgt425Mux4};
1197  for (size_t ndx(0); ndx < sizeof(s425MuxerIDs)/sizeof(NTV2WidgetID); ndx++)
1198  if (::NTV2DeviceCanDoWidget(inDeviceID, s425MuxerIDs[ndx]))
1199  result++;
1200  return result;
1201 }
1202 
1203 NTV2ChannelList CNTV2DemoCommon::GetTSIMuxesForFrameStore (const NTV2DeviceID inDeviceID, const NTV2Channel in1stFrameStore, const UWord inCount)
1204 {
1205  UWord totFrameStores(::NTV2DeviceGetNumFrameStores(inDeviceID));
1206  UWord totTSIMuxers(::GetNumTSIMuxers(inDeviceID));
1207  UWord firstFramestoreIndex = UWord(::GetIndexForNTV2Channel(in1stFrameStore));
1208  UWord tsiMux(firstFramestoreIndex);
1209  NTV2ChannelList result;
1210  if (totFrameStores > totTSIMuxers)
1211  tsiMux = firstFramestoreIndex/2;
1212  else if (totFrameStores < totTSIMuxers)
1213  tsiMux = firstFramestoreIndex*2;
1214  for (UWord num(0); num < inCount; num++)
1215  result.push_back(NTV2Channel(tsiMux + num));
1216  return result;
1217 }
1218 
1219 
1221  const CaptureConfig & inConfig,
1222  const bool isInputRGB)
1223 {
1224  const bool isFrameRGB (::IsRGBFormat(inConfig.fPixelFormat));
1226  const NTV2OutputXptID inputOXpt (::GetInputSourceOutputXpt(inConfig.fInputSource, false, isInputRGB));
1227  const NTV2InputXptID cscVidIXpt (::GetCSCInputXptFromChannel(inConfig.fInputChannel));
1228  NTV2OutputXptID cscOXpt (::GetCSCOutputXptFromChannel(inConfig.fInputChannel, /*key?*/false, /*RGB?*/isFrameRGB));
1229 
1230  conns.clear();
1231  if (isInputRGB && !isFrameRGB)
1232  {
1233  conns.insert(NTV2Connection(fbIXpt, cscOXpt)); // FB <== CSC
1234  conns.insert(NTV2Connection(cscVidIXpt, inputOXpt)); // CSC <== SDIIn/HDMIin
1235  }
1236  else if (!isInputRGB && isFrameRGB)
1237  {
1238  conns.insert(NTV2Connection(fbIXpt, cscOXpt)); // FB <== CSC
1239  conns.insert(NTV2Connection(cscVidIXpt, inputOXpt)); // CSC <== SDIIn/HDMIIn
1240  }
1241  else
1242  conns.insert(NTV2Connection(fbIXpt, inputOXpt)); // FB <== SDIIn/HDMIin
1243 
1244  return !conns.empty();
1245 
1246 } // GetRoutingCapture
1247 
1248 
1250  const CaptureConfig & inConfig,
1251  const NTV2DeviceID devID,
1252  const bool isInputRGB)
1253 {
1254  UWord sdi(0), mux(0), csc(0), fb(0), path(0);
1257  const bool isFrameRGB (::IsRGBFormat(inConfig.fPixelFormat));
1258  conns.clear();
1260  { // HDMI
1261  if (inConfig.fInputChannel == NTV2_CHANNEL1)
1262  { // HDMI CH1234
1263  if (isInputRGB == isFrameRGB)
1264  { // HDMI CH1234 RGB SIGNAL AND RGB FBF OR YUV SIGNAL AND YUV FBF
1265  for (path = 0; path < 4; path++)
1266  { // MUX <== HDMIIn
1267  in = ::GetTSIMuxInputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1);
1268  out = ::GetInputSourceOutputXpt(inConfig.fInputSource, /*DS2*/false, isInputRGB, /*quadrant*/path);
1269  conns.insert(NTV2Connection(in, out));
1270  // FB <== MUX
1271  in = ::GetFrameBufferInputXptFromChannel(NTV2Channel(fb+path/2), /*Binput*/path & 1);
1272  out = ::GetTSIMuxOutputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1, /*RGB*/isInputRGB);
1273  conns.insert(NTV2Connection(in, out));
1274  }
1275  } // HDMI CH1234 RGB SIGNAL AND RGB FBF
1276  else if (isInputRGB && !isFrameRGB)
1277  { // HDMI CH1234 RGB SIGNAL AND YUV FBF
1278  for (path = 0; path < 4; path++)
1279  {
1280  // CSC <== HDMIIn
1281  in = ::GetCSCInputXptFromChannel(NTV2Channel(csc+path));
1282  out = ::GetInputSourceOutputXpt(inConfig.fInputSource, /*DS2*/false, isInputRGB, /*quadrant*/path);
1283  conns.insert(NTV2Connection(in, out));
1284  // MUX <== CSC
1285  in = ::GetTSIMuxInputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1);
1286  out = ::GetCSCOutputXptFromChannel(NTV2Channel(csc+path), /*key*/false, /*rgb*/isFrameRGB);
1287  conns.insert(NTV2Connection(in, out));
1288  // FB <== MUX
1289  in = ::GetFrameBufferInputXptFromChannel(NTV2Channel(fb+path/2), /*DS2*/path & 1);
1290  out = ::GetTSIMuxOutputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1, /*rgb*/isFrameRGB);
1291  conns.insert(NTV2Connection(in, out));
1292  }
1293  } // HDMI CH1234 RGB SIGNAL AND YUV FBF
1294  else // !isInputRGB && isFrameRGB
1295  { // HDMI CH1234 YUV SIGNAL AND RGB FBF
1296  for (path = 0; path < 4; path++)
1297  {
1298  // CSC <== HDMIIn
1299  in = ::GetCSCInputXptFromChannel(NTV2Channel(csc+path));
1300  out = ::GetInputSourceOutputXpt(inConfig.fInputSource, /*DS2*/false, isInputRGB, /*quadrant*/path);
1301  conns.insert(NTV2Connection(in, out));
1302  // MUX <== CSC
1303  in = ::GetTSIMuxInputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1);
1304  out = ::GetCSCOutputXptFromChannel(NTV2Channel(csc+path), /*key*/false, /*rgb*/isFrameRGB);
1305  conns.insert(NTV2Connection(in, out));
1306  // FB <== MUX
1307  in = ::GetFrameBufferInputXptFromChannel(NTV2Channel(fb+path/2), /*DS2*/path & 1);
1308  out = ::GetTSIMuxOutputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1, /*rgb*/isFrameRGB);
1309  conns.insert(NTV2Connection(in, out));
1310  }
1311  } // HDMI CH1234 YUV SIGNAL AND RGB FBF
1312  } // HDMI CH1234
1313  else
1314  { // HDMI CH5678
1315  cerr << "## ERROR: Ch5678 must be for Corvid88, but no HDMI on that device" << endl;
1316  } // HDMI CH5678
1317  } // HDMI
1318  else
1319  { // SDI
1320  if (::NTV2DeviceCanDo12gRouting(devID))
1321  { // FB <== SDIIn
1323  out = ::GetInputSourceOutputXpt(inConfig.fInputSource);
1324  conns.insert(NTV2Connection(in, out));
1325  }
1326  else
1327  { // SDI CH1234 or CH5678
1328  if (inConfig.fInputChannel != NTV2_CHANNEL1)
1329  {fb = 4; sdi = fb; mux = fb / 2; csc = fb;}
1330  if (isFrameRGB)
1331  { // RGB FB
1332  if (inConfig.fDoTSIRouting)
1333  { // SDI CH1234 RGB TSI
1334  for (path = 0; path < 4; path++)
1335  {
1336  // CSC <== SDIIn
1337  in = ::GetCSCInputXptFromChannel(NTV2Channel(csc+path));
1339  conns.insert(NTV2Connection(in, out));
1340  // MUX <== CSC
1341  in = ::GetTSIMuxInputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1);
1342  out = ::GetCSCOutputXptFromChannel(NTV2Channel(csc+path), /*key*/false, /*rgb*/isFrameRGB);
1343  conns.insert(NTV2Connection(in, out));
1344  // FB <== MUX
1345  in = ::GetFrameBufferInputXptFromChannel(NTV2Channel(fb+path/2), /*DS2*/path & 1);
1346  out = ::GetTSIMuxOutputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1, /*rgb*/isFrameRGB);
1347  conns.insert(NTV2Connection(in, out));
1348  } // for each spigot
1349  } // SDI CH1234 RGB TSI
1350  else
1351  { // SDI CH1234 RGB SQUARES
1352  for (path = 0; path < 4; path++)
1353  {
1354  // CSC <== SDIIn
1355  in = ::GetCSCInputXptFromChannel(NTV2Channel(csc+path));
1357  conns.insert(NTV2Connection(in, out));
1358  // FB <== CSC
1360  out = ::GetCSCOutputXptFromChannel(NTV2Channel(csc+path), /*key*/false, /*rgb*/isFrameRGB);
1361  conns.insert(NTV2Connection(in, out));
1362  } // for each spigot
1363  } // SDI CH1234 RGB SQUARES
1364  } // SDI CH1234 RGB FBF
1365  else // YUV FBF
1366  {
1367  if (inConfig.fDoTSIRouting)
1368  { // SDI CH1234 YUV TSI
1369  for (path = 0; path < 4; path++)
1370  {
1371  // MUX <== SDIIn
1372  in = ::GetTSIMuxInputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1);
1374  conns.insert(NTV2Connection(in, out));
1375  // FB <== MUX
1376  in = ::GetFrameBufferInputXptFromChannel(NTV2Channel(fb+path/2), /*DS2*/path & 1);
1377  out = ::GetTSIMuxOutputXptFromChannel(NTV2Channel(mux+path/2), /*LinkB*/path & 1, /*rgb*/isFrameRGB);
1378  conns.insert(NTV2Connection(in, out));
1379  } // for each spigot
1380  } // SDI CH1234 YUV TSI
1381  else
1382  {
1383  for (path = 0; path < 4; path++)
1384  { // FB <== SDIIn
1387  conns.insert(NTV2Connection(in, out));
1388  } // for each path
1389  } // SDI CH1234 YUV SQUARES
1390  } // YUV FBF
1391  } // 3G SDI CH1234 or CH5678
1392  } // SDI
1393  return !conns.empty();
1394 } // GetRoutingCapture4K
1395 
1396 
1398  const CaptureConfig & inConfig,
1399  const NTV2VideoFormat inVideoFormat,
1400  const NTV2DeviceID devID,
1401  const bool isInputRGB)
1402 { (void)isInputRGB; (void) devID;
1403  UWord fb(0), path(0);
1406  const bool isFrameRGB (::IsRGBFormat(inConfig.fPixelFormat));
1407  const bool isQuadQuadHFR (NTV2_IS_QUAD_QUAD_HFR_VIDEO_FORMAT(inVideoFormat));
1408  conns.clear();
1409  if (inConfig.fInputChannel % 2)
1410  return false; // Input channel cannot be Ch2/Ch4/Ch6/etc
1411  if (inConfig.fInputChannel > 3)
1412  return false; // Input channel cannot be Ch5 or greater
1413  if (::NTV2InputSourceToChannel(inConfig.fInputSource) % 2)
1414  return false; // Input source cannot be SDIIn2/4/6/etc
1415  if (::NTV2InputSourceToChannel(inConfig.fInputSource) > 3)
1416  return false; // Input source cannot be SDIIn5 or greater
1417 
1418  if (inConfig.fDoTSIRouting)
1419  { // TSI
1420  if (inConfig.fInputChannel)
1421  fb = 2;
1422  for (path = 0; path < 4; path++)
1423  if (isFrameRGB) // Uses 2 FBs, 4 SDIs
1424  { // RGB
1425  // DLInDS1 <== SDIInDS1
1426  in = ::GetDLInInputXptFromChannel (NTV2Channel(path), /*B*/false);
1427  out = ::GetSDIInputOutputXptFromChannel (NTV2Channel(path), /*DS2*/false);
1428  conns.insert(NTV2Connection(in, out));
1429  // DLInDS2 <== SDIInDS2
1430  in = ::GetDLInInputXptFromChannel (NTV2Channel(path), /*B*/true);
1431  out = ::GetSDIInputOutputXptFromChannel (NTV2Channel(path), /*DS2*/true);
1432  conns.insert(NTV2Connection(in, out));
1433  // FB <== DLIn
1434  in = ::GetFrameBufferInputXptFromChannel (NTV2Channel(fb+path/2), /*B*/path & 1);
1436  conns.insert(NTV2Connection(in, out));
1437  } // if RGB
1438  else if (isQuadQuadHFR) // Uses 2 FBs, 4 SDIs
1439  { // FB <== SDIIn, FBDS2 <== SDIIn
1440  in = ::GetFrameBufferInputXptFromChannel (NTV2Channel(fb+path/2), /*DS2?*/path & 1);
1442  conns.insert(NTV2Connection(in, out));
1443  } // else if YUV QuadQuad
1444  else // Uses 2 FBs, 2 SDIs
1445  { // FB <== SDIIn, FBDS2 <== SDIInDS2
1446  in = ::GetFrameBufferInputXptFromChannel (NTV2Channel(fb+path/2), /*DS2?*/path & 1);
1447  out = ::GetSDIInputOutputXptFromChannel (NTV2Channel(fb+path/2), /*DS2?*/path & 1);
1448  conns.insert(NTV2Connection(in, out));
1449  } // else YUV non-QuadQuad
1450  } // if TSI
1451  else
1452  { // Square-division routing
1453  if (inConfig.fInputChannel)
1454  return false; // Sorry, Ch1 only
1455  if (inConfig.fInputSource != NTV2_INPUTSOURCE_SDI1)
1456  return false; // Sorry, SDI1 only (1st SDI of 4 links)
1457  for (path = 0; path < 4; path++) // 4 FBs, 4 SDIs
1458  if (isFrameRGB)
1459  { // RGB
1460  // DLInDS1 <== SDIInDS1
1461  in = ::GetDLInInputXptFromChannel (NTV2Channel(path), /*B*/false);
1462  out = ::GetSDIInputOutputXptFromChannel (NTV2Channel(path), /*DS2*/false);
1463  conns.insert(NTV2Connection(in, out));
1464  // DLInDS2 <== SDIInDS2
1465  in = ::GetDLInInputXptFromChannel (NTV2Channel(path), /*B*/true);
1466  out = ::GetSDIInputOutputXptFromChannel (NTV2Channel(path), /*DS2*/true);
1467  conns.insert(NTV2Connection(in, out));
1468  // FB <== DLIn
1471  conns.insert(NTV2Connection(in, out));
1472  } // for each path
1473  else // YUV
1474  { // FB <== SDIIn
1477  conns.insert(NTV2Connection(in, out));
1478  } // for each path
1479  } // else Squares
1480  return !conns.empty();
1481 } // GetInputRouting8K
1482 
1483 
1484 bool CNTV2DemoCommon::ConfigureAudioSystems (CNTV2Card & inDevice, const CaptureConfig & inConfig, const NTV2AudioSystemSet inAudioSystems)
1485 {
1486  UWord failures(0);
1487  UWord numAudChannels(::NTV2DeviceGetMaxAudioChannels(inDevice.GetDeviceID()));
1488  for (NTV2AudioSystemSetConstIter it(inAudioSystems.begin()); it != inAudioSystems.end(); ++it)
1489  { const NTV2AudioSystem audSys(*it);
1490  // Have the audio system capture audio from the designated device input...
1491  if (!inDevice.SetAudioSystemInputSource (audSys, NTV2_AUDIO_EMBEDDED,
1493  failures++;
1494 
1495  // Configure for max available audio channels, 48KHz, 4MB buffers, and disable loopback...
1496  if (!inDevice.SetNumberAudioChannels (numAudChannels, audSys)) failures++;
1497  if (!inDevice.SetAudioRate (NTV2_AUDIO_48K, audSys)) failures++;
1498  if (!inDevice.SetAudioBufferSize (NTV2_AUDIO_BUFFER_SIZE_4MB, audSys)) failures++;
1499  if (!inDevice.SetAudioLoopBack(NTV2_AUDIO_LOOPBACK_OFF, audSys)) failures++;
1500  }
1501  return !failures;
1502 }
1503 
1504 
1506 {
1507  const size_t hwPageSizeBytes (NTV2Buffer::HostPageSize());
1508  const size_t sdkPageSizeBytes (NTV2Buffer::DefaultPageSize());
1509  if (hwPageSizeBytes != sdkPageSizeBytes)
1510  {
1511  if (NTV2Buffer::SetDefaultPageSize(hwPageSizeBytes))
1512  cerr << "## NOTE: Page size changed from " << DEC(sdkPageSizeBytes/1024) << "K to " << DEC(hwPageSizeBytes/1024) << "K" << endl;
1513  else
1514  cerr << "## WARNING: Failed to change page size from " << DEC(sdkPageSizeBytes/1024) << "K to " << DEC(hwPageSizeBytes/1024) << "K" << endl;
1515  }
1516  return hwPageSizeBytes;
1517 }
1518 
1519 
1520 CNTV2DemoCommon::Popt::Popt (const int inArgc, const char ** pArgs, const PoptOpts * pInOptionsTable)
1521 {
1522  mContext = ::poptGetContext(AJA_NULL, inArgc, pArgs, pInOptionsTable, 0);
1523  mResult = ::poptGetNextOpt(mContext);
1524  if (mResult < -1)
1525  { ostringstream oss;
1526  oss << ::poptBadOption(mContext, 0) << ": " << ::poptStrerror(mResult);
1527  mError = oss.str();
1528  }
1529  else
1530  {
1531  const char * pStr (::poptGetArg(mContext));
1532  while (pStr)
1533  {
1534  mOtherArgs.push_back(string(pStr)); // Append to file list
1535  pStr = ::poptGetArg(mContext);
1536  } // for each additional positional argument
1537  }
1538 }
1539 
1541 {
1542  mContext = ::poptFreeContext(mContext);
1543 }
1544 
1545 
1547 {
1548  typedef struct {string fName; NTV2VideoFormat fFormat;} FormatNameDictionary;
1549  static const FormatNameDictionary sVFmtDict[] = {
1550  {"1080i50", NTV2_FORMAT_1080i_5000},
1551  {"1080i", NTV2_FORMAT_1080i_5994},
1552  {"1080i5994", NTV2_FORMAT_1080i_5994},
1553  {"hd", NTV2_FORMAT_1080i_5994},
1554  {"1080i60", NTV2_FORMAT_1080i_6000},
1555  {"720p", NTV2_FORMAT_720p_5994},
1556  {"720p5994", NTV2_FORMAT_720p_5994},
1557  {"720p60", NTV2_FORMAT_720p_6000},
1558  {"1080psf2398", NTV2_FORMAT_1080psf_2398},
1559  {"1080psf24", NTV2_FORMAT_1080psf_2400},
1560  {"1080p2997", NTV2_FORMAT_1080p_2997},
1561  {"1080p30", NTV2_FORMAT_1080p_3000},
1562  {"1080p25", NTV2_FORMAT_1080p_2500},
1563  {"1080p2398", NTV2_FORMAT_1080p_2398},
1564  {"1080p24", NTV2_FORMAT_1080p_2400},
1565  {"2048x1080p2398", NTV2_FORMAT_1080p_2K_2398},
1566  {"2048x1080p24", NTV2_FORMAT_1080p_2K_2400},
1567  {"2048x1080psf2398", NTV2_FORMAT_1080psf_2K_2398},
1568  {"2048x1080psf24", NTV2_FORMAT_1080psf_2K_2400},
1569  {"720p50", NTV2_FORMAT_720p_5000},
1570  {"1080p50b", NTV2_FORMAT_1080p_5000_B},
1571  {"1080p", NTV2_FORMAT_1080p_5994_B},
1572  {"1080p5994b", NTV2_FORMAT_1080p_5994_B},
1573  {"1080p60b", NTV2_FORMAT_1080p_6000_B},
1574  {"720p2398", NTV2_FORMAT_720p_2398},
1575  {"720p25", NTV2_FORMAT_720p_2500},
1576  {"1080p50", NTV2_FORMAT_1080p_5000_A},
1577  {"1080p5994", NTV2_FORMAT_1080p_5994_A},
1578  {"1080p60", NTV2_FORMAT_1080p_6000_A},
1579  {"2048x1080p25", NTV2_FORMAT_1080p_2K_2500},
1580  {"2048x1080psf25", NTV2_FORMAT_1080psf_2K_2500},
1581  {"1080psf25", NTV2_FORMAT_1080psf_2500_2},
1582  {"1080psf2997", NTV2_FORMAT_1080psf_2997_2},
1583  {"1080psf30", NTV2_FORMAT_1080psf_3000_2},
1584  {"525i", NTV2_FORMAT_525_5994},
1585  {"525i2997", NTV2_FORMAT_525_5994},
1586  {"sd", NTV2_FORMAT_525_5994},
1587  {"625i", NTV2_FORMAT_625_5000},
1588  {"625i25", NTV2_FORMAT_625_5000},
1589  {"525i2398", NTV2_FORMAT_525_2398},
1590  {"525i24", NTV2_FORMAT_525_2400},
1591  {"525psf2997", NTV2_FORMAT_525psf_2997},
1592  {"625psf25", NTV2_FORMAT_625psf_2500},
1593  {"2048x1556psf1498", NTV2_FORMAT_2K_1498},
1594  {"2048x1556psf15", NTV2_FORMAT_2K_1500},
1595  {"2048x1556psf2398", NTV2_FORMAT_2K_2398},
1596  {"2048x1556psf24", NTV2_FORMAT_2K_2400},
1597  {"2048x1556psf25", NTV2_FORMAT_2K_2500},
1598  {"4x1920x1080psf2398", NTV2_FORMAT_4x1920x1080psf_2398},
1599  {"4x1920x1080psf24", NTV2_FORMAT_4x1920x1080psf_2400},
1600  {"4x1920x1080psf25", NTV2_FORMAT_4x1920x1080psf_2500},
1601  {"4x1920x1080p2398", NTV2_FORMAT_4x1920x1080p_2398},
1602  {"uhd2398", NTV2_FORMAT_4x1920x1080p_2398},
1603  {"4x1920x1080p24", NTV2_FORMAT_4x1920x1080p_2400},
1604  {"uhd24", NTV2_FORMAT_4x1920x1080p_2400},
1605  {"4x1920x1080p25", NTV2_FORMAT_4x1920x1080p_2500},
1606  {"uhd25", NTV2_FORMAT_4x1920x1080p_2500},
1607  {"4x2048x1080psf2398", NTV2_FORMAT_4x2048x1080psf_2398},
1608  {"4x2048x1080psf24", NTV2_FORMAT_4x2048x1080psf_2400},
1609  {"4x2048x1080psf25", NTV2_FORMAT_4x2048x1080psf_2500},
1610  {"4k2398", NTV2_FORMAT_4x2048x1080p_2398},
1611  {"4x2048x1080p2398", NTV2_FORMAT_4x2048x1080p_2398},
1613  {"4x2048x1080p24", NTV2_FORMAT_4x2048x1080p_2400},
1615  {"4x2048x1080p25", NTV2_FORMAT_4x2048x1080p_2500},
1616  {"4x1920x1080p2997", NTV2_FORMAT_4x1920x1080p_2997},
1617  {"4x1920x1080p30", NTV2_FORMAT_4x1920x1080p_3000},
1618  {"4x1920x1080psf2997", NTV2_FORMAT_4x1920x1080psf_2997},
1619  {"4x1920x1080psf30", NTV2_FORMAT_4x1920x1080psf_3000},
1620  {"4x2048x1080p2997", NTV2_FORMAT_4x2048x1080p_2997},
1621  {"4x2048x1080p30", NTV2_FORMAT_4x2048x1080p_3000},
1622  {"4x2048x1080psf2997", NTV2_FORMAT_4x2048x1080psf_2997},
1623  {"4x2048x1080psf30", NTV2_FORMAT_4x2048x1080psf_3000},
1624  {"4x1920x1080p50", NTV2_FORMAT_4x1920x1080p_5000},
1625  {"uhd50", NTV2_FORMAT_4x1920x1080p_5000},
1626  {"4x1920x1080p5994", NTV2_FORMAT_4x1920x1080p_5994},
1627  {"uhd5994", NTV2_FORMAT_4x1920x1080p_5994},
1628  {"4x1920x1080p60", NTV2_FORMAT_4x1920x1080p_6000},
1630  {"uhd60", NTV2_FORMAT_4x1920x1080p_6000},
1632  {"4x2048x1080p50", NTV2_FORMAT_4x2048x1080p_5000},
1633  {"4k5994", NTV2_FORMAT_4x2048x1080p_5994},
1634  {"4x2048x1080p5994", NTV2_FORMAT_4x2048x1080p_5994},
1637  {"4x2048x1080p60", NTV2_FORMAT_4x2048x1080p_6000},
1638  {"4k4795", NTV2_FORMAT_4x2048x1080p_4795},
1639  {"4x2048x1080p4795", NTV2_FORMAT_4x2048x1080p_4795},
1641  {"4x2048x1080p48", NTV2_FORMAT_4x2048x1080p_4800},
1642  {"4k11988", NTV2_FORMAT_4x2048x1080p_11988},
1643  {"4x2048x1080p11988", NTV2_FORMAT_4x2048x1080p_11988},
1644  {"4k120", NTV2_FORMAT_4x2048x1080p_12000},
1645  {"4x2048x1080p120", NTV2_FORMAT_4x2048x1080p_12000},
1646  {"2048x1080p60", NTV2_FORMAT_1080p_2K_6000_A},
1647  {"2048x1080p5994", NTV2_FORMAT_1080p_2K_5994_A},
1648  {"2048x1080p2997", NTV2_FORMAT_1080p_2K_2997},
1649  {"2048x1080p30", NTV2_FORMAT_1080p_2K_3000},
1650  {"2048x1080p50", NTV2_FORMAT_1080p_2K_5000_A},
1651  {"2048x1080p4795", NTV2_FORMAT_1080p_2K_4795_A},
1652  {"2048x1080p48", NTV2_FORMAT_1080p_2K_4800_A},
1653  {"2048x1080p60b", NTV2_FORMAT_1080p_2K_6000_B},
1654  {"2048x1080p5994b", NTV2_FORMAT_1080p_2K_5994_B},
1655  {"2048x1080p50b", NTV2_FORMAT_1080p_2K_5000_B},
1656  {"2048x1080p48b", NTV2_FORMAT_1080p_2K_4800_B},
1657  {"2048x1080p4795b", NTV2_FORMAT_1080p_2K_4795_B},
1658  {"", NTV2_FORMAT_UNKNOWN} };
1659  if (true)
1660  {
1661  // Dump the gString2VideoFormatMap map...
1663  {
1664  cout << "'" << it->first << "'\t'" << ::NTV2VideoFormatToString(it->second) << "'\t" << ::NTV2VideoFormatString(it->second) << "\t" << DEC(it->second) << endl;
1665  }
1666  }
1667  cout << endl << endl;
1668  for (unsigned ndx(0); !sVFmtDict[ndx].fName.empty(); ndx++)
1669  {
1670  const string & str (sVFmtDict[ndx].fName);
1671  const NTV2VideoFormat vFormat (sVFmtDict[ndx].fFormat);
1673  const NTV2VideoFormat vFormat2 (it != gString2VideoFormatMap.end() ? it->second : NTV2_FORMAT_UNKNOWN);
1674  if (vFormat != vFormat2)
1675  cerr << "'" << str << "': '" << ::NTV2VideoFormatString(vFormat) << "' (" << DEC(vFormat) << ") != '" << ::NTV2VideoFormatString(vFormat2) << "' (" << DEC(vFormat2) << ")" << endl;
1676  //SHOULD_BE_EQUAL(vFormat, vFormat2);
1677  }
1678  return true;
1679 }
1680 
1681 
1683 
1684 
1685 AJALabelValuePairs CaptureConfig::Get (const bool inCompact) const
1686 {
1687  AJALabelValuePairs result;
1688  AJASystemInfo::append (result, "Capture Config");
1689  AJASystemInfo::append (result, "Device Specifier", fDeviceSpec);
1690  AJASystemInfo::append (result, "Input Channel", ::NTV2ChannelToString(fInputChannel, inCompact));
1691  AJASystemInfo::append (result, "Input Source", ::NTV2InputSourceToString(fInputSource, inCompact));
1692  AJASystemInfo::append (result, "Pixel Format", ::NTV2FrameBufferFormatToString(fPixelFormat, inCompact));
1693  AJASystemInfo::append (result, "AutoCirc Frames", fFrames.toString());
1694  AJASystemInfo::append (result, "A/B Conversion", fDoABConversion ? "Y" : "N");
1695  AJASystemInfo::append (result, "MultiFormat Mode", fDoMultiFormat ? "Y" : "N");
1696  AJASystemInfo::append (result, "Capture Anc", fWithAnc ? "Y" : "N");
1697  AJASystemInfo::append (result, "Anc Capture File", fAncDataFilePath);
1698  AJASystemInfo::append (result, "Capture Audio", fWithAudio ? "Y" : "N");
1699  AJASystemInfo::append (result, "Num Audio Links", aja::to_string(fNumAudioLinks));
1700  AJASystemInfo::append (result, "TSI Routing", fDoTSIRouting ? "Y" : "N");
1701  return result;
1702 }
1703 
1704 
1705 std::ostream & operator << (std::ostream & ioStrm, const CaptureConfig & inObj)
1706 {
1707  ioStrm << AJASystemInfo::ToString(inObj.Get());
1708  return ioStrm;
1709 }
1710 
1711 
1713 
1714 
1715 AJALabelValuePairs PlayerConfig::Get (const bool inCompact) const
1716 {
1717  AJALabelValuePairs result;
1718  AJASystemInfo::append (result, "NTV2Player Config");
1719  AJASystemInfo::append (result, "Device Specifier", fDeviceSpec);
1720  AJASystemInfo::append (result, "Video Format", ::NTV2VideoFormatToString(fVideoFormat));
1721  AJASystemInfo::append (result, "Pixel Format", ::NTV2FrameBufferFormatToString(fPixelFormat, inCompact));
1722  AJASystemInfo::append (result, "AutoCirc Frames", fFrames.toString());
1723  AJASystemInfo::append (result, "MultiFormat Mode", fDoMultiFormat ? "Y" : "N");
1724  AJASystemInfo::append (result, "VANC Mode", ::NTV2VANCModeToString(fVancMode));
1725  AJASystemInfo::append (result, "HDR Anc Type", ::AJAAncDataTypeToString(fTransmitHDRType));
1726  AJASystemInfo::append (result, "Output Channel", ::NTV2ChannelToString(fOutputChannel, inCompact));
1727  AJASystemInfo::append (result, "Output Connector", ::NTV2OutputDestinationToString(fOutputDest, inCompact));
1728  AJASystemInfo::append (result, "Anc Playback File", fAncDataFilePath);
1729  AJASystemInfo::append (result, "Suppress Audio", fSuppressAudio ? "Y" : "N");
1730  AJASystemInfo::append (result, "Num Audio Links", aja::to_string(fNumAudioLinks));
1731  AJASystemInfo::append (result, "Suppress Video", fSuppressVideo ? "Y" : "N");
1732  AJASystemInfo::append (result, "Embedded Timecode", fTransmitLTC ? "LTC" : "VITC");
1733  AJASystemInfo::append (result, "Level Conversion", fDoABConversion ? "Y" : "N");
1734  AJASystemInfo::append (result, "HDMI Output", fDoHDMIOutput ? "Yes" : "No");
1735  AJASystemInfo::append (result, "RGB-On-SDI", fDoRGBOnWire ? "Yes" : "No");
1736  AJASystemInfo::append (result, "TSI Routing", fDoTsiRouting ? "Yes" : "No");
1737  AJASystemInfo::append (result, "6G/12G Output", fDoLinkGrouping ? "Yes" : "No");
1738  return result;
1739 }
1740 
1741 
1742 std::ostream & operator << (std::ostream & ioStrm, const PlayerConfig & inObj)
1743 {
1744  ioStrm << AJASystemInfo::ToString(inObj.Get());
1745  return ioStrm;
1746 }
1747 
1748 
1750 
1751 
1752 AJALabelValuePairs BurnConfig::Get (const bool inCompact) const
1753 {
1754  AJALabelValuePairs result;
1755  AJASystemInfo::append(result, "NTV2Burn Config");
1756  if (fDeviceSpec2.empty())
1757  AJASystemInfo::append(result, "Device Specifier", fDeviceSpec);
1758  else
1759  {
1760  AJASystemInfo::append(result, "Input Device", fDeviceSpec);
1761  AJASystemInfo::append(result, "Output Device", fDeviceSpec2);
1762  }
1763  AJASystemInfo::append(result, "Input Channel", ::NTV2ChannelToString(fInputChannel, inCompact));
1764  AJASystemInfo::append(result, "Output Channel", ::NTV2ChannelToString(fOutputChannel, inCompact));
1765  AJASystemInfo::append(result, "Input Source", ::NTV2InputSourceToString(fInputSource, inCompact));
1766  if (WithTimecode())
1767  AJASystemInfo::append(result, "Timecode Source", ::NTV2TCIndexToString(fTimecodeSource, inCompact));
1768  AJASystemInfo::append(result, "Pixel Format", ::NTV2FrameBufferFormatToString(fPixelFormat, inCompact));
1769  AJASystemInfo::append(result, "AC Input Frames", fInputFrames.toString());
1770  AJASystemInfo::append(result, "AC Output Frames", fOutputFrames.toString());
1771  AJASystemInfo::append(result, "Include Video", WithVideo() ? "Y" : "N");
1772  AJASystemInfo::append(result, "Include Audio", WithAudio() ? "Y" : "N");
1773  AJASystemInfo::append(result, "Include Anc", WithAnc() ? "Y" : "N");
1774  AJASystemInfo::append(result, "Include HANC", WithHanc() ? "Y" : "N");
1775  AJASystemInfo::append(result, "MultiFormat Mode", fDoMultiFormat ? "Y" : "N");
1776  AJASystemInfo::append(result, "Field Mode", FieldMode() ? "Y" : "N");
1777  return result;
1778 }
NTV2InputSourceSet
std::set< NTV2InputSource > NTV2InputSourceSet
A set of distinct NTV2InputSource values.
Definition: ntv2publicinterface.h:8791
NTV2TestPatternGen::getColorNames
static NTV2StringList getColorNames(void)
Definition: ntv2testpatterngen.cpp:2552
NTV2TCIndexSet
NTV2TCIndexes NTV2TCIndexSet
An alias to NTV2TCIndexes.
Definition: ntv2democommon.cpp:25
NTV2_FORMAT_3840x2160p_6000
@ NTV2_FORMAT_3840x2160p_6000
Definition: ntv2enums.h:616
NTV2_FBF_10BIT_YCBCR_420PL3_LE
@ NTV2_FBF_10BIT_YCBCR_420PL3_LE
See 3-Plane 10-Bit YCbCr 4:2:0 ('I420_10LE' a.k.a. 'YUV-P420-L10').
Definition: ntv2enums.h:237
TC_INDEXES_VITC1
@ TC_INDEXES_VITC1
Definition: ntv2democommon.h:256
aja::stoul
unsigned long stoul(const std::string &str, std::size_t *idx, int base)
Definition: common.cpp:143
PlayerConfig::Get
AJALabelValuePairs Get(const bool inCompact=false) const
Renders a human-readable representation of me.
Definition: ntv2democommon.cpp:1715
NTV2_FORMAT_625_5000
@ NTV2_FORMAT_625_5000
Definition: ntv2enums.h:544
NTV2_FORMAT_4x1920x1080p_6000
@ NTV2_FORMAT_4x1920x1080p_6000
Definition: ntv2enums.h:580
NTV2ChannelToInputSource
NTV2InputSource NTV2ChannelToInputSource(const NTV2Channel inChannel, const NTV2IOKinds inKinds=NTV2_IOKINDS_SDI)
Definition: ntv2utils.cpp:5190
NTV2_FORMAT_1080psf_2398
@ NTV2_FORMAT_1080psf_2398
Definition: ntv2enums.h:516
AJA_FrameRate_1900
@ AJA_FrameRate_1900
Definition: videotypes.h:218
CNTV2Card::DMABufferUnlock
virtual bool DMABufferUnlock(const NTV2Buffer &inBuffer)
Unlocks the given host buffer that was previously locked using CNTV2Card::DMABufferLock.
Definition: ntv2dma.cpp:502
NTV2InputSourceToChannel
NTV2Channel NTV2InputSourceToChannel(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2Channel value.
Definition: ntv2utils.cpp:5105
CNTV2DemoCommon::GetInputSourceFromString
static NTV2InputSource GetInputSourceFromString(const std::string &inStr)
Returns the NTV2InputSource that matches the given string.
Definition: ntv2democommon.cpp:713
NTV2Buffer::SetDefaultPageSize
static bool SetDefaultPageSize(const size_t inNewSize)
Changes the default page size for use in future page-aligned allocations.
Definition: ntv2publicinterface.cpp:1910
NTV2_FORMAT_4096x2160p_2400
@ NTV2_FORMAT_4096x2160p_2400
Definition: ntv2enums.h:625
CNTV2DemoCommon::GetVideoFormatStrings
static std::string GetVideoFormatStrings(const NTV2VideoFormatKinds inKinds=VIDEO_FORMATS_NON_4KUHD, const std::string inDeviceSpecifier=std::string())
Definition: ntv2democommon.cpp:553
gGlobalMutexName
static const string gGlobalMutexName("com.aja.ntv2.mutex.demo")
NTV2_FBF_NUMFRAMEBUFFERFORMATS
@ NTV2_FBF_NUMFRAMEBUFFERFORMATS
Definition: ntv2enums.h:244
AJA_PixelFormat_YCBCR10_422PL
@ AJA_PixelFormat_YCBCR10_422PL
Definition: videotypes.h:157
NTV2_FBF_ARGB
@ NTV2_FBF_ARGB
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:212
NTV2_FORMAT_2K_1498
@ NTV2_FORMAT_2K_1498
Definition: ntv2enums.h:551
GetSDIInputOutputXptFromChannel
NTV2OutputXptID GetSDIInputOutputXptFromChannel(const NTV2Channel inSDIInput, const bool inIsDS2=false)
Definition: ntv2signalrouter.cpp:893
NTV2_FORMAT_720p_5000
@ NTV2_FORMAT_720p_5000
Definition: ntv2enums.h:527
NTV2_FBF_10BIT_YCBCR_420PL2
@ NTV2_FBF_10BIT_YCBCR_420PL2
10-Bit 4:2:0 2-Plane YCbCr
Definition: ntv2enums.h:239
String2PixelFormatMapConstIter
String2PixelFormatMap::const_iterator String2PixelFormatMapConstIter
Definition: ntv2democommon.cpp:32
gTCIndexesVITC1
static NTV2TCIndexSet gTCIndexesVITC1
Definition: ntv2democommon.cpp:83
NTV2_AUDIO_LOOPBACK_OFF
@ NTV2_AUDIO_LOOPBACK_OFF
Embeds silence (zeroes) into the data stream.
Definition: ntv2enums.h:1971
gString2OutputDestMap
static String2OutputDestMap gString2OutputDestMap
Definition: ntv2democommon.cpp:77
NTV2_DEVICEKIND_OUTPUT
@ NTV2_DEVICEKIND_OUTPUT
Specifies devices that output (playout).
Definition: ntv2enums.h:1330
NTV2FrameBufferFormatSetConstIter
NTV2FrameBufferFormatSet::const_iterator NTV2FrameBufferFormatSetConstIter
A handy const iterator for iterating over an NTV2FrameBufferFormatSet.
Definition: ntv2publicinterface.h:8781
NTV2_IS_ATC_VITC1_TIMECODE_INDEX
#define NTV2_IS_ATC_VITC1_TIMECODE_INDEX(__x__)
Definition: ntv2enums.h:3902
AJA_PixelFormat_ARGB8
@ AJA_PixelFormat_ARGB8
Definition: videotypes.h:126
HANDLE
short HANDLE
Definition: ajatypes.h:304
NTV2_FORMAT_2K_2400
@ NTV2_FORMAT_2K_2400
Definition: ntv2enums.h:554
NTV2_DEVICEKIND_RELAYS
@ NTV2_DEVICEKIND_RELAYS
Specifies devices that have bypass relays.
Definition: ntv2enums.h:1343
AJA_FrameRate_3000
@ AJA_FrameRate_3000
Definition: videotypes.h:223
NTV2_FORMAT_4x4096x2160p_4800
@ NTV2_FORMAT_4x4096x2160p_4800
Definition: ntv2enums.h:674
NTV2FrameBufferFormatSet
std::set< NTV2FrameBufferFormat > NTV2FrameBufferFormatSet
A set of distinct NTV2FrameBufferFormat values.
Definition: ntv2publicinterface.h:8780
NTV2OutputDestination
NTV2OutputDestination
Identifies a specific video output destination.
Definition: ntv2enums.h:1276
AJA_PixelFormat_YUY28
@ AJA_PixelFormat_YUY28
Definition: videotypes.h:129
gInputSources
static NTV2InputSourceSet gInputSources
Definition: ntv2democommon.cpp:67
poptOption
Definition: options_popt.h:148
NTV2_FORMAT_4x4096x2160p_2398
@ NTV2_FORMAT_4x4096x2160p_2398
Definition: ntv2enums.h:668
AJA_PixelFormat_YCBCR8_422PL3
@ AJA_PixelFormat_YCBCR8_422PL3
Definition: videotypes.h:162
NTV2_FBF_12BIT_RGB_PACKED
@ NTV2_FBF_12BIT_RGB_PACKED
See 12-Bit Packed RGB.
Definition: ntv2enums.h:228
NTV2_FORMAT_525_5994
@ NTV2_FORMAT_525_5994
Definition: ntv2enums.h:543
kTCFormat24fps
@ kTCFormat24fps
Definition: ntv2rp188.h:30
NTV2_DEVICEKIND_ANALOG
@ NTV2_DEVICEKIND_ANALOG
Specifies devices with analog video connectors.
Definition: ntv2enums.h:1333
CNTV2DemoCommon::GetSupportedPixelFormats
static NTV2FrameBufferFormatSet GetSupportedPixelFormats(const NTV2PixelFormatKinds inKinds=PIXEL_FORMATS_ALL)
Definition: ntv2democommon.cpp:581
String2PixelFormatMap
map< string, NTV2FrameBufferFormat > String2PixelFormatMap
Definition: ntv2democommon.cpp:31
GetDLInInputXptFromChannel
NTV2InputXptID GetDLInInputXptFromChannel(const NTV2Channel inChannel, const bool inLinkB=false)
Definition: ntv2signalrouter.cpp:796
NTV2OutputDestinations
std::set< NTV2OutputDestination > NTV2OutputDestinations
A set of distinct NTV2OutputDestination values.
Definition: ntv2publicinterface.h:8794
CNTV2DemoCommon::GetSupportedVideoFormats
static const NTV2VideoFormatSet & GetSupportedVideoFormats(const NTV2VideoFormatKinds inKinds=VIDEO_FORMATS_NON_4KUHD)
Definition: ntv2democommon.cpp:541
ntv2devicefeatures.h
Declares device capability functions.
gInputSourcesHDMI
static NTV2InputSourceSet gInputSourcesHDMI
Definition: ntv2democommon.cpp:69
CNTV2DemoCommon::GetVANCModeFromString
static NTV2VANCMode GetVANCModeFromString(const std::string &inStr)
Definition: ntv2democommon.cpp:893
NTV2StringSet
std::set< std::string > NTV2StringSet
Definition: ntv2utils.h:1137
NTV2_IS_FBF_PLANAR
#define NTV2_IS_FBF_PLANAR(__s__)
Definition: ntv2enums.h:255
CNTV2DemoCommon::GetOutputDestinationStrings
static std::string GetOutputDestinationStrings(const std::string inDeviceSpecifier=std::string())
Definition: ntv2democommon.cpp:722
aja::strip
std::string & strip(std::string &str, const std::string &ws)
Definition: common.cpp:461
NTV2TestPatternSelect
NTV2TestPatternSelect
Identifies a predefined NTV2 test pattern.
Definition: ntv2testpatterngen.h:24
NTV2_FBF_PRORES_HDV
@ NTV2_FBF_PRORES_HDV
Apple ProRes HDV.
Definition: ntv2enums.h:230
NTV2_FORMAT_4096x2160p_2500
@ NTV2_FORMAT_4096x2160p_2500
Definition: ntv2enums.h:626
NTV2_FBF_IS_RAW
#define NTV2_FBF_IS_RAW(__fbf__)
Definition: ntv2enums.h:319
NTV2_FRAMERATE_1500
@ NTV2_FRAMERATE_1500
15 frames per second
Definition: ntv2enums.h:412
NTV2_TestPatt_All
@ NTV2_TestPatt_All
Definition: ntv2testpatterngen.h:50
NTV2TCIndexes
std::set< NTV2TCIndex > NTV2TCIndexes
A set of distinct NTV2TCIndex values.
Definition: ntv2publicinterface.h:6794
NTV2_FRAMERATE_6000
@ NTV2_FRAMERATE_6000
60 frames per second
Definition: ntv2enums.h:399
NTV2GetSupportedDevices
NTV2DeviceIDSet NTV2GetSupportedDevices(const NTV2DeviceKinds inKinds=NTV2_DEVICEKIND_ALL)
Returns an NTV2DeviceIDSet of devices supported by the SDK.
Definition: ntv2utils.cpp:7552
NTV2_IS_FBF_PRORES
#define NTV2_IS_FBF_PRORES(__fbf__)
Definition: ntv2enums.h:267
CNTV2DemoCommon::ReadCharacterPress
static char ReadCharacterPress(void)
Returns the character that represents the last key that was pressed on the keyboard without waiting f...
Definition: ntv2democommon.cpp:957
NTV2_FORMAT_525psf_2997
@ NTV2_FORMAT_525psf_2997
Definition: ntv2enums.h:547
NTV2Channel
NTV2Channel
These enum values are mostly used to identify a specific Frame Store. They're also commonly used to i...
Definition: ntv2enums.h:1305
gPixelFormats
static NTV2FrameBufferFormatSet gPixelFormats
Definition: ntv2democommon.cpp:60
AJA_FrameRate_11988
@ AJA_FrameRate_11988
Definition: videotypes.h:230
NTV2_FORMAT_4x2048x1080p_4795
@ NTV2_FORMAT_4x2048x1080p_4795
Definition: ntv2enums.h:584
AJA_FrameRate_1498
@ AJA_FrameRate_1498
Definition: videotypes.h:213
g4KFormats
static NTV2VideoFormatSet g4KFormats
Definition: ntv2democommon.cpp:58
NTV2_FBF_10BIT_DPX_LE
@ NTV2_FBF_10BIT_DPX_LE
10-Bit DPX Little-Endian
Definition: ntv2enums.h:226
aja::join
std::string join(const std::vector< std::string > &parts, const std::string &delim)
Definition: common.cpp:468
NTV2_FORMAT_3840x2160p_5994_B
@ NTV2_FORMAT_3840x2160p_5994_B
Definition: ntv2enums.h:618
AJA_FrameRate_Unknown
@ AJA_FrameRate_Unknown
Definition: videotypes.h:212
NTV2_ASSERT
#define NTV2_ASSERT(_expr_)
Definition: ajatypes.h:601
NTV2VideoFormatSet
std::set< NTV2VideoFormat > NTV2VideoFormatSet
A set of distinct NTV2VideoFormat values.
Definition: ntv2publicinterface.h:8777
NTV2_FRAMERATE_2997
@ NTV2_FRAMERATE_2997
Fractional rate of 30,000 frames per 1,001 seconds.
Definition: ntv2enums.h:403
NTV2_FORMAT_1080p_2K_6000_B
@ NTV2_FORMAT_1080p_2K_6000_B
Definition: ntv2enums.h:601
NTV2_FORMAT_4096x2160p_5000_B
@ NTV2_FORMAT_4096x2160p_5000_B
Definition: ntv2enums.h:640
poptGetArg
const char * poptGetArg(poptContext con)
Definition: options_popt.cpp:3494
NTV2_FBF_RGBA
@ NTV2_FBF_RGBA
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:213
AJA_PixelFormat_BGR8_PACK
@ AJA_PixelFormat_BGR8_PACK
Definition: videotypes.h:137
AJA_PixelFormat_YCbCr8
@ AJA_PixelFormat_YCbCr8
Definition: videotypes.h:125
NTV2_FORMAT_1080psf_2K_2398
@ NTV2_FORMAT_1080psf_2K_2398
Definition: ntv2enums.h:525
NTV2_IS_QUAD_QUAD_HFR_VIDEO_FORMAT
#define NTV2_IS_QUAD_QUAD_HFR_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:785
NTV2_AUDIO_48K
@ NTV2_AUDIO_48K
Definition: ntv2enums.h:1875
CNTV2DemoCommon::GetAudioSystemStrings
static std::string GetAudioSystemStrings(const std::string inDeviceSpecifier=std::string())
Definition: ntv2democommon.cpp:825
NTV2_FORMAT_1080p_2K_4800_A
@ NTV2_FORMAT_1080p_2K_4800_A
Definition: ntv2enums.h:596
String2TCIndexPair
pair< string, NTV2TCIndex > String2TCIndexPair
Definition: ntv2democommon.cpp:47
NTV2_FORMAT_4x2048x1080p_11988
@ NTV2_FORMAT_4x2048x1080p_11988
Definition: ntv2enums.h:586
AJA_PixelFormat_RGB10
@ AJA_PixelFormat_RGB10
Definition: videotypes.h:128
NTV2_FRAMERATE_12000
@ NTV2_FRAMERATE_12000
120 frames per second
Definition: ntv2enums.h:410
AJA_FrameRate_2997
@ AJA_FrameRate_2997
Definition: videotypes.h:222
NTV2_FBF_48BIT_RGB
@ NTV2_FBF_48BIT_RGB
See 48-Bit RGB.
Definition: ntv2enums.h:227
PIXEL_FORMATS_RGB
@ PIXEL_FORMATS_RGB
Definition: ntv2democommon.h:241
String2InputSourceMap
map< string, NTV2InputSource > String2InputSourceMap
Definition: ntv2democommon.cpp:40
NTV2_FORMAT_1080i_5994
@ NTV2_FORMAT_1080i_5994
Definition: ntv2enums.h:512
CNTV2DemoCommon::GetInputRouting
static bool GetInputRouting(NTV2XptConnections &outConnections, const CaptureConfig &inConfig, const bool isInputRGB=false)
Answers with the crosspoint connections needed to implement the given capture configuration.
Definition: ntv2democommon.cpp:1220
CNTV2DeviceScanner::GetFirstDeviceFromArgument
static bool GetFirstDeviceFromArgument(const std::string &inArgument, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the AJA device that matches a command li...
Definition: ntv2devicescanner.cpp:327
CaptureConfig::Get
AJALabelValuePairs Get(const bool inCompact=false) const
Definition: ntv2democommon.cpp:1685
gString2TPNamesMap
static String2TPNamesMap gString2TPNamesMap
Definition: ntv2democommon.cpp:86
poptStrerror
const char * poptStrerror(const int error)
Definition: options_popt.cpp:3633
NTV2OutputDestinationsConstIter
NTV2OutputDestinations::const_iterator NTV2OutputDestinationsConstIter
A handy const iterator for iterating over an NTV2OutputDestinations.
Definition: ntv2publicinterface.h:8795
AJA_PixelFormat_PRORES_DVPRO
@ AJA_PixelFormat_PRORES_DVPRO
Definition: videotypes.h:142
NTV2_FORMAT_4x1920x1080psf_3000
@ NTV2_FORMAT_4x1920x1080psf_3000
Definition: ntv2enums.h:573
String2VANCModeMapConstIter
String2VANCModeMap::const_iterator String2VANCModeMapConstIter
Definition: ntv2democommon.cpp:38
CaptureConfig::fPixelFormat
NTV2PixelFormat fPixelFormat
Pixel format to use.
Definition: ntv2democommon.h:273
NTV2OutputDestinationToChannel
NTV2Channel NTV2OutputDestinationToChannel(const NTV2OutputDestination inOutputDest)
Converts a given NTV2OutputDestination to its equivalent NTV2Channel value.
Definition: ntv2utils.cpp:5213
PIXEL_FORMATS_ALPHA
@ PIXEL_FORMATS_ALPHA
Definition: ntv2democommon.h:245
NTV2InputSourceToEmbeddedAudioInput
NTV2EmbeddedAudioInput NTV2InputSourceToEmbeddedAudioInput(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2EmbeddedAudioInput value.
Definition: ntv2utils.cpp:4935
NTV2_FBF_8BIT_HDV
@ NTV2_FBF_8BIT_HDV
See 8-Bit HDV.
Definition: ntv2enums.h:222
AJA_PixelFormat_YCBCR8_422PL
@ AJA_PixelFormat_YCBCR8_422PL
Definition: videotypes.h:159
ntv2testpatterngen.h
Declares the NTV2TestPatternGen class.
NTV2_FORMAT_1080p_2K_3000
@ NTV2_FORMAT_1080p_2K_3000
Definition: ntv2enums.h:593
String2TCIndexMap
map< string, NTV2TCIndex > String2TCIndexMap
Definition: ntv2democommon.cpp:46
GetFrameBufferInputXptFromChannel
NTV2InputXptID GetFrameBufferInputXptFromChannel(const NTV2Channel inFrameStore, const bool inIsBInput=false)
Definition: ntv2signalrouter.cpp:762
NTV2_FORMAT_4x2048x1080p_2997
@ NTV2_FORMAT_4x2048x1080p_2997
Definition: ntv2enums.h:574
NTV2_TestPatt_ColorBars100
@ NTV2_TestPatt_ColorBars100
Definition: ntv2testpatterngen.h:26
NTV2_FBF_10BIT_ARGB
@ NTV2_FBF_10BIT_ARGB
10-Bit ARGB
Definition: ntv2enums.h:232
NTV2_FBF_10BIT_YCBCRA
@ NTV2_FBF_10BIT_YCBCRA
10-Bit YCbCrA
Definition: ntv2enums.h:225
AJAAncDataTypeToString
const std::string & AJAAncDataTypeToString(const AJAAncDataType inValue, const bool inCompact=true)
Definition: ancillarydata.cpp:1289
NTV2_FRAMERATE_1798
@ NTV2_FRAMERATE_1798
Definition: ntv2enums.h:419
kTCFormat30fpsDF
@ kTCFormat30fpsDF
Definition: ntv2rp188.h:33
DemoCommonInitializer::DemoCommonInitializer
DemoCommonInitializer()
Definition: ntv2democommon.cpp:93
NTV2_FORMAT_4x4096x2160p_2500
@ NTV2_FORMAT_4x4096x2160p_2500
Definition: ntv2enums.h:670
PIXEL_FORMATS_PACKED
@ PIXEL_FORMATS_PACKED
Definition: ntv2democommon.h:244
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
NTV2_IOKINDS_HDMI
@ NTV2_IOKINDS_HDMI
Specifies HDMI input/output kinds.
Definition: ntv2enums.h:1252
NTV2_FORMAT_4x4096x2160p_4795
@ NTV2_FORMAT_4x4096x2160p_4795
Definition: ntv2enums.h:673
NTV2_FORMAT_4x1920x1080p_2997
@ NTV2_FORMAT_4x1920x1080p_2997
Definition: ntv2enums.h:570
NTV2_FORMAT_4x1920x1080p_2500
@ NTV2_FORMAT_4x1920x1080p_2500
Definition: ntv2enums.h:563
NTV2_FBF_INVALID
@ NTV2_FBF_INVALID
Definition: ntv2enums.h:245
NTV2_FORMAT_4x2048x1080p_4800
@ NTV2_FORMAT_4x2048x1080p_4800
Definition: ntv2enums.h:585
NTV2FrameBufferFormat
NTV2FrameBufferFormat
Identifies a particular video frame buffer format. See Device Frame Buffer Formats for details.
Definition: ntv2enums.h:207
NTV2_FORMAT_4x3840x2160p_2500
@ NTV2_FORMAT_4x3840x2160p_2500
Definition: ntv2enums.h:657
NTV2_Wgt425Mux1
@ NTV2_Wgt425Mux1
Definition: ntv2enums.h:2938
NTV2_IS_ATC_VITC2_TIMECODE_INDEX
#define NTV2_IS_ATC_VITC2_TIMECODE_INDEX(__x__)
Definition: ntv2enums.h:3905
kTCFormat30fps
@ kTCFormat30fps
Definition: ntv2rp188.h:32
NTV2_IS_ATC_LTC_TIMECODE_INDEX
#define NTV2_IS_ATC_LTC_TIMECODE_INDEX(__x__)
Definition: ntv2enums.h:3907
gFBFsProRes
static NTV2FrameBufferFormatSet gFBFsProRes
Definition: ntv2democommon.cpp:66
NTV2_FBF_10BIT_DPX
@ NTV2_FBF_10BIT_DPX
See 10-Bit RGB - DPX Format.
Definition: ntv2enums.h:218
NTV2_FORMAT_4x3840x2160p_5000_B
@ NTV2_FORMAT_4x3840x2160p_5000_B
Definition: ntv2enums.h:663
NTV2IOKinds
enum NTV2InputSourceKinds NTV2IOKinds
NTV2InputXptID
enum NTV2InputCrosspointID NTV2InputXptID
NTV2_NUM_FRAMERATES
@ NTV2_NUM_FRAMERATES
Definition: ntv2enums.h:424
NTV2_OUTPUT_CROSSPOINT_INVALID
@ NTV2_OUTPUT_CROSSPOINT_INVALID
Definition: ntv2enums.h:2652
NTV2TimeCodesConstIter
NTV2TimeCodes::const_iterator NTV2TimeCodesConstIter
A handy const interator for iterating over NTV2TCIndex/NTV2TimeCodeList pairs.
Definition: ntv2publicinterface.h:6792
TimecodeFormat
TimecodeFormat
Definition: ntv2rp188.h:27
NTV2_IOKINDS_ANALOG
@ NTV2_IOKINDS_ANALOG
Specifies analog input/output kinds.
Definition: ntv2enums.h:1253
operator<<
std::ostream & operator<<(std::ostream &ioStrm, const CaptureConfig &inObj)
Definition: ntv2democommon.cpp:1705
CNTV2Card::SetAudioLoopBack
virtual bool SetAudioLoopBack(const NTV2AudioLoopBack inMode, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Enables or disables NTV2AudioLoopBack mode for the given NTV2AudioSystem.
Definition: ntv2audio.cpp:303
NTV2DeviceCanDoFrameBufferFormat
bool NTV2DeviceCanDoFrameBufferFormat(const NTV2DeviceID inDeviceID, const NTV2FrameBufferFormat inFBFormat)
Definition: ntv2devicefeatures.hpp:15330
NTV2_CHANNEL1
@ NTV2_CHANNEL1
Specifies channel or Frame Store 1 (or the first item).
Definition: ntv2enums.h:1307
AJA_FrameRate_2400
@ AJA_FrameRate_2400
Definition: videotypes.h:220
ntv2debug.h
NTV2_FORMAT_4x3840x2160p_2398
@ NTV2_FORMAT_4x3840x2160p_2398
Definition: ntv2enums.h:655
NTV2_FBF_24BIT_RGB
@ NTV2_FBF_24BIT_RGB
See 24-Bit RGB.
Definition: ntv2enums.h:223
NTV2_FORMAT_4x4096x2160p_6000_B
@ NTV2_FORMAT_4x4096x2160p_6000_B
Definition: ntv2enums.h:682
NTV2_FRAMERATE_1898
@ NTV2_FRAMERATE_1898
Definition: ntv2enums.h:417
AJA_PixelFormat_YCBCR8_420PL3
@ AJA_PixelFormat_YCBCR8_420PL3
Definition: videotypes.h:161
GetIndexForNTV2Channel
ULWord GetIndexForNTV2Channel(const NTV2Channel inChannel)
Definition: ntv2utils.cpp:4760
kTCFormat48fps
@ kTCFormat48fps
Definition: ntv2rp188.h:34
NTV2_FRAMERATE_2500
@ NTV2_FRAMERATE_2500
25 frames per second
Definition: ntv2enums.h:404
NTV2_DEVICEKIND_HDMI
@ NTV2_DEVICEKIND_HDMI
Specifies devices with HDMI connectors.
Definition: ntv2enums.h:1332
NTV2_FORMAT_1080p_2K_4795_A
@ NTV2_FORMAT_1080p_2K_4795_A
Definition: ntv2enums.h:595
CNTV2DemoCommon::Get4KInputFormat
static bool Get4KInputFormat(NTV2VideoFormat &inOutVideoFormat)
Given a video format, if all 4 inputs are the same and promotable to 4K, this function does the promo...
Definition: ntv2democommon.cpp:1099
NTV2_FORMAT_3840x2160p_2500
@ NTV2_FORMAT_3840x2160p_2500
Definition: ntv2enums.h:609
NTV2FrameRate
NTV2FrameRate
Identifies a particular video frame rate.
Definition: ntv2enums.h:396
String2TPNamesMap
map< string, string > String2TPNamesMap
Definition: ntv2democommon.cpp:50
NTV2_FORMAT_4096x2160p_6000_B
@ NTV2_FORMAT_4096x2160p_6000_B
Definition: ntv2enums.h:642
TC_INDEXES_ATCLTC
@ TC_INDEXES_ATCLTC
Definition: ntv2democommon.h:255
DemoCommonInitializer
Definition: ntv2democommon.cpp:90
CNTV2Card::SetAudioSystemInputSource
virtual bool SetAudioSystemInputSource(const NTV2AudioSystem inAudioSystem, const NTV2AudioSource inAudioSource, const NTV2EmbeddedAudioInput inEmbeddedInput)
Sets the audio source for the given NTV2AudioSystem on the device.
Definition: ntv2audio.cpp:488
CNTV2DemoCommon::GetTCIndexFromString
static NTV2TCIndex GetTCIndexFromString(const std::string &inStr)
Returns the NTV2TCIndex that matches the given string.
Definition: ntv2democommon.cpp:816
NTV2DeviceCanDoVideoFormat
bool NTV2DeviceCanDoVideoFormat(const NTV2DeviceID inDeviceID, const NTV2VideoFormat inVideoFormat)
Definition: ntv2devicefeatures.hpp:18535
NTV2OutputDest
enum NTV2OutputDestination NTV2OutputDest
kTCFormat60fps
@ kTCFormat60fps
Definition: ntv2rp188.h:36
NTV2_FORMAT_2K_2398
@ NTV2_FORMAT_2K_2398
Definition: ntv2enums.h:553
NTV2_FORMAT_4x4096x2160p_2997
@ NTV2_FORMAT_4x4096x2160p_2997
Definition: ntv2enums.h:671
NTV2_FRAMERATE_4800
@ NTV2_FRAMERATE_4800
48 frames per second
Definition: ntv2enums.h:408
CNTV2DemoCommon::GetVideoFormatFromString
static NTV2VideoFormat GetVideoFormatFromString(const std::string &inStr, const NTV2VideoFormatKinds inKinds=VIDEO_FORMATS_NON_4KUHD)
Returns the NTV2VideoFormat that matches the given string.
Definition: ntv2democommon.cpp:642
NTV2_IS_4K_VIDEO_FORMAT
#define NTV2_IS_4K_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:746
CNTV2DemoCommon::GetDeviceStrings
static std::string GetDeviceStrings(const NTV2DeviceKinds inKinds=NTV2_DEVICEKIND_ALL)
Definition: ntv2democommon.cpp:493
AJA_FrameRate_1898
@ AJA_FrameRate_1898
Definition: videotypes.h:217
PIXEL_FORMATS_RAW
@ PIXEL_FORMATS_RAW
Definition: ntv2democommon.h:243
AJA_FrameRate_1500
@ AJA_FrameRate_1500
Definition: videotypes.h:214
VIDEO_FORMATS_ALL
@ VIDEO_FORMATS_ALL
Definition: ntv2democommon.h:224
AJA_FrameRate
AJA_FrameRate
Definition: videotypes.h:210
CNTV2DemoCommon::GetTCIndexStrings
static std::string GetTCIndexStrings(const NTV2TCIndexKinds inKinds=TC_INDEXES_ALL, const std::string inDeviceSpecifier=std::string(), const bool inIsInputOnly=true)
Definition: ntv2democommon.cpp:780
NTV2_FRAMERATE_2400
@ NTV2_FRAMERATE_2400
24 frames per second
Definition: ntv2enums.h:405
gTCIndexesATCLTC
static NTV2TCIndexSet gTCIndexesATCLTC
Definition: ntv2democommon.cpp:82
TC_INDEXES_VITC2
@ TC_INDEXES_VITC2
Definition: ntv2democommon.h:257
NTV2_FORMAT_4x2048x1080psf_2398
@ NTV2_FORMAT_4x2048x1080psf_2398
Definition: ntv2enums.h:564
NTV2_FBF_10BIT_RGB_PACKED
@ NTV2_FBF_10BIT_RGB_PACKED
10-Bit Packed RGB
Definition: ntv2enums.h:231
NTV2TCIndexSetConstIter
NTV2TCIndexesConstIter NTV2TCIndexSetConstIter
An alias to NTV2TCIndexesConstIter.
Definition: ntv2democommon.cpp:26
NTV2_FBF_8BIT_YCBCR_420PL2
@ NTV2_FBF_8BIT_YCBCR_420PL2
8-Bit 4:2:0 2-Plane YCbCr
Definition: ntv2enums.h:241
String2TPNamePair
pair< string, string > String2TPNamePair
Definition: ntv2democommon.cpp:51
NTV2_FORMAT_4x2048x1080p_2398
@ NTV2_FORMAT_4x2048x1080p_2398
Definition: ntv2enums.h:567
AJA_PixelFormat_RGB_DPX_LE
@ AJA_PixelFormat_RGB_DPX_LE
Definition: videotypes.h:139
AJA_PixelFormat_YCbCr_DPX
@ AJA_PixelFormat_YCbCr_DPX
Definition: videotypes.h:132
AJA_PixelFormat_RGB16
@ AJA_PixelFormat_RGB16
Definition: videotypes.h:147
NTV2_INPUTSOURCE_SDI1
@ NTV2_INPUTSOURCE_SDI1
Identifies the 1st SDI video input.
Definition: ntv2enums.h:1228
NTV2_IS_ANALOG_TIMECODE_INDEX
#define NTV2_IS_ANALOG_TIMECODE_INDEX(__x__)
Definition: ntv2enums.h:3900
CNTV2Card::GetDisplayName
virtual std::string GetDisplayName(void)
Answers with this device's display name.
Definition: ntv2card.cpp:84
CNTV2DemoCommon::IsValidDevice
static bool IsValidDevice(const std::string &inDeviceSpec)
Definition: ntv2democommon.cpp:433
gAllFormats
static NTV2VideoFormatSet gAllFormats
Definition: ntv2democommon.cpp:56
AJA_PixelFormat_RGB8_PACK
@ AJA_PixelFormat_RGB8_PACK
Definition: videotypes.h:136
NTV2Buffer::DefaultPageSize
static size_t DefaultPageSize(void)
Definition: ntv2publicinterface.cpp:1905
CNTV2DemoCommon::GetAudioSystemFromString
static NTV2AudioSystem GetAudioSystemFromString(const std::string &inStr)
Returns the NTV2AudioSystem that matches the given string.
Definition: ntv2democommon.cpp:856
NTV2_FORMAT_1080psf_2K_2500
@ NTV2_FORMAT_1080psf_2K_2500
Definition: ntv2enums.h:537
AJA_FrameRate_4795
@ AJA_FrameRate_4795
Definition: videotypes.h:224
String2TPNamesMapConstIter
String2TPNamesMap::const_iterator String2TPNamesMapConstIter
Definition: ntv2democommon.cpp:52
CNTV2DemoCommon::GetTestPatternStrings
static std::string GetTestPatternStrings(void)
Definition: ntv2democommon.cpp:900
kTCFormat50fps
@ kTCFormat50fps
Definition: ntv2rp188.h:35
NTV2_IS_FBF_RGB
#define NTV2_IS_FBF_RGB(__fbf__)
Definition: ntv2enums.h:271
NTV2_FORMAT_4x2048x1080psf_2400
@ NTV2_FORMAT_4x2048x1080psf_2400
Definition: ntv2enums.h:565
aja::lower
std::string & lower(std::string &str)
Definition: common.cpp:436
NTV2_FBF_10BIT_RAW_RGB
@ NTV2_FBF_10BIT_RAW_RGB
10-Bit Raw RGB
Definition: ntv2enums.h:235
NTV2InputSourceToString
std::string NTV2InputSourceToString(const NTV2InputSource inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:7215
AJA_FrameRate_2500
@ AJA_FrameRate_2500
Definition: videotypes.h:221
CNTV2DemoCommon::Popt::Popt
Popt(const int inArgc, const char **pArgs, const PoptOpts *pInOptionsTable)
Definition: ntv2democommon.cpp:1520
gTCIndexesVITC2
static NTV2TCIndexSet gTCIndexesVITC2
Definition: ntv2democommon.cpp:84
AJA_PixelFormat_HDV
@ AJA_PixelFormat_HDV
Definition: videotypes.h:135
NTV2TCIndexToString
std::string NTV2TCIndexToString(const NTV2TCIndex inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6413
NTV2_FORMAT_1080p_5994_B
@ NTV2_FORMAT_1080p_5994_B
Definition: ntv2enums.h:529
gFBFsRaw
static NTV2FrameBufferFormatSet gFBFsRaw
Definition: ntv2democommon.cpp:63
NTV2_FORMAT_1080psf_3000_2
@ NTV2_FORMAT_1080psf_3000_2
Definition: ntv2enums.h:540
NTV2_FORMAT_1080p_2K_2400
@ NTV2_FORMAT_1080p_2K_2400
Definition: ntv2enums.h:524
AJA_PixelFormat_DVCPRO
@ AJA_PixelFormat_DVCPRO
Definition: videotypes.h:133
NTV2DeviceKinds
enum _NTV2DeviceKinds NTV2DeviceKinds
These enum values are used for device selection/filtering.
NTV2_FORMAT_525_2398
@ NTV2_FORMAT_525_2398
Definition: ntv2enums.h:545
NTV2_FORMAT_4x2048x1080p_3000
@ NTV2_FORMAT_4x2048x1080p_3000
Definition: ntv2enums.h:575
NTV2_DEVICEKIND_CUSTOM_ANC
@ NTV2_DEVICEKIND_CUSTOM_ANC
Specifies devices that have custom Anc inserter/extractor firmware.
Definition: ntv2enums.h:1342
NTV2_VANCMODE_OFF
@ NTV2_VANCMODE_OFF
This identifies the mode in which there are no VANC lines in the frame buffer.
Definition: ntv2enums.h:3713
NTV2_FORMAT_4096x2160p_4795
@ NTV2_FORMAT_4096x2160p_4795
Definition: ntv2enums.h:631
aja::replace
std::string & replace(std::string &str, const std::string &from, const std::string &to)
Definition: common.cpp:110
NTV2_FRAMERATE_2398
@ NTV2_FRAMERATE_2398
Fractional rate of 24,000 frames per 1,001 seconds.
Definition: ntv2enums.h:406
CNTV2DemoCommon::ConfigureAudioSystems
static bool ConfigureAudioSystems(CNTV2Card &inDevice, const CaptureConfig &inConfig, const NTV2AudioSystemSet inAudioSystems)
Configures capture audio systems.
Definition: ntv2democommon.cpp:1484
kTCFormat25fps
@ kTCFormat25fps
Definition: ntv2rp188.h:31
ULWord
uint32_t ULWord
Definition: ajatypes.h:246
CNTV2DemoCommon::ToLower
static std::string ToLower(const std::string &inStr)
Returns the given string after converting it to lower case.
Definition: ntv2democommon.cpp:937
NTV2_FORMAT_4x4096x2160p_3000
@ NTV2_FORMAT_4x4096x2160p_3000
Definition: ntv2enums.h:672
NTV2DeviceCanDoWidget
bool NTV2DeviceCanDoWidget(const NTV2DeviceID inDeviceID, const NTV2WidgetID inWidgetID)
Definition: ntv2devicefeatures.hpp:30519
AJASystemInfo::append
static AJALabelValuePairs & append(AJALabelValuePairs &inOutTable, const std::string &inLabel, const std::string &inValue=std::string())
A convenience function that appends the given label and value strings to the provided AJALabelValuePa...
Definition: info.h:168
NTV2_FORMAT_2K_2500
@ NTV2_FORMAT_2K_2500
Definition: ntv2enums.h:555
NTV2_FRAMERATE_1900
@ NTV2_FRAMERATE_1900
Definition: ntv2enums.h:416
ntv2devicescanner.h
Declares the CNTV2DeviceScanner class.
CaptureConfig
This class is used to configure an NTV2Capture instance.
Definition: ntv2democommon.h:265
NTV2_Wgt425Mux2
@ NTV2_Wgt425Mux2
Definition: ntv2enums.h:2939
gFBFsPacked
static NTV2FrameBufferFormatSet gFBFsPacked
Definition: ntv2democommon.cpp:64
NTV2_FORMAT_4x2048x1080psf_3000
@ NTV2_FORMAT_4x2048x1080psf_3000
Definition: ntv2enums.h:577
NTV2_FORMAT_1080p_2997
@ NTV2_FORMAT_1080p_2997
Definition: ntv2enums.h:518
NTV2_DEVICEKIND_12G
@ NTV2_DEVICEKIND_12G
Specifies devices that have 12G SDI connectors.
Definition: ntv2enums.h:1341
NTV2_FORMAT_1080p_2K_4795_B
@ NTV2_FORMAT_1080p_2K_4795_B
Definition: ntv2enums.h:597
AJA_PixelFormat_YCBCR10_420PL
@ AJA_PixelFormat_YCBCR10_420PL
Definition: videotypes.h:156
NTV2_FRAMERATE_1498
@ NTV2_FRAMERATE_1498
Fractional rate of 15,000 frames per 1,001 seconds.
Definition: ntv2enums.h:413
NTV2_FORMAT_1080p_3000
@ NTV2_FORMAT_1080p_3000
Definition: ntv2enums.h:519
CNTV2DemoCommon::SetDefaultPageSize
static size_t SetDefaultPageSize(void)
Definition: ntv2democommon.cpp:1505
CNTV2DemoCommon::GetPixelFormatFromString
static NTV2FrameBufferFormat GetPixelFormatFromString(const std::string &inStr)
Returns the NTV2FrameBufferFormat that matches the given string.
Definition: ntv2democommon.cpp:660
NTV2FrameData::Timecode
NTV2_RP188 Timecode(const NTV2TCIndex inTCNdx) const
Definition: ntv2democommon.cpp:382
NTV2_FORMAT_4x3840x2160p_5994
@ NTV2_FORMAT_4x3840x2160p_5994
Definition: ntv2enums.h:661
NTV2_FORMAT_4096x2160p_2398
@ NTV2_FORMAT_4096x2160p_2398
Definition: ntv2enums.h:624
NTV2_FORMAT_720p_6000
@ NTV2_FORMAT_720p_6000
Definition: ntv2enums.h:515
NTV2_INPUTSOURCE_INVALID
@ NTV2_INPUTSOURCE_INVALID
The invalid video input.
Definition: ntv2enums.h:1236
NTV2_DEVICEKIND_4K
@ NTV2_DEVICEKIND_4K
Specifies devices that can do 4K video.
Definition: ntv2enums.h:1337
NTV2DeviceIDToString
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:4673
NTV2_FORMAT_1080p_2500
@ NTV2_FORMAT_1080p_2500
Definition: ntv2enums.h:520
NTV2AudioSystemSet
std::set< NTV2AudioSystem > NTV2AudioSystemSet
A set of distinct NTV2AudioSystem values. New in SDK 16.2.
Definition: ntv2publicinterface.h:3869
NTV2_MAX_NUM_VIDEO_FORMATS
@ NTV2_MAX_NUM_VIDEO_FORMATS
Definition: ntv2enums.h:685
String2VideoFormatMapConstIter
String2VideoFormatMap::const_iterator String2VideoFormatMapConstIter
Definition: ntv2democommon.cpp:29
CNTV2DemoCommon::BFT
static bool BFT(void)
Definition: ntv2democommon.cpp:1546
NTV2TCIndex
NTV2TCIndex
These enum values are indexes into the capture/playout AutoCirculate timecode arrays.
Definition: ntv2enums.h:3865
AJA_PixelFormat_RGBA8
@ AJA_PixelFormat_RGBA8
Definition: videotypes.h:127
String2AudioSystemMap
map< string, NTV2AudioSystem > String2AudioSystemMap
Definition: ntv2democommon.cpp:34
GetCSCOutputXptFromChannel
NTV2OutputXptID GetCSCOutputXptFromChannel(const NTV2Channel inCSC, const bool inIsKey=false, const bool inIsRGB=false)
Definition: ntv2signalrouter.cpp:819
AJASystemInfo::ToString
virtual void ToString(std::string &outAllLabelsAndValues) const
Answers with a multi-line string that contains the complete host system info table.
GetNumTSIMuxers
static UWord GetNumTSIMuxers(const NTV2DeviceID inDeviceID)
Definition: ntv2democommon.cpp:1193
AJA_FrameRate_2398
@ AJA_FrameRate_2398
Definition: videotypes.h:219
NTV2_FORMAT_4x2048x1080p_5000
@ NTV2_FORMAT_4x2048x1080p_5000
Definition: ntv2enums.h:581
NTV2_FBF_24BIT_BGR
@ NTV2_FBF_24BIT_BGR
See 24-Bit BGR.
Definition: ntv2enums.h:224
CNTV2Card::GetSerialNumberString
virtual bool GetSerialNumberString(std::string &outSerialNumberString)
Answers with a string that contains my human-readable serial number.
Definition: ntv2card.cpp:219
AJA_PixelFormat_YCBCR10_422PL3LE
@ AJA_PixelFormat_YCBCR10_422PL3LE
Definition: videotypes.h:164
NTV2_FORMAT_4096x2160p_6000
@ NTV2_FORMAT_4096x2160p_6000
Definition: ntv2enums.h:635
PIXEL_FORMATS_ALL
@ PIXEL_FORMATS_ALL
Definition: ntv2democommon.h:240
UWord
uint16_t UWord
Definition: ajatypes.h:244
NTV2VANCModeToString
std::string NTV2VANCModeToString(const NTV2VANCMode inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6521
AJA_PixelFormat_YCBCR10_420PL3LE
@ AJA_PixelFormat_YCBCR10_420PL3LE
Definition: videotypes.h:163
CNTV2DemoCommon::GetTSIMuxesForFrameStore
static NTV2ChannelList GetTSIMuxesForFrameStore(const NTV2DeviceID inDeviceID, const NTV2Channel in1stFrameStore, const UWord inCount)
Definition: ntv2democommon.cpp:1203
CNTV2DemoCommon::GetVANCModeStrings
static std::string GetVANCModeStrings(void)
Definition: ntv2democommon.cpp:862
CNTV2DemoCommon::GetSupportedTCIndexes
static const NTV2TCIndexes GetSupportedTCIndexes(const NTV2TCIndexKinds inKinds)
Definition: ntv2democommon.cpp:759
NTV2_FORMAT_4x1920x1080p_3000
@ NTV2_FORMAT_4x1920x1080p_3000
Definition: ntv2enums.h:571
NTV2_FORMAT_4x3840x2160p_2997
@ NTV2_FORMAT_4x3840x2160p_2997
Definition: ntv2enums.h:658
NTV2_FBF_8BIT_YCBCR
@ NTV2_FBF_8BIT_YCBCR
See 8-Bit YCbCr Format.
Definition: ntv2enums.h:211
ntv2utils.h
Declares numerous NTV2 utility functions.
AJA_PixelFormat_RGB10_PACK
@ AJA_PixelFormat_RGB10_PACK
Definition: videotypes.h:144
NTV2_FORMAT_1080p_5000_B
@ NTV2_FORMAT_1080p_5000_B
Definition: ntv2enums.h:528
AJA_PixelFormat_RGB_DPX
@ AJA_PixelFormat_RGB_DPX
Definition: videotypes.h:131
poptFreeContext
poptContext poptFreeContext(poptContext con)
Definition: options_popt.cpp:3539
NTV2VideoFormatToString
std::string NTV2VideoFormatToString(const NTV2VideoFormat inValue, const bool inUseFrameRate=false)
Definition: ntv2utils.cpp:6750
NTV2_FRAMERATE_1800
@ NTV2_FRAMERATE_1800
Definition: ntv2enums.h:418
NTV2VideoFormatSetConstIter
NTV2VideoFormatSet::const_iterator NTV2VideoFormatSetConstIter
A handy const iterator for iterating over an NTV2VideoFormatSet.
Definition: ntv2publicinterface.h:8778
NTV2_FORMAT_4x3840x2160p_5000
@ NTV2_FORMAT_4x3840x2160p_5000
Definition: ntv2enums.h:660
NTV2_FORMAT_1080p_2K_5994_A
@ NTV2_FORMAT_1080p_2K_5994_A
Definition: ntv2enums.h:591
NTV2_INPUT_SOURCE_IS_HDMI
#define NTV2_INPUT_SOURCE_IS_HDMI(_inpSrc_)
Definition: ntv2enums.h:1240
CNTV2DemoCommon::Popt::~Popt
virtual ~Popt()
Definition: ntv2democommon.cpp:1540
NTV2_MAX_NUM_TIMECODE_INDEXES
@ NTV2_MAX_NUM_TIMECODE_INDEXES
Definition: ntv2enums.h:3894
gInitializer
static const DemoCommonInitializer gInitializer
Definition: ntv2democommon.cpp:379
GetCSCInputXptFromChannel
NTV2InputXptID GetCSCInputXptFromChannel(const NTV2Channel inCSC, const bool inIsKeyInput=false)
Definition: ntv2signalrouter.cpp:775
CNTV2Card
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:262
NTV2_FORMAT_4x2048x1080p_12000
@ NTV2_FORMAT_4x2048x1080p_12000
Definition: ntv2enums.h:587
NTV2_DEVICEKIND_ALL
@ NTV2_DEVICEKIND_ALL
Specifies any/all devices.
Definition: ntv2enums.h:1328
CNTV2Card::DMABufferLock
virtual bool DMABufferLock(const NTV2Buffer &inBuffer, bool inMap=false, bool inRDMA=false)
Page-locks the given host buffer to reduce transfer time and CPU usage of DMA transfers.
Definition: ntv2dma.cpp:487
kTCFormat60fpsDF
@ kTCFormat60fpsDF
Definition: ntv2rp188.h:37
NTV2DeviceGetNumFrameStores
UWord NTV2DeviceGetNumFrameStores(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:10487
NTV2_DEVICEKIND_INPUT
@ NTV2_DEVICEKIND_INPUT
Specifies devices that input (capture).
Definition: ntv2enums.h:1329
NTV2_FBF_10BIT_YCBCR_422PL2
@ NTV2_FBF_10BIT_YCBCR_422PL2
10-Bit 4:2:2 2-Plane YCbCr
Definition: ntv2enums.h:240
NTV2Connection
std::pair< NTV2InputXptID, NTV2OutputXptID > NTV2Connection
This links an NTV2InputXptID and an NTV2OutputXptID.
Definition: ntv2signalrouter.h:38
NTV2_FORMAT_625psf_2500
@ NTV2_FORMAT_625psf_2500
Definition: ntv2enums.h:548
NTV2WidgetID
NTV2WidgetID
Definition: ntv2enums.h:2842
CNTV2DemoCommon::WaitForEnterKeyPress
static void WaitForEnterKeyPress(void)
Prompts the user (via stdout) to press the Return or Enter key, then waits for it to happen.
Definition: ntv2democommon.cpp:992
NTV2_AUDIO_BUFFER_SIZE_4MB
@ NTV2_AUDIO_BUFFER_SIZE_4MB
Definition: ntv2enums.h:1862
NTV2_DEVICEKIND_EXTERNAL
@ NTV2_DEVICEKIND_EXTERNAL
Specifies external devices (e.g. Thunderbolt).
Definition: ntv2enums.h:1336
DEVICE_ID_INVALID
@ DEVICE_ID_INVALID
Definition: ntv2enums.h:91
PIXEL_FORMATS_PLANAR
@ PIXEL_FORMATS_PLANAR
Definition: ntv2democommon.h:242
NTV2_FORMAT_1080p_2K_2500
@ NTV2_FORMAT_1080p_2K_2500
Definition: ntv2enums.h:536
NTV2_FORMAT_4x4096x2160p_4800_B
@ NTV2_FORMAT_4x4096x2160p_4800_B
Definition: ntv2enums.h:679
NTV2_FORMAT_4x1920x1080psf_2997
@ NTV2_FORMAT_4x1920x1080psf_2997
Definition: ntv2enums.h:572
CNTV2DemoCommon::GetTestPatternNameFromString
static std::string GetTestPatternNameFromString(const std::string &inStr)
Definition: ntv2democommon.cpp:928
NTV2_FORMAT_1080p_6000_A
@ NTV2_FORMAT_1080p_6000_A
Definition: ntv2enums.h:535
NTV2_INPUTSOURCE_HDMI1
@ NTV2_INPUTSOURCE_HDMI1
Identifies the 1st HDMI video input.
Definition: ntv2enums.h:1224
GetDLInOutputXptFromChannel
NTV2OutputXptID GetDLInOutputXptFromChannel(const NTV2Channel inDLInput)
Definition: ntv2signalrouter.cpp:917
NTV2_FRAMERATE_11988
@ NTV2_FRAMERATE_11988
Fractional rate of 120,000 frames per 1,001 seconds.
Definition: ntv2enums.h:411
DeviceFilterString
static string DeviceFilterString(const NTV2DeviceKinds inKinds)
Definition: ntv2democommon.cpp:447
AJA_FrameRate_5994
@ AJA_FrameRate_5994
Definition: videotypes.h:227
AJA_FrameRate_1800
@ AJA_FrameRate_1800
Definition: videotypes.h:216
NTV2_FORMAT_1080p_2K_2398
@ NTV2_FORMAT_1080p_2K_2398
Definition: ntv2enums.h:523
NTV2_FORMAT_3840x2160p_2997
@ NTV2_FORMAT_3840x2160p_2997
Definition: ntv2enums.h:610
NTV2_FORMAT_4096x2160p_4800
@ NTV2_FORMAT_4096x2160p_4800
Definition: ntv2enums.h:632
NTV2PixelFormatKinds
enum _NTV2PixelFormatKinds NTV2PixelFormatKinds
NTV2StringList
std::vector< std::string > NTV2StringList
Definition: ntv2utils.h:1134
NTV2_FORMAT_1080p_2398
@ NTV2_FORMAT_1080p_2398
Definition: ntv2enums.h:521
gString2VANCModeMap
static String2VANCModeMap gString2VANCModeMap
Definition: ntv2democommon.cpp:75
NTV2VANCMode
NTV2VANCMode
These enum values identify the available VANC modes.
Definition: ntv2enums.h:3711
AJA_FrameRate_4800
@ AJA_FrameRate_4800
Definition: videotypes.h:225
NTV2_INPUT_CROSSPOINT_INVALID
@ NTV2_INPUT_CROSSPOINT_INVALID
Definition: ntv2enums.h:2822
NTV2DeviceCanDoOutputDestination
bool NTV2DeviceCanDoOutputDestination(const NTV2DeviceID inDeviceID, const NTV2OutputDestination inOutputDest)
Definition: ntv2devicefeatures.cpp:134
NTV2_FORMAT_1080psf_2K_2400
@ NTV2_FORMAT_1080psf_2K_2400
Definition: ntv2enums.h:526
AJA_PixelFormat_YCbCrA10
@ AJA_PixelFormat_YCbCrA10
Definition: videotypes.h:138
NTV2_OUTPUT_DEST_IS_SDI
#define NTV2_OUTPUT_DEST_IS_SDI(_dest_)
Definition: ntv2enums.h:1294
gNon4KFormats
static NTV2VideoFormatSet gNon4KFormats
Definition: ntv2democommon.cpp:57
AJA_NULL
#define AJA_NULL
Definition: ajatypes.h:190
NTV2_VANCMODE_INVALID
@ NTV2_VANCMODE_INVALID
This identifies the invalid (unspecified, uninitialized) VANC mode.
Definition: ntv2enums.h:3716
CNTV2DemoCommon::GetAJAFrameRate
static AJA_FrameRate GetAJAFrameRate(const NTV2FrameRate inFrameRate)
Definition: ntv2democommon.cpp:1022
NTV2_FORMAT_3840x2160p_5994
@ NTV2_FORMAT_3840x2160p_5994
Definition: ntv2enums.h:615
NTV2_FORMAT_4x4096x2160p_2400
@ NTV2_FORMAT_4x4096x2160p_2400
Definition: ntv2enums.h:669
NTV2DeviceGetNumAudioSystems
UWord NTV2DeviceGetNumAudioSystems(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:9864
NTV2_FBF_8BIT_YCBCR_YUY2
@ NTV2_FBF_8BIT_YCBCR_YUY2
See Alternate 8-Bit YCbCr ('YUY2').
Definition: ntv2enums.h:215
CaptureConfig::fInputChannel
NTV2Channel fInputChannel
The device channel to use.
Definition: ntv2democommon.h:270
CNTV2DemoCommon::GetOutputDestinationFromString
static NTV2OutputDestination GetOutputDestinationFromString(const std::string &inStr)
Returns the NTV2OutputDestination that matches the given string.
Definition: ntv2democommon.cpp:750
NTV2_FORMAT_4x4096x2160p_6000
@ NTV2_FORMAT_4x4096x2160p_6000
Definition: ntv2enums.h:677
NTV2ChannelList
std::vector< NTV2Channel > NTV2ChannelList
An ordered sequence of NTV2Channel values.
Definition: ntv2publicinterface.h:3804
NTV2_FORMAT_3840x2160p_2398
@ NTV2_FORMAT_3840x2160p_2398
Definition: ntv2enums.h:607
AJA_PixelFormat_PRORES_HDV
@ AJA_PixelFormat_PRORES_HDV
Definition: videotypes.h:143
NTV2InputSource
NTV2InputSource
Identifies a specific video input source.
Definition: ntv2enums.h:1221
gString2VideoFormatMap
static String2VideoFormatMap gString2VideoFormatMap
Definition: ntv2democommon.cpp:72
gOutputDestinations
static NTV2OutputDestinations gOutputDestinations
Definition: ntv2democommon.cpp:71
NTV2_DEVICEKIND_SDI
@ NTV2_DEVICEKIND_SDI
Specifies devices with SDI connectors.
Definition: ntv2enums.h:1331
NTV2_FORMAT_UNKNOWN
@ NTV2_FORMAT_UNKNOWN
Definition: ntv2enums.h:498
NTV2_IS_QUAD_QUAD_FORMAT
#define NTV2_IS_QUAD_QUAD_FORMAT(__f__)
Definition: ntv2enums.h:778
NTV2_FORMAT_4x1920x1080psf_2398
@ NTV2_FORMAT_4x1920x1080psf_2398
Definition: ntv2enums.h:558
NTV2DeviceCanDo12gRouting
bool NTV2DeviceCanDo12gRouting(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:287
poptGetContext
poptContext poptGetContext(const char *name, int argc, const char **argv, const struct poptOption *options, unsigned int flags)
Definition: options_popt.cpp:2264
NTV2_FORMAT_1080p_2K_6000_A
@ NTV2_FORMAT_1080p_2K_6000_A
Definition: ntv2enums.h:590
NTV2_FBF_10BIT_YCBCR
@ NTV2_FBF_10BIT_YCBCR
See 10-Bit YCbCr Format.
Definition: ntv2enums.h:210
String2InputSourceMapConstIter
String2InputSourceMap::const_iterator String2InputSourceMapConstIter
Definition: ntv2democommon.cpp:41
NTV2_FBF_PRORES_DVCPRO
@ NTV2_FBF_PRORES_DVCPRO
Apple ProRes DVC Pro.
Definition: ntv2enums.h:229
g8KFormats
static NTV2VideoFormatSet g8KFormats
Definition: ntv2democommon.cpp:59
VIDEO_FORMATS_NON_4KUHD
@ VIDEO_FORMATS_NON_4KUHD
Definition: ntv2democommon.h:225
NTV2_DEVICEKIND_SFP
@ NTV2_DEVICEKIND_SFP
Specifies devices with SFP connectors.
Definition: ntv2enums.h:1334
NTV2_FORMAT_3840x2160p_5000_B
@ NTV2_FORMAT_3840x2160p_5000_B
Definition: ntv2enums.h:617
NTV2_FORMAT_4096x2160p_3000
@ NTV2_FORMAT_4096x2160p_3000
Definition: ntv2enums.h:628
DEC
#define DEC(__x__)
Definition: ntv2publicinterface.h:5579
NTV2_FORMAT_4x1920x1080psf_2500
@ NTV2_FORMAT_4x1920x1080psf_2500
Definition: ntv2enums.h:560
NTV2_FRAMERATE_5994
@ NTV2_FRAMERATE_5994
Fractional rate of 60,000 frames per 1,001 seconds.
Definition: ntv2enums.h:401
NTV2_OUTPUTDESTINATION_HDMI
@ NTV2_OUTPUTDESTINATION_HDMI
Definition: ntv2enums.h:1279
poptGetNextOpt
int poptGetNextOpt(poptContext con)
Definition: options_popt.cpp:3236
ntv2democommon.h
This file contains some structures, constants, classes and functions that are used in some of the dem...
common.h
Private include file for all ajabase sources.
BurnConfig::Get
AJALabelValuePairs Get(const bool inCompact=false) const
Renders a human-readable representation of me.
Definition: ntv2democommon.cpp:1752
NTV2_FORMAT_4x3840x2160p_2400
@ NTV2_FORMAT_4x3840x2160p_2400
Definition: ntv2enums.h:656
CNTV2DeviceScanner::GetDeviceAtIndex
static bool GetDeviceAtIndex(const ULWord inDeviceIndexNumber, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the AJA device having the given zero-bas...
Definition: ntv2devicescanner.cpp:237
NTV2AudioSystemSetConstIter
NTV2AudioSystemSet::const_iterator NTV2AudioSystemSetConstIter
A handy const iterator into an NTV2AudioSystemSet. New in SDK 16.2.
Definition: ntv2publicinterface.h:3870
AJA_PixelFormat_ABGR8
@ AJA_PixelFormat_ABGR8
Definition: videotypes.h:130
NTV2_FORMAT_4x4096x2160p_5000_B
@ NTV2_FORMAT_4x4096x2160p_5000_B
Definition: ntv2enums.h:680
AJA_PixelFormat_Unknown
@ AJA_PixelFormat_Unknown
Definition: videotypes.h:123
NTV2TCIndexesConstIter
NTV2TCIndexes::const_iterator NTV2TCIndexesConstIter
A handy const interator for iterating over an NTV2TCIndexes set.
Definition: ntv2publicinterface.h:6795
NTV2_FBF_10BIT_RAW_YCBCR
@ NTV2_FBF_10BIT_RAW_YCBCR
See 10-Bit Raw YCbCr (CION).
Definition: ntv2enums.h:236
NTV2_DEVICEKIND_6G
@ NTV2_DEVICEKIND_6G
Specifies devices that have 6G SDI connectors.
Definition: ntv2enums.h:1340
CNTV2DemoCommon::GetInputSourceStrings
static std::string GetInputSourceStrings(const NTV2IOKinds inKinds=NTV2_IOKINDS_ALL, const std::string inDeviceSpecifier=std::string())
Definition: ntv2democommon.cpp:685
NTV2_OUTPUTDESTINATION_INVALID
@ NTV2_OUTPUTDESTINATION_INVALID
Definition: ntv2enums.h:1288
String2VideoFormatMap
map< string, NTV2VideoFormat > String2VideoFormatMap
Definition: ntv2democommon.cpp:28
NTV2_FORMAT_4x2048x1080p_2500
@ NTV2_FORMAT_4x2048x1080p_2500
Definition: ntv2enums.h:569
NTV2_FORMAT_720p_2398
@ NTV2_FORMAT_720p_2398
Definition: ntv2enums.h:531
NTV2_FORMAT_4x1920x1080p_5994
@ NTV2_FORMAT_4x1920x1080p_5994
Definition: ntv2enums.h:579
NTV2_FORMAT_4x4096x2160p_5000
@ NTV2_FORMAT_4x4096x2160p_5000
Definition: ntv2enums.h:675
NTV2FrameBufferFormatToString
std::string NTV2FrameBufferFormatToString(const NTV2FrameBufferFormat inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:6940
TC_INDEXES_SDI
@ TC_INDEXES_SDI
Definition: ntv2democommon.h:253
NTV2_FORMAT_4x3840x2160p_6000
@ NTV2_FORMAT_4x3840x2160p_6000
Definition: ntv2enums.h:662
CaptureConfig::fDoTSIRouting
bool fDoTSIRouting
If true, do TSI routing; otherwise squares.
Definition: ntv2democommon.h:279
NTV2DeviceGetSupportedOutputDests
bool NTV2DeviceGetSupportedOutputDests(const NTV2DeviceID inDeviceID, NTV2OutputDestinations &outOutputDests, const NTV2IOKinds inKinds=NTV2_IOKINDS_ALL)
Returns a set of distinct NTV2OutputDest values supported on the given device.
Definition: ntv2publicinterface.cpp:1228
NTV2DeviceCanDoInputSource
bool NTV2DeviceCanDoInputSource(const NTV2DeviceID inDeviceID, const NTV2InputSource inInputSource)
Definition: ntv2devicefeatures.hpp:17462
AJA_PixelFormat_YCbCr10
@ AJA_PixelFormat_YCbCr10
Definition: videotypes.h:124
NTV2XptConnections
std::map< NTV2InputXptID, NTV2OutputXptID > NTV2XptConnections
Definition: ntv2signalrouter.h:39
GetTSIMuxOutputXptFromChannel
NTV2OutputXptID GetTSIMuxOutputXptFromChannel(const NTV2Channel inTSIMuxer, const bool inLinkB=false, const bool inIsRGB=false)
Definition: ntv2signalrouter.cpp:1005
NTV2_FBF_10BIT_YCBCR_DPX
@ NTV2_FBF_10BIT_YCBCR_DPX
See 10-Bit YCbCr - DPX Format.
Definition: ntv2enums.h:219
AJA_FrameRate_12000
@ AJA_FrameRate_12000
Definition: videotypes.h:231
NTV2InputSourceSetConstIter
NTV2InputSourceSet::const_iterator NTV2InputSourceSetConstIter
A handy const iterator for iterating over an NTV2InputSourceSet.
Definition: ntv2publicinterface.h:8792
NTV2_RP188
This struct replaces the old RP188_STRUCT.
Definition: ntv2publicinterface.h:6705
NTV2_FBF_10BIT_YCBCR_422PL3_LE
@ NTV2_FBF_10BIT_YCBCR_422PL3_LE
See 3-Plane 10-Bit YCbCr 4:2:2 ('I422_10LE' a.k.a. 'YUV-P-L10').
Definition: ntv2enums.h:238
AJA_FrameRate_1798
@ AJA_FrameRate_1798
Definition: videotypes.h:215
IsRGBFormat
bool IsRGBFormat(const NTV2FrameBufferFormat format)
Definition: ntv2utils.cpp:5442
NTV2_AUDIO_EMBEDDED
@ NTV2_AUDIO_EMBEDDED
Obtain audio samples from the audio that's embedded in the video HANC.
Definition: ntv2enums.h:1948
VIDEO_FORMATS_8KUHD2
@ VIDEO_FORMATS_8KUHD2
Definition: ntv2democommon.h:227
NTV2_FRAMERATE_UNKNOWN
@ NTV2_FRAMERATE_UNKNOWN
Represents an unknown or invalid frame rate.
Definition: ntv2enums.h:398
ToLower
static string ToLower(const string &inStr)
Definition: ntv2devicescanner.cpp:17
NTV2_FORMAT_1080p_5000_A
@ NTV2_FORMAT_1080p_5000_A
Definition: ntv2enums.h:533
NTV2_FORMAT_4x2048x1080p_6000
@ NTV2_FORMAT_4x2048x1080p_6000
Definition: ntv2enums.h:583
NTV2VideoFormat
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
NTV2_FORMAT_4096x2160p_5000
@ NTV2_FORMAT_4096x2160p_5000
Definition: ntv2enums.h:633
NTV2_FORMAT_1080i_5000
@ NTV2_FORMAT_1080i_5000
Definition: ntv2enums.h:511
gTCIndexesAnalog
static NTV2TCIndexSet gTCIndexesAnalog
Definition: ntv2democommon.cpp:81
NTV2_FORMAT_4x1920x1080p_5000
@ NTV2_FORMAT_4x1920x1080p_5000
Definition: ntv2enums.h:578
NTV2_FBF_8BIT_YCBCR_420PL3
@ NTV2_FBF_8BIT_YCBCR_420PL3
See 3-Plane 8-Bit YCbCr 4:2:0 ('I420' a.k.a. 'YUV-P420').
Definition: ntv2enums.h:221
NTV2_FORMAT_4x1920x1080p_2398
@ NTV2_FORMAT_4x1920x1080p_2398
Definition: ntv2enums.h:561
NTV2DeviceGetSupportedInputSources
bool NTV2DeviceGetSupportedInputSources(const NTV2DeviceID inDeviceID, NTV2InputSourceSet &outInputSources, const NTV2IOKinds inKinds=NTV2_IOKINDS_ALL)
Returns a set of distinct NTV2InputSource values supported on the given device.
Definition: ntv2publicinterface.cpp:1212
gInputSourcesSDI
static NTV2InputSourceSet gInputSourcesSDI
Definition: ntv2democommon.cpp:68
NTV2_FORMAT_1080p_6000_B
@ NTV2_FORMAT_1080p_6000_B
Definition: ntv2enums.h:530
NTV2_FORMAT_4x4096x2160p_5994_B
@ NTV2_FORMAT_4x4096x2160p_5994_B
Definition: ntv2enums.h:681
NTV2_IOKINDS_ALL
@ NTV2_IOKINDS_ALL
Specifies any/all input/output kinds.
Definition: ntv2enums.h:1250
gString2AudioSystemMap
static String2AudioSystemMap gString2AudioSystemMap
Definition: ntv2democommon.cpp:74
NTV2DeviceIDSet
std::set< NTV2DeviceID > NTV2DeviceIDSet
A set of NTV2DeviceIDs.
Definition: ntv2utils.h:1031
NTV2_FORMAT_4096x2160p_2997
@ NTV2_FORMAT_4096x2160p_2997
Definition: ntv2enums.h:627
NTV2_TCINDEX_INVALID
@ NTV2_TCINDEX_INVALID
Definition: ntv2enums.h:3895
CNTV2DriverInterface::GetDeviceID
virtual NTV2DeviceID GetDeviceID(void)
Definition: ntv2driverinterface.cpp:371
NTV2_FBF_8BIT_DVCPRO
@ NTV2_FBF_8BIT_DVCPRO
See 8-Bit DVCPro.
Definition: ntv2enums.h:220
gTestPatternNames
static NTV2StringList gTestPatternNames
Definition: ntv2democommon.cpp:87
NTV2_FORMAT_4096x2160p_5994_B
@ NTV2_FORMAT_4096x2160p_5994_B
Definition: ntv2enums.h:641
NTV2_FORMAT_4x3840x2160p_5994_B
@ NTV2_FORMAT_4x3840x2160p_5994_B
Definition: ntv2enums.h:664
NTV2_FORMAT_1080p_5994_A
@ NTV2_FORMAT_1080p_5994_A
Definition: ntv2enums.h:534
NTV2_FORMAT_4x3840x2160p_6000_B
@ NTV2_FORMAT_4x3840x2160p_6000_B
Definition: ntv2enums.h:665
NTV2_FBF_8BIT_YCBCR_422PL2
@ NTV2_FBF_8BIT_YCBCR_422PL2
8-Bit 4:2:2 2-Plane YCbCr
Definition: ntv2enums.h:242
GetInputSourceOutputXpt
NTV2OutputXptID GetInputSourceOutputXpt(const NTV2InputSource inInputSource, const bool inIsSDI_DS2=false, const bool inIsHDMI_RGB=false, const UWord inHDMI_Quadrant=0)
Definition: ntv2signalrouter.cpp:865
CNTV2DemoCommon::GetInputRouting8K
static bool GetInputRouting8K(NTV2XptConnections &outConnections, const CaptureConfig &inConfig, const NTV2VideoFormat inVidFormat, const NTV2DeviceID inDevID=DEVICE_ID_INVALID, const bool isInputRGB=false)
Answers with the crosspoint connections needed to implement the given 8K/UHD2 capture configuration.
Definition: ntv2democommon.cpp:1397
AJA_FrameRate_6000
@ AJA_FrameRate_6000
Definition: videotypes.h:228
NTV2DeviceCanDoInputTCIndex
bool NTV2DeviceCanDoInputTCIndex(const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
Definition: ntv2devicefeatures.cpp:1058
CNTV2DemoCommon::GetPixelFormatStrings
static std::string GetPixelFormatStrings(const NTV2PixelFormatKinds inKinds=PIXEL_FORMATS_ALL, const std::string inDeviceSpecifier=std::string())
Definition: ntv2democommon.cpp:603
VIDEO_FORMATS_4KUHD
@ VIDEO_FORMATS_4KUHD
Definition: ntv2democommon.h:226
NTV2_FORMAT_4x2048x1080p_5994
@ NTV2_FORMAT_4x2048x1080p_5994
Definition: ntv2enums.h:582
gFBFsRGB
static NTV2FrameBufferFormatSet gFBFsRGB
Definition: ntv2democommon.cpp:61
NTV2StringListConstIter
NTV2StringList::const_iterator NTV2StringListConstIter
Definition: ntv2utils.h:1136
NTV2_DEVICEKIND_NONE
@ NTV2_DEVICEKIND_NONE
Doesn't specify any kind of device.
Definition: ntv2enums.h:1344
NTV2FrameData::UnlockAll
bool UnlockAll(CNTV2Card &inDevice)
Definition: ntv2democommon.cpp:411
gTCIndexesSDI
static NTV2TCIndexSet gTCIndexesSDI
Definition: ntv2democommon.cpp:79
AJA_PixelFormat
AJA_PixelFormat
Definition: videotypes.h:121
NTV2_FORMAT_4x3840x2160p_3000
@ NTV2_FORMAT_4x3840x2160p_3000
Definition: ntv2enums.h:659
NTV2_FORMAT_1080p_2K_5994_B
@ NTV2_FORMAT_1080p_2K_5994_B
Definition: ntv2enums.h:600
gString2InputSourceMap
static String2InputSourceMap gString2InputSourceMap
Definition: ntv2democommon.cpp:76
NTV2_FBF_16BIT_ARGB
@ NTV2_FBF_16BIT_ARGB
16-Bit ARGB
Definition: ntv2enums.h:233
NTV2_Wgt425Mux4
@ NTV2_Wgt425Mux4
Definition: ntv2enums.h:2941
PlayerConfig
Configures an NTV2Player instance.
Definition: ntv2democommon.h:310
NTV2ChannelToString
std::string NTV2ChannelToString(const NTV2Channel inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:5759
NTV2_INPUT_SOURCE_IS_SDI
#define NTV2_INPUT_SOURCE_IS_SDI(_inpSrc_)
Definition: ntv2enums.h:1242
NTV2_IOKINDS_SDI
@ NTV2_IOKINDS_SDI
Specifies SDI input/output kinds.
Definition: ntv2enums.h:1251
NTV2OutputXptID
enum NTV2OutputCrosspointID NTV2OutputXptID
NTV2_FBF_8BIT_YCBCR_422PL3
@ NTV2_FBF_8BIT_YCBCR_422PL3
See 3-Plane 8-Bit YCbCr 4:2:2 (Weitek 'Y42B' a.k.a. 'YUV-P8').
Definition: ntv2enums.h:234
NTV2TestPatternGen::getTestPatternNames
static NTV2TestPatternNames getTestPatternNames(void)
Definition: ntv2testpatterngen.cpp:2542
NTV2_FORMAT_3840x2160p_5000
@ NTV2_FORMAT_3840x2160p_5000
Definition: ntv2enums.h:614
NTV2_FORMAT_720p_5994
@ NTV2_FORMAT_720p_5994
Definition: ntv2enums.h:514
kTCFormatUnknown
@ kTCFormatUnknown
Definition: ntv2rp188.h:29
CNTV2DemoCommon::GetSupportedInputSources
static const NTV2InputSourceSet GetSupportedInputSources(const NTV2IOKinds inKinds=NTV2_IOKINDS_ALL)
Definition: ntv2democommon.cpp:667
NTV2FrameData::LockAll
bool LockAll(CNTV2Card &inDevice)
Definition: ntv2democommon.cpp:390
CNTV2DemoCommon::NTV2FrameRate2TimecodeFormat
static TimecodeFormat NTV2FrameRate2TimecodeFormat(const NTV2FrameRate inFrameRate)
Definition: ntv2democommon.cpp:1000
NTV2_FORMAT_1080p_2K_5000_A
@ NTV2_FORMAT_1080p_2K_5000_A
Definition: ntv2enums.h:594
NTV2_FRAMERATE_5000
@ NTV2_FRAMERATE_5000
50 frames per second
Definition: ntv2enums.h:407
NTV2_FORMAT_4x4096x2160p_4795_B
@ NTV2_FORMAT_4x4096x2160p_4795_B
Definition: ntv2enums.h:678
NTV2Buffer::HostPageSize
static size_t HostPageSize(void)
Definition: ntv2publicinterface.cpp:1918
CNTV2Card::SetNumberAudioChannels
virtual bool SetNumberAudioChannels(const ULWord inNumChannels, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Sets the number of audio channels to be concurrently captured or played for a given Audio System on t...
Definition: ntv2audio.cpp:149
CNTV2Card::SetAudioBufferSize
virtual bool SetAudioBufferSize(const NTV2AudioBufferSize inValue, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Changes the size of the audio buffer that is used for a given Audio System in the AJA device.
Definition: ntv2audio.cpp:252
NTV2_FORMAT_4x2048x1080psf_2500
@ NTV2_FORMAT_4x2048x1080psf_2500
Definition: ntv2enums.h:566
NTV2_FBF_10BIT_RGB
@ NTV2_FBF_10BIT_RGB
See 10-Bit RGB Format.
Definition: ntv2enums.h:214
gFBFsAlpha
static NTV2FrameBufferFormatSet gFBFsAlpha
Definition: ntv2democommon.cpp:65
CNTV2DemoCommon::StripFormatString
static std::string StripFormatString(const std::string &inStr)
Definition: ntv2democommon.cpp:944
CNTV2DemoCommon::GetGlobalMutexName
static const char * GetGlobalMutexName(void)
Definition: ntv2democommon.cpp:1188
poptBadOption
const char * poptBadOption(poptContext con, unsigned int flags)
Definition: options_popt.cpp:3623
NTV2_FRAMERATE_4795
@ NTV2_FRAMERATE_4795
Fractional rate of 48,000 frames per 1,001 seconds.
Definition: ntv2enums.h:409
NTV2_FORMAT_2K_1500
@ NTV2_FORMAT_2K_1500
Definition: ntv2enums.h:552
aja::to_string
std::string to_string(bool val)
Definition: common.cpp:180
NTV2_FRAMERATE_3000
@ NTV2_FRAMERATE_3000
30 frames per second
Definition: ntv2enums.h:402
NTV2_IS_VALID_FRAME_BUFFER_FORMAT
#define NTV2_IS_VALID_FRAME_BUFFER_FORMAT(__s__)
Definition: ntv2enums.h:251
NTV2_Wgt425Mux3
@ NTV2_Wgt425Mux3
Definition: ntv2enums.h:2940
AJALabelValuePairs
std::vector< AJALabelValuePair > AJALabelValuePairs
An ordered sequence of label/value pairs.
Definition: info.h:69
CNTV2DemoCommon::GetAJAPixelFormat
static AJA_PixelFormat GetAJAPixelFormat(const NTV2FrameBufferFormat inFormat)
Definition: ntv2democommon.cpp:1054
NTV2DeviceCanDoTCIndex
bool NTV2DeviceCanDoTCIndex(const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
Definition: ntv2devicefeatures.cpp:1008
NTV2AudioSystem
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information.
Definition: ntv2enums.h:3809
NTV2_FORMAT_1080p_2K_5000_B
@ NTV2_FORMAT_1080p_2K_5000_B
Definition: ntv2enums.h:599
gString2PixelFormatMap
static String2PixelFormatMap gString2PixelFormatMap
Definition: ntv2democommon.cpp:73
NTV2_FORMAT_525_2400
@ NTV2_FORMAT_525_2400
Definition: ntv2enums.h:546
CNTV2DemoCommon::Get8KInputFormat
static bool Get8KInputFormat(NTV2VideoFormat &inOutVideoFormat)
Given a video format, if all 4 inputs are the same and promotable to 8K, this function does the promo...
Definition: ntv2democommon.cpp:1143
NTV2_FORMAT_1080psf_2997_2
@ NTV2_FORMAT_1080psf_2997_2
Definition: ntv2enums.h:539
String2OutputDestMap
map< string, NTV2OutputDestination > String2OutputDestMap
Definition: ntv2democommon.cpp:43
String2AudioSystemMapConstIter
String2AudioSystemMap::const_iterator String2AudioSystemMapConstIter
Definition: ntv2democommon.cpp:35
TC_INDEXES_ANALOG
@ TC_INDEXES_ANALOG
Definition: ntv2democommon.h:254
NTV2_FORMAT_4x4096x2160p_5994
@ NTV2_FORMAT_4x4096x2160p_5994
Definition: ntv2enums.h:676
NTV2_FORMAT_4x2048x1080p_2400
@ NTV2_FORMAT_4x2048x1080p_2400
Definition: ntv2enums.h:568
gFBFsPlanar
static NTV2FrameBufferFormatSet gFBFsPlanar
Definition: ntv2democommon.cpp:62
NTV2_FORMAT_1080p_2K_4800_B
@ NTV2_FORMAT_1080p_2K_4800_B
Definition: ntv2enums.h:598
NTV2_FORMAT_4x1920x1080p_2400
@ NTV2_FORMAT_4x1920x1080p_2400
Definition: ntv2enums.h:562
NTV2_FORMAT_4x1920x1080psf_2400
@ NTV2_FORMAT_4x1920x1080psf_2400
Definition: ntv2enums.h:559
NTV2VideoFormatKinds
enum _NTV2VideoFormatKinds NTV2VideoFormatKinds
gTCIndexesHDMI
static NTV2TCIndexSet gTCIndexesHDMI
Definition: ntv2democommon.cpp:80
NTV2_FORMAT_720p_2500
@ NTV2_FORMAT_720p_2500
Definition: ntv2enums.h:532
NTV2_FORMAT_3840x2160p_6000_B
@ NTV2_FORMAT_3840x2160p_6000_B
Definition: ntv2enums.h:619
NTV2_FORMAT_1080psf_2500_2
@ NTV2_FORMAT_1080psf_2500_2
Definition: ntv2enums.h:538
NTV2TCIndexKinds
enum _NTV2TCIndexKinds NTV2TCIndexKinds
NTV2_FORMAT_4096x2160p_4795_B
@ NTV2_FORMAT_4096x2160p_4795_B
Definition: ntv2enums.h:638
GetTSIMuxInputXptFromChannel
NTV2InputXptID GetTSIMuxInputXptFromChannel(const NTV2Channel inTSIMuxer, const bool inLinkB=false)
Definition: ntv2signalrouter.cpp:993
String2OutputDestMapConstIter
String2OutputDestMap::const_iterator String2OutputDestMapConstIter
Definition: ntv2democommon.cpp:44
gInputSourcesAnalog
static NTV2InputSourceSet gInputSourcesAnalog
Definition: ntv2democommon.cpp:70
DEVICE_ID_NOTFOUND
@ DEVICE_ID_NOTFOUND
Invalid or "not found".
Definition: ntv2enums.h:90
NTV2_FORMAT_4096x2160p_4800_B
@ NTV2_FORMAT_4096x2160p_4800_B
Definition: ntv2enums.h:639
NTV2_FORMAT_3840x2160p_2400
@ NTV2_FORMAT_3840x2160p_2400
Definition: ntv2enums.h:608
NTV2_FORMAT_1080p_2400
@ NTV2_FORMAT_1080p_2400
Definition: ntv2enums.h:522
NTV2_FORMAT_1080i_6000
@ NTV2_FORMAT_1080i_6000
Definition: ntv2enums.h:513
String2VANCModeMap
map< string, NTV2VANCMode > String2VANCModeMap
Definition: ntv2democommon.cpp:37
NTV2_FBF_ABGR
@ NTV2_FBF_ABGR
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:216
CaptureConfig::fInputSource
NTV2InputSource fInputSource
The device input connector to use.
Definition: ntv2democommon.h:271
NTV2DeviceGetMaxAudioChannels
UWord NTV2DeviceGetMaxAudioChannels(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:8796
NTV2_IS_VALID_VIDEO_FORMAT
#define NTV2_IS_VALID_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:688
gString2TCIndexMap
static String2TCIndexMap gString2TCIndexMap
Definition: ntv2democommon.cpp:85
NTV2_FORMAT_3840x2160p_3000
@ NTV2_FORMAT_3840x2160p_3000
Definition: ntv2enums.h:611
NTV2_FORMAT_1080psf_2400
@ NTV2_FORMAT_1080psf_2400
Definition: ntv2enums.h:517
AJA_PixelFormat_YCBCR8_420PL
@ AJA_PixelFormat_YCBCR8_420PL
Definition: videotypes.h:158
AJA_PixelFormat_RGB12P
@ AJA_PixelFormat_RGB12P
Definition: videotypes.h:141
TC_INDEXES_ALL
@ TC_INDEXES_ALL
Definition: ntv2democommon.h:252
String2TCIndexMapConstIter
String2TCIndexMap::const_iterator String2TCIndexMapConstIter
Definition: ntv2democommon.cpp:48
NTV2_FORMAT_4096x2160p_5994
@ NTV2_FORMAT_4096x2160p_5994
Definition: ntv2enums.h:634
NTV2_FBF_HAS_ALPHA
#define NTV2_FBF_HAS_ALPHA(__fbf__)
Definition: ntv2enums.h:311
CNTV2DemoCommon::GetInputRouting4K
static bool GetInputRouting4K(NTV2XptConnections &outConnections, const CaptureConfig &inConfig, const NTV2DeviceID inDevID=DEVICE_ID_INVALID, const bool isInputRGB=false)
Answers with the crosspoint connections needed to implement the given 4K/UHD capture configuration.
Definition: ntv2democommon.cpp:1249
gTCIndexes
static NTV2TCIndexSet gTCIndexes
Definition: ntv2democommon.cpp:78
NTV2VideoFormatString
const char * NTV2VideoFormatString(NTV2VideoFormat fmt)
Definition: ntv2debug.cpp:314
CNTV2Card::SetAudioRate
virtual bool SetAudioRate(const NTV2AudioRate inRate, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Sets the NTV2AudioRate for the given Audio System.
Definition: ntv2audio.cpp:208
NTV2_FORMAT_4x2048x1080psf_2997
@ NTV2_FORMAT_4x2048x1080psf_2997
Definition: ntv2enums.h:576
NTV2OutputDestinationToString
std::string NTV2OutputDestinationToString(const NTV2OutputDestination inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:7238
NTV2_AUDIOSYSTEM_INVALID
@ NTV2_AUDIOSYSTEM_INVALID
Definition: ntv2enums.h:3821
NTV2_FORMAT_1080p_2K_2997
@ NTV2_FORMAT_1080p_2K_2997
Definition: ntv2enums.h:592