AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
ntv2utils.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
7 #include "ajatypes.h"
8 #include "ntv2utils.h"
9 #include "ntv2formatdescriptor.h"
10 #include "ntv2registerexpert.h"
11 #include "ntv2videodefines.h"
12 #include "ntv2audiodefines.h"
13 #include "ntv2endian.h"
14 #include "ntv2debug.h"
15 #include "ntv2transcode.h"
16 #include "ntv2version.h"
17 #include "ntv2devicefeatures.h" // Required for NTV2DeviceCanDoVideoFormat
18 #include "ajabase/system/lock.h"
19 #include "ajabase/common/common.h"
20 #if defined(AJALinux)
21  #include <string.h> // For memset
22  #include <stdint.h>
23 
24 #endif
25 #include <algorithm>
26 #include <sstream>
27 #include <iomanip>
28 #include <iterator>
29 #include <map>
30 
31 
32 using namespace std;
33 
34 
35 // Macros to simplify returning of strings for given enum
36 #define NTV2UTILS_ENUM_CASE_RETURN_STR(enum_name) case(enum_name): return #enum_name
37 
38 #define NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(condition, retail_name, enum_name)\
39  case(enum_name): return condition ? retail_name : #enum_name
40 
42 // BEGIN SECTION MOVED FROM 'videoutilities.cpp'
44 
45 uint32_t CalcRowBytesForFormat (const NTV2FrameBufferFormat inPixelFormat, const uint32_t inPixelWidth)
46 {
47  uint32_t rowBytes = 0;
48 
49  switch (inPixelFormat)
50  {
53  rowBytes = inPixelWidth * 2;
54  break;
55 
58  rowBytes = (( inPixelWidth % 48 == 0 ) ? inPixelWidth : (((inPixelWidth / 48 ) + 1) * 48)) * 8 / 3;
59  break;
60 
61  case NTV2_FBF_10BIT_RGB:
62  case NTV2_FBF_10BIT_DPX:
65  case NTV2_FBF_ARGB:
66  case NTV2_FBF_RGBA:
67  case NTV2_FBF_ABGR:
68  rowBytes = inPixelWidth * 4;
69  break;
70 
71  case NTV2_FBF_24BIT_RGB:
72  case NTV2_FBF_24BIT_BGR:
73  rowBytes = inPixelWidth * 3;
74  break;
75 
77  rowBytes = inPixelWidth * 2/4;
78  break;
79 
80  case NTV2_FBF_48BIT_RGB:
81  rowBytes = inPixelWidth * 6;
82  break;
83 
85  rowBytes = inPixelWidth * 36 / 8;
86  break;
87 
90  rowBytes = inPixelWidth * 20 / 16;
91  break;
92 
95  rowBytes = inPixelWidth;
96  break;
97 
99  case NTV2_FBF_8BIT_HDV:
102  case NTV2_FBF_PRORES_HDV:
103  case NTV2_FBF_10BIT_ARGB:
104  case NTV2_FBF_16BIT_ARGB:
111  // TO DO.....add more
112  break;
113  }
114 
115  return rowBytes;
116 }
117 
118 
119 bool UnpackLine_10BitYUVtoUWordSequence (const void * pIn10BitYUVLine, UWordSequence & out16BitYUVLine, ULWord inNumPixels)
120 {
121  out16BitYUVLine.clear ();
122  const ULWord * pInputLine (reinterpret_cast <const ULWord *> (pIn10BitYUVLine));
123 
124  if (!pInputLine)
125  return false; // bad pointer
126  if (inNumPixels < 6)
127  return false; // bad width
128  if (inNumPixels % 6)
129  inNumPixels -= inNumPixels % 6;
130 
131  const ULWord totalULWords (inNumPixels * 4 / 6); // 4 ULWords per 6 pixels
132 
133  for (ULWord inputCount (0); inputCount < totalULWords; inputCount++)
134  {
135  out16BitYUVLine.push_back ((pInputLine [inputCount] ) & 0x3FF);
136  out16BitYUVLine.push_back ((pInputLine [inputCount] >> 10) & 0x3FF);
137  out16BitYUVLine.push_back ((pInputLine [inputCount] >> 20) & 0x3FF);
138  }
139  return true;
140 }
141 
142 
143 bool UnpackLine_10BitYUVtoUWordSequence (const void * pIn10BitYUVLine, const NTV2FormatDescriptor & inFormatDesc, UWordSequence & out16BitYUVLine)
144 {
145  out16BitYUVLine.clear ();
146  const ULWord * pInputLine (reinterpret_cast <const ULWord *> (pIn10BitYUVLine));
147 
148  if (!pInputLine)
149  return false; // bad pointer
150  if (!inFormatDesc.IsValid ())
151  return false; // bad formatDesc
152  if (inFormatDesc.GetRasterWidth () < 6)
153  return false; // bad width
154  if (inFormatDesc.GetPixelFormat() != NTV2_FBF_10BIT_YCBCR)
155  return false; // wrong FBF
156 
157  for (ULWord inputCount (0); inputCount < inFormatDesc.linePitch; inputCount++)
158  {
159  out16BitYUVLine.push_back ((pInputLine [inputCount] ) & 0x3FF);
160  out16BitYUVLine.push_back ((pInputLine [inputCount] >> 10) & 0x3FF);
161  out16BitYUVLine.push_back ((pInputLine [inputCount] >> 20) & 0x3FF);
162  }
163  return true;
164 }
165 
166 
167 // UnPack10BitYCbCrBuffer
168 // UnPack 10 Bit YCbCr Data to 16 bit Word per component
169 void UnPack10BitYCbCrBuffer( uint32_t* packedBuffer, uint16_t* ycbcrBuffer, uint32_t numPixels )
170 {
171  for ( uint32_t sampleCount = 0, dataCount = 0;
172  sampleCount < (numPixels*2) ;
173  sampleCount+=3,dataCount++ )
174  {
175  ycbcrBuffer[sampleCount] = packedBuffer[dataCount]&0x3FF;
176  ycbcrBuffer[sampleCount+1] = (packedBuffer[dataCount]>>10)&0x3FF;
177  ycbcrBuffer[sampleCount+2] = (packedBuffer[dataCount]>>20)&0x3FF;
178 
179  }
180 }
181 
182 // PackTo10BitYCbCrBuffer
183 // Pack 16 bit Word per component to 10 Bit YCbCr Data
184 void PackTo10BitYCbCrBuffer (const uint16_t * ycbcrBuffer, uint32_t * packedBuffer, const uint32_t numPixels)
185 {
186  for ( uint32_t inputCount=0, outputCount=0;
187  inputCount < (numPixels*2);
188  outputCount += 4, inputCount += 12 )
189  {
190  packedBuffer[outputCount] = uint32_t (ycbcrBuffer[inputCount+0]) + uint32_t (ycbcrBuffer[inputCount+1]<<10) + uint32_t (ycbcrBuffer[inputCount+2]<<20);
191  packedBuffer[outputCount+1] = uint32_t (ycbcrBuffer[inputCount+3]) + uint32_t (ycbcrBuffer[inputCount+4]<<10) + uint32_t (ycbcrBuffer[inputCount+5]<<20);
192  packedBuffer[outputCount+2] = uint32_t (ycbcrBuffer[inputCount+6]) + uint32_t (ycbcrBuffer[inputCount+7]<<10) + uint32_t (ycbcrBuffer[inputCount+8]<<20);
193  packedBuffer[outputCount+3] = uint32_t (ycbcrBuffer[inputCount+9]) + uint32_t (ycbcrBuffer[inputCount+10]<<10) + uint32_t (ycbcrBuffer[inputCount+11]<<20);
194  }
195 }
196 
197 void MakeUnPacked10BitYCbCrBuffer( uint16_t* buffer, uint16_t Y , uint16_t Cb , uint16_t Cr,uint32_t numPixels )
198 {
199  // assumes lineData is large enough for numPixels
200  for ( uint32_t count = 0; count < numPixels*2; count+=4 )
201  {
202  buffer[count] = Cb;
203  buffer[count+1] = Y;
204  buffer[count+2] = Cr;
205  buffer[count+3] = Y;
206  }
207 }
208 
209 
210 // ConvertLineTo8BitYCbCr
211 // 10 Bit YCbCr to 8 Bit YCbCr
212 void ConvertLineTo8BitYCbCr (const uint16_t * ycbcr10BitBuffer, uint8_t * ycbcr8BitBuffer, const uint32_t numPixels)
213 {
214  for (uint32_t pixel(0); pixel < numPixels * 2; pixel++)
215  ycbcr8BitBuffer[pixel] = uint8_t(ycbcr10BitBuffer[pixel] >> 2);
216 }
217 
218 //***********************************************************************************************************
219 
220 // ConvertUnpacked10BitYCbCrToPixelFormat()
221 // Converts a line of "unpacked" 10-bit Y/Cb/Cr pixels into a "packed" line in the pixel format
222 // for the current frame buffer format.
223 void ConvertUnpacked10BitYCbCrToPixelFormat(uint16_t *unPackedBuffer, uint32_t *packedBuffer, uint32_t numPixels, NTV2FrameBufferFormat pixelFormat,
224  bool bUseSmpteRange, bool bAlphaFromLuma)
225 {
226  bool bIsSD = false;
227  if(numPixels < 1280)
228  bIsSD = true;
229 
230  switch(pixelFormat)
231  {
233  PackTo10BitYCbCrBuffer(unPackedBuffer, packedBuffer, numPixels);
234  break;
235 
236  case NTV2_FBF_8BIT_YCBCR:
237  ConvertLineTo8BitYCbCr(unPackedBuffer, reinterpret_cast<uint8_t*>(packedBuffer), numPixels);
238  break;
239 
240  case NTV2_FBF_ARGB:
241  ConvertLinetoRGB(unPackedBuffer, reinterpret_cast<RGBAlphaPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange, bAlphaFromLuma);
242  break;
243 
244  case NTV2_FBF_RGBA:
245  ConvertLinetoRGB(unPackedBuffer, reinterpret_cast<RGBAlphaPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange, bAlphaFromLuma);
246  ConvertARGBYCbCrToRGBA(reinterpret_cast<UByte*>(packedBuffer), numPixels);
247  break;
248 
249  case NTV2_FBF_10BIT_RGB:
250  ConvertLineto10BitRGB(unPackedBuffer, reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
251  PackRGB10BitFor10BitRGB(reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels);
252  break;
253 
255  ConvertLineTo8BitYCbCr(unPackedBuffer, reinterpret_cast<uint8_t*>(packedBuffer), numPixels);
256  Convert8BitYCbCrToYUY2(reinterpret_cast<uint8_t*>(packedBuffer), numPixels);
257  break;
258 
259  case NTV2_FBF_ABGR:
260  ConvertLinetoRGB(unPackedBuffer, reinterpret_cast<RGBAlphaPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange, bAlphaFromLuma);
261  ConvertARGBYCbCrToABGR(reinterpret_cast<uint8_t*>(packedBuffer), numPixels);
262  break;
263 
264  case NTV2_FBF_10BIT_DPX:
265  ConvertLineto10BitRGB(unPackedBuffer, reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
266  PackRGB10BitFor10BitDPX(reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels);
267  break;
268 
271  break;
272 
273  case NTV2_FBF_24BIT_RGB:
274  ConvertLinetoRGB(unPackedBuffer,reinterpret_cast<RGBAlphaPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
275  ConvertARGBToRGB(reinterpret_cast<UByte*>(packedBuffer), reinterpret_cast<UByte*>(packedBuffer), numPixels);
276  break;
277 
278  case NTV2_FBF_24BIT_BGR:
279  ConvertLinetoRGB(unPackedBuffer,reinterpret_cast<RGBAlphaPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
280  ConvertARGBToBGR(reinterpret_cast<UByte*>(packedBuffer), reinterpret_cast<UByte*>(packedBuffer), numPixels);
281  break;
282 
284  ConvertLineto10BitRGB(unPackedBuffer, reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
285  PackRGB10BitFor10BitDPX(reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels, false);
286  break;
287 
288  case NTV2_FBF_48BIT_RGB:
289  ConvertLineto16BitRGB(unPackedBuffer, reinterpret_cast<RGBAlpha16BitPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
290  Convert16BitARGBTo16BitRGB(reinterpret_cast<RGBAlpha16BitPixel*>(packedBuffer), reinterpret_cast<UWord*>(packedBuffer), numPixels);
291  break;
292 
294  ConvertLineto10BitRGB(unPackedBuffer, reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
295  PackRGB10BitFor10BitRGBPacked(reinterpret_cast<RGBAlpha10BitPixel*>(packedBuffer), numPixels);
296  break;
297 
299  ConvertLineto16BitRGB(unPackedBuffer, reinterpret_cast<RGBAlpha16BitPixel*>(packedBuffer), numPixels, bIsSD, bUseSmpteRange);
300  Convert16BitARGBTo12BitRGBPacked(reinterpret_cast<RGBAlpha16BitPixel*>(packedBuffer), reinterpret_cast<UByte*>(packedBuffer), numPixels);
301  break;
302  #if defined(_DEBUG)
305  case NTV2_FBF_8BIT_HDV:
308  case NTV2_FBF_PRORES_HDV:
309  case NTV2_FBF_10BIT_ARGB:
310  case NTV2_FBF_16BIT_ARGB:
320  case NTV2_FBF_LAST:
321  break;
322  #else
323  default: break;
324  #endif
325  }
326 }
327 
328 // MaskUnPacked10BitYCbCrBuffer
329 // Mask Data In place based on signalMask
330 void MaskUnPacked10BitYCbCrBuffer( uint16_t* ycbcrUnPackedBuffer, uint16_t signalMask , uint32_t numPixels )
331 {
332  uint32_t pixelCount;
333 
334  // Not elegant but fairly fast.
335  switch ( signalMask )
336  {
337  case NTV2_SIGNALMASK_NONE: // Output Black
338  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
339  {
340  ycbcrUnPackedBuffer[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
341  ycbcrUnPackedBuffer[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
342  ycbcrUnPackedBuffer[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
343  ycbcrUnPackedBuffer[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
344  }
345  break;
346  case NTV2_SIGNALMASK_Y:
347  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
348  {
349  ycbcrUnPackedBuffer[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
350  ycbcrUnPackedBuffer[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
351  }
352 
353  break;
354  case NTV2_SIGNALMASK_Cb:
355  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
356  {
357  ycbcrUnPackedBuffer[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
358  ycbcrUnPackedBuffer[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
359  ycbcrUnPackedBuffer[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
360  }
361 
362  break;
364  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
365  {
366  ycbcrUnPackedBuffer[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
367  }
368 
369  break;
370 
371  case NTV2_SIGNALMASK_Cr:
372  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
373  {
374  ycbcrUnPackedBuffer[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
375  ycbcrUnPackedBuffer[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
376  ycbcrUnPackedBuffer[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
377  }
378 
379 
380  break;
382  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
383  {
384  ycbcrUnPackedBuffer[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
385  }
386 
387 
388  break;
390  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
391  {
392  ycbcrUnPackedBuffer[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
393  ycbcrUnPackedBuffer[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
394  }
395 
396 
397  break;
399  // Do nothing
400  break;
401  }
402 
403 }
404 
405 
406 
407 //--------------------------------------------------------------------------------------------------------------------
408 // StackQuadrants()
409 //
410 // Take a 4K source, cut it into 4 quandrants and stack it into the destination. Also handle cases where
411 // where source/destination rowBytes/widths are mismatched (eg 4096 -> 3840)
412 //--------------------------------------------------------------------------------------------------------------------
413 void StackQuadrants(uint8_t* pSrc, uint32_t srcWidth, uint32_t srcHeight, uint32_t srcRowBytes,
414  uint8_t* pDst)
415 {
416  (void) srcWidth;
417  uint32_t dstSample;
418  uint32_t srcSample;
419  uint32_t copyRowBytes = srcRowBytes/2;
420  uint32_t copyHeight = srcHeight/2;
421  uint32_t dstRowBytes = copyRowBytes;
422  uint32_t dstHeight = srcHeight/2;
423  //uint32_t dstWidth = srcWidth/2;
424 
425  // rowbytes for left hand side quadrant
426  uint32_t srcLHSQuadrantRowBytes = srcRowBytes/2;
427 
428  for (uint32_t quadrant=0; quadrant<4; quadrant++)
429  {
430  // starting point for source quadrant
431  switch (quadrant)
432  {
433  default:
434  case 0: srcSample = 0; break; // quadrant 0, upper left
435  case 1: srcSample = srcLHSQuadrantRowBytes; break; // quadrant 1, upper right
436  case 2: srcSample = (srcRowBytes*copyHeight); break; // quadrant 2, lower left
437  case 3: srcSample = (srcRowBytes*copyHeight) + srcLHSQuadrantRowBytes; break; // quadrant 3, lower right
438  }
439 
440  // starting point for destination stack
441  dstSample = quadrant * dstRowBytes * dstHeight;
442 
443  for (uint32_t row=0; row<copyHeight; row++)
444  {
445  memcpy(&pDst[dstSample], &pSrc[srcSample], copyRowBytes);
446  dstSample += dstRowBytes;
447  srcSample += srcRowBytes;
448  }
449  }
450 }
451 
452 // Copy a quater-sized quadrant from a source buffer to a destination buffer
453 // quad13Offset is almost always zero, but can be used for Quadrants 1, 3 for special offset frame buffers. (e.g. 4096x1080 10Bit YCbCr frame buffers)
454 void CopyFromQuadrant(uint8_t* srcBuffer, uint32_t srcHeight, uint32_t srcRowBytes, uint32_t srcQuadrant, uint8_t* dstBuffer, uint32_t quad13Offset)
455 {
456  ULWord dstSample = 0;
457  ULWord srcSample = 0;
458  ULWord dstHeight = srcHeight / 2;
459  ULWord dstRowBytes = srcRowBytes / 2;
460 
461  // calculate starting point for source of copy, based on source quadrant
462  switch (srcQuadrant)
463  {
464  default:
465  case 0: srcSample = 0; break; // quadrant 0, upper left
466  case 1: srcSample = dstRowBytes - quad13Offset; break; // quadrant 1, upper right
467  case 2: srcSample = srcRowBytes*dstHeight; break; // quadrant 2, lower left
468  case 3: srcSample = srcRowBytes*dstHeight + dstRowBytes - quad13Offset; break; // quadrant 3, lower right
469  }
470 
471  // for each row
472  for (ULWord i=0; i<dstHeight; i++)
473  {
474  memcpy(&dstBuffer[dstSample], &srcBuffer[srcSample], dstRowBytes);
475  dstSample += dstRowBytes;
476  srcSample += srcRowBytes;
477  }
478 }
479 
480 // Copy a source buffer to a quadrant of a 4x-sized destination buffer
481 // quad13Offset is almost always zero, but can be used for Quadrants 1, 3 for special offset frame buffers. (e.g. 4096x1080 10Bit YCbCr frame buffers)
482 void CopyToQuadrant(uint8_t* srcBuffer, uint32_t srcHeight, uint32_t srcRowBytes, uint32_t dstQuadrant, uint8_t* dstBuffer, uint32_t quad13Offset)
483 {
484  ULWord dstSample = 0;
485  ULWord srcSample = 0;
486  ULWord dstRowBytes = srcRowBytes * 2;
487 
488  // calculate starting point for destination of copy, based on destination quadrant
489  switch (dstQuadrant)
490  {
491  default:
492  case 0: dstSample = 0; break; // quadrant 0, upper left
493  case 1: dstSample = srcRowBytes - quad13Offset; break; // quadrant 1, upper right
494  case 2: dstSample = dstRowBytes*srcHeight; break; // quadrant 2, lower left
495  case 3: dstSample = dstRowBytes*srcHeight + srcRowBytes - quad13Offset; break; // quadrant 3, lower right
496  }
497 
498  // for each row
499  for (ULWord i=0; i<srcHeight; i++)
500  {
501  memcpy(&dstBuffer[dstSample], &srcBuffer[srcSample], srcRowBytes);
502  dstSample += dstRowBytes;
503  srcSample += srcRowBytes;
504  }
505 }
507 // END SECTION MOVED FROM 'videoutilities.cpp'
509 
510 
511 void UnpackLine_10BitYUVto16BitYUV (const ULWord * pIn10BitYUVLine, UWord * pOut16BitYUVLine, const ULWord inNumPixels)
512 {
513  NTV2_ASSERT (pIn10BitYUVLine && pOut16BitYUVLine && "UnpackLine_10BitYUVto16BitYUV -- NULL buffer pointer(s)");
514  NTV2_ASSERT (inNumPixels && "UnpackLine_10BitYUVto16BitYUV -- Zero pixel count");
515 
516  for (ULWord outputCount = 0, inputCount = 0;
517  outputCount < (inNumPixels * 2);
518  outputCount += 3, inputCount++)
519  {
520  pOut16BitYUVLine [outputCount ] = pIn10BitYUVLine [inputCount] & 0x3FF;
521  pOut16BitYUVLine [outputCount + 1] = (pIn10BitYUVLine [inputCount] >> 10) & 0x3FF;
522  pOut16BitYUVLine [outputCount + 2] = (pIn10BitYUVLine [inputCount] >> 20) & 0x3FF;
523  }
524 }
525 
526 
527 void PackLine_16BitYUVto10BitYUV (const UWord * pIn16BitYUVLine, ULWord * pOut10BitYUVLine, const ULWord inNumPixels)
528 {
529  NTV2_ASSERT (pIn16BitYUVLine && pOut10BitYUVLine && "PackLine_16BitYUVto10BitYUV -- NULL buffer pointer(s)");
530  NTV2_ASSERT (inNumPixels && "PackLine_16BitYUVto10BitYUV -- Zero pixel count");
531 
532  for (ULWord inputCount = 0, outputCount = 0;
533  inputCount < (inNumPixels * 2);
534  outputCount += 4, inputCount += 12)
535  {
536  pOut10BitYUVLine [outputCount ] = ULWord (pIn16BitYUVLine [inputCount + 0]) + (ULWord (pIn16BitYUVLine [inputCount + 1]) << 10) + (ULWord (pIn16BitYUVLine [inputCount + 2]) << 20);
537  pOut10BitYUVLine [outputCount + 1] = ULWord (pIn16BitYUVLine [inputCount + 3]) + (ULWord (pIn16BitYUVLine [inputCount + 4]) << 10) + (ULWord (pIn16BitYUVLine [inputCount + 5]) << 20);
538  pOut10BitYUVLine [outputCount + 2] = ULWord (pIn16BitYUVLine [inputCount + 6]) + (ULWord (pIn16BitYUVLine [inputCount + 7]) << 10) + (ULWord (pIn16BitYUVLine [inputCount + 8]) << 20);
539  pOut10BitYUVLine [outputCount + 3] = ULWord (pIn16BitYUVLine [inputCount + 9]) + (ULWord (pIn16BitYUVLine [inputCount +10]) << 10) + (ULWord (pIn16BitYUVLine [inputCount +11]) << 20);
540  } // for each component in the line
541 }
542 
543 
544 bool PackLine_UWordSequenceTo10BitYUV (const UWordSequence & in16BitYUVLine, ULWord * pOut10BitYUVLine, const ULWord inNumPixels)
545 {
546  if (!pOut10BitYUVLine)
547  return false; // NULL buffer pointer
548  if (!inNumPixels)
549  return false; // Zero pixel count
550  if (ULWord(in16BitYUVLine.size()) < inNumPixels*2)
551  return false; // UWordSequence too small
552 
553  for (ULWord inputCount = 0, outputCount = 0;
554  inputCount < (inNumPixels * 2);
555  outputCount += 4, inputCount += 12)
556  {
557  pOut10BitYUVLine[outputCount ] = ULWord(in16BitYUVLine[inputCount + 0]) + (ULWord(in16BitYUVLine[inputCount + 1]) << 10) + (ULWord(in16BitYUVLine[inputCount + 2]) << 20);
558  pOut10BitYUVLine[outputCount + 1] = ULWord(in16BitYUVLine[inputCount + 3]) + (ULWord(in16BitYUVLine[inputCount + 4]) << 10) + (ULWord(in16BitYUVLine[inputCount + 5]) << 20);
559  pOut10BitYUVLine[outputCount + 2] = ULWord(in16BitYUVLine[inputCount + 6]) + (ULWord(in16BitYUVLine[inputCount + 7]) << 10) + (ULWord(in16BitYUVLine[inputCount + 8]) << 20);
560  pOut10BitYUVLine[outputCount + 3] = ULWord(in16BitYUVLine[inputCount + 9]) + (ULWord(in16BitYUVLine[inputCount +10]) << 10) + (ULWord(in16BitYUVLine[inputCount +11]) << 20);
561  } // for each component in the line
562  return true;
563 }
564 
565 
566 bool YUVComponentsTo10BitYUVPackedBuffer (const vector<uint16_t> & inYCbCrLine, NTV2Buffer & inFrameBuffer,
567  const NTV2FormatDescriptor & inDescriptor, const UWord inLineOffset)
568 {
569  if (inYCbCrLine.size() < 12)
570  return false; // Input vector needs at least 12 components
571  if (inFrameBuffer.IsNULL())
572  return false; // NULL frame buffer
573  if (!inDescriptor.IsValid())
574  return false; // Bad format descriptor
575  if (ULWord(inLineOffset) >= inDescriptor.GetFullRasterHeight())
576  return false; // Illegal line offset
577  if (inDescriptor.GetPixelFormat() != NTV2_FBF_10BIT_YCBCR)
578  return false; // Not 'v210' pixel format
579 
580  const uint32_t pixPerLineX2 (inDescriptor.GetRasterWidth() * 2);
581  uint32_t * pOutPackedLine (AJA_NULL);
582  if (inFrameBuffer.GetByteCount() < inDescriptor.GetBytesPerRow() * ULWord(inLineOffset+1))
583  return false; // Buffer too small
584 
585  pOutPackedLine = reinterpret_cast<uint32_t*>(inDescriptor.GetWriteableRowAddress(inFrameBuffer.GetHostAddress(0), inLineOffset));
586  if (!pOutPackedLine)
587  return false; // Buffer too small
588 
589  for (uint32_t inputCount = 0, outputCount = 0; inputCount < pixPerLineX2; outputCount += 4, inputCount += 12)
590  {
591  if ((inputCount+11) >= uint32_t(inYCbCrLine.size()))
592  break; // Early exit (not fatal)
593  #if defined(_DEBUG) // 'at' throws upon bad index values
594  pOutPackedLine[outputCount] = uint32_t(inYCbCrLine.at(inputCount+0)) | uint32_t(inYCbCrLine.at(inputCount+ 1)<<10) | uint32_t(inYCbCrLine.at(inputCount+ 2)<<20);
595  pOutPackedLine[outputCount+1] = uint32_t(inYCbCrLine.at(inputCount+3)) | uint32_t(inYCbCrLine.at(inputCount+ 4)<<10) | uint32_t(inYCbCrLine.at(inputCount+ 5)<<20);
596  pOutPackedLine[outputCount+2] = uint32_t(inYCbCrLine.at(inputCount+6)) | uint32_t(inYCbCrLine.at(inputCount+ 7)<<10) | uint32_t(inYCbCrLine.at(inputCount+ 8)<<20);
597  pOutPackedLine[outputCount+3] = uint32_t(inYCbCrLine.at(inputCount+9)) | uint32_t(inYCbCrLine.at(inputCount+10)<<10) | uint32_t(inYCbCrLine.at(inputCount+11)<<20);
598  #else // 'operator[]' doesn't throw
599  pOutPackedLine[outputCount] = uint32_t(inYCbCrLine[inputCount+0]) | uint32_t(inYCbCrLine[inputCount+ 1]<<10) | uint32_t(inYCbCrLine[inputCount+ 2]<<20);
600  pOutPackedLine[outputCount+1] = uint32_t(inYCbCrLine[inputCount+3]) | uint32_t(inYCbCrLine[inputCount+ 4]<<10) | uint32_t(inYCbCrLine[inputCount+ 5]<<20);
601  pOutPackedLine[outputCount+2] = uint32_t(inYCbCrLine[inputCount+6]) | uint32_t(inYCbCrLine[inputCount+ 7]<<10) | uint32_t(inYCbCrLine[inputCount+ 8]<<20);
602  pOutPackedLine[outputCount+3] = uint32_t(inYCbCrLine[inputCount+9]) | uint32_t(inYCbCrLine[inputCount+10]<<10) | uint32_t(inYCbCrLine[inputCount+11]<<20);
603  #endif
604  }
605  return true;
606 }
607 
608 
609 bool UnpackLine_10BitYUVtoU16s (vector<uint16_t> & outYCbCrLine, const NTV2Buffer & inFrameBuffer,
610  const NTV2FormatDescriptor & inDescriptor, const UWord inLineOffset)
611 {
612  outYCbCrLine.clear();
613  if (inFrameBuffer.IsNULL())
614  return false; // NULL frame buffer
615  if (!inDescriptor.IsValid())
616  return false; // Bad format descriptor
617  if (ULWord(inLineOffset) >= inDescriptor.GetFullRasterHeight())
618  return false; // Illegal line offset
619  if (inDescriptor.GetPixelFormat() != NTV2_FBF_10BIT_YCBCR)
620  return false; // Not 'v210' pixel format
621  if (inDescriptor.GetRasterWidth () < 6)
622  return false; // bad width
623 
624  const ULWord * pInputLine (reinterpret_cast<const ULWord*>(inDescriptor.GetRowAddress(inFrameBuffer.GetHostPointer(), inLineOffset)));
625 
626  for (ULWord inputCount(0); inputCount < inDescriptor.linePitch; inputCount++)
627  {
628  outYCbCrLine.push_back((pInputLine[inputCount] ) & 0x3FF);
629  outYCbCrLine.push_back((pInputLine[inputCount] >> 10) & 0x3FF);
630  outYCbCrLine.push_back((pInputLine[inputCount] >> 20) & 0x3FF);
631  }
632  return true;
633 }
634 
635 
636 // RePackLineDataForYCbCrDPX
637 void RePackLineDataForYCbCrDPX(ULWord *packedycbcrLine, ULWord numULWords )
638 {
639  for ( UWord count = 0; count < numULWords; count++)
640  {
641  ULWord value = (packedycbcrLine[count])<<2;
642  value = (value<<24) + ((value>>24)&0x000000FF) + ((value<<8)&0x00FF0000) + ((value>>8)&0x0000FF00);
643 
644  packedycbcrLine[count] = value;
645  }
646 }
647 // UnPack 10 Bit DPX Format linebuffer to RGBAlpha10BitPixel linebuffer.
648 void UnPack10BitDPXtoRGBAlpha10BitPixel(RGBAlpha10BitPixel* rgba10BitBuffer, const ULWord* DPXLinebuffer ,ULWord numPixels, bool bigEndian)
649 {
650  for ( ULWord pixel=0;pixel<numPixels;pixel++)
651  {
652  ULWord value = DPXLinebuffer[pixel];
653  if ( bigEndian)
654  {
655  rgba10BitBuffer[pixel].Red = UWord((value&0xC0)>>14) + UWord((value&0xFF)<<2);
656  rgba10BitBuffer[pixel].Green = UWord((value&0x3F00)>>4) + UWord((value&0xF00000)>>20);
657  rgba10BitBuffer[pixel].Blue = UWord((value&0xFC000000)>>26) + UWord((value&0xF0000)>>12);
658  }
659  else
660  {
661  rgba10BitBuffer[pixel].Red = (value>>22)&0x3FF;
662  rgba10BitBuffer[pixel].Green = (value>>12)&0x3FF;
663  rgba10BitBuffer[pixel].Blue = (value>>2)&0x3FF;
664 
665  }
666  }
667 }
668 
669 void UnPack10BitDPXtoForRP215withEndianSwap(UWord* rawrp215Buffer,ULWord* DPXLinebuffer ,ULWord numPixels)
670 {
671  // gets the green component.
672  for ( ULWord pixel=0;pixel<numPixels;pixel++)
673  {
674  ULWord value = DPXLinebuffer[pixel];
675  rawrp215Buffer[pixel] = ((value&0x3F00)>>4) + ((value&0xF00000)>>20);
676  }
677 }
678 
679 void UnPack10BitDPXtoForRP215(UWord* rawrp215Buffer,ULWord* DPXLinebuffer ,ULWord numPixels)
680 {
681  // gets the green component.
682  for ( ULWord pixel=0;pixel<numPixels;pixel++)
683  {
684  ULWord value = DPXLinebuffer[pixel];
685  rawrp215Buffer[pixel] = ((value&0x3F)>>4) + ((value&0xF00000)>>20);
686  }
687 }
688 
689 // MaskYCbCrLine
690 // Mask Data In place based on signalMask
691 void MaskYCbCrLine(UWord* ycbcrLine, UWord signalMask , ULWord numPixels)
692 {
693  ULWord pixelCount;
694 
695  // Not elegant but fairly fast.
696  switch ( signalMask )
697  {
698  case NTV2_SIGNALMASK_NONE: // Output Black
699  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
700  {
701  ycbcrLine[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
702  ycbcrLine[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
703  ycbcrLine[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
704  ycbcrLine[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
705  }
706  break;
707  case NTV2_SIGNALMASK_Y:
708  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
709  {
710  ycbcrLine[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
711  ycbcrLine[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
712  }
713 
714  break;
715  case NTV2_SIGNALMASK_Cb:
716  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
717  {
718  ycbcrLine[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
719  ycbcrLine[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
720  ycbcrLine[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
721  }
722 
723  break;
725  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
726  {
727  ycbcrLine[pixelCount+2] = CCIR601_10BIT_CHROMAOFFSET; // Cr
728  }
729 
730  break;
731 
732  case NTV2_SIGNALMASK_Cr:
733  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
734  {
735  ycbcrLine[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
736  ycbcrLine[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
737  ycbcrLine[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
738  }
739 
740 
741  break;
743  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
744  {
745  ycbcrLine[pixelCount] = CCIR601_10BIT_CHROMAOFFSET; // Cb
746  }
747 
748 
749  break;
751  for ( pixelCount = 0; pixelCount < (numPixels*2); pixelCount += 4 )
752  {
753  ycbcrLine[pixelCount+1] = CCIR601_10BIT_BLACK; // Y
754  ycbcrLine[pixelCount+3] = CCIR601_10BIT_BLACK; // Y
755  }
756 
757 
758  break;
760  // Do nothing
761  break;
762  }
763 
764 }
765 
766 void Make10BitBlackLine (UWord * pOutLineData, const ULWord inNumPixels)
767 {
768  // Write *UNPACKED* 10-bit YCbCr values into pOutLineData, assuming it can hold at least inNumPixels * 4 bytes
769  // NOTE: When I return, 'pOutLineData' will NOT contain NTV2_FBF_10BIT_YCBCR!
770  // (Use ::PackLine_16BitYUVto10BitYUV to convert to NTV2_FBF_10BIT_YCBCR.)
771  if (pOutLineData && inNumPixels)
772  for (ULWord count(0); count < inNumPixels; count++)
773  {
774  *pOutLineData++ = UWord(CCIR601_10BIT_CHROMAOFFSET); // 512 0x200
775  *pOutLineData++ = UWord(CCIR601_10BIT_BLACK); // 64 0x40
776  }
777 }
778 
779 void Make10BitWhiteLine (UWord* pOutLineData, const ULWord inNumPixels)
780 {
781  // Write *UNPACKED* 10-bit YCbCr values into pOutLineData, assuming it can hold at least inNumPixels * 4 bytes
782  // NOTE: When I return, 'pOutLineData' will NOT contain NTV2_FBF_10BIT_YCBCR!
783  // (Use ::PackLine_16BitYUVto10BitYUV to convert to NTV2_FBF_10BIT_YCBCR.)
784  if (pOutLineData && inNumPixels)
785  for (ULWord count(0); count < inNumPixels; count++)
786  {
787  *pOutLineData++ = UWord(CCIR601_10BIT_CHROMAOFFSET); // 512 0x200
788  *pOutLineData++ = UWord(CCIR601_10BIT_WHITE); // 940 0x3AC
789  }
790 }
791 
792 void Make10BitLine (UWord* pOutLineData, const UWord Y, const UWord Cb, const UWord Cr, const ULWord inNumPixels)
793 {
794  // assumes lineData is large enough for numPixels
795  if (pOutLineData && inNumPixels)
796  for (ULWord count(0); count < inNumPixels*2; count+=4)
797  {
798  pOutLineData[count] = Cb;
799  pOutLineData[count+1] = Y;
800  pOutLineData[count+2] = Cr;
801  pOutLineData[count+3] = Y;
802  }
803 }
804 
805 bool Fill10BitYCbCrVideoFrame (void * pBaseVideoAddress,
806  const NTV2Standard inStandard,
807  const NTV2FrameBufferFormat inFBF,
808  const YCbCr10BitPixel inPixelColor,
809  const NTV2VANCMode inVancMode)
810 {
811  if (!pBaseVideoAddress)
812  return false;
813 
814  const NTV2FormatDescriptor fd (inStandard, inFBF, inVancMode);
815  UWord lineBuffer[2048*2];
816  ULWord * pBaseAddress (reinterpret_cast<ULWord*>(pBaseVideoAddress));
817  Make10BitLine (lineBuffer, inPixelColor.y, inPixelColor.cb, inPixelColor.cr, UWord(fd.GetRasterWidth()));
818 
819  for (UWord lineNdx(0); lineNdx < fd.numLines; lineNdx++)
820  {
821  ::PackLine_16BitYUVto10BitYUV (lineBuffer, pBaseAddress, fd.GetRasterWidth());
822  pBaseAddress += fd.linePitch;
823  }
824  return true;
825 }
826 
827 
828 void Make8BitBlackLine (UByte * lineData, ULWord numPixels, NTV2FrameBufferFormat fbFormat)
829 {
830  // assumes lineData is large enough for numPixels
831  if ( fbFormat == NTV2_FBF_8BIT_YCBCR )
832  {
833  for ( uint32_t count = 0; count < numPixels*2; count+=2 )
834  {
835  lineData[count] = UWord(CCIR601_8BIT_CHROMAOFFSET);
836  lineData[count+1] = UWord(CCIR601_8BIT_BLACK);
837  }
838  }
839  else
840  {
841  // NTV2_FBF_8BIT_YCBCR_YUY2
842  for ( uint32_t count = 0; count < numPixels*2; count+=2 )
843  {
844  lineData[count] = UWord(CCIR601_8BIT_BLACK);
845  lineData[count+1] = UWord(CCIR601_8BIT_CHROMAOFFSET);
846  }
847  }
848 }
849 
850 void Make8BitWhiteLine (UByte * lineData, ULWord numPixels, NTV2FrameBufferFormat fbFormat)
851 {
852  // assumes lineData is large enough for numPixels
853  // assumes lineData is large enough for numPixels
854  if ( fbFormat == NTV2_FBF_8BIT_YCBCR )
855  {
856  for ( uint32_t count = 0; count < numPixels*2; count+=2 )
857  {
858  lineData[count] = UWord(CCIR601_8BIT_CHROMAOFFSET);
859  lineData[count+1] = UWord(CCIR601_8BIT_WHITE);
860  }
861  }
862  else
863  {
864  // NTV2_FBF_8BIT_YCBCR_YUY2
865  for ( uint32_t count = 0; count < numPixels*2; count+=2 )
866  {
867  lineData[count] = UWord(CCIR601_8BIT_WHITE);
868  lineData[count+1] = UWord(CCIR601_8BIT_CHROMAOFFSET);
869  }
870  }
871 
872 }
873 
874 void Make8BitLine (UByte * lineData, UByte Y, UByte Cb, UByte Cr, ULWord numPixels, NTV2FrameBufferFormat fbFormat)
875 {
876  // assumes lineData is large enough for numPixels
877  if (fbFormat == NTV2_FBF_8BIT_YCBCR)
878  {
879  for (ULWord count = 0; count < numPixels*2; count += 4)
880  {
881  lineData[count] = Cb;
882  lineData[count+1] = Y;
883  lineData[count+2] = Cr;
884  lineData[count+3] = Y;
885  }
886  }
887  else
888  {
889  for (ULWord count = 0; count < numPixels*2; count += 4)
890  {
891  lineData[count] = Y;
892  lineData[count+1] = Cb;
893  lineData[count+2] = Y;
894  lineData[count+3] = Cr;
895  }
896 
897  }
898 }
899 
900 bool Fill8BitYCbCrVideoFrame (void * pBaseVideoAddress, const NTV2Standard inStandard, const NTV2FrameBufferFormat inFBF,
901  const YCbCrPixel inPixelColor, const NTV2VANCMode inVancMode)
902 {
903  if (!pBaseVideoAddress)
904  return false;
905 
906  const NTV2FormatDescriptor fd (inStandard, inFBF, inVancMode);
907  UByte * pBaseAddress (reinterpret_cast<UByte*>(pBaseVideoAddress));
908 
909  for (UWord lineNdx(0); lineNdx < fd.numLines; lineNdx++)
910  {
911  Make8BitLine (pBaseAddress, inPixelColor.y, inPixelColor.cb, inPixelColor.cr, fd.numPixels, inFBF);
912  pBaseAddress += fd.GetBytesPerRow();
913  }
914  return true;
915 }
916 
917 void Fill4k8BitYCbCrVideoFrame(PULWord _baseVideoAddress,
918  NTV2FrameBufferFormat frameBufferFormat,
919  YCbCrPixel color,
920  bool vancEnabled,
921  bool b4k,
922  bool wideVANC)
923 {
924  (void) vancEnabled;
925  (void) wideVANC;
927  if(b4k)
928  {
929  fd.numLines = 2160;
930  fd.numPixels = 4096;
931  fd.firstActiveLine = 0;
932  fd.linePitch = 4096*2/4;
933  }
934  else
935  {
936  fd.numLines = 2160;
937  fd.numPixels = 3840;
938  fd.firstActiveLine = 0;
939  fd.linePitch = 3840*2/4;
940  }
941 
942  Make8BitLine(reinterpret_cast<UByte*>(_baseVideoAddress), color.y, color.cb, color.cr, fd.numPixels*fd.numLines, frameBufferFormat);
943 }
944 
945 
946 // Copy arbrary-sized source image buffer to arbitrary-sized destination frame buffer.
947 // It will automatically clip and/or pad the source image to center it in the destination frame.
948 // This will work with any RGBA/RGB frame buffer formats with 4 Bytes/pixel size
949 void CopyRGBAImageToFrame(ULWord* pSrcBuffer, ULWord srcWidth, ULWord srcHeight,
950  ULWord* pDstBuffer, ULWord dstWidth, ULWord dstHeight)
951 {
952  // all variables are in pixels
953  ULWord topPad = 0, bottomPad = 0, leftPad = 0, rightPad = 0;
954  ULWord contentHeight = 0;
955  ULWord contentWidth = 0;
956  ULWord* pSrc = pSrcBuffer;
957  ULWord* pDst = pDstBuffer;
958 
959  if (dstHeight > srcHeight)
960  {
961  topPad = (dstHeight - srcHeight) / 2;
962  bottomPad = dstHeight - topPad - srcHeight;
963  }
964  else
965  pSrc += ((srcHeight - dstHeight) / 2) * srcWidth;
966 
967  if (dstWidth > srcWidth)
968  {
969  leftPad = (dstWidth - srcWidth) / 2;
970  rightPad = dstWidth - srcWidth - leftPad;
971  }
972  else
973  pSrc += (srcWidth - dstWidth) / 2;
974 
975  // content
976  contentHeight = dstHeight - topPad - bottomPad;
977  contentWidth = dstWidth - leftPad - rightPad;
978 
979  // top pad
980  memset(pDst, 0, topPad * dstWidth * 4);
981  pDst += topPad * dstWidth;
982 
983  // content
984  while (contentHeight--)
985  {
986  // left
987  memset(pDst, 0, leftPad * 4);
988  pDst += leftPad;
989 
990  // content
991  memcpy(pDst, pSrc, contentWidth * 4);
992  pDst += contentWidth;
993  pSrc += srcWidth;
994 
995  // right
996  memset(pDst, 0, rightPad * 4);
997  pDst += rightPad;
998  }
999 
1000  // bottom pad
1001  memset(pDst, 0, bottomPad * dstWidth * 4);
1002 }
1003 
1004 
1005 static bool SetRasterLinesBlack8BitYCbCr (UByte * pDstBuffer,
1006  const ULWord inDstBytesPerLine,
1007  const UWord inDstTotalLines)
1008 {
1009  const ULWord dstMaxPixelWidth (inDstBytesPerLine / 2); // 2 bytes per pixel for '2vuy'
1010  UByte * pLine (pDstBuffer);
1011  NTV2_ASSERT(dstMaxPixelWidth < 64UL*1024UL); // Because Make8BitBlackLine takes uint16_t pixelWidth
1012  for (UWord lineNum(0); lineNum < inDstTotalLines; lineNum++)
1013  {
1014  ::Make8BitBlackLine (pLine, UWord(dstMaxPixelWidth));
1015  pLine += inDstBytesPerLine;
1016  }
1017  return true;
1018 }
1019 
1020 
1021 static bool SetRasterLinesBlack10BitYCbCr (UByte * pDstBuffer,
1022  const ULWord inDstBytesPerLine,
1023  const UWord inDstTotalLines)
1024 {
1025  // In SDKs before 17.0, this function wrote past the end of the last line in
1026  // the destination raster buffer, because Make10BitBlackLine (which used to
1027  // be called once per line) always wrote 1.5 times inDstBytesPerLine.
1028  NTV2Buffer tmp(inDstBytesPerLine * 2); // Temporarily holds unpacked Y/C values
1029  NTV2Buffer dstBuffer (pDstBuffer, ULWord(inDstTotalLines) * inDstBytesPerLine);
1030  const ULWord dstMaxPixelWidth (inDstBytesPerLine / 16 * 6);
1031  ::Make10BitBlackLine (tmp, dstMaxPixelWidth); // Write unpacked SMPTE black Y/C values
1032  ::PackLine_16BitYUVto10BitYUV (tmp, dstBuffer, dstMaxPixelWidth); // Pack to '2vuy' into dstBuffer line 0
1033  for (UWord lineNum(1); lineNum < inDstTotalLines; lineNum++) // Make copies of line 0...
1034  if (!dstBuffer.CopyFrom (dstBuffer, // srcBuffer is line 0 of dstBuffer
1035  0, // srcByteOffset
1036  ULWord(lineNum) * inDstBytesPerLine, // dstByteOffset
1037  inDstBytesPerLine)) // numBytesToCopy
1038  return false; // failed!
1039  return true;
1040 }
1041 
1042 
1043 static bool SetRasterLinesWhite8BitYCbCr (UByte * pDstBuffer,
1044  const ULWord inDstBytesPerLine,
1045  const UWord inDstTotalLines)
1046 {
1047  const ULWord dstMaxPixelWidth (inDstBytesPerLine / 2); // 2 bytes per pixel for '2vuy'
1048  UByte * pLine (pDstBuffer);
1049  NTV2_ASSERT(dstMaxPixelWidth < 64UL*1024UL); // Because Make8BitWhiteLine takes uint16_t pixelWidth
1050  for (UWord lineNum(0); lineNum < inDstTotalLines; lineNum++)
1051  {
1052  ::Make8BitWhiteLine (pLine, UWord(dstMaxPixelWidth));
1053  pLine += inDstBytesPerLine;
1054  }
1055  return true;
1056 }
1057 
1058 
1059 static bool SetRasterLinesWhite10BitYCbCr (UByte * pDstBuffer,
1060  const ULWord inDstBytesPerLine,
1061  const UWord inDstTotalLines)
1062 {
1063  // In SDKs before 17.0, this function wrote past the end of the last line in
1064  // the destination raster buffer, because Make10BitWhiteLine (which used to
1065  // be called once per line) always wrote 1.5 times inDstBytesPerLine.
1066  NTV2Buffer tmp(inDstBytesPerLine * 2); // Temporarily holds unpacked Y/C values
1067  NTV2Buffer dstBuffer (pDstBuffer, ULWord(inDstTotalLines) * inDstBytesPerLine);
1068  const ULWord dstMaxPixelWidth (inDstBytesPerLine / 16 * 6);
1069  ::Make10BitWhiteLine (tmp, dstMaxPixelWidth); // Write unpacked SMPTE white Y/C values
1070  ::PackLine_16BitYUVto10BitYUV (tmp, dstBuffer, dstMaxPixelWidth); // Pack to '2vuy' into dstBuffer line 0
1071  for (UWord lineNum(1); lineNum < inDstTotalLines; lineNum++) // Make copies of line 0...
1072  if (!dstBuffer.CopyFrom (dstBuffer, // srcBuffer is line 0 of dstBuffer
1073  0, // srcByteOffset
1074  ULWord(lineNum) * inDstBytesPerLine, // dstByteOffset
1075  inDstBytesPerLine)) // numBytesToCopy
1076  return false; // failed!
1077  return true;
1078 }
1079 
1080 
1081 bool SetRasterLinesBlack (const NTV2PixelFormat inPixelFormat,
1082  UByte * pDstBuffer,
1083  const ULWord inDstBytesPerLine,
1084  const UWord inDstTotalLines)
1085 {
1086  if (!pDstBuffer) // NULL buffer
1087  return false;
1088  if (inDstBytesPerLine == 0) // zero rowbytes
1089  return false;
1090  if (inDstTotalLines == 0) // zero height
1091  return false;
1092 
1093  switch (inPixelFormat)
1094  {
1095  case NTV2_FBF_10BIT_YCBCR: return SetRasterLinesBlack10BitYCbCr (pDstBuffer, inDstBytesPerLine, inDstTotalLines);
1096 
1097  case NTV2_FBF_8BIT_YCBCR: return SetRasterLinesBlack8BitYCbCr (pDstBuffer, inDstBytesPerLine, inDstTotalLines);
1098 
1099  case NTV2_FBF_ARGB:
1100  case NTV2_FBF_RGBA:
1101  case NTV2_FBF_ABGR:
1102  case NTV2_FBF_24BIT_RGB:
1103  case NTV2_FBF_24BIT_BGR:
1104  case NTV2_FBF_48BIT_RGB:
1105  case NTV2_FBF_10BIT_RGB:
1106  case NTV2_FBF_10BIT_ARGB:
1107  case NTV2_FBF_16BIT_ARGB:
1108  { NTV2Buffer dst(pDstBuffer, inDstBytesPerLine * ULWord(inDstTotalLines));
1109  return dst.Fill(ULWord(0)); // Zero all R/G/B/A components
1110  }
1111 
1113  case NTV2_FBF_10BIT_DPX:
1115  case NTV2_FBF_8BIT_DVCPRO:
1117  case NTV2_FBF_8BIT_HDV:
1118  case NTV2_FBF_10BIT_YCBCRA:
1119  case NTV2_FBF_10BIT_DPX_LE:
1122  case NTV2_FBF_PRORES_HDV:
1134  return false;
1135  }
1136  return false;
1137 
1138 } // SetRasterLinesBlack
1139 
1140 
1141 bool SetRasterLinesWhite (const NTV2PixelFormat inPixelFormat,
1142  UByte * pDstBuffer,
1143  const ULWord inDstBytesPerLine,
1144  const UWord inDstTotalLines)
1145 {
1146  if (!pDstBuffer) // NULL buffer
1147  return false;
1148  if (inDstBytesPerLine == 0) // zero rowbytes
1149  return false;
1150  if (inDstTotalLines == 0) // zero height
1151  return false;
1152 
1153  switch (inPixelFormat)
1154  {
1155  case NTV2_FBF_10BIT_YCBCR: return SetRasterLinesWhite10BitYCbCr (pDstBuffer, inDstBytesPerLine, inDstTotalLines);
1156 
1157  case NTV2_FBF_8BIT_YCBCR: return SetRasterLinesWhite8BitYCbCr (pDstBuffer, inDstBytesPerLine, inDstTotalLines);
1158 
1159  case NTV2_FBF_ARGB:
1160  case NTV2_FBF_RGBA:
1161  case NTV2_FBF_ABGR:
1162  case NTV2_FBF_24BIT_RGB:
1163  case NTV2_FBF_24BIT_BGR:
1164  case NTV2_FBF_48BIT_RGB:
1165  case NTV2_FBF_10BIT_RGB:
1166  case NTV2_FBF_10BIT_ARGB:
1167  case NTV2_FBF_16BIT_ARGB:
1168  { NTV2Buffer dst(pDstBuffer, inDstBytesPerLine * ULWord(inDstTotalLines));
1169  return dst.Fill(ULWord(0xFFFFFFFF)); // Set all R/G/B/A components to 0xFFs
1170  }
1171 
1173  case NTV2_FBF_10BIT_DPX:
1175  case NTV2_FBF_8BIT_DVCPRO:
1177  case NTV2_FBF_8BIT_HDV:
1178  case NTV2_FBF_10BIT_YCBCRA:
1179  case NTV2_FBF_10BIT_DPX_LE:
1182  case NTV2_FBF_PRORES_HDV:
1194  return false;
1195  }
1196  return false;
1197 
1198 } // SetRasterLinesWhite
1199 
1200 
1201 static const UByte * GetReadAddress_2vuy (const UByte * pInFrameBuffer, const ULWord inBytesPerVertLine, const UWord inVertLineOffset, const UWord inHorzPixelOffset, const UWord inBytesPerHorzPixel)
1202 {
1203  const UByte * pResult (pInFrameBuffer);
1204  NTV2_ASSERT (inBytesPerVertLine);
1205  NTV2_ASSERT ((inHorzPixelOffset & 1) == 0); // For '2vuy', horizontal pixel offset must be even!!
1206  pResult += inBytesPerVertLine * ULWord(inVertLineOffset);
1207  pResult += ULWord(inBytesPerHorzPixel) * ULWord(inHorzPixelOffset);
1208  return pResult;
1209 }
1210 
1211 
1212 static UByte * GetWriteAddress_2vuy (UByte * pInFrameBuffer, const ULWord inBytesPerVertLine, const UWord inVertLineOffset, const UWord inHorzPixelOffset, const UWord inBytesPerHorzPixel)
1213 {
1214  UByte * pResult (pInFrameBuffer);
1215  NTV2_ASSERT (inBytesPerVertLine);
1216  NTV2_ASSERT ((inHorzPixelOffset & 1) == 0); // For '2vuy', horizontal pixel offset must be even!!
1217  pResult += inBytesPerVertLine * ULWord(inVertLineOffset);
1218  pResult += ULWord(inBytesPerHorzPixel) * ULWord(inHorzPixelOffset);
1219  return pResult;
1220 }
1221 
1222 
1223 // This function should work on all 4-byte-per-2-pixel formats
1224 static bool CopyRaster4BytesPer2Pixels (UByte * pDstBuffer, // Dest buffer to be modified
1225  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width)
1226  const UWord inDstTotalLines, // Dest buffer total raster lines (max height)
1227  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1228  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear
1229  const UByte * pSrcBuffer, // Src buffer
1230  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width)
1231  const UWord inSrcTotalLines, // Src buffer total raster lines (max height)
1232  const UWord inSrcVertLineOffset, // Src image top edge
1233  const UWord inSrcVertLinesToCopy, // Src image height
1234  const UWord inSrcHorzPixelOffset, // Src image left edge
1235  const UWord inSrcHorzPixelsToCopy) // Src image width
1236 {
1237  if (inDstHorzPixelOffset & 1) // dst odd pixel offset
1238  return false;
1239  if (inSrcHorzPixelOffset & 1) // src odd pixel offset
1240  return false;
1241 
1242  const ULWord TWO_BYTES_PER_PIXEL (2); // 2 bytes per pixel for '2vuy'
1243  const ULWord dstMaxPixelWidth (inDstBytesPerLine / TWO_BYTES_PER_PIXEL);
1244  const ULWord srcMaxPixelWidth (inSrcBytesPerLine / TWO_BYTES_PER_PIXEL);
1245  UWord numHorzPixelsToCopy (inSrcHorzPixelsToCopy);
1246  UWord numVertLinesToCopy (inSrcVertLinesToCopy);
1247 
1248  if (inDstHorzPixelOffset >= dstMaxPixelWidth) // dst past right edge
1249  return false;
1250  if (inSrcHorzPixelOffset >= srcMaxPixelWidth) // src past right edge
1251  return false;
1252  if (ULWord(inSrcHorzPixelOffset + inSrcHorzPixelsToCopy) > srcMaxPixelWidth)
1253  numHorzPixelsToCopy -= inSrcHorzPixelOffset + inSrcHorzPixelsToCopy - srcMaxPixelWidth; // Clip to src raster's right edge
1254  if (inSrcVertLineOffset + inSrcVertLinesToCopy > inSrcTotalLines)
1255  numVertLinesToCopy -= inSrcVertLineOffset + inSrcVertLinesToCopy - inSrcTotalLines; // Clip to src raster's bottom edge
1256  if (numVertLinesToCopy + inDstVertLineOffset >= inDstTotalLines)
1257  {
1258  if (numVertLinesToCopy + inDstVertLineOffset > inDstTotalLines)
1259  numVertLinesToCopy -= numVertLinesToCopy + inDstVertLineOffset - inDstTotalLines;
1260  else
1261  return true;
1262  }
1263 
1264  const UByte * pSrc (::GetReadAddress_2vuy (pSrcBuffer, inSrcBytesPerLine, inSrcVertLineOffset, inSrcHorzPixelOffset, TWO_BYTES_PER_PIXEL));
1265  UByte * pDst (::GetWriteAddress_2vuy (pDstBuffer, inDstBytesPerLine, inDstVertLineOffset, inDstHorzPixelOffset, TWO_BYTES_PER_PIXEL));
1266 
1267  for (UWord srcLinesToCopy (numVertLinesToCopy); srcLinesToCopy > 0; srcLinesToCopy--) // for each src raster line
1268  {
1269  UWord dstPixelsCopied (0);
1270  const UByte * pSavedSrc (pSrc);
1271  UByte * pSavedDst (pDst);
1272  for (UWord hPixelsToCopy (numHorzPixelsToCopy); hPixelsToCopy > 0; hPixelsToCopy--) // for each pixel/column
1273  {
1274  pDst[0] = pSrc[0];
1275  pDst[1] = pSrc[1];
1276  dstPixelsCopied++;
1277  if (dstPixelsCopied + inDstHorzPixelOffset >= UWord(dstMaxPixelWidth))
1278  break; // Clip to dst raster's right edge
1279  pDst += TWO_BYTES_PER_PIXEL;
1280  pSrc += TWO_BYTES_PER_PIXEL;
1281  }
1282  pSrc = pSavedSrc;
1283  pDst = pSavedDst;
1284  pSrc += inSrcBytesPerLine;
1285  pDst += inDstBytesPerLine;
1286  } // for each src line to copy
1287  return true;
1288 
1289 } // CopyRaster4BytesPer2Pixels
1290 
1291 
1292 // This function should work on all 16-byte-per-6-pixel formats
1293 static bool CopyRaster16BytesPer6Pixels ( UByte * pDstBuffer, // Dest buffer to be modified
1294  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width) -- must be evenly divisible by 16
1295  const UWord inDstTotalLines, // Dest buffer total raster lines (max height)
1296  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1297  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear -- must be evenly divisible by 6
1298  const UByte * pSrcBuffer, // Src buffer
1299  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width) -- must be evenly divisible by 16
1300  const UWord inSrcTotalLines, // Src buffer total raster lines (max height)
1301  const UWord inSrcVertLineOffset, // Src image top edge
1302  const UWord inSrcVertLinesToCopy, // Src image height
1303  const UWord inSrcHorzPixelOffset, // Src image left edge -- must be evenly divisible by 6
1304  const UWord inSrcHorzPixelsToCopy) // Src image width -- must be evenly divisible by 6
1305 {
1306  if (inDstHorzPixelOffset % 6) // dst pixel offset must be on 6-pixel boundary
1307  return false;
1308  if (inSrcHorzPixelOffset % 6) // src pixel offset must be on 6-pixel boundary
1309  return false;
1310  if (inDstBytesPerLine % 16) // dst raster width must be evenly divisible by 16 (width must be multiple of 6)
1311  return false;
1312  if (inSrcBytesPerLine % 16) // src raster width must be evenly divisible by 16 (width must be multiple of 6)
1313  return false;
1314  if (inSrcHorzPixelsToCopy % 6) // pixel width of src image portion to copy must be on 6-pixel boundary
1315  return false;
1316 
1317  const ULWord dstMaxPixelWidth (inDstBytesPerLine / 16 * 6);
1318  const ULWord srcMaxPixelWidth (inSrcBytesPerLine / 16 * 6);
1319  ULWord numHorzPixelsToCopy (inSrcHorzPixelsToCopy);
1320  UWord numVertLinesToCopy (inSrcVertLinesToCopy);
1321 
1322  if (inDstHorzPixelOffset >= dstMaxPixelWidth) // dst past right edge
1323  return false;
1324  if (inSrcHorzPixelOffset >= srcMaxPixelWidth) // src past right edge
1325  return false;
1326  if (inSrcHorzPixelOffset + inSrcHorzPixelsToCopy > UWord(srcMaxPixelWidth))
1327  numHorzPixelsToCopy -= inSrcHorzPixelOffset + inSrcHorzPixelsToCopy - srcMaxPixelWidth; // Clip to src raster's right edge
1328  if (inDstHorzPixelOffset + numHorzPixelsToCopy > dstMaxPixelWidth)
1329  numHorzPixelsToCopy = inDstHorzPixelOffset + numHorzPixelsToCopy - dstMaxPixelWidth;
1330  NTV2_ASSERT (numHorzPixelsToCopy % 6 == 0);
1331  if (inSrcVertLineOffset + inSrcVertLinesToCopy > inSrcTotalLines)
1332  numVertLinesToCopy -= inSrcVertLineOffset + inSrcVertLinesToCopy - inSrcTotalLines; // Clip to src raster's bottom edge
1333  if (numVertLinesToCopy + inDstVertLineOffset >= inDstTotalLines)
1334  {
1335  if (numVertLinesToCopy + inDstVertLineOffset > inDstTotalLines)
1336  numVertLinesToCopy -= numVertLinesToCopy + inDstVertLineOffset - inDstTotalLines;
1337  else
1338  return true;
1339  }
1340 
1341  for (UWord lineNdx (0); lineNdx < numVertLinesToCopy; lineNdx++) // for each raster line to copy
1342  {
1343  const UByte * pSrcLine (pSrcBuffer + inSrcBytesPerLine * (inSrcVertLineOffset + lineNdx) + inSrcHorzPixelOffset * 16 / 6);
1344  UByte * pDstLine (pDstBuffer + inDstBytesPerLine * (inDstVertLineOffset + lineNdx) + inDstHorzPixelOffset * 16 / 6);
1345  ::memcpy (pDstLine, pSrcLine, numHorzPixelsToCopy * 16 / 6); // copy the line
1346  }
1347 
1348  return true;
1349 
1350 } // CopyRaster16BytesPer6Pixels
1351 
1352 
1353 // This function should work on all 20-byte-per-16-pixel formats
1354 static bool CopyRaster20BytesPer16Pixels ( UByte * pDstBuffer, // Dest buffer to be modified
1355  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width) -- must be evenly divisible by 20
1356  const UWord inDstTotalLines, // Dest buffer total raster lines (max height)
1357  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1358  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear
1359  const UByte * pSrcBuffer, // Src buffer
1360  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width) -- must be evenly divisible by 20
1361  const UWord inSrcTotalLines, // Src buffer total raster lines (max height)
1362  const UWord inSrcVertLineOffset, // Src image top edge
1363  const UWord inSrcVertLinesToCopy, // Src image height
1364  const UWord inSrcHorzPixelOffset, // Src image left edge
1365  const UWord inSrcHorzPixelsToCopy) // Src image width
1366 {
1367  if (inDstHorzPixelOffset % 16) // dst pixel offset must be on 16-pixel boundary
1368  return false;
1369  if (inSrcHorzPixelOffset % 16) // src pixel offset must be on 16-pixel boundary
1370  return false;
1371  if (inDstBytesPerLine % 20) // dst raster width must be evenly divisible by 20
1372  return false;
1373  if (inSrcBytesPerLine % 20) // src raster width must be evenly divisible by 20
1374  return false;
1375  if (inSrcHorzPixelsToCopy % 16) // pixel width of src image portion to copy must be on 16-pixel boundary
1376  return false;
1377 
1378  const ULWord dstMaxPixelWidth (inDstBytesPerLine / 20 * 16);
1379  const ULWord srcMaxPixelWidth (inSrcBytesPerLine / 20 * 16);
1380  ULWord numHorzPixelsToCopy (inSrcHorzPixelsToCopy);
1381  UWord numVertLinesToCopy (inSrcVertLinesToCopy);
1382 
1383  if (inDstHorzPixelOffset >= dstMaxPixelWidth) // dst past right edge
1384  return false;
1385  if (inSrcHorzPixelOffset >= srcMaxPixelWidth) // src past right edge
1386  return false;
1387  if (inSrcHorzPixelOffset + inSrcHorzPixelsToCopy > UWord(srcMaxPixelWidth))
1388  numHorzPixelsToCopy -= inSrcHorzPixelOffset + inSrcHorzPixelsToCopy - srcMaxPixelWidth; // Clip to src raster's right edge
1389  if (inDstHorzPixelOffset + numHorzPixelsToCopy > dstMaxPixelWidth)
1390  numHorzPixelsToCopy = inDstHorzPixelOffset + numHorzPixelsToCopy - dstMaxPixelWidth;
1391  NTV2_ASSERT (numHorzPixelsToCopy % 16 == 0);
1392  if (inSrcVertLineOffset + inSrcVertLinesToCopy > inSrcTotalLines)
1393  numVertLinesToCopy -= inSrcVertLineOffset + inSrcVertLinesToCopy - inSrcTotalLines; // Clip to src raster's bottom edge
1394  if (numVertLinesToCopy + inDstVertLineOffset >= inDstTotalLines)
1395  {
1396  if (numVertLinesToCopy + inDstVertLineOffset > inDstTotalLines)
1397  numVertLinesToCopy -= numVertLinesToCopy + inDstVertLineOffset - inDstTotalLines;
1398  else
1399  return true;
1400  }
1401 
1402  for (UWord lineNdx (0); lineNdx < numVertLinesToCopy; lineNdx++) // for each raster line to copy
1403  {
1404  const UByte * pSrcLine (pSrcBuffer + inSrcBytesPerLine * (inSrcVertLineOffset + lineNdx) + inSrcHorzPixelOffset * 20 / 16);
1405  UByte * pDstLine (pDstBuffer + inDstBytesPerLine * (inDstVertLineOffset + lineNdx) + inDstHorzPixelOffset * 20 / 16);
1406  ::memcpy (pDstLine, pSrcLine, numHorzPixelsToCopy * 20 / 16); // copy the line
1407  }
1408 
1409  return true;
1410 
1411 } // CopyRaster20BytesPer16Pixels
1412 
1413 // This function should work on all 36-byte-per-8-pixel formats
1414 static bool CopyRaster36BytesPer8Pixels ( UByte * pDstBuffer, // Dest buffer to be modified
1415  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width) -- must be evenly divisible by 20
1416  const UWord inDstTotalLines, // Dest buffer total raster lines (max height)
1417  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1418  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear
1419  const UByte * pSrcBuffer, // Src buffer
1420  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width) -- must be evenly divisible by 20
1421  const UWord inSrcTotalLines, // Src buffer total raster lines (max height)
1422  const UWord inSrcVertLineOffset, // Src image top edge
1423  const UWord inSrcVertLinesToCopy, // Src image height
1424  const UWord inSrcHorzPixelOffset, // Src image left edge
1425  const UWord inSrcHorzPixelsToCopy) // Src image width
1426 {
1427  if (inDstHorzPixelOffset % 8) // dst pixel offset must be on 16-pixel boundary
1428  return false;
1429  if (inSrcHorzPixelOffset % 8) // src pixel offset must be on 16-pixel boundary
1430  return false;
1431  if (inDstBytesPerLine % 36) // dst raster width must be evenly divisible by 20
1432  return false;
1433  if (inSrcBytesPerLine % 36) // src raster width must be evenly divisible by 20
1434  return false;
1435  if (inSrcHorzPixelsToCopy % 8) // pixel width of src image portion to copy must be on 16-pixel boundary
1436  return false;
1437 
1438  const ULWord dstMaxPixelWidth (inDstBytesPerLine / 36 * 8);
1439  const ULWord srcMaxPixelWidth (inSrcBytesPerLine / 36 * 8);
1440  ULWord numHorzPixelsToCopy (inSrcHorzPixelsToCopy);
1441  UWord numVertLinesToCopy (inSrcVertLinesToCopy);
1442 
1443  if (inDstHorzPixelOffset >= dstMaxPixelWidth) // dst past right edge
1444  return false;
1445  if (inSrcHorzPixelOffset >= srcMaxPixelWidth) // src past right edge
1446  return false;
1447  if (inSrcHorzPixelOffset + inSrcHorzPixelsToCopy > UWord(srcMaxPixelWidth))
1448  numHorzPixelsToCopy -= inSrcHorzPixelOffset + inSrcHorzPixelsToCopy - srcMaxPixelWidth; // Clip to src raster's right edge
1449  if (inDstHorzPixelOffset + numHorzPixelsToCopy > dstMaxPixelWidth)
1450  numHorzPixelsToCopy = inDstHorzPixelOffset + numHorzPixelsToCopy - dstMaxPixelWidth;
1451  NTV2_ASSERT (numHorzPixelsToCopy % 8 == 0);
1452  if (inSrcVertLineOffset + inSrcVertLinesToCopy > inSrcTotalLines)
1453  numVertLinesToCopy -= inSrcVertLineOffset + inSrcVertLinesToCopy - inSrcTotalLines; // Clip to src raster's bottom edge
1454  if (numVertLinesToCopy + inDstVertLineOffset >= inDstTotalLines)
1455  {
1456  if (numVertLinesToCopy + inDstVertLineOffset > inDstTotalLines)
1457  numVertLinesToCopy -= numVertLinesToCopy + inDstVertLineOffset - inDstTotalLines;
1458  else
1459  return true;
1460  }
1461 
1462  for (UWord lineNdx (0); lineNdx < numVertLinesToCopy; lineNdx++) // for each raster line to copy
1463  {
1464  const UByte * pSrcLine (pSrcBuffer + inSrcBytesPerLine * (inSrcVertLineOffset + lineNdx) + inSrcHorzPixelOffset * 36 / 8);
1465  UByte * pDstLine (pDstBuffer + inDstBytesPerLine * (inDstVertLineOffset + lineNdx) + inDstHorzPixelOffset * 36 / 8);
1466  ::memcpy (pDstLine, pSrcLine, numHorzPixelsToCopy * 36 / 8); // copy the line
1467  }
1468 
1469  return true;
1470 
1471 } // CopyRaster20BytesPer16Pixels
1472 
1473 
1474 // This function should work on all 4-byte-per-pixel formats
1475 static bool CopyRaster4BytesPerPixel ( UByte * pDstBuffer, // Dest buffer to be modified
1476  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width)
1477  const UWord inDstTotalLines, // Dest buffer total raster lines (max height)
1478  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1479  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear -- must be evenly divisible by 6
1480  const UByte * pSrcBuffer, // Src buffer
1481  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width)
1482  const UWord inSrcTotalLines, // Src buffer total raster lines (max height)
1483  const UWord inSrcVertLineOffset, // Src image top edge
1484  const UWord inSrcVertLinesToCopy, // Src image height
1485  const UWord inSrcHorzPixelOffset, // Src image left edge
1486  const UWord inSrcHorzPixelsToCopy) // Src image width
1487 {
1488  const UWord FOUR_BYTES_PER_PIXEL (4);
1489 
1490  if (inDstBytesPerLine % FOUR_BYTES_PER_PIXEL) // dst raster width (in bytes) must be evenly divisible by 4
1491  return false;
1492  if (inSrcBytesPerLine % FOUR_BYTES_PER_PIXEL) // src raster width (in bytes) must be evenly divisible by 4
1493  return false;
1494 
1495  const ULWord dstMaxPixelWidth (inDstBytesPerLine / FOUR_BYTES_PER_PIXEL);
1496  const ULWord srcMaxPixelWidth (inSrcBytesPerLine / FOUR_BYTES_PER_PIXEL);
1497  ULWord numHorzPixelsToCopy (inSrcHorzPixelsToCopy);
1498  UWord numVertLinesToCopy (inSrcVertLinesToCopy);
1499 
1500  if (inDstHorzPixelOffset >= dstMaxPixelWidth) // dst past right edge
1501  return false;
1502  if (inSrcHorzPixelOffset >= srcMaxPixelWidth) // src past right edge
1503  return false;
1504  if (inSrcHorzPixelOffset + inSrcHorzPixelsToCopy > UWord(srcMaxPixelWidth))
1505  numHorzPixelsToCopy -= inSrcHorzPixelOffset + inSrcHorzPixelsToCopy - srcMaxPixelWidth; // Clip to src raster's right edge
1506  if (inDstHorzPixelOffset + numHorzPixelsToCopy > dstMaxPixelWidth)
1507  numHorzPixelsToCopy = inDstHorzPixelOffset + numHorzPixelsToCopy - dstMaxPixelWidth;
1508  if (inSrcVertLineOffset + inSrcVertLinesToCopy > inSrcTotalLines)
1509  numVertLinesToCopy -= inSrcVertLineOffset + inSrcVertLinesToCopy - inSrcTotalLines; // Clip to src raster's bottom edge
1510  if (numVertLinesToCopy + inDstVertLineOffset >= inDstTotalLines)
1511  {
1512  if (numVertLinesToCopy + inDstVertLineOffset > inDstTotalLines)
1513  numVertLinesToCopy -= numVertLinesToCopy + inDstVertLineOffset - inDstTotalLines;
1514  else
1515  return true;
1516  }
1517 
1518  for (UWord lineNdx (0); lineNdx < numVertLinesToCopy; lineNdx++) // for each raster line to copy
1519  {
1520  const UByte * pSrcLine (pSrcBuffer + inSrcBytesPerLine * (inSrcVertLineOffset + lineNdx) + inSrcHorzPixelOffset * FOUR_BYTES_PER_PIXEL);
1521  UByte * pDstLine (pDstBuffer + inDstBytesPerLine * (inDstVertLineOffset + lineNdx) + inDstHorzPixelOffset * FOUR_BYTES_PER_PIXEL);
1522  ::memcpy (pDstLine, pSrcLine, numHorzPixelsToCopy * FOUR_BYTES_PER_PIXEL); // copy the line
1523  }
1524 
1525  return true;
1526 
1527 } // CopyRaster4BytesPerPixel
1528 
1529 
1530 // This function should work on all 3-byte-per-pixel formats
1531 static bool CopyRaster3BytesPerPixel ( UByte * pDstBuffer, // Dest buffer to be modified
1532  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width)
1533  const UWord inDstTotalLines, // Dest buffer total raster lines (max height)
1534  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1535  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear -- must be evenly divisible by 6
1536  const UByte * pSrcBuffer, // Src buffer
1537  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width)
1538  const UWord inSrcTotalLines, // Src buffer total raster lines (max height)
1539  const UWord inSrcVertLineOffset, // Src image top edge
1540  const UWord inSrcVertLinesToCopy, // Src image height
1541  const UWord inSrcHorzPixelOffset, // Src image left edge
1542  const UWord inSrcHorzPixelsToCopy) // Src image width
1543 {
1544  const UWord THREE_BYTES_PER_PIXEL (3);
1545 
1546  if (inDstBytesPerLine % THREE_BYTES_PER_PIXEL) // dst raster width (in bytes) must be evenly divisible by 3
1547  return false;
1548  if (inSrcBytesPerLine % THREE_BYTES_PER_PIXEL) // src raster width (in bytes) must be evenly divisible by 3
1549  return false;
1550 
1551  const ULWord dstMaxPixelWidth (inDstBytesPerLine / THREE_BYTES_PER_PIXEL);
1552  const ULWord srcMaxPixelWidth (inSrcBytesPerLine / THREE_BYTES_PER_PIXEL);
1553  ULWord numHorzPixelsToCopy (inSrcHorzPixelsToCopy);
1554  UWord numVertLinesToCopy (inSrcVertLinesToCopy);
1555 
1556  if (inDstHorzPixelOffset >= dstMaxPixelWidth) // dst past right edge
1557  return false;
1558  if (inSrcHorzPixelOffset >= srcMaxPixelWidth) // src past right edge
1559  return false;
1560  if (inSrcHorzPixelOffset + inSrcHorzPixelsToCopy > UWord(srcMaxPixelWidth))
1561  numHorzPixelsToCopy -= inSrcHorzPixelOffset + inSrcHorzPixelsToCopy - srcMaxPixelWidth; // Clip to src raster's right edge
1562  if (inDstHorzPixelOffset + numHorzPixelsToCopy > dstMaxPixelWidth)
1563  numHorzPixelsToCopy = inDstHorzPixelOffset + numHorzPixelsToCopy - dstMaxPixelWidth;
1564  if (inSrcVertLineOffset + inSrcVertLinesToCopy > inSrcTotalLines)
1565  numVertLinesToCopy -= inSrcVertLineOffset + inSrcVertLinesToCopy - inSrcTotalLines; // Clip to src raster's bottom edge
1566  if (numVertLinesToCopy + inDstVertLineOffset >= inDstTotalLines)
1567  {
1568  if (numVertLinesToCopy + inDstVertLineOffset > inDstTotalLines)
1569  numVertLinesToCopy -= numVertLinesToCopy + inDstVertLineOffset - inDstTotalLines;
1570  else
1571  return true;
1572  }
1573 
1574  for (UWord lineNdx (0); lineNdx < numVertLinesToCopy; lineNdx++) // for each raster line to copy
1575  {
1576  const UByte * pSrcLine (pSrcBuffer + inSrcBytesPerLine * (inSrcVertLineOffset + lineNdx) + inSrcHorzPixelOffset * THREE_BYTES_PER_PIXEL);
1577  UByte * pDstLine (pDstBuffer + inDstBytesPerLine * (inDstVertLineOffset + lineNdx) + inDstHorzPixelOffset * THREE_BYTES_PER_PIXEL);
1578  ::memcpy (pDstLine, pSrcLine, numHorzPixelsToCopy * THREE_BYTES_PER_PIXEL); // copy the line
1579  }
1580 
1581  return true;
1582 
1583 } // CopyRaster3BytesPerPixel
1584 
1585 
1586 // This function should work on all 6-byte-per-pixel formats
1587 static bool CopyRaster6BytesPerPixel ( UByte * pDstBuffer, // Dest buffer to be modified
1588  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width)
1589  const UWord inDstTotalLines, // Dest buffer total raster lines (max height)
1590  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1591  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear -- must be evenly divisible by 6
1592  const UByte * pSrcBuffer, // Src buffer
1593  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width)
1594  const UWord inSrcTotalLines, // Src buffer total raster lines (max height)
1595  const UWord inSrcVertLineOffset, // Src image top edge
1596  const UWord inSrcVertLinesToCopy, // Src image height
1597  const UWord inSrcHorzPixelOffset, // Src image left edge
1598  const UWord inSrcHorzPixelsToCopy) // Src image width
1599 {
1600  const UWord SIX_BYTES_PER_PIXEL (6);
1601 
1602  if (inDstBytesPerLine % SIX_BYTES_PER_PIXEL) // dst raster width (in bytes) must be evenly divisible by 6
1603  return false;
1604  if (inSrcBytesPerLine % SIX_BYTES_PER_PIXEL) // src raster width (in bytes) must be evenly divisible by 6
1605  return false;
1606 
1607  const ULWord dstMaxPixelWidth (inDstBytesPerLine / SIX_BYTES_PER_PIXEL);
1608  const ULWord srcMaxPixelWidth (inSrcBytesPerLine / SIX_BYTES_PER_PIXEL);
1609  ULWord numHorzPixelsToCopy (inSrcHorzPixelsToCopy);
1610  UWord numVertLinesToCopy (inSrcVertLinesToCopy);
1611 
1612  if (inDstHorzPixelOffset >= dstMaxPixelWidth) // dst past right edge
1613  return false;
1614  if (inSrcHorzPixelOffset >= srcMaxPixelWidth) // src past right edge
1615  return false;
1616  if (inSrcHorzPixelOffset + inSrcHorzPixelsToCopy > UWord(srcMaxPixelWidth))
1617  numHorzPixelsToCopy -= inSrcHorzPixelOffset + inSrcHorzPixelsToCopy - srcMaxPixelWidth; // Clip to src raster's right edge
1618  if (inDstHorzPixelOffset + numHorzPixelsToCopy > dstMaxPixelWidth)
1619  numHorzPixelsToCopy = inDstHorzPixelOffset + numHorzPixelsToCopy - dstMaxPixelWidth;
1620  if (inSrcVertLineOffset + inSrcVertLinesToCopy > inSrcTotalLines)
1621  numVertLinesToCopy -= inSrcVertLineOffset + inSrcVertLinesToCopy - inSrcTotalLines; // Clip to src raster's bottom edge
1622  if (numVertLinesToCopy + inDstVertLineOffset >= inDstTotalLines)
1623  {
1624  if (numVertLinesToCopy + inDstVertLineOffset > inDstTotalLines)
1625  numVertLinesToCopy -= numVertLinesToCopy + inDstVertLineOffset - inDstTotalLines;
1626  else
1627  return true;
1628  }
1629 
1630  for (UWord lineNdx (0); lineNdx < numVertLinesToCopy; lineNdx++) // for each raster line to copy
1631  {
1632  const UByte * pSrcLine (pSrcBuffer + inSrcBytesPerLine * (inSrcVertLineOffset + lineNdx) + inSrcHorzPixelOffset * SIX_BYTES_PER_PIXEL);
1633  UByte * pDstLine (pDstBuffer + inDstBytesPerLine * (inDstVertLineOffset + lineNdx) + inDstHorzPixelOffset * SIX_BYTES_PER_PIXEL);
1634  ::memcpy (pDstLine, pSrcLine, numHorzPixelsToCopy * SIX_BYTES_PER_PIXEL); // copy the line
1635  }
1636 
1637  return true;
1638 
1639 } // CopyRaster6BytesPerPixel
1640 
1641 
1642 bool CopyRaster (const NTV2PixelFormat inPixelFormat, // Pixel format of both src and dst buffers
1643  UByte * pDstBuffer, // Dest buffer to be modified
1644  const ULWord inDstBytesPerLine, // Dest buffer bytes per raster line (determines max width)
1645  const UWord inDstTotalLines, // Dest buffer total lines in raster (max height)
1646  const UWord inDstVertLineOffset, // Vertical line offset into the dest raster where the top edge of the src image will appear
1647  const UWord inDstHorzPixelOffset, // Horizontal pixel offset into the dest raster where the left edge of the src image will appear
1648  const UByte * pSrcBuffer, // Src buffer
1649  const ULWord inSrcBytesPerLine, // Src buffer bytes per raster line (determines max width)
1650  const UWord inSrcTotalLines, // Src buffer total lines in raster (max height)
1651  const UWord inSrcVertLineOffset, // Src image top edge
1652  const UWord inSrcVertLinesToCopy, // Src image height
1653  const UWord inSrcHorzPixelOffset, // Src image left edge
1654  const UWord inSrcHorzPixelsToCopy) // Src image width
1655 {
1656  if (!pDstBuffer) // NULL buffer
1657  return false;
1658  if (!pSrcBuffer) // NULL buffer
1659  return false;
1660  if (pDstBuffer == pSrcBuffer) // src & dst buffers must be different
1661  return false;
1662  if (inDstBytesPerLine == 0) // zero rowbytes
1663  return false;
1664  if (inSrcBytesPerLine == 0) // zero rowbytes
1665  return false;
1666  if (inDstTotalLines == 0) // zero height
1667  return false;
1668  if (inSrcTotalLines == 0) // zero height
1669  return false;
1670  if (inDstVertLineOffset >= inDstTotalLines) // dst past bottom edge
1671  return false;
1672  if (inSrcVertLineOffset >= inSrcTotalLines) // src past bottom edge
1673  return false;
1674  switch (inPixelFormat)
1675  {
1676  case NTV2_FBF_10BIT_YCBCR:
1677  case NTV2_FBF_10BIT_YCBCR_DPX: return CopyRaster16BytesPer6Pixels (pDstBuffer, inDstBytesPerLine, inDstTotalLines, inDstVertLineOffset, inDstHorzPixelOffset,
1678  pSrcBuffer, inSrcBytesPerLine, inSrcTotalLines, inSrcVertLineOffset, inSrcVertLinesToCopy,
1679  inSrcHorzPixelOffset, inSrcHorzPixelsToCopy);
1680 
1681  case NTV2_FBF_8BIT_YCBCR:
1682  case NTV2_FBF_8BIT_YCBCR_YUY2: return CopyRaster4BytesPer2Pixels (pDstBuffer, inDstBytesPerLine, inDstTotalLines, inDstVertLineOffset, inDstHorzPixelOffset,
1683  pSrcBuffer, inSrcBytesPerLine, inSrcTotalLines, inSrcVertLineOffset, inSrcVertLinesToCopy,
1684  inSrcHorzPixelOffset, inSrcHorzPixelsToCopy);
1685 
1686  case NTV2_FBF_ARGB:
1687  case NTV2_FBF_RGBA:
1688  case NTV2_FBF_ABGR:
1689  case NTV2_FBF_10BIT_DPX:
1690  case NTV2_FBF_10BIT_DPX_LE:
1691  case NTV2_FBF_10BIT_RGB: return CopyRaster4BytesPerPixel (pDstBuffer, inDstBytesPerLine, inDstTotalLines, inDstVertLineOffset, inDstHorzPixelOffset,
1692  pSrcBuffer, inSrcBytesPerLine, inSrcTotalLines, inSrcVertLineOffset, inSrcVertLinesToCopy,
1693  inSrcHorzPixelOffset, inSrcHorzPixelsToCopy);
1694 
1695  case NTV2_FBF_24BIT_RGB:
1696  case NTV2_FBF_24BIT_BGR: return CopyRaster3BytesPerPixel (pDstBuffer, inDstBytesPerLine, inDstTotalLines, inDstVertLineOffset, inDstHorzPixelOffset,
1697  pSrcBuffer, inSrcBytesPerLine, inSrcTotalLines, inSrcVertLineOffset, inSrcVertLinesToCopy,
1698  inSrcHorzPixelOffset, inSrcHorzPixelsToCopy);
1699 
1700  case NTV2_FBF_48BIT_RGB: return CopyRaster6BytesPerPixel (pDstBuffer, inDstBytesPerLine, inDstTotalLines, inDstVertLineOffset, inDstHorzPixelOffset,
1701  pSrcBuffer, inSrcBytesPerLine, inSrcTotalLines, inSrcVertLineOffset, inSrcVertLinesToCopy,
1702  inSrcHorzPixelOffset, inSrcHorzPixelsToCopy);
1703 
1704  case NTV2_FBF_12BIT_RGB_PACKED: return CopyRaster36BytesPer8Pixels (pDstBuffer, inDstBytesPerLine, inDstTotalLines, inDstVertLineOffset, inDstHorzPixelOffset,
1705  pSrcBuffer, inSrcBytesPerLine, inSrcTotalLines, inSrcVertLineOffset, inSrcVertLinesToCopy,
1706  inSrcHorzPixelOffset, inSrcHorzPixelsToCopy);
1707  case NTV2_FBF_10BIT_RAW_YCBCR: return CopyRaster20BytesPer16Pixels (pDstBuffer, inDstBytesPerLine, inDstTotalLines, inDstVertLineOffset, inDstHorzPixelOffset,
1708  pSrcBuffer, inSrcBytesPerLine, inSrcTotalLines, inSrcVertLineOffset, inSrcVertLinesToCopy,
1709  inSrcHorzPixelOffset, inSrcHorzPixelsToCopy);
1710 
1711  case NTV2_FBF_8BIT_DVCPRO: // Lossy
1712  case NTV2_FBF_8BIT_HDV: // Lossy
1714  case NTV2_FBF_10BIT_YCBCRA:
1716  case NTV2_FBF_PRORES_HDV:
1718  case NTV2_FBF_10BIT_ARGB:
1719  case NTV2_FBF_16BIT_ARGB:
1729  return false; // Unsupported
1730  }
1731  return false;
1732 
1733 } // CopyRaster
1734 
1735 
1736 // frames per second
1737 double GetFramesPerSecond (const NTV2FrameRate inFrameRate)
1738 {
1739  switch (inFrameRate)
1740  {
1741  case NTV2_FRAMERATE_12000: return 120.0;
1742  case NTV2_FRAMERATE_11988: return 120000.0 / 1001.0;
1743  case NTV2_FRAMERATE_6000: return 60.0;
1744  case NTV2_FRAMERATE_5994: return 60000.0 / 1001.0;
1745  case NTV2_FRAMERATE_5000: return 50.0;
1746  case NTV2_FRAMERATE_4800: return 48.0;
1747  case NTV2_FRAMERATE_4795: return 48000.0 / 1001.0;
1748  case NTV2_FRAMERATE_3000: return 30.0;
1749  case NTV2_FRAMERATE_2997: return 30000.0 / 1001.0;
1750  case NTV2_FRAMERATE_2500: return 25.0;
1751  case NTV2_FRAMERATE_2400: return 24.0;
1752  case NTV2_FRAMERATE_2398: return 24000.0 / 1001.0;
1753  case NTV2_FRAMERATE_1500: return 15.0;
1754  case NTV2_FRAMERATE_1498: return 15000.0 / 1001.0;
1755 #if !defined(NTV2_DEPRECATE_16_0)
1756  case NTV2_FRAMERATE_1900: return 19.0;
1757  case NTV2_FRAMERATE_1898: return 19000.0 / 1001.0;
1758  case NTV2_FRAMERATE_1800: return 18.0;
1759  case NTV2_FRAMERATE_1798: return 18000.0 / 1001.0;
1760 #endif
1761 #if defined(_DEBUG)
1762  case NTV2_NUM_FRAMERATES:
1763  case NTV2_FRAMERATE_UNKNOWN: break;
1764 #else
1765  default: break;
1766 #endif
1767  }
1768  return 30.0 / 1.001;
1769 }
1770 
1771 
1772 bool GetFramesPerSecond (const NTV2FrameRate inFrameRate, ULWord & outFractionNumerator, ULWord & outFractionDenominator)
1773 {
1774  switch (inFrameRate)
1775  {
1776  case NTV2_FRAMERATE_12000: outFractionNumerator = 120; outFractionDenominator = 1; break;
1777  case NTV2_FRAMERATE_11988: outFractionNumerator = 120000; outFractionDenominator = 1001; break;
1778  case NTV2_FRAMERATE_6000: outFractionNumerator = 60; outFractionDenominator = 1; break;
1779  case NTV2_FRAMERATE_5994: outFractionNumerator = 60000; outFractionDenominator = 1001; break;
1780  case NTV2_FRAMERATE_5000: outFractionNumerator = 50; outFractionDenominator = 1; break;
1781  case NTV2_FRAMERATE_4800: outFractionNumerator = 48; outFractionDenominator = 1; break;
1782  case NTV2_FRAMERATE_4795: outFractionNumerator = 48000; outFractionDenominator = 1001; break;
1783  case NTV2_FRAMERATE_3000: outFractionNumerator = 30; outFractionDenominator = 1; break;
1784  case NTV2_FRAMERATE_2997: outFractionNumerator = 30000; outFractionDenominator = 1001; break;
1785  case NTV2_FRAMERATE_2500: outFractionNumerator = 25; outFractionDenominator = 1; break;
1786  case NTV2_FRAMERATE_2400: outFractionNumerator = 24; outFractionDenominator = 1; break;
1787  case NTV2_FRAMERATE_2398: outFractionNumerator = 24000; outFractionDenominator = 1001; break;
1788  case NTV2_FRAMERATE_1500: outFractionNumerator = 15; outFractionDenominator = 1; break;
1789  case NTV2_FRAMERATE_1498: outFractionNumerator = 15000; outFractionDenominator = 1001; break;
1790 #if !defined(NTV2_DEPRECATE_16_0)
1791  case NTV2_FRAMERATE_1900: outFractionNumerator = 19; outFractionDenominator = 1; break;
1792  case NTV2_FRAMERATE_1898: outFractionNumerator = 19000; outFractionDenominator = 1001; break;
1793  case NTV2_FRAMERATE_1800: outFractionNumerator = 18; outFractionDenominator = 1; break;
1794  case NTV2_FRAMERATE_1798: outFractionNumerator = 18000; outFractionDenominator = 1001; break;
1795 #endif // !defined(NTV2_DEPRECATE_16_0)
1796 #if defined(_DEBUG)
1797  case NTV2_NUM_FRAMERATES:
1798  case NTV2_FRAMERATE_UNKNOWN: outFractionNumerator = 0; outFractionDenominator = 0; return false;
1799 #else
1800  default: outFractionNumerator = 0; outFractionDenominator = 0; return false;
1801 #endif
1802  }
1803  return true;
1804 }
1805 
1806 
1807 NTV2Standard GetNTV2StandardFromScanGeometry (const UByte inScanGeometry, const bool inIsProgressiveTransport)
1808 {
1809  switch (inScanGeometry)
1810  {
1811  case NTV2_SG_525: return NTV2_STANDARD_525;
1812  case NTV2_SG_625: return NTV2_STANDARD_625;
1813  case NTV2_SG_750: return NTV2_STANDARD_720;
1814  case NTV2_SG_2Kx1556: return NTV2_STANDARD_2K;
1815 
1816  case NTV2_SG_1125:
1817  case NTV2_SG_2Kx1080: return inIsProgressiveTransport ? NTV2_STANDARD_1080p : NTV2_STANDARD_1080;
1818 
1819  default: break;
1820  }
1821  return NTV2_STANDARD_INVALID;
1822 }
1823 
1824 
1826  const UWord inHeightLines,
1827  const UWord inWidthPixels,
1828  const bool inIsInterlaced,
1829  const bool inIsLevelB,
1830  const bool inIsPSF)
1831 {
1833  if (inFrameRate == ::GetNTV2FrameRateFromVideoFormat(fmt))
1834  if (inHeightLines == ::GetDisplayHeight(fmt))
1835  if (inWidthPixels == ::GetDisplayWidth(fmt))
1836  if (inIsInterlaced == !::IsProgressiveTransport(fmt))
1837  if (inIsPSF == ::IsPSF(fmt))
1838  if (NTV2_VIDEO_FORMAT_IS_B(fmt) == inIsLevelB)
1839  return fmt;
1840  return NTV2_FORMAT_UNKNOWN;
1841 }
1842 
1843 
1845 {
1846  NTV2VideoFormat quarterSizedFormat(inVideoFormat);
1847 
1848  switch (inVideoFormat)
1849  {
1851  case NTV2_FORMAT_4x1920x1080psf_2398: quarterSizedFormat = NTV2_FORMAT_1080psf_2398; break;
1853  case NTV2_FORMAT_4x1920x1080psf_2400: quarterSizedFormat = NTV2_FORMAT_1080psf_2400; break;
1855  case NTV2_FORMAT_4x1920x1080psf_2500: quarterSizedFormat = NTV2_FORMAT_1080psf_2500_2; break;
1857  case NTV2_FORMAT_4x1920x1080psf_2997: quarterSizedFormat = NTV2_FORMAT_1080i_5994; break; // NTV2_FORMAT_1080psf_2997
1859  case NTV2_FORMAT_4x1920x1080psf_3000: quarterSizedFormat = NTV2_FORMAT_1080i_6000; break; // NTV2_FORMAT_1080psf_3000
1860 
1862  case NTV2_FORMAT_4x2048x1080psf_2398: quarterSizedFormat = NTV2_FORMAT_1080psf_2K_2398; break;
1864  case NTV2_FORMAT_4x2048x1080psf_2400: quarterSizedFormat = NTV2_FORMAT_1080psf_2K_2400; break;
1866  case NTV2_FORMAT_4x2048x1080psf_2500: quarterSizedFormat = NTV2_FORMAT_1080psf_2K_2500; break;
1867  //case NTV2_FORMAT_4x2048x1080psf_2997: quarterSizedFormat = NTV2_FORMAT_1080psf_2K_2997; break;
1868  //case NTV2_FORMAT_4x2048x1080psf_3000: quarterSizedFormat = NTV2_FORMAT_1080psf_2K_3000; break;
1869 
1871  case NTV2_FORMAT_4x1920x1080p_2398: quarterSizedFormat = NTV2_FORMAT_1080p_2398; break;
1873  case NTV2_FORMAT_4x1920x1080p_2400: quarterSizedFormat = NTV2_FORMAT_1080p_2400; break;
1875  case NTV2_FORMAT_4x1920x1080p_2500: quarterSizedFormat = NTV2_FORMAT_1080p_2500; break;
1877  case NTV2_FORMAT_4x1920x1080p_2997: quarterSizedFormat = NTV2_FORMAT_1080p_2997; break;
1879  case NTV2_FORMAT_4x1920x1080p_3000: quarterSizedFormat = NTV2_FORMAT_1080p_3000; break;
1881  case NTV2_FORMAT_4x1920x1080p_5000: quarterSizedFormat = NTV2_FORMAT_1080p_5000_A; break;
1883  case NTV2_FORMAT_4x1920x1080p_5994: quarterSizedFormat = NTV2_FORMAT_1080p_5994_A; break;
1885  case NTV2_FORMAT_4x1920x1080p_6000: quarterSizedFormat = NTV2_FORMAT_1080p_6000_A; break;
1887  case NTV2_FORMAT_4x1920x1080p_5000_B: quarterSizedFormat = NTV2_FORMAT_1080p_5000_B; break;
1889  case NTV2_FORMAT_4x1920x1080p_5994_B: quarterSizedFormat = NTV2_FORMAT_1080p_5994_B; break;
1891  case NTV2_FORMAT_4x1920x1080p_6000_B: quarterSizedFormat = NTV2_FORMAT_1080p_6000_B; break;
1892 
1894  case NTV2_FORMAT_4x2048x1080p_2398: quarterSizedFormat = NTV2_FORMAT_1080p_2K_2398; break;
1896  case NTV2_FORMAT_4x2048x1080p_2400: quarterSizedFormat = NTV2_FORMAT_1080p_2K_2400; break;
1898  case NTV2_FORMAT_4x2048x1080p_2500: quarterSizedFormat = NTV2_FORMAT_1080p_2K_2500; break;
1900  case NTV2_FORMAT_4x2048x1080p_2997: quarterSizedFormat = NTV2_FORMAT_1080p_2K_2997; break;
1902  case NTV2_FORMAT_4x2048x1080p_3000: quarterSizedFormat = NTV2_FORMAT_1080p_2K_3000; break;
1904  case NTV2_FORMAT_4x2048x1080p_4795: quarterSizedFormat = NTV2_FORMAT_1080p_2K_4795_A; break;
1906  case NTV2_FORMAT_4x2048x1080p_4800: quarterSizedFormat = NTV2_FORMAT_1080p_2K_4800_A; break;
1908  case NTV2_FORMAT_4x2048x1080p_5000: quarterSizedFormat = NTV2_FORMAT_1080p_2K_5000_A; break;
1910  case NTV2_FORMAT_4x2048x1080p_5994: quarterSizedFormat = NTV2_FORMAT_1080p_2K_5994_A; break;
1912  case NTV2_FORMAT_4x2048x1080p_6000: quarterSizedFormat = NTV2_FORMAT_1080p_2K_6000_A; break;
1914  case NTV2_FORMAT_4x2048x1080p_4795_B: quarterSizedFormat = NTV2_FORMAT_1080p_2K_4795_B; break;
1916  case NTV2_FORMAT_4x2048x1080p_4800_B: quarterSizedFormat = NTV2_FORMAT_1080p_2K_4800_B; break;
1918  case NTV2_FORMAT_4x2048x1080p_5000_B: quarterSizedFormat = NTV2_FORMAT_1080p_2K_5000_B; break;
1920  case NTV2_FORMAT_4x2048x1080p_5994_B: quarterSizedFormat = NTV2_FORMAT_1080p_2K_5994_B; break;
1922  case NTV2_FORMAT_4x2048x1080p_6000_B: quarterSizedFormat = NTV2_FORMAT_1080p_2K_6000_B; break;
1923  // No quarter sized formats for 119.88 or 120 Hz
1924 
1925  case NTV2_FORMAT_4x3840x2160p_2398: quarterSizedFormat = NTV2_FORMAT_3840x2160p_2398; break;
1926  case NTV2_FORMAT_4x3840x2160p_2400: quarterSizedFormat = NTV2_FORMAT_3840x2160p_2400; break;
1927  case NTV2_FORMAT_4x3840x2160p_2500: quarterSizedFormat = NTV2_FORMAT_3840x2160p_2500; break;
1928  case NTV2_FORMAT_4x3840x2160p_2997: quarterSizedFormat = NTV2_FORMAT_3840x2160p_2997; break;
1929  case NTV2_FORMAT_4x3840x2160p_3000: quarterSizedFormat = NTV2_FORMAT_3840x2160p_3000; break;
1930  case NTV2_FORMAT_4x3840x2160p_5000: quarterSizedFormat = NTV2_FORMAT_3840x2160p_5000; break;
1931  case NTV2_FORMAT_4x3840x2160p_5994: quarterSizedFormat = NTV2_FORMAT_3840x2160p_5994; break;
1932  case NTV2_FORMAT_4x3840x2160p_6000: quarterSizedFormat = NTV2_FORMAT_3840x2160p_6000; break;
1933  case NTV2_FORMAT_4x3840x2160p_5000_B: quarterSizedFormat = NTV2_FORMAT_3840x2160p_5000_B; break;
1934  case NTV2_FORMAT_4x3840x2160p_5994_B: quarterSizedFormat = NTV2_FORMAT_3840x2160p_5994_B; break;
1935  case NTV2_FORMAT_4x3840x2160p_6000_B: quarterSizedFormat = NTV2_FORMAT_3840x2160p_6000_B; break;
1936 
1937  case NTV2_FORMAT_4x4096x2160p_2398: quarterSizedFormat = NTV2_FORMAT_4096x2160p_2398; break;
1938  case NTV2_FORMAT_4x4096x2160p_2400: quarterSizedFormat = NTV2_FORMAT_4096x2160p_2400; break;
1939  case NTV2_FORMAT_4x4096x2160p_2500: quarterSizedFormat = NTV2_FORMAT_4096x2160p_2500; break;
1940  case NTV2_FORMAT_4x4096x2160p_2997: quarterSizedFormat = NTV2_FORMAT_4096x2160p_2997; break;
1941  case NTV2_FORMAT_4x4096x2160p_3000: quarterSizedFormat = NTV2_FORMAT_4096x2160p_3000; break;
1942  case NTV2_FORMAT_4x4096x2160p_4795: quarterSizedFormat = NTV2_FORMAT_4096x2160p_4795; break;
1943  case NTV2_FORMAT_4x4096x2160p_4800: quarterSizedFormat = NTV2_FORMAT_4096x2160p_4800; break;
1944  case NTV2_FORMAT_4x4096x2160p_5000: quarterSizedFormat = NTV2_FORMAT_4096x2160p_5000; break;
1945  case NTV2_FORMAT_4x4096x2160p_5994: quarterSizedFormat = NTV2_FORMAT_4096x2160p_5994; break;
1946  case NTV2_FORMAT_4x4096x2160p_6000: quarterSizedFormat = NTV2_FORMAT_4096x2160p_6000; break;
1947  case NTV2_FORMAT_4x4096x2160p_4795_B: quarterSizedFormat = NTV2_FORMAT_4096x2160p_4795_B; break;
1948  case NTV2_FORMAT_4x4096x2160p_4800_B: quarterSizedFormat = NTV2_FORMAT_4096x2160p_4800_B; break;
1949  case NTV2_FORMAT_4x4096x2160p_5000_B: quarterSizedFormat = NTV2_FORMAT_4096x2160p_5000_B; break;
1950  case NTV2_FORMAT_4x4096x2160p_5994_B: quarterSizedFormat = NTV2_FORMAT_4096x2160p_5994_B; break;
1951  case NTV2_FORMAT_4x4096x2160p_6000_B: quarterSizedFormat = NTV2_FORMAT_4096x2160p_6000_B; break;
1952 #if defined(_DEBUG)
1953  case NTV2_FORMAT_UNKNOWN:
1957  case NTV2_FORMAT_720p_5994:
1958  case NTV2_FORMAT_720p_6000:
1970  case NTV2_FORMAT_720p_5000:
1974  case NTV2_FORMAT_720p_2398:
1975  case NTV2_FORMAT_720p_2500:
1985  case NTV2_FORMAT_525_5994:
1986  case NTV2_FORMAT_625_5000:
1987  case NTV2_FORMAT_525_2398:
1988  case NTV2_FORMAT_525_2400:
1992  case NTV2_FORMAT_2K_1498:
1993  case NTV2_FORMAT_2K_1500:
1994  case NTV2_FORMAT_2K_2398:
1995  case NTV2_FORMAT_2K_2400:
1996  case NTV2_FORMAT_2K_2500:
2023 #else
2024  default:
2025 #endif
2026  break;
2027  }
2028  return quarterSizedFormat;
2029 }
2030 
2031 
2032 NTV2VideoFormat GetQuadSizedVideoFormat (const NTV2VideoFormat inVideoFormat, const bool isSquareDivision)
2033 {
2034  switch (inVideoFormat)
2035  {
2041 
2045  //case NTV2_FORMAT_1080psf_2K_2997: return NTV2_FORMAT_4x2048x1080psf_29;
2046  //case NT2_FORMAT_1080psf_2K_3000: return NTV2V2_FORMAT_4x2048x1080psf_3000;
2047 
2059 
2075 
2087 
2103 
2104 #if defined(_DEBUG)
2105  case NTV2_FORMAT_UNKNOWN:
2107  case NTV2_FORMAT_720p_5994:
2108  case NTV2_FORMAT_720p_6000:
2109  case NTV2_FORMAT_720p_5000:
2110  case NTV2_FORMAT_720p_2398:
2111  case NTV2_FORMAT_720p_2500:
2115  case NTV2_FORMAT_525_5994:
2116  case NTV2_FORMAT_625_5000:
2117  case NTV2_FORMAT_525_2398:
2118  case NTV2_FORMAT_525_2400:
2122  case NTV2_FORMAT_2K_1498:
2123  case NTV2_FORMAT_2K_1500:
2124  case NTV2_FORMAT_2K_2398:
2125  case NTV2_FORMAT_2K_2400:
2126  case NTV2_FORMAT_2K_2500:
2209 #else
2210  default:
2211 #endif
2212  break;
2213  }
2214  return inVideoFormat;
2215 }
2216 
2218 {
2219  switch (inGeometry)
2220  {
2225  default: return inGeometry;
2226  }
2227 }
2228 
2229 
2231 {
2232  switch (inGeometry)
2233  {
2238  default: return inGeometry;
2239  }
2240 }
2241 
2243 {
2244  switch (inStandard)
2245  {
2254  default: return inStandard;
2255  }
2256 }
2257 
2258 
2259 NTV2Standard Get4xSizedStandard (const NTV2Standard inStandard, const bool bIs4k)
2260 {
2261  switch (inStandard)
2262  {
2265 
2266  case NTV2_STANDARD_3840HFR:
2268 
2269  case NTV2_STANDARD_4096HFR:
2271 
2272  default: return inStandard;
2273  }
2274 }
2275 
2276 
2278 {
2280 
2281  switch (inVideoFormat)
2282  {
2299  standard = NTV2_STANDARD_1080;
2300  break;
2309  standard = NTV2_STANDARD_1080p;
2310  break;
2321  standard = NTV2_STANDARD_2Kx1080p;
2322  break;
2326  standard = NTV2_STANDARD_2Kx1080i;
2327  break;
2328  case NTV2_FORMAT_720p_2398:
2329  case NTV2_FORMAT_720p_5000:
2330  case NTV2_FORMAT_720p_5994:
2331  case NTV2_FORMAT_720p_6000:
2332  case NTV2_FORMAT_720p_2500:
2333  standard = NTV2_STANDARD_720;
2334  break;
2335  case NTV2_FORMAT_525_5994:
2336  case NTV2_FORMAT_525_2398:
2337  case NTV2_FORMAT_525_2400:
2339  standard = NTV2_STANDARD_525;
2340  break;
2341  case NTV2_FORMAT_625_5000:
2343  standard = NTV2_STANDARD_625 ;
2344  break;
2345  case NTV2_FORMAT_2K_1498:
2346  case NTV2_FORMAT_2K_1500:
2347  case NTV2_FORMAT_2K_2398:
2348  case NTV2_FORMAT_2K_2400:
2349  case NTV2_FORMAT_2K_2500:
2350  standard = NTV2_STANDARD_2K ;
2351  break;
2362  standard = NTV2_STANDARD_3840x2160p;
2363  break;
2374  standard = NTV2_STANDARD_3840x2160p;
2375  break;
2382  standard = NTV2_STANDARD_3840HFR;
2383  break;
2398  standard = NTV2_STANDARD_4096x2160p;
2399  break;
2410  standard = NTV2_STANDARD_4096x2160p;
2411  break;
2422  standard = NTV2_STANDARD_4096HFR;
2423  break;
2424 
2433  standard = NTV2_STANDARD_7680;
2434  break;
2435 
2446  standard = NTV2_STANDARD_8192;
2447  break;
2448 
2449 
2450 #if defined (_DEBUG)
2451 // Debug builds warn about missing values
2452  case NTV2_FORMAT_UNKNOWN:
2485  break; // Unsupported
2486 #else
2487  default:
2488  break;
2489 #endif
2490  }
2491 
2492  return standard;
2493 }
2494 
2495 
2496 //-------------------------------------------------------------------------------------------------------
2497 // GetSupportedNTV2VideoFormatFromInputVideoFormat
2498 //-------------------------------------------------------------------------------------------------------
2500 {
2501  NTV2VideoFormat result;
2502 
2503  switch (inVideoFormat)
2504  {
2508 
2514 
2518 
2524 
2528 
2534 
2535  default: result = inVideoFormat; break;
2536  }
2537 
2538  return result;
2539 }
2540 
2541 
2542 //-------------------------------------------------------------------------------------------------------
2543 // GetNTV2FrameGeometryFromVideoFormat
2544 //-------------------------------------------------------------------------------------------------------
2546 {
2548 
2549  switch (inVideoFormat)
2550  {
2562  result = NTV2_FG_4x3840x2160;
2563  break;
2564 
2580  result = NTV2_FG_4x4096x2160;
2581  break;
2582 
2615  result = NTV2_FG_4x1920x1080;
2616  break;
2617 
2662  result = NTV2_FG_4x2048x1080;
2663  break;
2664 
2665  case NTV2_FORMAT_2K_1498:
2666  case NTV2_FORMAT_2K_1500:
2667  case NTV2_FORMAT_2K_2398:
2668  case NTV2_FORMAT_2K_2400:
2669  case NTV2_FORMAT_2K_2500:
2670  result = NTV2_FG_2048x1556;
2671  break;
2672 
2692  result = NTV2_FG_1920x1080;
2693  break;
2694 
2713  result = NTV2_FG_2048x1080;
2714  break;
2715 
2716  case NTV2_FORMAT_720p_2398:
2717  case NTV2_FORMAT_720p_2500:
2718  case NTV2_FORMAT_720p_5994:
2719  case NTV2_FORMAT_720p_6000:
2720  case NTV2_FORMAT_720p_5000:
2721  result = NTV2_FG_1280x720;
2722  break;
2723 
2724  case NTV2_FORMAT_525_2398:
2725  case NTV2_FORMAT_525_2400:
2726  case NTV2_FORMAT_525_5994:
2728  result = NTV2_FG_720x486;
2729  break;
2730 
2731  case NTV2_FORMAT_625_5000:
2733  result = NTV2_FG_720x576;
2734  break;
2735 
2736 #if defined (_DEBUG)
2737 // Debug builds warn about missing values
2738  case NTV2_FORMAT_UNKNOWN:
2747  break; // Unsupported
2748 #else
2749  default:
2750  break;
2751 #endif
2752  }
2753 
2754  return result;
2755 }
2756 
2757 
2758 ULWord GetVideoActiveSize (const NTV2VideoFormat inVideoFormat, const NTV2FrameBufferFormat inFBFormat, const NTV2VANCMode inVancMode)
2759 {
2760  const NTV2FormatDescriptor fd (inVideoFormat, inFBFormat, inVancMode);
2761  return fd.GetTotalBytes();
2762 } // GetVideoActiveSize
2763 
2764 
2765 // GetVideoWriteSize
2766 // At least in Windows, to get bursting to work between our board and the disk
2767 // system without going through the file manager cache, you need to open the file
2768 // with FILE_FLAG_NO_BUFFERING flag. With this you must do reads and writes
2769 // on 4096 byte boundaries with most modern disk systems. You could actually
2770 // do 512 on some systems though.
2771 // So this function takes in the videoformat and the framebufferformat
2772 // and gets the framesize you need to write to meet this requirement.
2773 //
2774 
2775 ULWord GetVideoWriteSize (const NTV2VideoFormat inVideoFormat, const NTV2FrameBufferFormat inFBFormat, const NTV2VANCMode inVancMode)
2776 {
2777  ULWord ulSize (::GetVideoActiveSize (inVideoFormat, inFBFormat, inVancMode));
2778  if (ulSize % 4096)
2779  ulSize = ((ulSize / 4096) + 1) * 4096;
2780  return ulSize;
2781 }
2782 
2783 
2784 // For a given framerate and audiorate, returns how many audio samples there
2785 // will be in a frame's time. cadenceFrame is only used for 5994 or 2997 @ 48k.
2786 // smpte372Enabled indicates that you are doing 1080p60,1080p5994 or 1080p50
2787 // in this mode the boards framerate might be NTV2_FRAMERATE_3000, but since
2788 // 2 links are coming out, the video rate is actually NTV2_FRAMERATE_6000
2789 ULWord GetAudioSamplesPerFrame (const NTV2FrameRate inFrameRate, const NTV2AudioRate inAudioRate, ULWord inCadenceFrame, const bool inIsSMPTE372Enabled)
2790 {
2791  NTV2FrameRate frameRate(inFrameRate);
2792  ULWord audioSamplesPerFrame(0);
2793  inCadenceFrame %= 5;
2794 
2795  if (inIsSMPTE372Enabled)
2796  {
2797  // the video is actually coming out twice as fast as the board rate
2798  // since there are 2 links.
2799  switch (inFrameRate)
2800  {
2801  case NTV2_FRAMERATE_3000: frameRate = NTV2_FRAMERATE_6000; break;
2802  case NTV2_FRAMERATE_2997: frameRate = NTV2_FRAMERATE_5994; break;
2803  case NTV2_FRAMERATE_2500: frameRate = NTV2_FRAMERATE_5000; break;
2804  case NTV2_FRAMERATE_2400: frameRate = NTV2_FRAMERATE_4800; break;
2805  case NTV2_FRAMERATE_2398: frameRate = NTV2_FRAMERATE_4795; break;
2806  default:
2807  break;
2808  }
2809  }
2810 
2811  if (inAudioRate == NTV2_AUDIO_48K)
2812  {
2813  switch (frameRate)
2814  {
2815  case NTV2_FRAMERATE_12000:
2816  audioSamplesPerFrame = 400;
2817  break;
2818  case NTV2_FRAMERATE_11988:
2819  switch (inCadenceFrame)
2820  {
2821  case 0:
2822  case 2:
2823  case 4: audioSamplesPerFrame = 400; break;
2824 
2825  case 1:
2826  case 3: audioSamplesPerFrame = 401; break;
2827  }
2828  break;
2829  case NTV2_FRAMERATE_6000:
2830  audioSamplesPerFrame = 800;
2831  break;
2832  case NTV2_FRAMERATE_5994:
2833  switch (inCadenceFrame)
2834  {
2835  case 0: audioSamplesPerFrame = 800; break;
2836 
2837  case 1:
2838  case 2:
2839  case 3:
2840  case 4: audioSamplesPerFrame = 801; break;
2841  }
2842  break;
2843  case NTV2_FRAMERATE_5000: audioSamplesPerFrame = 1920/2; break;
2844  case NTV2_FRAMERATE_4800: audioSamplesPerFrame = 1000; break;
2845  case NTV2_FRAMERATE_4795: audioSamplesPerFrame = 1001; break;
2846  case NTV2_FRAMERATE_3000: audioSamplesPerFrame = 1600; break;
2847  case NTV2_FRAMERATE_2997:
2848  // depends on cadenceFrame;
2849  switch (inCadenceFrame)
2850  {
2851  case 0:
2852  case 2:
2853  case 4: audioSamplesPerFrame = 1602; break;
2854 
2855  case 1:
2856  case 3: audioSamplesPerFrame = 1601; break;
2857  }
2858  break;
2859  case NTV2_FRAMERATE_2500: audioSamplesPerFrame = 1920; break;
2860  case NTV2_FRAMERATE_2400: audioSamplesPerFrame = 2000; break;
2861  case NTV2_FRAMERATE_2398: audioSamplesPerFrame = 2002; break;
2862  case NTV2_FRAMERATE_1500: audioSamplesPerFrame = 3200; break;
2863  case NTV2_FRAMERATE_1498:
2864  // depends on cadenceFrame;
2865  switch (inCadenceFrame)
2866  {
2867  case 0: audioSamplesPerFrame = 3204; break;
2868 
2869  case 1:
2870  case 2:
2871  case 3:
2872  case 4: audioSamplesPerFrame = 3203; break;
2873  }
2874  break;
2875  #if !defined(NTV2_DEPRECATE_16_0)
2876  case NTV2_FRAMERATE_1900: // Not supported yet
2877  case NTV2_FRAMERATE_1898: // Not supported yet
2878  case NTV2_FRAMERATE_1800: // Not supported yet
2879  case NTV2_FRAMERATE_1798: // Not supported yet
2880  #endif
2881  case NTV2_FRAMERATE_UNKNOWN:
2882  case NTV2_NUM_FRAMERATES:
2883  audioSamplesPerFrame = 0;
2884  break;
2885  }
2886  }
2887  else if (inAudioRate == NTV2_AUDIO_96K)
2888  {
2889  switch (frameRate)
2890  {
2891  case NTV2_FRAMERATE_12000:
2892  audioSamplesPerFrame = 800;
2893  break;
2894  case NTV2_FRAMERATE_11988:
2895  switch (inCadenceFrame)
2896  {
2897  case 0:
2898  case 1:
2899  case 2:
2900  case 3: audioSamplesPerFrame = 801; break; // Fixed in SDK 16.2, was incorrect (901) before 16.2
2901 
2902  case 4: audioSamplesPerFrame = 800; break;
2903  }
2904  break;
2905  case NTV2_FRAMERATE_6000: audioSamplesPerFrame = 800*2; break;
2906  case NTV2_FRAMERATE_5994:
2907  switch (inCadenceFrame)
2908  {
2909  case 0:
2910  case 2:
2911  case 4: audioSamplesPerFrame = 1602; break;
2912 
2913  case 1:
2914  case 3: audioSamplesPerFrame = 1601; break;
2915  }
2916  break;
2917  case NTV2_FRAMERATE_5000: audioSamplesPerFrame = 1920; break;
2918  case NTV2_FRAMERATE_4800: audioSamplesPerFrame = 2000; break;
2919  case NTV2_FRAMERATE_4795: audioSamplesPerFrame = 2002; break;
2920  case NTV2_FRAMERATE_3000: audioSamplesPerFrame = 1600*2; break;
2921  case NTV2_FRAMERATE_2997:
2922  // depends on cadenceFrame;
2923  switch (inCadenceFrame)
2924  {
2925  case 0: audioSamplesPerFrame = 3204; break;
2926 
2927  case 1:
2928  case 2:
2929  case 3:
2930  case 4: audioSamplesPerFrame = 3203; break;
2931  }
2932  break;
2933  case NTV2_FRAMERATE_2500: audioSamplesPerFrame = 1920*2; break;
2934  case NTV2_FRAMERATE_2400: audioSamplesPerFrame = 2000*2; break;
2935  case NTV2_FRAMERATE_2398: audioSamplesPerFrame = 2002*2; break;
2936  case NTV2_FRAMERATE_1500: audioSamplesPerFrame = 3200*2; break;
2937  case NTV2_FRAMERATE_1498:
2938  // depends on cadenceFrame;
2939  switch (inCadenceFrame)
2940  {
2941  case 0: audioSamplesPerFrame = 3204*2; break;
2942 
2943  case 1:
2944  case 2:
2945  case 3:
2946  case 4: audioSamplesPerFrame = 3203*2; break;
2947  }
2948  break;
2949  #if !defined(NTV2_DEPRECATE_16_0)
2950  case NTV2_FRAMERATE_1900: // Not supported yet
2951  case NTV2_FRAMERATE_1898: // Not supported yet
2952  case NTV2_FRAMERATE_1800: // Not supported yet
2953  case NTV2_FRAMERATE_1798: // Not supported yet
2954  #endif
2955  case NTV2_FRAMERATE_UNKNOWN:
2956  case NTV2_NUM_FRAMERATES:
2957  audioSamplesPerFrame = 0*2; //haha
2958  break;
2959  }
2960  }
2961  else if (inAudioRate == NTV2_AUDIO_192K)
2962  {
2963  switch (frameRate)
2964  {
2965  case NTV2_FRAMERATE_12000:
2966  audioSamplesPerFrame = 1600;
2967  break;
2968  case NTV2_FRAMERATE_11988:
2969  switch (inCadenceFrame)
2970  {
2971  case 0:
2972  case 2:
2973  case 4: audioSamplesPerFrame = 1602; break;
2974 
2975  case 1:
2976  case 3: audioSamplesPerFrame = 1601; break;
2977  }
2978  break;
2979  case NTV2_FRAMERATE_6000:
2980  audioSamplesPerFrame = 3200;
2981  break;
2982  case NTV2_FRAMERATE_5994:
2983  switch (inCadenceFrame)
2984  {
2985  case 0: audioSamplesPerFrame = 3204; break;
2986 
2987  case 1:
2988  case 2:
2989  case 3:
2990  case 4: audioSamplesPerFrame = 3203; break;
2991  }
2992  break;
2993  case NTV2_FRAMERATE_5000: audioSamplesPerFrame = 3840; break;
2994  case NTV2_FRAMERATE_4800: audioSamplesPerFrame = 4000; break;
2995  case NTV2_FRAMERATE_4795: audioSamplesPerFrame = 4004; break;
2996  case NTV2_FRAMERATE_3000: audioSamplesPerFrame = 6400; break;
2997  case NTV2_FRAMERATE_2997:
2998  // depends on cadenceFrame;
2999  switch (inCadenceFrame)
3000  {
3001  case 0:
3002  case 1: audioSamplesPerFrame = 6407; break;
3003 
3004  case 2:
3005  case 3:
3006  case 4: audioSamplesPerFrame = 6406; break;
3007  }
3008  break;
3009  case NTV2_FRAMERATE_2500: audioSamplesPerFrame = 7680; break;
3010  case NTV2_FRAMERATE_2400: audioSamplesPerFrame = 8000; break;
3011  case NTV2_FRAMERATE_2398: audioSamplesPerFrame = 8008; break;
3012  case NTV2_FRAMERATE_1500: audioSamplesPerFrame = 12800; break;
3013  case NTV2_FRAMERATE_1498:
3014  // depends on cadenceFrame;
3015  switch (inCadenceFrame)
3016  {
3017  case 0:
3018  case 1:
3019  case 2:
3020  case 3: audioSamplesPerFrame = 12813; break;
3021 
3022  case 4: audioSamplesPerFrame = 12812; break;
3023  }
3024  break;
3025 #if !defined(NTV2_DEPRECATE_16_0)
3026  case NTV2_FRAMERATE_1900: // Not supported yet
3027  case NTV2_FRAMERATE_1898: // Not supported yet
3028  case NTV2_FRAMERATE_1800: // Not supported yet
3029  case NTV2_FRAMERATE_1798: // Not supported yet
3030 #endif
3031  case NTV2_FRAMERATE_UNKNOWN:
3032  case NTV2_NUM_FRAMERATES:
3033  audioSamplesPerFrame = 0*2; //haha
3034  break;
3035  }
3036  }
3037 
3038  return audioSamplesPerFrame;
3039 }
3040 
3041 
3042 // For a given framerate and audiorate and ending frame number (non-inclusive), returns the total number of audio samples over
3043 // the range of video frames starting at frame number zero up to and not including the passed in frame number, inFrameNumNonInclusive.
3044 // Utilizes cadence patterns in function immediately above, GetAudioSamplesPerFrame().
3045 // No smpte372Enabled support
3046 LWord64 GetTotalAudioSamplesFromFrameNbrZeroUpToFrameNbr (const NTV2FrameRate inFrameRate, const NTV2AudioRate inAudioRate, const ULWord inFrameNumNonInclusive)
3047 {
3048  LWord64 numTotalAudioSamples;
3049  LWord64 numAudioSamplesFromWholeGroups;
3050 
3051  ULWord numWholeGroupsOfFive;
3052  ULWord numAudioSamplesFromRemainder;
3053  ULWord remainder;
3054 
3055  numWholeGroupsOfFive = inFrameNumNonInclusive / 5;
3056  remainder = inFrameNumNonInclusive % 5;
3057 
3058  numTotalAudioSamples = 0;
3059  numAudioSamplesFromWholeGroups = 0;
3060  numAudioSamplesFromRemainder = 0;
3061 
3062  if (inAudioRate == NTV2_AUDIO_48K)
3063  {
3064  switch (inFrameRate)
3065  {
3066  case NTV2_FRAMERATE_12000:
3067  numTotalAudioSamples = 400 * inFrameNumNonInclusive;
3068  break;
3069  case NTV2_FRAMERATE_11988:
3070  numAudioSamplesFromWholeGroups = ((2*401) + (3*400)) * numWholeGroupsOfFive;
3071  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : ((400 * remainder) + remainder/2);
3072  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3073  break;
3074  case NTV2_FRAMERATE_6000:
3075  numTotalAudioSamples = 800 * inFrameNumNonInclusive;
3076  break;
3077  case NTV2_FRAMERATE_5994:
3078  // depends on cadenceFrame;
3079  numAudioSamplesFromWholeGroups = ((1*800) + (4*801)) * numWholeGroupsOfFive;
3080  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : ((801 * remainder) - 1);
3081  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3082  break;
3083  case NTV2_FRAMERATE_5000:
3084  numTotalAudioSamples = 1920/2 * inFrameNumNonInclusive;
3085  break;
3086  case NTV2_FRAMERATE_4800:
3087  numTotalAudioSamples = 1000 * inFrameNumNonInclusive;
3088  break;
3089  case NTV2_FRAMERATE_4795:
3090  numTotalAudioSamples = 1001 * inFrameNumNonInclusive;
3091  break;
3092  case NTV2_FRAMERATE_3000:
3093  numTotalAudioSamples = 1600 * inFrameNumNonInclusive;
3094  break;
3095  case NTV2_FRAMERATE_2997:
3096  // depends on cadenceFrame;
3097  numAudioSamplesFromWholeGroups = ((3*1602) + (2*1601)) * numWholeGroupsOfFive;
3098  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : ((1602 * remainder) - remainder/2);
3099  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3100  break;
3101  case NTV2_FRAMERATE_2500:
3102  numTotalAudioSamples = 1920 * inFrameNumNonInclusive;
3103  break;
3104  case NTV2_FRAMERATE_2400:
3105  numTotalAudioSamples = 2000 * inFrameNumNonInclusive;
3106  break;
3107  case NTV2_FRAMERATE_2398:
3108  numTotalAudioSamples = 2002 * inFrameNumNonInclusive;
3109  break;
3110  case NTV2_FRAMERATE_1500:
3111  numTotalAudioSamples = 3200 * inFrameNumNonInclusive;
3112  break;
3113  case NTV2_FRAMERATE_1498:
3114  // depends on cadenceFrame;
3115  numAudioSamplesFromWholeGroups = ((1*3204) + (4*3203)) * numWholeGroupsOfFive;
3116  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : ((3203 * remainder) + 1);
3117  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3118  break;
3119 #if !defined(NTV2_DEPRECATE_16_0)
3120  case NTV2_FRAMERATE_1900: // Not supported yet
3121  case NTV2_FRAMERATE_1898: // Not supported yet
3122  case NTV2_FRAMERATE_1800: // Not supported yet
3123  case NTV2_FRAMERATE_1798: // Not supported yet
3124 #endif
3125  case NTV2_FRAMERATE_UNKNOWN:
3126  case NTV2_NUM_FRAMERATES:
3127  numTotalAudioSamples = 0;
3128  break;
3129  }
3130  }
3131  else if (inAudioRate == NTV2_AUDIO_96K)
3132  {
3133  switch (inFrameRate)
3134  {
3135  case NTV2_FRAMERATE_12000:
3136  numTotalAudioSamples = 800 * inFrameNumNonInclusive;
3137  break;
3138  case NTV2_FRAMERATE_11988:
3139  numAudioSamplesFromWholeGroups = ((4*801) + (1*800)) * numWholeGroupsOfFive;
3140  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : (801 * remainder);
3141  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3142  break;
3143  case NTV2_FRAMERATE_6000:
3144  numTotalAudioSamples = (800*2) * inFrameNumNonInclusive;
3145  break;
3146  case NTV2_FRAMERATE_5994:
3147  numAudioSamplesFromWholeGroups = ((3*1602) + (2*1601)) * numWholeGroupsOfFive;
3148  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : ((1602 * remainder) - remainder/2);
3149  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3150  break;
3151  case NTV2_FRAMERATE_5000:
3152  numTotalAudioSamples = 1920 * inFrameNumNonInclusive;
3153  break;
3154  case NTV2_FRAMERATE_4800:
3155  numTotalAudioSamples = 2000 * inFrameNumNonInclusive;
3156  break;
3157  case NTV2_FRAMERATE_4795:
3158  numTotalAudioSamples = 2002 * inFrameNumNonInclusive;
3159  break;
3160  case NTV2_FRAMERATE_3000:
3161  numTotalAudioSamples = (1600*2) * inFrameNumNonInclusive;
3162  break;
3163  case NTV2_FRAMERATE_2997:
3164  // depends on cadenceFrame;
3165  numAudioSamplesFromWholeGroups = ((1*3204) + (4*3203)) * numWholeGroupsOfFive;
3166  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : ((3203 * remainder) + 1);
3167  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3168  break;
3169  case NTV2_FRAMERATE_2500:
3170  numTotalAudioSamples = (1920*2) * inFrameNumNonInclusive;
3171  break;
3172  case NTV2_FRAMERATE_2400:
3173  numTotalAudioSamples = (2000*2) * inFrameNumNonInclusive;
3174  break;
3175  case NTV2_FRAMERATE_2398:
3176  numTotalAudioSamples = (2002*2) * inFrameNumNonInclusive;
3177  break;
3178  case NTV2_FRAMERATE_1500:
3179  numTotalAudioSamples = (3200*2) * inFrameNumNonInclusive;
3180  break;
3181  case NTV2_FRAMERATE_1498:
3182  // depends on cadenceFrame;
3183  numAudioSamplesFromWholeGroups = ((1*3204*2) + (4*3203*2)) * numWholeGroupsOfFive;
3184  numAudioSamplesFromRemainder = (remainder == 0) ? 0 : (((3203*2) * remainder) + 2);
3185  numTotalAudioSamples = numAudioSamplesFromWholeGroups + numAudioSamplesFromRemainder;
3186  break;
3187 #if !defined(NTV2_DEPRECATE_16_0)
3188  case NTV2_FRAMERATE_1900: // Not supported yet
3189  case NTV2_FRAMERATE_1898: // Not supported yet
3190  case NTV2_FRAMERATE_1800: // Not supported yet
3191  case NTV2_FRAMERATE_1798: // Not supported yet
3192 #endif
3193  case NTV2_FRAMERATE_UNKNOWN:
3194  case NTV2_NUM_FRAMERATES:
3195  numTotalAudioSamples = 0*2; //haha
3196  break;
3197  }
3198  }
3199 
3200  return numTotalAudioSamples;
3201 }
3202 
3203 double GetAudioSamplesPerSecond (const NTV2AudioRate inAudioRate)
3204 {
3205  static const ULWord sSamplesPerSecond [] = {48000, 96000, 192000, 0};
3206  if (!NTV2_IS_VALID_AUDIO_RATE(inAudioRate))
3207  return 0.00;
3208  return double(sSamplesPerSecond[inAudioRate]);
3209 }
3210 
3211 
3212 // For a given sequenceRate and playRate, given the cadenceFrame it returns how many times we
3213 // repeate the frame to output varicam. If the result is zero then this is an unsupported varicam
3214 // rate.
3215 ULWord GetVaricamRepeatCount (const NTV2FrameRate inSequenceRate, const NTV2FrameRate inPlayRate, const ULWord inCadenceFrame)
3216 {
3217  ULWord result = 0;
3218 
3219  switch (inPlayRate)
3220  {
3221  case NTV2_FRAMERATE_6000:
3222  switch (inSequenceRate)
3223  {
3224  case NTV2_FRAMERATE_1500:
3225  result = 4;
3226  break;
3227  case NTV2_FRAMERATE_2400: // 24 -> 60 2:3|2:3|2:3 ...
3228  //inCadenceFrame %= 2;
3229  switch (inCadenceFrame % 2)
3230  {
3231  case 0:
3232  result = 2;
3233  break;
3234  case 1:
3235  result = 3;
3236  break;
3237  }
3238  break;
3239  case NTV2_FRAMERATE_2500: // 25 -> 60 2:3:2:3:2|2:3:2:3:2 ...
3240  //inCadenceFrame %= 5;
3241  switch (inCadenceFrame % 5)
3242  {
3243  case 0:
3244  case 2:
3245  case 4:
3246  result = 2;
3247  break;
3248  case 1:
3249  case 3:
3250  result = 3;
3251  break;
3252  }
3253  break;
3254  case NTV2_FRAMERATE_3000: // 30 -> 60 2|2|2|2|2|2 ...
3255  result = 2;
3256  break;
3257  case NTV2_FRAMERATE_4800: // 48 -> 60 2:1:1:1|2:1:1:1 ...
3258  //inCadenceFrame %= 4;
3259  switch (inCadenceFrame % 4)
3260  {
3261  case 0:
3262  result = 2;
3263  break;
3264  case 1:
3265  case 2:
3266  case 3:
3267  result = 1;
3268  break;
3269  }
3270  break;
3271  case NTV2_FRAMERATE_5000: // 50 -> 60 2:1:1:1:1|2:1:1:1:1: ...
3272  //inCadenceFrame %= 5;
3273  switch (inCadenceFrame % 5)
3274  {
3275  case 0:
3276  result = 2;
3277  break;
3278  case 1:
3279  case 2:
3280  case 3:
3281  case 4:
3282  result = 1;
3283  break;
3284  }
3285  break;
3286  case NTV2_FRAMERATE_6000: // 60 -> 60 1|1|1|1|1|1 ...
3287  result = 1;
3288  break;
3289  default:
3290  break;
3291  }
3292  break;
3293 
3294  case NTV2_FRAMERATE_5994:
3295  switch (inSequenceRate)
3296  {
3297  case NTV2_FRAMERATE_1498:
3298  result = 4;
3299  break;
3300  case NTV2_FRAMERATE_2398: // 23.98 -> 59.94 2:3|2:3|2:3 ...
3301  //inCadenceFrame %= 2;
3302  switch (inCadenceFrame % 2)
3303  {
3304  case 0:
3305  result = 2;
3306  break;
3307  case 1:
3308  result = 3;
3309  break;
3310  }
3311  break;
3312  case NTV2_FRAMERATE_2997: // 29.97 -> 59.94 2|2|2|2|2|2 ...
3313  result = 2;
3314  break;
3315  case NTV2_FRAMERATE_4795: // 47.95 -> 59.94 2:1:1:1|2:1:1:1 ...
3316  //inCadenceFrame %= 4;
3317  switch (inCadenceFrame % 4)
3318  {
3319  case 0:
3320  result = 2;
3321  break;
3322  case 1:
3323  case 2:
3324  case 3:
3325  result = 1;
3326  break;
3327  }
3328  break;
3329  case NTV2_FRAMERATE_5994: // 59.94 -> 59.94 1|1|1|1|1|1 ...
3330  result = 1;
3331  break;
3332  default:
3333  break;
3334  }
3335  break;
3336 
3337  case NTV2_FRAMERATE_5000:
3338  switch (inSequenceRate)
3339  {
3340  case NTV2_FRAMERATE_2500: // 25 -> 50 2|2|2|2|2| ...
3341  result = 2;
3342  break;
3343  default:
3344  break;
3345  }
3346  break;
3347 
3348  default:
3349  break;
3350  }
3351  return result;
3352 }
3353 
3355 {
3356  switch (inFrameRate)
3357  {
3358  case NTV2_FRAMERATE_12000: return 12000;
3359  case NTV2_FRAMERATE_11988: return 11988;
3360  case NTV2_FRAMERATE_6000: return 6000;
3361  case NTV2_FRAMERATE_5994: return 5994;
3362  case NTV2_FRAMERATE_5000: return 5000;
3363  case NTV2_FRAMERATE_4800: return 4800;
3364  case NTV2_FRAMERATE_4795: return 4795;
3365  case NTV2_FRAMERATE_3000: return 3000;
3366  case NTV2_FRAMERATE_2997: return 2997;
3367  case NTV2_FRAMERATE_2500: return 2500;
3368  case NTV2_FRAMERATE_2400: return 2400;
3369  case NTV2_FRAMERATE_2398: return 2398;
3370  case NTV2_FRAMERATE_1500: return 1500;
3371  case NTV2_FRAMERATE_1498: return 1498;
3372 #if !defined(NTV2_DEPRECATE_16_0)
3373  case NTV2_FRAMERATE_1900: return 1900;
3374  case NTV2_FRAMERATE_1898: return 1898;
3375  case NTV2_FRAMERATE_1800: return 1800;
3376  case NTV2_FRAMERATE_1798: return 1798;
3377 #endif
3378  case NTV2_FRAMERATE_UNKNOWN: break;
3379 #if defined(_DEBUG)
3380  case NTV2_NUM_FRAMERATES: break;
3381 #else
3382  default: break;
3383 #endif
3384  }
3385  return 0;
3386 }
3387 
3388 // GetFrameRateFromScale(long scale, long duration, NTV2FrameRate playFrameRate)
3389 // For a given scale value it returns the associated frame rate. This routine is
3390 // used to calculate and decipher the sequence frame rate.
3391 NTV2FrameRate GetFrameRateFromScale (long scale, long duration, NTV2FrameRate playFrameRate)
3392 {
3394 
3395  // Generally the duration is 100 and in that event the scale will tell us for sure what the
3396  // sequence rate is.
3397  if (duration == 100)
3398  {
3399  switch (scale)
3400  {
3401  case 12000: result = NTV2_FRAMERATE_12000; break;
3402  case 11988: result = NTV2_FRAMERATE_11988; break;
3403  case 6000: result = NTV2_FRAMERATE_6000; break;
3404  case 5994: result = NTV2_FRAMERATE_5994; break;
3405  case 5000: result = NTV2_FRAMERATE_5000; break;
3406  case 4800: result = NTV2_FRAMERATE_4800; break;
3407  case 4795: result = NTV2_FRAMERATE_4795; break;
3408  case 3000: result = NTV2_FRAMERATE_3000; break;
3409  case 2997: result = NTV2_FRAMERATE_2997; break;
3410  case 2500: result = NTV2_FRAMERATE_2500; break;
3411  case 2400: result = NTV2_FRAMERATE_2400; break;
3412  case 2398: result = NTV2_FRAMERATE_2398; break;
3413  case 1500: result = NTV2_FRAMERATE_1500; break;
3414  case 1498: result = NTV2_FRAMERATE_1498; break;
3415  }
3416  }
3417  else if (duration == 0)
3418  {
3419  result = playFrameRate;
3420  }
3421  else
3422  {
3423  float scaleFloat = scale / duration * float(100.0);
3424  long scaleInt = long(scaleFloat);
3425 
3426  // In this case we need to derive the sequence rate based on scale, duration and what
3427  // our playback rate is. So first we break down what we might expect based on our
3428  // playback rate. This gives us some room to look at values that are returned and
3429  // which are not exact based on rounding errors. We can break this check up into two
3430  // camps because the assumption is we don't have to worry about playing back 23.98 fps
3431  // sequence on a 60 fps output and conversly playing back 30 fps sequences on a 59.94
3432  // fps output.
3433  switch (playFrameRate)
3434  {
3435  case NTV2_FRAMERATE_12000:
3436  case NTV2_FRAMERATE_6000:
3437  case NTV2_FRAMERATE_5000:
3438  case NTV2_FRAMERATE_4800:
3439  case NTV2_FRAMERATE_3000:
3440  case NTV2_FRAMERATE_2500:
3441  case NTV2_FRAMERATE_2400:
3442  case NTV2_FRAMERATE_1500:
3443  if (scaleInt <= 1500 + 100)
3444  result = NTV2_FRAMERATE_1500;
3445  else if (scaleInt <= 2400 + 50)
3446  result = NTV2_FRAMERATE_2400;
3447  else if (scaleInt <= 2500 + 100)
3448  result = NTV2_FRAMERATE_2500;
3449  else if (scaleInt <= 3000 + 100)
3450  result = NTV2_FRAMERATE_3000;
3451  else if (scaleInt <= 4800 + 100)
3452  result = NTV2_FRAMERATE_4800;
3453  else if (scaleInt <= 5000 + 100)
3454  result = NTV2_FRAMERATE_5000;
3455  else if (scaleInt <= 6000 + 100)
3456  result = NTV2_FRAMERATE_6000;
3457  else
3458  result = NTV2_FRAMERATE_12000;
3459  break;
3460 
3461  case NTV2_FRAMERATE_11988:
3462  case NTV2_FRAMERATE_5994:
3463  case NTV2_FRAMERATE_4795:
3464  case NTV2_FRAMERATE_2997:
3465  case NTV2_FRAMERATE_2398:
3466  case NTV2_FRAMERATE_1498:
3467  if (scaleInt <= 1498 + 100) // add some fudge factor for rounding errors
3468  result = NTV2_FRAMERATE_1498;
3469  else if (scaleInt <= 2398 + 100)
3470  result = NTV2_FRAMERATE_2398;
3471  else if (scaleInt <= 2997 + 100)
3472  result = NTV2_FRAMERATE_2997;
3473  else if (scaleInt <= 4795 + 100)
3474  result = NTV2_FRAMERATE_4795;
3475  else if (scaleInt <= 5994 + 100)
3476  result = NTV2_FRAMERATE_5994;
3477  else
3478  result = NTV2_FRAMERATE_11988;
3479  break;
3480  default:
3481  break;
3482  }
3483  }
3484  return result;
3485 }
3486 
3487 
3489 {
3490  if (inDenominator == 100)
3491  switch (inNumerator)
3492  {
3493  case 12000: return NTV2_FRAMERATE_12000;
3494  case 11988: return NTV2_FRAMERATE_11988;
3495  case 6000: return NTV2_FRAMERATE_6000;
3496  case 5994: return NTV2_FRAMERATE_5994;
3497  case 5000: return NTV2_FRAMERATE_5000;
3498  case 4800: return NTV2_FRAMERATE_4800;
3499  case 4795: return NTV2_FRAMERATE_4795;
3500  case 3000: return NTV2_FRAMERATE_3000;
3501  case 2997: return NTV2_FRAMERATE_2997;
3502  case 2500: return NTV2_FRAMERATE_2500;
3503  case 2400: return NTV2_FRAMERATE_2400;
3504  case 2398: return NTV2_FRAMERATE_2398;
3505  case 1500: return NTV2_FRAMERATE_1500;
3506  case 1498: return NTV2_FRAMERATE_1498;
3507  default: break;
3508  }
3509  else
3510  {
3511  const ULWord denominator(inDenominator == 1 ? inDenominator * 1000ULL : inDenominator);
3512  const ULWord numerator(inDenominator == 1 ? inNumerator * 1000ULL : inNumerator);
3513  switch (numerator)
3514  {
3515  case 120000: return (denominator == 1000) ? NTV2_FRAMERATE_12000 : NTV2_FRAMERATE_11988;
3516  case 60000: return (denominator == 1000) ? NTV2_FRAMERATE_6000 : NTV2_FRAMERATE_5994;
3517  case 50000: return (denominator == 1000) ? NTV2_FRAMERATE_5000 : NTV2_FRAMERATE_UNKNOWN;
3518  case 48000: return (denominator == 1000) ? NTV2_FRAMERATE_4800 : NTV2_FRAMERATE_4795;
3519  case 30000: return (denominator == 1000) ? NTV2_FRAMERATE_3000 : NTV2_FRAMERATE_2997;
3520  case 25000: return (denominator == 1000) ? NTV2_FRAMERATE_2500 : NTV2_FRAMERATE_UNKNOWN;
3521  case 24000: return (denominator == 1000) ? NTV2_FRAMERATE_2400 : NTV2_FRAMERATE_2398;
3522  case 15000: return (denominator == 1000) ? NTV2_FRAMERATE_1500 : NTV2_FRAMERATE_1498;
3523  default: break;
3524  }
3525  }
3526  return NTV2_FRAMERATE_UNKNOWN;
3527 }
3528 
3529 
3531 {
3533  switch ( videoFormat )
3534  {
3535 
3536  case NTV2_FORMAT_2K_1498:
3537  frameRate = NTV2_FRAMERATE_1498;
3538  break;
3539 
3540  case NTV2_FORMAT_2K_1500:
3541  frameRate = NTV2_FRAMERATE_1500;
3542  break;
3543 
3544  case NTV2_FORMAT_525_2398:
3545  case NTV2_FORMAT_720p_2398:
3551  case NTV2_FORMAT_2K_2398:
3565  frameRate = NTV2_FRAMERATE_2398;
3566  break;
3567 
3568  case NTV2_FORMAT_525_2400:
3574  case NTV2_FORMAT_2K_2400:
3588  frameRate = NTV2_FRAMERATE_2400;
3589  break;
3590 
3591  case NTV2_FORMAT_625_5000:
3593  case NTV2_FORMAT_720p_2500:
3601  case NTV2_FORMAT_2K_2500:
3618  frameRate = NTV2_FRAMERATE_2500;
3619  break;
3620 
3621  case NTV2_FORMAT_525_5994:
3645  frameRate = NTV2_FRAMERATE_2997;
3646  break;
3647 
3670  frameRate = NTV2_FRAMERATE_3000;
3671  break;
3672 
3677  frameRate = NTV2_FRAMERATE_4795;
3678  break;
3679 
3684  frameRate = NTV2_FRAMERATE_4800;
3685  break;
3686 
3687  case NTV2_FORMAT_720p_5000:
3696  frameRate = NTV2_FRAMERATE_5000;
3697  break;
3698 
3699  case NTV2_FORMAT_720p_5994:
3708  frameRate = NTV2_FRAMERATE_5994;
3709  break;
3710 
3711  case NTV2_FORMAT_720p_6000:
3720  frameRate = NTV2_FRAMERATE_6000;
3721  break;
3722 
3725  frameRate = NTV2_FRAMERATE_11988;
3726  break;
3729  frameRate = NTV2_FRAMERATE_12000;
3730  break;
3731 
3732 #if defined (_DEBUG)
3733  // Debug builds warn about missing values
3734  case NTV2_FORMAT_UNKNOWN:
3743  break;
3744 #else
3745  default:
3746  break; // Unsupported -- fail
3747 #endif
3748  }
3749 
3750  return frameRate;
3751 
3752 } // GetNTV2FrameRateFromVideoFormat
3753 
3754 
3756 {
3757  switch (inFrameGeometry)
3758  {
3759  case NTV2_FG_1920x1080: // 1080i, 1080p
3760  case NTV2_FG_1280x720: // 720p
3761  case NTV2_FG_720x486: // ntsc 525i, 525p60
3762  case NTV2_FG_720x576: // pal 625i
3763  case NTV2_FG_2048x1080: // 2k1080p
3764  case NTV2_FG_2048x1556: // 2k1556psf
3765  case NTV2_FG_4x1920x1080: // UHD
3766  case NTV2_FG_4x2048x1080: // 4K
3767  case NTV2_FG_4x3840x2160:
3768  case NTV2_FG_4x4096x2160:
3769  return inFrameGeometry; // No change, already normalized
3770 
3771  // 525i
3772  case NTV2_FG_720x508: return NTV2_FG_720x486; // 720x486 + tall vanc
3773  case NTV2_FG_720x514: return NTV2_FG_720x486; // 720x486 + taller vanc (extra-wide ntsc)
3774 
3775  // 625i
3776  case NTV2_FG_720x598: return NTV2_FG_720x576; // pal 625i + tall vanc
3777  case NTV2_FG_720x612: return NTV2_FG_720x576; // 720x576 + taller vanc (extra-wide pal)
3778 
3779  // 720p
3780  case NTV2_FG_1280x740: return NTV2_FG_1280x720; // 1280x720 + tall vanc
3781 
3782  // 1080
3783  case NTV2_FG_1920x1112: return NTV2_FG_1920x1080; // 1920x1080 + tall vanc
3784  case NTV2_FG_1920x1114: return NTV2_FG_1920x1080; // 1920x1080 + taller vanc
3785 
3786  // 2kx1080
3787  case NTV2_FG_2048x1112: return NTV2_FG_2048x1080; // 2048x1080 + tall vanc
3788  case NTV2_FG_2048x1114: return NTV2_FG_2048x1080; // 2048x1080 + taller vanc
3789 
3790  // 2kx1556 film
3791  case NTV2_FG_2048x1588: return NTV2_FG_2048x1556; // 2048x1556 + tall vanc
3792 
3793 #if defined (_DEBUG)
3794  case NTV2_FG_INVALID: break;
3795 #else
3796  default: break;
3797 #endif
3798  }
3799  return NTV2_FG_INVALID; // fail
3800 }
3801 
3802 
3804 {
3805  if (!NTV2_IS_VALID_VANCMODE(inVancMode))
3806  return NTV2_FG_INVALID; // Invalid vanc mode
3807  if (!NTV2_IS_VALID_NTV2FrameGeometry(inFrameGeometry))
3808  return NTV2_FG_INVALID; // Invalid FG
3809  if (!NTV2_IS_VANCMODE_ON(inVancMode))
3810  return ::GetNormalizedFrameGeometry(inFrameGeometry); // Return normalized
3811 
3812  switch (inFrameGeometry)
3813  {
3814  case NTV2_FG_1920x1080: // 1920x1080 ::NTV2_VANCMODE_OFF
3815  case NTV2_FG_1920x1112: // 1920x1080 ::NTV2_VANCMODE_TALL
3816  case NTV2_FG_1920x1114: // 1920x1080 ::NTV2_VANCMODE_TALLER
3818 
3819  case NTV2_FG_1280x720: // 1280x720, ::NTV2_VANCMODE_OFF
3820  case NTV2_FG_1280x740: // 1280x720 ::NTV2_VANCMODE_TALL
3821  return NTV2_FG_1280x740;
3822 
3823  case NTV2_FG_720x486: // 720x486 ::NTV2_VANCMODE_OFF
3824  case NTV2_FG_720x508: // 720x486 ::NTV2_VANCMODE_TALL
3825  case NTV2_FG_720x514: // 720x486 ::NTV2_VANCMODE_TALLER
3826  return NTV2_IS_VANCMODE_TALL(inVancMode) ? NTV2_FG_720x508 : NTV2_FG_720x514;
3827 
3828  case NTV2_FG_720x576: // 720x576 ::NTV2_VANCMODE_OFF
3829  case NTV2_FG_720x598: // 720x576 ::NTV2_VANCMODE_TALL
3830  case NTV2_FG_720x612: // 720x576 ::NTV2_VANCMODE_TALLER
3831  return NTV2_IS_VANCMODE_TALL(inVancMode) ? NTV2_FG_720x598 : NTV2_FG_720x612;
3832 
3833  case NTV2_FG_2048x1080: // 2048x1080 ::NTV2_VANCMODE_OFF
3834  case NTV2_FG_2048x1112: // 2048x1080 ::NTV2_VANCMODE_TALL
3835  case NTV2_FG_2048x1114: // 2048x1080 ::NTV2_VANCMODE_TALLER
3837 
3838  case NTV2_FG_2048x1556: // 2048x1556 film ::NTV2_VANCMODE_OFF
3839  case NTV2_FG_2048x1588: // 2048x1556 film ::NTV2_VANCMODE_TALL
3840  return NTV2_FG_2048x1588;
3841 
3842  case NTV2_FG_4x1920x1080: // 3840x2160 ::NTV2_VANCMODE_OFF
3843  case NTV2_FG_4x2048x1080: // 4096x2160 ::NTV2_VANCMODE_OFF
3844  case NTV2_FG_4x3840x2160:
3845  case NTV2_FG_4x4096x2160:
3846  return inFrameGeometry; // no tall or taller geometries!
3847 #if defined (_DEBUG)
3848  case NTV2_FG_INVALID: break;
3849 #else
3850  default: break;
3851 #endif
3852  }
3853  return NTV2_FG_INVALID; // fail
3854 }
3855 
3857 {
3859  if (::GetNTV2FrameGeometryWidth(fg) == inFD.GetWidth())
3860  if (::GetNTV2FrameGeometryHeight(fg) == inFD.GetHeight())
3861  return fg;
3862  return NTV2_FG_INVALID;
3863 }
3864 
3866 {
3867  switch (inFG)
3868  {
3869  case NTV2_FG_1920x1080: // 1920x1080 ::NTV2_VANCMODE_OFF
3870  case NTV2_FG_1920x1112: // 1920x1080 ::NTV2_VANCMODE_TALL
3871  case NTV2_FG_1920x1114: // 1920x1080 ::NTV2_VANCMODE_TALLER
3872  case NTV2_FG_1280x720: // 1280x720, ::NTV2_VANCMODE_OFF
3873  case NTV2_FG_1280x740: // 1280x720 ::NTV2_VANCMODE_TALL
3874  case NTV2_FG_720x486: // 720x486 ::NTV2_VANCMODE_OFF
3875  case NTV2_FG_720x508: // 720x486 ::NTV2_VANCMODE_TALL
3876  case NTV2_FG_720x514: // 720x486 ::NTV2_VANCMODE_TALLER
3877  case NTV2_FG_720x576: // 720x576 ::NTV2_VANCMODE_OFF
3878  case NTV2_FG_720x598: // 720x576 ::NTV2_VANCMODE_TALL
3879  case NTV2_FG_720x612: // 720x576 ::NTV2_VANCMODE_TALLER
3880  case NTV2_FG_2048x1080: // 2048x1080 ::NTV2_VANCMODE_OFF
3881  case NTV2_FG_2048x1112: // 2048x1080 ::NTV2_VANCMODE_TALL
3882  case NTV2_FG_2048x1114: // 2048x1080 ::NTV2_VANCMODE_TALLER
3883  case NTV2_FG_2048x1556: // 2048x1556 film ::NTV2_VANCMODE_OFF
3884  case NTV2_FG_2048x1588: // 2048x1556 film ::NTV2_VANCMODE_TALL
3885  return true;
3886 
3887  case NTV2_FG_4x1920x1080: // 3840x2160
3888  case NTV2_FG_4x2048x1080: // 4096x2160
3889  case NTV2_FG_4x3840x2160:
3890  case NTV2_FG_4x4096x2160:
3891  break; // no tall or taller geometries!
3892 #if defined (_DEBUG)
3893  case NTV2_FG_INVALID: break;
3894 #else
3895  default: break;
3896 #endif
3897  }
3898  return false;
3899 }
3900 
3902 {
3903  NTV2GeometrySet result;
3904  switch (inFG)
3905  {
3906  case NTV2_FG_1920x1080: // 1920x1080 ::NTV2_VANCMODE_OFF
3907  case NTV2_FG_1920x1112: // 1920x1080 ::NTV2_VANCMODE_TALL
3908  case NTV2_FG_1920x1114: // 1920x1080 ::NTV2_VANCMODE_TALLER
3909  result.insert(NTV2_FG_1920x1080); result.insert(NTV2_FG_1920x1112); result.insert(NTV2_FG_1920x1114);
3910  break;
3911 
3912  case NTV2_FG_1280x720: // 1280x720, ::NTV2_VANCMODE_OFF
3913  case NTV2_FG_1280x740: // 1280x720 ::NTV2_VANCMODE_TALL
3914  result.insert(NTV2_FG_1280x720); result.insert(NTV2_FG_1280x740);
3915  break;
3916 
3917  case NTV2_FG_720x486: // 720x486 ::NTV2_VANCMODE_OFF
3918  case NTV2_FG_720x508: // 720x486 ::NTV2_VANCMODE_TALL
3919  case NTV2_FG_720x514: // 720x486 ::NTV2_VANCMODE_TALLER
3920  result.insert(NTV2_FG_720x486); result.insert(NTV2_FG_720x508); result.insert(NTV2_FG_720x514);
3921  break;
3922 
3923  case NTV2_FG_720x576: // 720x576 ::NTV2_VANCMODE_OFF
3924  case NTV2_FG_720x598: // 720x576 ::NTV2_VANCMODE_TALL
3925  case NTV2_FG_720x612: // 720x576 ::NTV2_VANCMODE_TALLER
3926  result.insert(NTV2_FG_720x576); result.insert(NTV2_FG_720x598); result.insert(NTV2_FG_720x612);
3927  break;
3928 
3929  case NTV2_FG_2048x1080: // 2048x1080 ::NTV2_VANCMODE_OFF
3930  case NTV2_FG_2048x1112: // 2048x1080 ::NTV2_VANCMODE_TALL
3931  case NTV2_FG_2048x1114: // 2048x1080 ::NTV2_VANCMODE_TALLER
3932  result.insert(NTV2_FG_2048x1080); result.insert(NTV2_FG_2048x1112); result.insert(NTV2_FG_2048x1114);
3933  break;
3934 
3935  case NTV2_FG_2048x1556: // 2048x1556 film ::NTV2_VANCMODE_OFF
3936  case NTV2_FG_2048x1588: // 2048x1556 film ::NTV2_VANCMODE_TALL
3937  result.insert(NTV2_FG_2048x1556); result.insert(NTV2_FG_2048x1588);
3938  break;
3939 
3940  case NTV2_FG_4x1920x1080: // 3840x2160
3941  case NTV2_FG_4x2048x1080: // 4096x2160
3942  case NTV2_FG_4x3840x2160:
3943  case NTV2_FG_4x4096x2160:
3944  result.insert(inFG);
3945  break; // no tall or taller geometries!
3946 #if defined (_DEBUG)
3947  case NTV2_FG_INVALID: break;
3948 #else
3949  default: break;
3950 #endif
3951  }
3952  return result;
3953 }
3954 
3956 {
3957  if (NTV2_IS_TALL_VANC_GEOMETRY(inFG))
3958  return NTV2_VANCMODE_TALL;
3959  else if (NTV2_IS_TALLER_VANC_GEOMETRY(inFG))
3960  return NTV2_VANCMODE_TALLER;
3961  else if (NTV2_IS_VALID_NTV2FrameGeometry(inFG))
3962  return NTV2_VANCMODE_OFF;
3963  return NTV2_VANCMODE_INVALID;
3964 }
3965 
3966 
3968 {
3969  switch (inStandard)
3970  {
3971  case NTV2_STANDARD_720: return NTV2_FG_1280x720; // 720p
3972  case NTV2_STANDARD_525: return NTV2_FG_720x486; // 525i
3973  case NTV2_STANDARD_625: return NTV2_FG_720x576; // 625i
3974 
3975  case NTV2_STANDARD_1080:
3976  case NTV2_STANDARD_1080p: return NTV2_FG_1920x1080; // 1080i, 1080psf, 1080p
3977 
3978  case NTV2_STANDARD_2K: return NTV2_FG_2048x1556; // 2048x1556 film
3979 
3981  case NTV2_STANDARD_2Kx1080i: return NTV2_FG_2048x1080; // 2K1080p/i/psf
3982 
3983  case NTV2_STANDARD_3840x2160p: // UHD
3984  case NTV2_STANDARD_3840HFR: // HFR UHD
3985  case NTV2_STANDARD_3840i: return NTV2_FG_4x1920x1080; // HFR psf
3986 
3987  case NTV2_STANDARD_4096x2160p: // 4K
3988  case NTV2_STANDARD_4096HFR: // HFR 4K
3989  case NTV2_STANDARD_4096i: return NTV2_FG_4x2048x1080; // HFR 4K psf
3990 
3992 
3994 #if defined (_DEBUG)
3995  case NTV2_STANDARD_INVALID: break;
3996 #else
3997  default: break;
3998 #endif
3999  }
4000  return NTV2_FG_INVALID;
4001 }
4002 
4003 NTV2Standard GetStandardFromGeometry (const NTV2FrameGeometry inGeometry, const bool inIsProgressive)
4004 {
4005  switch (inGeometry)
4006  {
4007  case NTV2_FG_1920x1080: // 1920x1080 ::NTV2_VANCMODE_OFF
4008  case NTV2_FG_1920x1112: // 1920x1080 ::NTV2_VANCMODE_TALL
4009  case NTV2_FG_1920x1114: // 1920x1080 ::NTV2_VANCMODE_TALLER
4010  return inIsProgressive ? NTV2_STANDARD_1080p : NTV2_STANDARD_1080;
4011 
4012  case NTV2_FG_1280x720: // 1280x720, ::NTV2_VANCMODE_OFF
4013  case NTV2_FG_1280x740: // 1280x720 ::NTV2_VANCMODE_TALL
4014  return NTV2_STANDARD_720;
4015 
4016  case NTV2_FG_720x486: // 720x486 ::NTV2_VANCMODE_OFF
4017  case NTV2_FG_720x508: // 720x486 ::NTV2_VANCMODE_TALL
4018  case NTV2_FG_720x514: // 720x486 ::NTV2_VANCMODE_TALLER
4019  return NTV2_STANDARD_525;
4020 
4021  case NTV2_FG_720x576: // 720x576 ::NTV2_VANCMODE_OFF
4022  case NTV2_FG_720x598: // 720x576 ::NTV2_VANCMODE_TALL
4023  case NTV2_FG_720x612: // 720x576 ::NTV2_VANCMODE_TALLER
4024  return NTV2_STANDARD_625;
4025 
4026  case NTV2_FG_2048x1080: // 2048x1080 ::NTV2_VANCMODE_OFF
4027  case NTV2_FG_2048x1112: // 2048x1080 ::NTV2_VANCMODE_TALL
4028  case NTV2_FG_2048x1114: // 2048x1080 ::NTV2_VANCMODE_TALLER
4029  return inIsProgressive ? NTV2_STANDARD_2Kx1080p : NTV2_STANDARD_2Kx1080i;
4030 
4031  case NTV2_FG_2048x1556: // 2048x1556 film ::NTV2_VANCMODE_OFF
4032  case NTV2_FG_2048x1588: // 2048x1556 film ::NTV2_VANCMODE_TALL
4033  return NTV2_STANDARD_2K;
4034 
4035  case NTV2_FG_4x1920x1080: // 3840x2160
4036  return inIsProgressive ? NTV2_STANDARD_3840x2160p : NTV2_STANDARD_3840i; // NTV2_STANDARD_3840HFR
4037 
4038  case NTV2_FG_4x2048x1080: // 4096x2160
4039  return inIsProgressive ? NTV2_STANDARD_4096x2160p : NTV2_STANDARD_4096i; // NTV2_STANDARD_4096HFR
4040 
4041  case NTV2_FG_4x3840x2160: // 4320x7680 uhd 8K
4042  return NTV2_STANDARD_7680;
4043 
4044  case NTV2_FG_4x4096x2160: // 4320x8192 8K
4045  return NTV2_STANDARD_8192;
4046 
4047 #if defined (_DEBUG)
4048  case NTV2_FG_INVALID: break;
4049 #else
4050  default: break;
4051 #endif
4052  }
4053  return NTV2_STANDARD_INVALID;
4054 }
4055 
4056 
4057 bool NTV2DeviceCanDoFormat (const NTV2DeviceID inDeviceID,
4058  const NTV2FrameRate inFrameRate,
4059  const NTV2FrameGeometry inFrameGeometry,
4060  const NTV2Standard inStandard)
4061 { // DEPRECATED FUNCTION
4062  // This implementation is very inefficient, but...
4063  // a) this function is deprecated;
4064  // b) nobody should be calling it (they should be calling NTV2DeviceCanDoVideoFormat instead)
4065  // c) they shouldn't be calling it every frame.
4066  // We could make it efficient by creating a static global rate/geometry/standard-to-videoFormat
4067  // map, but that has race/deadlock issues.
4068 
4069  const NTV2FrameGeometry fg (::GetNormalizedFrameGeometry(inFrameGeometry));
4070  // Look for a video format that matches the given frame rate, geometry and standard...
4072  {
4073  if (!NTV2_IS_VALID_VIDEO_FORMAT(vFmt))
4074  continue;
4076  const NTV2Standard std (::GetNTV2StandardFromVideoFormat(vFmt));
4078  if (fr == inFrameRate && std == inStandard && fg == geo)
4079  return ::NTV2DeviceCanDoVideoFormat(inDeviceID, vFmt);
4080  }
4081  return false;
4082 }
4083 
4085 {
4087  return fd.GetRasterHeight(/*visOnly?*/false); // Include VANC
4088 }
4089 
4091 {
4093  return fd.GetRasterWidth();
4094 }
4095 
4096 
4097 // Displayable width of format, not counting HANC/VANC
4099 {
4100  const NTV2FormatDescriptor fd (inVideoFormat, NTV2_FBF_8BIT_YCBCR);
4101  return fd.GetRasterWidth();
4102 } // GetDisplayWidth
4103 
4104 
4105 // Displayable height of format, not counting HANC/VANC
4107 {
4108  const NTV2FormatDescriptor fd (inVideoFormat, NTV2_FBF_8BIT_YCBCR);
4109  return fd.GetVisibleRasterHeight();
4110 } // GetDisplayHeight
4111 
4112 
4113 
4114 // NTV2SmpteLineNumber::NTV2SmpteLineNumber (const NTV2Standard inStandard)
4115 // IMPLEMENTATION MOVED INTO 'ntv2formatdescriptor.cpp'
4116 // SO AS TO USE SAME LineNumbersF1/LineNumbersF2 TABLES
4117 
4119 {
4120  if (!NTV2_IS_VALID_FIELD (inFieldID))
4121  return 0;
4122 
4123  if (inFieldID == NTV2_FIELD0)
4124  return firstFieldTop ? smpteFirstActiveLine : smpteSecondActiveLine;
4125  else
4126  return firstFieldTop ? smpteSecondActiveLine : smpteFirstActiveLine;
4127 }
4128 
4129 
4130 ostream & NTV2SmpteLineNumber::Print (ostream & inOutStream) const
4131 {
4132  if (!IsValid ())
4133  inOutStream << "INVALID ";
4134  inOutStream << "SMPTELineNumber(";
4135  if (IsValid ())
4136  inOutStream << "1st=" << smpteFirstActiveLine << (firstFieldTop ? "(top)" : "")
4137  << ", 2nd=" << smpteSecondActiveLine << (firstFieldTop ? "" : "(top)")
4138  << ", std=" << ::NTV2StandardToString (mStandard) << ")";
4139  else
4140  inOutStream << "INVALID)";
4141  return inOutStream;
4142 }
4143 
4144 
4145 string NTV2SmpteLineNumber::PrintLineNumber (const ULWord inLineOffset, const NTV2FieldID inRasterFieldID) const
4146 {
4147  ostringstream oss;
4148  if (NTV2_IS_VALID_FIELD (inRasterFieldID) && !NTV2_IS_PROGRESSIVE_STANDARD (mStandard))
4149  oss << "F" << (inRasterFieldID == 0 ? "1" : "2") << " ";
4150  oss << "L" << dec << inLineOffset+GetFirstActiveLine(inRasterFieldID);
4151  return oss.str();
4152 }
4153 
4154 
4155 string NTV2ACFrameRange::setFromString (const string & inStr)
4156 {
4157  makeInvalid();
4158  if (inStr.empty())
4159  return "Frame count/range not specified";
4160  const bool hasCount(inStr.find('@') != string::npos);
4161  const bool hasRange(inStr.find('-') != string::npos);
4162  NTV2StringList strs;
4163  if (hasCount && hasRange)
4164  return "'@' and '-' cannot both be specified";
4165  else if (hasCount)
4166  aja::split(inStr, '@', strs);
4167  else if (hasRange)
4168  aja::split(inStr, '-', strs);
4169  else
4170  strs.push_back(inStr);
4171  if (strs.empty())
4172  return "No frame count/range values parsed";
4173  if (strs.size() > 2)
4174  return "More than 2 frame count/range values parsed";
4175  if (hasCount || hasRange)
4176  if (strs.size() != 2)
4177  return "Expected exactly 2 frame count/range values";
4178 
4179  // Check that all characters are decimal digits...
4180  for (size_t strNdx(0); strNdx < strs.size(); strNdx++)
4181  { string str(strs.at(strNdx));
4182  if (aja::strip(str).empty())
4183  return "Expected unsigned decimal integer value";
4184  for (size_t chNdx(0); chNdx < str.length(); chNdx++)
4185  if (!isdigit(str.at(chNdx)))
4186  return "Non-digit character encountered in '" + str + "'";
4187  }
4188 
4189  UWordSequence numbers;
4190  for (NTV2StringListConstIter it(strs.begin()); it != strs.end(); ++it)
4191  {
4192  string str(*it);
4193  numbers.push_back(UWord(aja::stoul(aja::strip(str))));
4194  }
4195  bool isValid(false);
4196  if (hasCount)
4197  isValid = setRangeWithCount(numbers[0], numbers[1]);
4198  else if (hasRange)
4199  isValid = setExactRange(numbers[0], numbers[1]);
4200  else
4201  isValid = setCountOnly(numbers[0]);
4202  return isValid ? "" : "First frame past last frame";
4203 }
4204 
4205 string NTV2ACFrameRange::toString (const bool inNormalized) const
4206 {
4207  ostringstream oss;
4208  if (inNormalized)
4209  {
4210  if (!valid())
4211  ;
4212  else if (isFrameRange())
4213  {
4214  if (false)
4215  oss << DEC(count()) << "@" << DEC(firstFrame());
4216  else
4217  oss << DEC(firstFrame()) << "-" << DEC(lastFrame());
4218  }
4219  else
4220  oss << DEC(count());
4221  }
4222  else
4223  {
4224  if (!valid())
4225  oss << "<invalid>";
4226  else if (isFrameRange())
4227  oss << "Frames " << DEC(firstFrame()) << "-" << DEC(lastFrame()) << " (" << DEC(lastFrame()-firstFrame()+1) << "@" << DEC(firstFrame()) << ")";
4228  else
4229  oss << DEC(count()) << " frames (auto-allocated)";
4230  }
4231  return oss.str();
4232 }
4233 
4234 
4235 // More UI-friendly versions of above (used in Cables app)...
4236 static const char * m31Presets [M31_NUMVIDEOPRESETS] =
4237 {
4238  "FILE 720x480 420 Planar 8 Bit 59.94i", // M31_FILE_720X480_420_8_5994i // 0
4239  "FILE 720x480 420 Planar 8 Bit 59.94p", // M31_FILE_720X480_420_8_5994p // 1
4240  "FILE 720x480 420 Planar 8 Bit 60i", // M31_FILE_720X480_420_8_60i // 2
4241  "FILE 720x480 420 Planar 8 Bit 60p", // M31_FILE_720X480_420_8_60p // 3
4242  "FILE 720x480 422 Planar 10 Bit 59.94i", // M31_FILE_720X480_422_10_5994i // 4
4243  "FILE 720x480 422 Planar 10 Bit 59.94p", // M31_FILE_720X480_422_10_5994p // 5
4244  "FILE 720x480 422 Planar 10 Bit 60i", // M31_FILE_720X480_422_10_60i // 6
4245  "FILE 720x480 422 Planar 10 Bit 60p", // M31_FILE_720X480_422_10_60p // 7
4246 
4247  "FILE 720x576 420 Planar 8 Bit 50i", // M31_FILE_720X576_420_8_50i // 8
4248  "FILE 720x576 420 Planar 8 Bit 50p", // M31_FILE_720X576_420_8_50p // 9
4249  "FILE 720x576 422 Planar 10 Bit 50i", // M31_FILE_720X576_422_10_50i // 10
4250  "FILE 720x576 422 Planar 10 Bit 50p", // M31_FILE_720X576_422_10_50p // 11
4251 
4252  "FILE 1280x720 420 Planar 8 Bit 2398p", // M31_FILE_1280X720_420_8_2398p // 12
4253  "FILE 1280x720 420 Planar 8 Bit 24p", // M31_FILE_1280X720_420_8_24p // 13
4254  "FILE 1280x720 420 Planar 8 Bit 25p", // M31_FILE_1280X720_420_8_25p // 14
4255  "FILE 1280x720 420 Planar 8 Bit 29.97p", // M31_FILE_1280X720_420_8_2997p // 15
4256  "FILE 1280x720 420 Planar 8 Bit 30p", // M31_FILE_1280X720_420_8_30p // 16
4257  "FILE 1280x720 420 Planar 8 Bit 50p", // M31_FILE_1280X720_420_8_50p // 17
4258  "FILE 1280x720 420 Planar 8 Bit 59.94p", // M31_FILE_1280X720_420_8_5994p // 18
4259  "FILE 1280x720 420 Planar 8 Bit 60p", // M31_FILE_1280X720_420_8_60p // 19
4260 
4261  "FILE 1280x720 422 Planar 10 Bit 2398p", // M31_FILE_1280X720_422_10_2398p // 20
4262  "FILE 1280x720 422 Planar 10 Bit 25p", // M31_FILE_1280X720_422_10_24p // 21
4263  "FILE 1280x720 422 Planar 10 Bit 25p", // M31_FILE_1280X720_422_10_25p // 22
4264  "FILE 1280x720 422 Planar 10 Bit 29.97p", // M31_FILE_1280X720_422_10_2997p // 23
4265  "FILE 1280x720 422 Planar 10 Bit 30p", // M31_FILE_1280X720_422_10_30p // 24
4266  "FILE 1280x720 422 Planar 10 Bit 50p", // M31_FILE_1280X720_422_10_50p // 25
4267  "FILE 1280x720 422 Planar 10 Bit 59.94p", // M31_FILE_1280X720_422_10_5994p // 26
4268  "FILE 1280x720 422 Planar 10 Bit 60p", // M31_FILE_1280X720_422_10_60p // 27
4269 
4270  "FILE 1920x1080 420 Planar 8 Bit 2398p", // M31_FILE_1920X1080_420_8_2398p // 28
4271  "FILE 1920x1080 420 Planar 8 Bit 24p", // M31_FILE_1920X1080_420_8_24p // 29
4272  "FILE 1920x1080 420 Planar 8 Bit 25p", // M31_FILE_1920X1080_420_8_25p // 30
4273  "FILE 1920x1080 420 Planar 8 Bit 29.97p", // M31_FILE_1920X1080_420_8_2997p // 31
4274  "FILE 1920x1080 420 Planar 8 Bit 30p", // M31_FILE_1920X1080_420_8_30p // 32
4275  "FILE 1920x1080 420 Planar 8 Bit 50i", // M31_FILE_1920X1080_420_8_50i // 33
4276  "FILE 1920x1080 420 Planar 8 Bit 50p", // M31_FILE_1920X1080_420_8_50p // 34
4277  "FILE 1920x1080 420 Planar 8 Bit 59.94i", // M31_FILE_1920X1080_420_8_5994i // 35
4278  "FILE 1920x1080 420 Planar 8 Bit 59.94p", // M31_FILE_1920X1080_420_8_5994p // 36
4279  "FILE 1920x1080 420 Planar 8 Bit 60i", // M31_FILE_1920X1080_420_8_60i // 37
4280  "FILE 1920x1080 420 Planar 8 Bit 60p", // M31_FILE_1920X1080_420_8_60p // 38
4281 
4282  "FILE 1920x1080 422 Planar 10 Bit 2398p", // M31_FILE_1920X1080_422_10_2398p // 39
4283  "FILE 1920x1080 422 Planar 10 Bit 24p", // M31_FILE_1920X1080_422_10_24p // 40
4284  "FILE 1920x1080 422 Planar 10 Bit 25p", // M31_FILE_1920X1080_422_10_25p // 41
4285  "FILE 1920x1080 422 Planar 10 Bit 29.97p", // M31_FILE_1920X1080_422_10_2997p // 42
4286  "FILE 1920x1080 422 Planar 10 Bit 30p", // M31_FILE_1920X1080_422_10_30p // 43
4287  "FILE 1920x1080 422 Planar 10 Bit 50i", // M31_FILE_1920X1080_422_10_50i // 44
4288  "FILE 1920x1080 422 Planar 10 Bit 50p", // M31_FILE_1920X1080_422_10_50p // 45
4289  "FILE 1920x1080 422 Planar 10 Bit 59.94i", // M31_FILE_1920X1080_422_10_5994i // 46
4290  "FILE 1920x1080 422 Planar 10 Bit 59.94p", // M31_FILE_1920X1080_422_10_5994p // 47
4291  "FILE 1920x1080 422 Planar 10 Bit 60i", // M31_FILE_1920X1080_422_10_60i // 48
4292  "FILE 1920x1080 422 Planar 10 Bit 60p", // M31_FILE_1920X1080_422_10_60p // 49
4293 
4294  "FILE 2048x1080 420 Planar 8 Bit 2398p", // M31_FILE_2048X1080_420_8_2398p // 50
4295  "FILE 2048x1080 420 Planar 8 Bit 24p", // M31_FILE_2048X1080_420_8_24p // 51
4296  "FILE 2048x1080 420 Planar 8 Bit 25p", // M31_FILE_2048X1080_420_8_25p // 52
4297  "FILE 2048x1080 420 Planar 8 Bit 29.97p", // M31_FILE_2048X1080_420_8_2997p // 53
4298  "FILE 2048x1080 420 Planar 8 Bit 30p", // M31_FILE_2048X1080_420_8_30p // 54
4299  "FILE 2048x1080 420 Planar 8 Bit 50p", // M31_FILE_2048X1080_420_8_50p // 55
4300  "FILE 2048x1080 420 Planar 8 Bit 59.94p", // M31_FILE_2048X1080_420_8_5994p // 56
4301  "FILE 2048x1080 420 Planar 8 Bit 60p", // M31_FILE_2048X1080_420_8_60p // 57
4302 
4303  "FILE 2048x1080 422 Planar 10 Bit 2398p", // M31_FILE_2048X1080_422_10_2398p // 58
4304  "FILE 2048x1080 422 Planar 10 Bit 24p", // M31_FILE_2048X1080_422_10_24p // 59
4305  "FILE 2048x1080 422 Planar 10 Bit 25p", // M31_FILE_2048X1080_422_10_25p // 60
4306  "FILE 2048x1080 422 Planar 10 Bit 29.97p", // M31_FILE_2048X1080_422_10_2997p // 61
4307  "FILE 2048x1080 422 Planar 10 Bit 30p", // M31_FILE_2048X1080_422_10_30p // 62
4308  "FILE 2048x1080 422 Planar 10 Bit 50p", // M31_FILE_2048X1080_422_10_50p // 63
4309  "FILE 2048x1080 422 Planar 10 Bit 59.94p", // M31_FILE_2048X1080_422_10_5994p // 64
4310  "FILE 2048x1080 422 Planar 10 Bit 60p", // M31_FILE_2048X1080_422_10_60p // 65
4311 
4312  "FILE 3840x2160 420 Planar 8 Bit 2398p", // M31_FILE_3840X2160_420_8_2398p // 66
4313  "FILE 3840x2160 420 Planar 8 Bit 24p", // M31_FILE_3840X2160_420_8_24p // 67
4314  "FILE 3840x2160 420 Planar 8 Bit 25p", // M31_FILE_3840X2160_420_8_25p // 68
4315  "FILE 3840x2160 420 Planar 8 Bit 29.97p", // M31_FILE_3840X2160_420_8_2997p // 69
4316  "FILE 3840x2160 420 Planar 8 Bit 30p", // M31_FILE_3840X2160_420_8_30p // 70
4317  "FILE 3840x2160 420 Planar 8 Bit 50p", // M31_FILE_3840X2160_420_8_50p // 71
4318  "FILE 3840x2160 420 Planar 8 Bit 59.94p", // M31_FILE_3840X2160_420_8_5994p // 72
4319  "FILE 3840x2160 420 Planar 8 Bit 60p", // M31_FILE_3840X2160_420_8_60p // 73
4320 
4321  "FILE 3840x2160 420 Planar 10 Bit 50p", // M31_FILE_3840X2160_420_10_50p // 74
4322  "FILE 3840x2160 420 Planar 10 Bit 59.94p", // M31_FILE_3840X2160_420_10_5994p // 75
4323  "FILE 3840x2160 420 Planar 10 Bit 60p", // M31_FILE_3840X2160_420_10_60p // 76
4324 
4325  "FILE 3840x2160 422 Planar 8 Bit 2398p", // M31_FILE_3840X2160_422_8_2398p // 77
4326  "FILE 3840x2160 422 Planar 8 Bit 24p", // M31_FILE_3840X2160_422_8_24p // 78
4327  "FILE 3840x2160 422 Planar 8 Bit 25p", // M31_FILE_3840X2160_422_8_25p // 79
4328  "FILE 3840x2160 422 Planar 8 Bit 29.97p", // M31_FILE_3840X2160_422_8_2997p // 80
4329  "FILE 3840x2160 422 Planar 8 Bit 30p", // M31_FILE_3840X2160_422_8_30p // 81
4330  "FILE 3840x2160 422 Planar 8 Bit 50p", // M31_FILE_3840X2160_422_8_60p // 82
4331  "FILE 3840x2160 422 Planar 8 Bit 59.94p", // M31_FILE_3840X2160_422_8_5994p // 83
4332  "FILE 3840x2160 422 Planar 8 Bit 60p", // M31_FILE_3840X2160_422_8_60p // 84
4333 
4334  "FILE 3840x2160 422 Planar 10 Bit 2398p", // M31_FILE_3840X2160_422_10_2398p // 85
4335  "FILE 3840x2160 422 Planar 10 Bit 24p", // M31_FILE_3840X2160_422_10_24p // 86
4336  "FILE 3840x2160 422 Planar 10 Bit 25p", // M31_FILE_3840X2160_422_10_25p // 87
4337  "FILE 3840x2160 422 Planar 10 Bit 29.97p", // M31_FILE_3840X2160_422_10_2997p // 88
4338  "FILE 3840x2160 422 Planar 10 Bit 30p", // M31_FILE_3840X2160_422_10_30p // 89
4339  "FILE 3840x2160 422 Planar 10 Bit 50p", // M31_FILE_3840X2160_422_10_50p // 90
4340  "FILE 3840x2160 422 Planar 10 Bit 59.94p", // M31_FILE_3840X2160_422_10_5994p // 91
4341  "FILE 3840x2160 422 Planar 10 Bit 60p", // M31_FILE_3840X2160_422_10_60p // 92
4342 
4343  "FILE 4096x2160 420 Planar 10 Bit 5994p", // M31_FILE_4096X2160_420_10_5994p, // 93
4344  "FILE 4096x2160 420 Planar 10 Bit 60p", // M31_FILE_4096X2160_420_10_60p, // 94
4345  "FILE 4096x2160 422 Planar 10 Bit 50p", // M31_FILE_4096X2160_422_10_50p, // 95
4346  "FILE 4096x2160 422 Planar 10 Bit 5994p IOnly", // M31_FILE_4096X2160_422_10_5994p_IF, // 96
4347  "FILE 4096x2160 422 Planar 10 Bit 60p IOnly", // M31_FILE_4096X2160_422_10_60p_IF, // 97
4348 
4349  "VIF 720x480 420 Planar 8 Bit 59.94i", // M31_VIF_720X480_420_8_5994i // 98
4350  "VIF 720x480 420 Planar 8 Bit 59.94p", // M31_VIF_720X480_420_8_5994p // 99
4351  "VIF 720x480 420 Planar 8 Bit 60i", // M31_VIF_720X480_420_8_60i // 100
4352  "VIF 720x480 420 Planar 8 Bit 60p", // M31_VIF_720X480_420_8_60p // 101
4353  "VIF 720x480 422 Planar 10 Bit 59.94i", // M31_VIF_720X480_422_10_5994i // 102
4354  "VIF 720x480 422 Planar 10 Bit 59.94p", // M31_VIF_720X480_422_10_5994p // 103
4355  "VIF 720x480 422 Planar 10 Bit 60i", // M31_VIF_720X480_422_10_60i // 104
4356  "VIF 720x480 422 Planar 10 Bit 60p", // M31_VIF_720X480_422_10_60p // 105
4357 
4358  "VIF 720x576 420 Planar 8 Bit 50i", // M31_VIF_720X576_420_8_50i // 106
4359  "VIF 720x576 420 Planar 8 Bit 50p", // M31_VIF_720X576_420_8_50p // 107
4360  "VIF 720x576 422 Planar 10 Bit 50i", // M31_VIF_720X576_422_10_50i // 108
4361  "VIF 720x576 422 Planar 10 Bit 50p", // M31_VIF_720X576_422_10_50p // 109
4362 
4363  "VIF 1280x720 420 Planar 8 Bit 50p", // M31_VIF_1280X720_420_8_50p // 110
4364  "VIF 1280x720 420 Planar 8 Bit 59.94p", // M31_VIF_1280X720_420_8_5994p // 111
4365  "VIF 1280x720 420 Planar 8 Bit 60p", // M31_VIF_1280X720_420_8_60p // 112
4366  "VIF 1280x720 422 Planar 10 Bit 50p", // M31_VIF_1280X720_422_10_50p // 113
4367  "VIF 1280x720 422 Planar 10 Bit 59.94p", // M31_VIF_1280X720_422_10_5994p // 114
4368  "VIF 1280x720 422 Planar 10 Bit 60p", // M31_VIF_1280X720_422_10_60p // 115
4369 
4370  "VIF 1920x1080 420 Planar 8 Bit 50i", // M31_VIF_1920X1080_420_8_50i // 116
4371  "VIF 1920x1080 420 Planar 8 Bit 50p", // M31_VIF_1920X1080_420_8_50p // 117
4372  "VIF 1920x1080 420 Planar 8 Bit 59.94i", // M31_VIF_1920X1080_420_8_5994i // 118
4373  "VIF 1920x1080 420 Planar 8 Bit 59.94p", // M31_VIF_1920X1080_420_8_5994p // 119
4374  "VIF 1920x1080 420 Planar 8 Bit 60i", // M31_VIF_1920X1080_420_8_60i // 120
4375  "VIF 1920x1080 420 Planar 8 Bit 60p", // M31_VIF_1920X1080_420_8_60p // 121
4376  "VIF 1920x1080 420 Planar 10 Bit 50i", // M31_VIF_1920X1080_420_10_50i // 122
4377  "VIF 1920x1080 420 Planar 10 Bit 50p", // M31_VIF_1920X1080_420_10_50p // 123
4378  "VIF 1920x1080 420 Planar 10 Bit 59.94i", // M31_VIF_1920X1080_420_10_5994i // 124
4379  "VIF 1920x1080 420 Planar 10 Bit 59.94p", // M31_VIF_1920X1080_420_10_5994p // 125
4380  "VIF 1920x1080 420 Planar 10 Bit 60i", // M31_VIF_1920X1080_420_10_60i // 126
4381  "VIF 1920x1080 420 Planar 10 Bit 60p", // M31_VIF_1920X1080_420_10_60p // 127
4382  "VIF 1920x1080 422 Planar 10 Bit 59.94i", // M31_VIF_1920X1080_422_10_5994i // 128
4383  "VIF 1920x1080 422 Planar 10 Bit 59.94p", // M31_VIF_1920X1080_422_10_5994p // 129
4384  "VIF 1920x1080 422 Planar 10 Bit 60i", // M31_VIF_1920X1080_422_10_60i // 130
4385  "VIF 1920x1080 422 Planar 10 Bit 60p", // M31_VIF_1920X1080_422_10_60p // 131
4386 
4387  "VIF 3840x2160 420 Planar 8 Bit 30p", // M31_VIF_3840X2160_420_8_30p // 132
4388  "VIF 3840x2160 420 Planar 8 Bit 50p", // M31_VIF_3840X2160_420_8_50p // 133
4389  "VIF 3840x2160 420 Planar 8 Bit 59.94p", // M31_VIF_3840X2160_420_8_5994p // 134
4390  "VIF 3840x2160 420 Planar 8 Bit 60p", // M31_VIF_3840X2160_420_8_5994p // 135
4391  "VIF 3840x2160 420 Planar 10 Bit 50p", // M31_VIF_3840X2160_420_8_60p // 136
4392  "VIF 3840x2160 420 Planar 10 Bit 59.94p", // M31_VIF_3840X2160_420_8_60p // 137
4393  "VIF 3840x2160 420 Planar 10 Bit 60p", // M31_VIF_3840X2160_420_10_5994p // 138
4394 
4395  "VIF 3840x2160 422 Planar 10 Bit 30p", // M31_VIF_3840X2160_422_10_30p // 139
4396  "VIF 3840x2160 422 Planar 10 Bit 50p", // M31_VIF_3840X2160_422_10_50p // 140
4397  "VIF 3840x2160 422 Planar 10 Bit 59.94p", // M31_VIF_3840X2160_422_10_5994p // 141
4398  "VIF 3840x2160 422 Planar 10 Bit 60p", // M31_VIF_3840X2160_422_10_60p // 142
4399 };
4400 
4401 // Extracts a channel pair or all channels from the
4402 // NTV2 channel buffer that is retrieved from the hardware.
4403 int RecordCopyAudio(PULWord pAja, PULWord pSR, int iStartSample, int iNumBytes, int iChan0,
4404  int iNumChans, bool bKeepAudio24Bits)
4405 {
4406  const int SAMPLE_SIZE = NTV2_NUMAUDIO_CHANNELS * NTV2_AUDIOSAMPLESIZE;
4407 
4408  // Insurance to prevent bogus array sizes causing havoc
4409 // if (iNumBytes > 48048) // 23.98 == 2002 * 24
4410 // iNumBytes = 48048;
4411 
4412  // Adjust the offset of the first valid channel
4413  if (iStartSample)
4414  {
4415  iChan0 += (NTV2_NUMAUDIO_CHANNELS - iStartSample);
4416  }
4417 
4418  // Driver records audio to offset 24 bytes
4419  PULWord pIn = &pAja[NTV2_NUMAUDIO_CHANNELS];
4420  UWord * puwOut = reinterpret_cast<UWord*>(pSR);
4421 
4422  // If our transfer size has a remainder and our chans are in it,
4423  // adjust number samples
4424  int iNumSamples = iNumBytes / SAMPLE_SIZE;
4425  int iMod = (iNumBytes % SAMPLE_SIZE) / 4;
4426  if (iMod > iChan0)
4427  iNumSamples++;
4428  // else if we have remainder with chans && chans total > number of chans
4429  // reduce start offset by the number of chans
4430  else if (iMod && iChan0 >= NTV2_NUMAUDIO_CHANNELS)
4431  {
4432  iNumSamples++;
4433  iChan0 -= NTV2_NUMAUDIO_CHANNELS;
4434  }
4435  // else if no remainder but start sample adjustment gives more chans
4436  // than number of chans, drop the start offset back by num chans
4437  else if (iChan0 >= NTV2_NUMAUDIO_CHANNELS)
4438  {
4439  iChan0 -= NTV2_NUMAUDIO_CHANNELS;
4440  }
4441 
4442  // Copy incoming audio to the outgoing array
4443  if (bKeepAudio24Bits)
4444  {
4445  for (int s = 0; s < iNumSamples; s++)
4446  {
4447  for (int c = iChan0; c < iChan0 + iNumChans; c++)
4448  {
4449  *pSR++ = pIn[c];
4450  }
4451 
4452  pIn += NTV2_NUMAUDIO_CHANNELS;
4453  }
4454  }
4455  else // convert audio to 16 bits
4456  {
4457  for (int s = 0; s < iNumSamples; s++)
4458  {
4459  for (int c = iChan0; c < iChan0 + iNumChans; c++)
4460  {
4461  *puwOut++ = UWord(pIn[c] >> 16);
4462  }
4463 
4464  pIn += NTV2_NUMAUDIO_CHANNELS;
4465  }
4466  }
4467 
4468  return iNumSamples;
4469 }
4470 
4471 #include "math.h"
4472 // M_PI is defined on RedHat Linux 9 in math.h
4473 #ifndef M_PI
4474 #define M_PI (3.14159265358979323846)
4475 #endif
4476 
4477 
4478 bool AddAudioTone ( ULWord & outNumBytesWritten,
4479  NTV2Buffer & inAudioBuffer,
4480  ULWord & inOutCurrentSample,
4481  const ULWord inNumSamples,
4482  const double inSampleRate,
4483  const double inAmplitude,
4484  const double inFrequency,
4485  const ULWord inNumBitsPerSample,
4486  const bool inByteSwap,
4487  const ULWord inNumChannels)
4488 {
4489  outNumBytesWritten = 0;
4490  if (inAudioBuffer.IsNULL())
4491  return false; // NULL buffer
4492 
4493  const ULWord numBytes (4 * inNumSamples * inNumChannels);
4494  if (inAudioBuffer.GetByteCount() < numBytes)
4495  return false; // buffer too small
4496 
4497  double j (inOutCurrentSample);
4498  const double cycleLength (inSampleRate / inFrequency);
4499  const double scale (double(ULWord(1 << (inNumBitsPerSample - 1))) - 1.0);
4500  ULWord * pAudioBuffer(inAudioBuffer);
4501  NTV2_ASSERT(pAudioBuffer);
4502 
4503  for (ULWord i(0); i < inNumSamples; i++)
4504  {
4505  const double nextFloat = double(::sin (j / cycleLength * (M_PI * 2.0)) * inAmplitude);
4506  LWord value = LWord((nextFloat * scale) + double(0.5));
4507 
4508  if (inByteSwap)
4509  value = LWord(NTV2EndianSwap32(value));
4510 
4511  for (ULWord channel(0); channel < inNumChannels; channel++)
4512  *pAudioBuffer++ = ULWord(value);
4513 
4514  j += 1.0;
4515  if (j > cycleLength)
4516  j -= cycleLength;
4517  inOutCurrentSample++;
4518  } // for each sample
4519 
4520  outNumBytesWritten = numBytes;
4521  return true;
4522 
4523 } // AddAudioTone (NTV2Buffer)
4524 
4525 
4526 ULWord AddAudioTone ( ULWord * pAudioBuffer,
4527  ULWord & inOutCurrentSample,
4528  const ULWord inNumSamples,
4529  const double inSampleRate,
4530  const double inAmplitude,
4531  const double inFrequency,
4532  const ULWord inNumBits,
4533  const bool inByteSwap,
4534  const ULWord inNumChannels)
4535 {
4536  double j (inOutCurrentSample);
4537  const double cycleLength (inSampleRate / inFrequency);
4538  const double scale (double (ULWord (1 << (inNumBits - 1))) - 1.0);
4539 
4540  if (pAudioBuffer)
4541  {
4542  for (ULWord i = 0; i < inNumSamples; i++)
4543  {
4544  const double nextFloat = double(::sin (j / cycleLength * (M_PI * 2.0)) * inAmplitude);
4545  LWord value = LWord((nextFloat * scale) + double(0.5));
4546 
4547  if (inByteSwap)
4548  value = LWord(NTV2EndianSwap32(value)); //odprintf("%f",(float)(LWord)value/(float)0x7FFFFFFF);
4549 
4550  for (ULWord channel = 0; channel < inNumChannels; channel++)
4551  *pAudioBuffer++ = ULWord(value);
4552 
4553  j += 1.0;
4554  if (j > cycleLength)
4555  j -= cycleLength;
4556  inOutCurrentSample++;
4557  } // for each sample
4558  } // if pAudioBuffer
4559 
4560  return inNumSamples * 4 * inNumChannels;
4561 
4562 } // AddAudioTone (ULWord)
4563 
4564 
4565 ULWord AddAudioTone ( UWord * pAudioBuffer,
4566  ULWord & inOutCurrentSample,
4567  const ULWord inNumSamples,
4568  const double inSampleRate,
4569  const double inAmplitude,
4570  const double inFrequency,
4571  const ULWord inNumBits,
4572  const bool inByteSwap,
4573  const ULWord inNumChannels)
4574 {
4575  double j (inOutCurrentSample);
4576  const double cycleLength (inSampleRate / inFrequency);
4577  const double scale (double (ULWord (1 << (inNumBits - 1))) - 1.0);
4578 
4579  if (pAudioBuffer)
4580  {
4581  for (ULWord i(0); i < inNumSamples; i++)
4582  {
4583  const double nextFloat = double(::sin (j / cycleLength * (M_PI * 2.0)) * inAmplitude);
4584  Word value = Word((nextFloat * scale) + double(0.5));
4585 
4586  if (inByteSwap)
4587  value = Word(NTV2EndianSwap16(value));
4588 
4589  for (ULWord channel(0); channel < inNumChannels; channel++)
4590  *pAudioBuffer++ = UWord(value);
4591 
4592  j += 1.0;
4593  if (j > cycleLength)
4594  j -= cycleLength;
4595  inOutCurrentSample++;
4596  } // for each sample
4597  } // if pAudioBuffer
4598 
4599  return inNumSamples * 4 * inNumChannels;
4600 
4601 } // AddAudioTone (UWord)
4602 
4603 
4604 ULWord AddAudioTone ( ULWord * pAudioBuffer,
4605  ULWord & inOutCurrentSample,
4606  const ULWord inNumSamples,
4607  const double inSampleRate,
4608  const double * pInAmplitudes,
4609  const double * pInFrequencies,
4610  const ULWord inNumBits,
4611  const bool inByteSwap,
4612  const ULWord inNumChannels)
4613 {
4614  double j [kNumAudioChannelsMax];
4615  double cycleLength [kNumAudioChannelsMax];
4616  const double scale (double(ULWord (1 << (inNumBits - 1))) - 1.0);
4617 
4618  for (ULWord channel(0); channel < inNumChannels; channel++)
4619  {
4620  cycleLength[channel] = inSampleRate / pInFrequencies[channel];
4621  j [channel] = inOutCurrentSample;
4622  }
4623 
4624  if (pAudioBuffer && pInAmplitudes && pInFrequencies)
4625  {
4626  for (ULWord i(0); i < inNumSamples; i++)
4627  {
4628  for (ULWord channel(0); channel < inNumChannels; channel++)
4629  {
4630  const double nextFloat = double(::sin(j[channel] / cycleLength[channel] * (M_PI * 2.0)) * pInAmplitudes[channel]);
4631  LWord value = LWord((nextFloat * scale) + double(0.5));
4632 
4633  if (inByteSwap)
4634  value = NTV2EndianSwap32(value);
4635 
4636  *pAudioBuffer++ = ULWord(value);
4637 
4638  j[channel] += 1.0;
4639  if (j[channel] > cycleLength[channel])
4640  j[channel] -= cycleLength[channel];
4641 
4642  }
4643  inOutCurrentSample++;
4644  } // for each sample
4645  } // if pAudioBuffer && pInFrequencies
4646 
4647  return inNumSamples * 4 * inNumChannels;
4648 
4649 } // AddAudioTone (per-chl freq & ampl)
4650 
4651 
4653  ULWord & inOutCurrentSample,
4654  const ULWord inNumSamples,
4655  const ULWord inModulus,
4656  const bool inEndianConvert,
4657  const ULWord inNumChannels)
4658 {
4659 
4660  for (ULWord i(0); i < inNumSamples; i++)
4661  {
4662  ULWord value ((inOutCurrentSample % inModulus) << 16);
4663  if (inEndianConvert)
4664  value = NTV2EndianSwap32(value);
4665  for (ULWord channel(0); channel < inNumChannels; channel++)
4666  *pAudioBuffer++ = value;
4667  inOutCurrentSample++;
4668  }
4669  return inNumSamples * 4 * inNumChannels;
4670 }
4671 
4672 
4673 std::string NTV2DeviceIDToString (const NTV2DeviceID inValue, const bool inForRetailDisplay)
4674 {
4675  switch (inValue)
4676  {
4677  case DEVICE_ID_CORVID1: return inForRetailDisplay ? "Corvid 1" : "Corvid";
4678  case DEVICE_ID_CORVID22: return inForRetailDisplay ? "Corvid 22" : "Corvid22";
4679  case DEVICE_ID_CORVID24: return inForRetailDisplay ? "Corvid 24" : "Corvid24";
4680  case DEVICE_ID_CORVID3G: return inForRetailDisplay ? "Corvid 3G" : "Corvid3G";
4681  case DEVICE_ID_CORVID44: return inForRetailDisplay ? "Corvid 44" : "Corvid44";
4682  case DEVICE_ID_CORVID44_2X4K: return inForRetailDisplay ? "Corvid 44 2x4K" : "Corvid44-2x4K";
4683  case DEVICE_ID_CORVID44_8K: return inForRetailDisplay ? "Corvid 44 8K" : "Corvid44-8K";
4684  case DEVICE_ID_CORVID44_8KMK: return inForRetailDisplay ? "Corvid 44 8KMK" : "Corvid44-8KMK";
4685  case DEVICE_ID_CORVID44_PLNR: return inForRetailDisplay ? "Corvid 44 PLNR" : "Corvid44-PLNR";
4686  case DEVICE_ID_CORVID88: return inForRetailDisplay ? "Corvid 88" : "Corvid88";
4687  case DEVICE_ID_CORVIDHBR: return inForRetailDisplay ? "Corvid HB-R" : "CorvidHBR";
4688  case DEVICE_ID_CORVIDHEVC: return inForRetailDisplay ? "Corvid HEVC" : "CorvidHEVC";
4689  case DEVICE_ID_IO4K: return "Io4K";
4690  case DEVICE_ID_IO4KPLUS: return inForRetailDisplay ? "Avid DNxIV" : "Io4KPlus";
4691  case DEVICE_ID_IO4KUFC: return inForRetailDisplay ? "Io4K UFC" : "Io4KUfc";
4692  case DEVICE_ID_IOEXPRESS: return inForRetailDisplay ? "IoExpress" : "IoExpress";
4693  case DEVICE_ID_IOIP_2022: return inForRetailDisplay ? "Avid DNxIP s2022" : "IoIP-s2022";
4694  case DEVICE_ID_IOIP_2110: return inForRetailDisplay ? "Avid DNxIP s2110" : "IoIP-s2110";
4695  case DEVICE_ID_IOIP_2110_RGB12: return inForRetailDisplay ? "Avid DNxIP s2110_RGB12" : "IoIP-s2110_RGB12";
4696  case DEVICE_ID_IOX3: return "IoX3";
4697  case DEVICE_ID_IOXT: return "IoXT";
4698  case DEVICE_ID_KONA1: return inForRetailDisplay ? "Kona 1" : "Kona1";
4699  case DEVICE_ID_KONA3G: return inForRetailDisplay ? "KONA 3G" : "Kona3G";
4700  case DEVICE_ID_KONA3GQUAD: return inForRetailDisplay ? "KONA 3G QUAD" : "Kona3GQuad"; // Used to be "KONA 3G" for retail display
4701  case DEVICE_ID_KONA4: return inForRetailDisplay ? "KONA 4" : "Kona4";
4702  case DEVICE_ID_KONA4UFC: return inForRetailDisplay ? "KONA 4 UFC" : "Kona4Ufc";
4703  case DEVICE_ID_KONA5: return inForRetailDisplay ? "KONA 5" : "Kona5";
4704  case DEVICE_ID_KONA5_2X4K: return inForRetailDisplay ? "KONA 5 (12-Bit)" : "Kona5-12Bit";
4705  case DEVICE_ID_KONA5_3DLUT: return inForRetailDisplay ? "KONA 5 3DLUT" : "Kona5-3DLUT";
4706  case DEVICE_ID_KONA5_8K: return inForRetailDisplay ? "KONA 5 8K" : "Kona5-8K";
4707  case DEVICE_ID_KONA5_8KMK: return inForRetailDisplay ? "KONA 5 8KMK" : "Kona5-8KMK";
4708  case DEVICE_ID_KONA5_8K_MV_TX: return inForRetailDisplay ? "KONA 5 8K MV TX" : "Kona5-8K-MV-TX";
4709  case DEVICE_ID_KONA5_OE1: return "Kona5-OE1";
4710  case DEVICE_ID_KONA5_OE10: return "Kona5-OE10";
4711  case DEVICE_ID_KONA5_OE11: return "Kona5-OE11";
4712  case DEVICE_ID_KONA5_OE12: return "Kona5-OE12";
4713  case DEVICE_ID_KONA5_OE2: return "Kona5-OE2";
4714  case DEVICE_ID_KONA5_OE3: return "Kona5-OE3";
4715  case DEVICE_ID_KONA5_OE4: return "Kona5-OE4";
4716  case DEVICE_ID_KONA5_OE5: return "Kona5-OE5";
4717  case DEVICE_ID_KONA5_OE6: return "Kona5-OE6";
4718  case DEVICE_ID_KONA5_OE7: return "Kona5-OE7";
4719  case DEVICE_ID_KONA5_OE8: return "Kona5-OE8";
4720  case DEVICE_ID_KONA5_OE9: return "Kona5-OE9";
4721  case DEVICE_ID_KONAHDMI: return inForRetailDisplay ? "Kona HDMI" : "KonaHDMI";
4722  case DEVICE_ID_KONAIP_1RX_1TX_1SFP_J2K: return "KonaIP J2K 1I 1O";
4723  case DEVICE_ID_KONAIP_1RX_1TX_2110: return "KonaIP s2110 1I 1O";
4724  case DEVICE_ID_KONAIP_2022: return "KonaIP s2022";
4725  case DEVICE_ID_KONAIP_2110: return "KonaIP s2110";
4726  case DEVICE_ID_KONAIP_2110_RGB12: return "KonaIP s2110 RGB12";
4727  case DEVICE_ID_KONAIP_2TX_1SFP_J2K: return "KonaIP J2K 2O";
4728  case DEVICE_ID_KONAIP_4CH_2SFP: return "KonaIP s2022 2+2";
4729  case DEVICE_ID_KONALHEPLUS: return inForRetailDisplay ? "KONA LHe+" : "KonaLHe+";
4730  case DEVICE_ID_KONALHI: return inForRetailDisplay ? "KONA LHi" : "KonaLHi";
4731  case DEVICE_ID_KONALHIDVI: return inForRetailDisplay ? "KONA LHi DVI" : "KonaLHiDVI";
4732  case DEVICE_ID_KONAX: return inForRetailDisplay ? "KONA X" : "KonaX";
4733  case DEVICE_ID_KONAXM: return inForRetailDisplay ? "KONA XM" : "KonaXM";
4734  case DEVICE_ID_SOJI_3DLUT: return "SOJI-3DLUT";
4735  case DEVICE_ID_SOJI_OE1: return "SOJI-OE1";
4736  case DEVICE_ID_SOJI_OE2: return "SOJI-OE2";
4737  case DEVICE_ID_SOJI_OE3: return "SOJI-OE3";
4738  case DEVICE_ID_SOJI_OE4: return "SOJI-OE4";
4739  case DEVICE_ID_SOJI_OE5: return "SOJI-OE5";
4740  case DEVICE_ID_SOJI_OE6: return "SOJI-OE6";
4741  case DEVICE_ID_SOJI_OE7: return "SOJI-OE7";
4742  case DEVICE_ID_SOJI_DIAGS: return "SOJI-DIAGS";
4743  case DEVICE_ID_TTAP: return inForRetailDisplay ? "T-TAP" : "TTap";
4744  case DEVICE_ID_TTAP_PRO: return inForRetailDisplay ? "T-TAP Pro" : "TTapPro";
4745  case DEVICE_ID_NOTFOUND: return inForRetailDisplay ? "AJA Device" : "(Not Found)";
4746 #if defined(_DEBUG)
4747 #else
4748  default: break;
4749 #endif
4750  }
4751  return inForRetailDisplay ? "Unknown" : "???";
4752 }
4753 
4754 
4756 {
4757  return inIndex < NTV2_MAX_NUM_CHANNELS ? NTV2Channel(inIndex) : NTV2_CHANNEL1;
4758 }
4759 
4761 {
4762  return NTV2_IS_VALID_CHANNEL(inChannel) ? ULWord(inChannel) : 0;
4763 }
4764 
4765 
4767 {
4768  switch (inCrosspointChannel)
4769  {
4772  case NTV2CROSSPOINT_INPUT1: return NTV2_CHANNEL1;
4773  case NTV2CROSSPOINT_INPUT2: return NTV2_CHANNEL2;
4778  case NTV2CROSSPOINT_INPUT3: return NTV2_CHANNEL3;
4779  case NTV2CROSSPOINT_INPUT4: return NTV2_CHANNEL4;
4784  case NTV2CROSSPOINT_INPUT5: return NTV2_CHANNEL5;
4785  case NTV2CROSSPOINT_INPUT6: return NTV2_CHANNEL6;
4786  case NTV2CROSSPOINT_INPUT7: return NTV2_CHANNEL7;
4787  case NTV2CROSSPOINT_INPUT8: return NTV2_CHANNEL8;
4789  }
4790  return NTV2_CHANNEL_INVALID;
4791 }
4792 
4793 
4795 {
4796  switch(index)
4797  {
4798  default:
4799  case 0: return NTV2CROSSPOINT_CHANNEL1;
4800  case 1: return NTV2CROSSPOINT_CHANNEL2;
4801  case 2: return NTV2CROSSPOINT_CHANNEL3;
4802  case 3: return NTV2CROSSPOINT_CHANNEL4;
4803  case 4: return NTV2CROSSPOINT_CHANNEL5;
4804  case 5: return NTV2CROSSPOINT_CHANNEL6;
4805  case 6: return NTV2CROSSPOINT_CHANNEL7;
4806  case 7: return NTV2CROSSPOINT_CHANNEL8;
4807  }
4808 }
4809 
4811 {
4812  switch(channel)
4813  {
4814  default:
4815  case NTV2CROSSPOINT_CHANNEL1: return 0;
4816  case NTV2CROSSPOINT_CHANNEL2: return 1;
4817  case NTV2CROSSPOINT_CHANNEL3: return 2;
4818  case NTV2CROSSPOINT_CHANNEL4: return 3;
4819  case NTV2CROSSPOINT_CHANNEL5: return 4;
4820  case NTV2CROSSPOINT_CHANNEL6: return 5;
4821  case NTV2CROSSPOINT_CHANNEL7: return 6;
4822  case NTV2CROSSPOINT_CHANNEL8: return 7;
4823  }
4824 }
4825 
4827 {
4828  switch(index)
4829  {
4830  default:
4831  case 0: return NTV2CROSSPOINT_INPUT1;
4832  case 1: return NTV2CROSSPOINT_INPUT2;
4833  case 2: return NTV2CROSSPOINT_INPUT3;
4834  case 3: return NTV2CROSSPOINT_INPUT4;
4835  case 4: return NTV2CROSSPOINT_INPUT5;
4836  case 5: return NTV2CROSSPOINT_INPUT6;
4837  case 6: return NTV2CROSSPOINT_INPUT7;
4838  case 7: return NTV2CROSSPOINT_INPUT8;
4839  }
4840 }
4841 
4843 {
4844  switch(channel)
4845  {
4846  default:
4847  case NTV2CROSSPOINT_INPUT1: return 0;
4848  case NTV2CROSSPOINT_INPUT2: return 1;
4849  case NTV2CROSSPOINT_INPUT3: return 2;
4850  case NTV2CROSSPOINT_INPUT4: return 3;
4851  case NTV2CROSSPOINT_INPUT5: return 4;
4852  case NTV2CROSSPOINT_INPUT6: return 5;
4853  case NTV2CROSSPOINT_INPUT7: return 6;
4854  case NTV2CROSSPOINT_INPUT8: return 7;
4855  }
4856 }
4857 
4859 {
4860  switch(index)
4861  {
4862  default:
4863  case 0: return NTV2CROSSPOINT_CHANNEL1;
4864  case 1: return NTV2CROSSPOINT_CHANNEL2;
4865  case 2: return NTV2CROSSPOINT_CHANNEL3;
4866  case 3: return NTV2CROSSPOINT_CHANNEL4;
4867  case 4: return NTV2CROSSPOINT_INPUT1;
4868  case 5: return NTV2CROSSPOINT_INPUT2;
4869  case 6: return NTV2CROSSPOINT_INPUT3;
4870  case 7: return NTV2CROSSPOINT_INPUT4;
4871  case 8: return NTV2CROSSPOINT_CHANNEL5;
4872  case 9: return NTV2CROSSPOINT_CHANNEL6;
4873  case 10:return NTV2CROSSPOINT_CHANNEL7;
4874  case 11:return NTV2CROSSPOINT_CHANNEL8;
4875  case 12:return NTV2CROSSPOINT_INPUT5;
4876  case 13:return NTV2CROSSPOINT_INPUT6;
4877  case 14:return NTV2CROSSPOINT_INPUT7;
4878  case 15:return NTV2CROSSPOINT_INPUT8;
4879  }
4880 }
4881 
4883 {
4884  switch(channel)
4885  {
4886  default:
4887  case NTV2CROSSPOINT_CHANNEL1: return 0;
4888  case NTV2CROSSPOINT_CHANNEL2: return 1;
4889  case NTV2CROSSPOINT_CHANNEL3: return 2;
4890  case NTV2CROSSPOINT_CHANNEL4: return 3;
4891  case NTV2CROSSPOINT_INPUT1: return 4;
4892  case NTV2CROSSPOINT_INPUT2: return 5;
4893  case NTV2CROSSPOINT_INPUT3: return 6;
4894  case NTV2CROSSPOINT_INPUT4: return 7;
4895  case NTV2CROSSPOINT_CHANNEL5: return 8;
4896  case NTV2CROSSPOINT_CHANNEL6: return 9;
4897  case NTV2CROSSPOINT_CHANNEL7: return 10;
4898  case NTV2CROSSPOINT_CHANNEL8: return 11;
4899  case NTV2CROSSPOINT_INPUT5: return 12;
4900  case NTV2CROSSPOINT_INPUT6: return 13;
4901  case NTV2CROSSPOINT_INPUT7: return 14;
4902  case NTV2CROSSPOINT_INPUT8: return 15;
4903  }
4904 }
4905 
4906 
4908 {
4909  return NTV2_IS_INPUT_CROSSPOINT(inChannel);
4910 }
4911 
4912 
4914 {
4915  return NTV2_IS_OUTPUT_CROSSPOINT(inChannel);
4916 }
4917 
4918 
4920 {
4923  return static_cast<NTV2EmbeddedAudioInput>(inChannel);
4924 }
4925 
4926 
4928 {
4931  return static_cast<NTV2AudioSystem>(inChannel);
4932 }
4933 
4934 
4936 {
4937  static const NTV2EmbeddedAudioInput gInputSourceToEmbeddedAudioInputs [] = { /* NTV2_INPUTSOURCE_ANALOG1 */ NTV2_MAX_NUM_EmbeddedAudioInputs,
4938  /* NTV2_INPUTSOURCE_HDMI1 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_1,
4939  /* NTV2_INPUTSOURCE_HDMI2 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_2,
4940  /* NTV2_INPUTSOURCE_HDMI3 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_3,
4941  /* NTV2_INPUTSOURCE_HDMI4 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_4,
4942  /* NTV2_INPUTSOURCE_SDI1 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_1,
4943  /* NTV2_INPUTSOURCE_SDI2 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_2,
4944  /* NTV2_INPUTSOURCE_SDI3 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_3,
4945  /* NTV2_INPUTSOURCE_SDI4 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_4,
4946  /* NTV2_INPUTSOURCE_SDI5 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_5,
4947  /* NTV2_INPUTSOURCE_SDI6 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_6,
4948  /* NTV2_INPUTSOURCE_SDI7 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_7,
4949  /* NTV2_INPUTSOURCE_SDI8 */ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_8,
4950  /* NTV2_INPUTSOURCE_INVALID */ NTV2_MAX_NUM_EmbeddedAudioInputs};
4951  if (inInputSource < NTV2_NUM_INPUTSOURCES && inInputSource < NTV2InputSource(sizeof(gInputSourceToEmbeddedAudioInputs) / sizeof(NTV2EmbeddedAudioInput)))
4952  return gInputSourceToEmbeddedAudioInputs [inInputSource];
4953  else
4955 
4956 } // InputSourceToEmbeddedAudioInput
4957 
4958 
4960 {
4961  if (!NTV2_IS_VALID_INPUT_SOURCE (inInputSource))
4963  if (NTV2_INPUT_SOURCE_IS_SDI (inInputSource))
4964  return NTV2_AUDIO_EMBEDDED;
4965  else if (NTV2_INPUT_SOURCE_IS_HDMI (inInputSource))
4966  return NTV2_AUDIO_HDMI;
4967  else if (NTV2_INPUT_SOURCE_IS_ANALOG (inInputSource))
4968  return NTV2_AUDIO_ANALOG;
4970 }
4971 
4972 
4974 {
4977  if (NTV2_IS_VALID_CHANNEL (inChannel))
4978  return gChannelToInputChannelSpec [inChannel];
4979  else
4980  return NTV2CROSSPOINT_INVALID;
4981 }
4982 
4983 
4985 {
4988  if (inChannel >= NTV2_CHANNEL1 && inChannel < NTV2_MAX_NUM_CHANNELS)
4989  return gChannelToOutputChannelSpec [inChannel];
4990  else
4991  return NTV2CROSSPOINT_INVALID;
4992 }
4993 
4994 
4996 {
4998  if (NTV2_IS_VALID_CHANNEL (inChannel))
4999  return gChannelToInputInterrupt [inChannel];
5000  else
5001  return eNumInterruptTypes;
5002 }
5003 
5004 
5006 {
5008  if (NTV2_IS_VALID_CHANNEL (inChannel))
5009  return gChannelToOutputInterrupt [inChannel];
5010  else
5011  return eNumInterruptTypes;
5012 }
5013 
5014 
5018 
5019 
5020 NTV2TCIndex NTV2ChannelToTimecodeIndex (const NTV2Channel inChannel, const bool inEmbeddedLTC, const bool inIsF2)
5021 {
5022  if (NTV2_IS_VALID_CHANNEL(inChannel))
5023  return inEmbeddedLTC ? gChanATCLTC[inChannel] : (inIsF2 ? gChanVITC2[inChannel] : gChanVITC1[inChannel]);
5024  return NTV2_TCINDEX_INVALID;
5025 }
5026 
5027 
5029 {
5030  NTV2TCIndexes result;
5031  if (NTV2_IS_VALID_CHANNEL(inSDI))
5032  {result.insert(gChanVITC1[inSDI]); result.insert(gChanVITC2[inSDI]); result.insert(gChanATCLTC[inSDI]);}
5033  return result;
5034 }
5035 
5036 
5038 {
5042  return NTV2_IS_VALID_TIMECODE_INDEX (inTCIndex) ? gTCIndexToChannel [inTCIndex] : NTV2_CHANNEL_INVALID;
5043 }
5044 
5045 
5047 {
5053  return NTV2_IS_VALID_TIMECODE_INDEX (inTCIndex) ? gTCIndexToInputSource [inTCIndex] : NTV2_INPUTSOURCE_INVALID;
5054 }
5055 
5056 
5058 {
5059  static const NTV2Crosspoint gInputSourceToChannelSpec [] = { /* NTV2_INPUTSOURCE_ANALOG1 */ NTV2CROSSPOINT_INPUT1,
5060  /* NTV2_INPUTSOURCE_HDMI1 */ NTV2CROSSPOINT_INPUT1,
5061  /* NTV2_INPUTSOURCE_HDMI2 */ NTV2CROSSPOINT_INPUT2,
5062  /* NTV2_INPUTSOURCE_HDMI3 */ NTV2CROSSPOINT_INPUT3,
5063  /* NTV2_INPUTSOURCE_HDMI4 */ NTV2CROSSPOINT_INPUT4,
5064  /* NTV2_INPUTSOURCE_SDI1 */ NTV2CROSSPOINT_INPUT1,
5065  /* NTV2_INPUTSOURCE_SDI2 */ NTV2CROSSPOINT_INPUT2,
5066  /* NTV2_INPUTSOURCE_SDI3 */ NTV2CROSSPOINT_INPUT3,
5067  /* NTV2_INPUTSOURCE_SDI4 */ NTV2CROSSPOINT_INPUT4,
5068  /* NTV2_INPUTSOURCE_SDI5 */ NTV2CROSSPOINT_INPUT5,
5069  /* NTV2_INPUTSOURCE_SDI6 */ NTV2CROSSPOINT_INPUT6,
5070  /* NTV2_INPUTSOURCE_SDI7 */ NTV2CROSSPOINT_INPUT7,
5071  /* NTV2_INPUTSOURCE_SDI8 */ NTV2CROSSPOINT_INPUT8,
5072  /* NTV2_NUM_INPUTSOURCES */ NTV2_NUM_CROSSPOINTS};
5073  if (inInputSource < NTV2_NUM_INPUTSOURCES && size_t (inInputSource) < sizeof (gInputSourceToChannelSpec) / sizeof (NTV2Channel))
5074  return gInputSourceToChannelSpec [inInputSource];
5075  else
5076  return NTV2_NUM_CROSSPOINTS;
5077 
5078 } // NTV2InputSourceToChannelSpec
5079 
5080 
5082 {
5083  static const NTV2ReferenceSource gInputSourceToReferenceSource [] = { /* NTV2_INPUTSOURCE_ANALOG1 */ NTV2_REFERENCE_ANALOG_INPUT1,
5084  /* NTV2_INPUTSOURCE_HDMI1 */ NTV2_REFERENCE_HDMI_INPUT1,
5085  /* NTV2_INPUTSOURCE_HDMI2 */ NTV2_REFERENCE_HDMI_INPUT2,
5086  /* NTV2_INPUTSOURCE_HDMI3 */ NTV2_REFERENCE_HDMI_INPUT3,
5087  /* NTV2_INPUTSOURCE_HDMI4 */ NTV2_REFERENCE_HDMI_INPUT4,
5088  /* NTV2_INPUTSOURCE_SDI1 */ NTV2_REFERENCE_INPUT1,
5089  /* NTV2_INPUTSOURCE_SDI2 */ NTV2_REFERENCE_INPUT2,
5090  /* NTV2_INPUTSOURCE_SDI3 */ NTV2_REFERENCE_INPUT3,
5091  /* NTV2_INPUTSOURCE_SDI4 */ NTV2_REFERENCE_INPUT4,
5092  /* NTV2_INPUTSOURCE_SDI5 */ NTV2_REFERENCE_INPUT5,
5093  /* NTV2_INPUTSOURCE_SDI6 */ NTV2_REFERENCE_INPUT6,
5094  /* NTV2_INPUTSOURCE_SDI7 */ NTV2_REFERENCE_INPUT7,
5095  /* NTV2_INPUTSOURCE_SDI8 */ NTV2_REFERENCE_INPUT8,
5096  /* NTV2_NUM_INPUTSOURCES */ NTV2_NUM_REFERENCE_INPUTS};
5097  if (NTV2_IS_VALID_INPUT_SOURCE (inInputSource) && size_t (inInputSource) < sizeof (gInputSourceToReferenceSource) / sizeof (NTV2ReferenceSource))
5098  return gInputSourceToReferenceSource [inInputSource];
5099  else
5101 
5102 } // NTV2InputSourceToReferenceSource
5103 
5104 
5106 {
5107  static const NTV2Channel gInputSourceToChannel [] = { /* NTV2_INPUTSOURCE_ANALOG1 */ NTV2_CHANNEL1,
5108  /* NTV2_INPUTSOURCE_HDMI1 */ NTV2_CHANNEL1,
5109  /* NTV2_INPUTSOURCE_HDMI2 */ NTV2_CHANNEL2,
5110  /* NTV2_INPUTSOURCE_HDMI3 */ NTV2_CHANNEL3,
5111  /* NTV2_INPUTSOURCE_HDMI4 */ NTV2_CHANNEL4,
5112  /* NTV2_INPUTSOURCE_SDI1 */ NTV2_CHANNEL1,
5113  /* NTV2_INPUTSOURCE_SDI2 */ NTV2_CHANNEL2,
5114  /* NTV2_INPUTSOURCE_SDI3 */ NTV2_CHANNEL3,
5115  /* NTV2_INPUTSOURCE_SDI4 */ NTV2_CHANNEL4,
5116  /* NTV2_INPUTSOURCE_SDI5 */ NTV2_CHANNEL5,
5117  /* NTV2_INPUTSOURCE_SDI6 */ NTV2_CHANNEL6,
5118  /* NTV2_INPUTSOURCE_SDI7 */ NTV2_CHANNEL7,
5119  /* NTV2_INPUTSOURCE_SDI8 */ NTV2_CHANNEL8,
5120  /* NTV2_NUM_INPUTSOURCES */ NTV2_CHANNEL_INVALID};
5121  if (inInputSource < NTV2_NUM_INPUTSOURCES && size_t (inInputSource) < sizeof (gInputSourceToChannel) / sizeof (NTV2Channel))
5122  return gInputSourceToChannel [inInputSource];
5123  else
5124  return NTV2_MAX_NUM_CHANNELS;
5125 
5126 } // NTV2InputSourceToChannel
5127 
5128 
5130 {
5131  static const NTV2AudioSystem gInputSourceToAudioSystem [] = { /* NTV2_INPUTSOURCE_ANALOG1 */ NTV2_AUDIOSYSTEM_1,
5132  /* NTV2_INPUTSOURCE_HDMI1 */ NTV2_AUDIOSYSTEM_1,
5133  /* NTV2_INPUTSOURCE_HDMI2 */ NTV2_AUDIOSYSTEM_2,
5134  /* NTV2_INPUTSOURCE_HDMI3 */ NTV2_AUDIOSYSTEM_3,
5135  /* NTV2_INPUTSOURCE_HDMI4 */ NTV2_AUDIOSYSTEM_4,
5136  /* NTV2_INPUTSOURCE_SDI1 */ NTV2_AUDIOSYSTEM_1,
5137  /* NTV2_INPUTSOURCE_SDI2 */ NTV2_AUDIOSYSTEM_2,
5138  /* NTV2_INPUTSOURCE_SDI3 */ NTV2_AUDIOSYSTEM_3,
5139  /* NTV2_INPUTSOURCE_SDI4 */ NTV2_AUDIOSYSTEM_4,
5140  /* NTV2_INPUTSOURCE_SDI5 */ NTV2_AUDIOSYSTEM_5,
5141  /* NTV2_INPUTSOURCE_SDI6 */ NTV2_AUDIOSYSTEM_6,
5142  /* NTV2_INPUTSOURCE_SDI7 */ NTV2_AUDIOSYSTEM_7,
5143  /* NTV2_INPUTSOURCE_SDI8 */ NTV2_AUDIOSYSTEM_8,
5144  /* NTV2_NUM_INPUTSOURCES */ NTV2_NUM_AUDIOSYSTEMS};
5145  if (inInputSource < NTV2_NUM_INPUTSOURCES && inInputSource < NTV2InputSource(sizeof(gInputSourceToAudioSystem) / sizeof(NTV2AudioSystem)))
5146  return gInputSourceToAudioSystem [inInputSource];
5147  else
5148  return NTV2_AUDIOSYSTEM_INVALID;
5149 
5150 } // NTV2InputSourceToAudioSystem
5151 
5152 
5153 NTV2TimecodeIndex NTV2InputSourceToTimecodeIndex (const NTV2InputSource inInputSource, const bool inEmbeddedLTC)
5154 {
5155  static const NTV2TimecodeIndex gInputSourceToTCIndex []= { /* NTV2_INPUTSOURCE_ANALOG1 */ NTV2_TCINDEX_LTC1,
5156  /* NTV2_INPUTSOURCE_HDMI1 */ NTV2_TCINDEX_INVALID,
5157  /* NTV2_INPUTSOURCE_HDMI2 */ NTV2_TCINDEX_INVALID,
5158  /* NTV2_INPUTSOURCE_HDMI3 */ NTV2_TCINDEX_INVALID,
5159  /* NTV2_INPUTSOURCE_HDMI4 */ NTV2_TCINDEX_INVALID,
5160  /* NTV2_INPUTSOURCE_SDI1 */ NTV2_TCINDEX_SDI1,
5161  /* NTV2_INPUTSOURCE_SDI2 */ NTV2_TCINDEX_SDI2,
5162  /* NTV2_INPUTSOURCE_SDI3 */ NTV2_TCINDEX_SDI3,
5163  /* NTV2_INPUTSOURCE_SDI4 */ NTV2_TCINDEX_SDI4,
5164  /* NTV2_INPUTSOURCE_SDI5 */ NTV2_TCINDEX_SDI5,
5165  /* NTV2_INPUTSOURCE_SDI6 */ NTV2_TCINDEX_SDI6,
5166  /* NTV2_INPUTSOURCE_SDI7 */ NTV2_TCINDEX_SDI7,
5167  /* NTV2_INPUTSOURCE_SDI8 */ NTV2_TCINDEX_SDI8,
5168  /* NTV2_NUM_INPUTSOURCES */ NTV2_TCINDEX_INVALID};
5169  static const NTV2TimecodeIndex gInputSourceToLTCIndex []= { /* NTV2_INPUTSOURCE_ANALOG1 */ NTV2_TCINDEX_LTC1,
5170  /* NTV2_INPUTSOURCE_HDMI1 */ NTV2_TCINDEX_INVALID,
5171  /* NTV2_INPUTSOURCE_HDMI2 */ NTV2_TCINDEX_INVALID,
5172  /* NTV2_INPUTSOURCE_HDMI3 */ NTV2_TCINDEX_INVALID,
5173  /* NTV2_INPUTSOURCE_HDMI4 */ NTV2_TCINDEX_INVALID,
5174  /* NTV2_INPUTSOURCE_SDI1 */ NTV2_TCINDEX_SDI1_LTC,
5175  /* NTV2_INPUTSOURCE_SDI2 */ NTV2_TCINDEX_SDI2_LTC,
5176  /* NTV2_INPUTSOURCE_SDI3 */ NTV2_TCINDEX_SDI3_LTC,
5177  /* NTV2_INPUTSOURCE_SDI4 */ NTV2_TCINDEX_SDI4_LTC,
5178  /* NTV2_INPUTSOURCE_SDI5 */ NTV2_TCINDEX_SDI5_LTC,
5179  /* NTV2_INPUTSOURCE_SDI6 */ NTV2_TCINDEX_SDI6_LTC,
5180  /* NTV2_INPUTSOURCE_SDI7 */ NTV2_TCINDEX_SDI7_LTC,
5181  /* NTV2_INPUTSOURCE_SDI8 */ NTV2_TCINDEX_SDI8_LTC,
5182  /* NTV2_NUM_INPUTSOURCES */ NTV2_TCINDEX_INVALID};
5183  if (inInputSource < NTV2_NUM_INPUTSOURCES && size_t (inInputSource) < sizeof (gInputSourceToTCIndex) / sizeof (NTV2TimecodeIndex))
5184  return inEmbeddedLTC ? gInputSourceToLTCIndex [inInputSource] : gInputSourceToTCIndex [inInputSource];
5185  else
5186  return NTV2_TCINDEX_INVALID;
5187 }
5188 
5189 
5191 {
5201  if (NTV2_IS_VALID_CHANNEL(inChannel))
5202  switch (inSourceType)
5203  {
5204  case NTV2_IOKINDS_SDI: return gChannelToSDIInputSource[inChannel];
5205  case NTV2_IOKINDS_HDMI: return gChannelToHDMIInputSource[inChannel];
5206  case NTV2_IOKINDS_ANALOG: return gChannelToAnlgInputSource[inChannel];
5207  default: break;
5208  }
5209  return NTV2_INPUTSOURCE_INVALID;
5210 }
5211 
5212 
5214 {
5215  if (!NTV2_IS_VALID_OUTPUT_DEST (inOutputDest))
5216  return NTV2_CHANNEL_INVALID;
5217 
5218  static const NTV2Channel gOutputDestToChannel [] = { NTV2_CHANNEL1, NTV2_CHANNEL1,
5221  return gOutputDestToChannel [inOutputDest];
5222 }
5223 
5224 
5226 {
5227  if (!NTV2_IS_VALID_CHANNEL (inChannel))
5229 
5233  return gChannelToOutputDest [inChannel];
5234 }
5235 
5236 
5237 // if formats are transport equivalent (e.g. 1080i30 / 1080psf30) return the target version of the format
5239 {
5240  // compatible return target version
5241  if (::IsTransportCompatibleFormat (inFormat, inTargetFormat))
5242  return inTargetFormat;
5243 
5244  // not compatible, return original format
5245  return inFormat;
5246 }
5247 
5248 
5249 // determine if 2 formats are transport compatible (e.g. 1080i30 / 1080psf30)
5250 bool IsTransportCompatibleFormat (const NTV2VideoFormat inFormat1, const NTV2VideoFormat inFormat2)
5251 {
5252  if (inFormat1 == inFormat2)
5253  return true;
5254 
5255  switch (inFormat1)
5256  {
5257  case NTV2_FORMAT_1080i_5000: return inFormat2 == NTV2_FORMAT_1080psf_2500_2;
5258  case NTV2_FORMAT_1080i_5994: return inFormat2 == NTV2_FORMAT_1080psf_2997_2;
5259  case NTV2_FORMAT_1080i_6000: return inFormat2 == NTV2_FORMAT_1080psf_3000_2;
5260  case NTV2_FORMAT_1080psf_2500_2: return inFormat2 == NTV2_FORMAT_1080i_5000;
5261  case NTV2_FORMAT_1080psf_2997_2: return inFormat2 == NTV2_FORMAT_1080i_5994;
5262  case NTV2_FORMAT_1080psf_3000_2: return inFormat2 == NTV2_FORMAT_1080i_6000;
5263  default: return false;
5264  }
5265 }
5266 
5267 
5269 {
5273  static const NTV2InputSource sANLGInputSources[] = { NTV2_INPUTSOURCE_ANALOG1 };
5274  switch (inKinds)
5275  {
5276  case NTV2_IOKINDS_SDI:
5277  if (inIndex0 < sizeof(sSDIInputSources) / sizeof(NTV2InputSource))
5278  return sSDIInputSources[inIndex0];
5279  break;
5280  case NTV2_IOKINDS_HDMI:
5281  if (inIndex0 < sizeof(sHDMIInputSources) / sizeof(NTV2InputSource))
5282  return sHDMIInputSources[inIndex0];
5283  break;
5284  case NTV2_IOKINDS_ANALOG:
5285  if (inIndex0 < sizeof(sANLGInputSources) / sizeof(NTV2InputSource))
5286  return sANLGInputSources[inIndex0];
5287  break;
5288  #if defined(_DEBUG)
5289  case NTV2_IOKINDS_NONE:
5290  case NTV2_IOKINDS_ALL:
5291  break;
5292  #else
5293  default: break;
5294  #endif
5295  }
5296  return NTV2_INPUTSOURCE_INVALID;
5297 }
5298 
5299 
5300 NTV2InputSource GetNTV2HDMIInputSourceForIndex (const ULWord inIndex0) // NTV2_SHOULD_BE_DEPRECATED
5301 {
5303 }
5304 
5305 
5307 {
5308  static const ULWord sInputSourcesIndexes [] = { 0, // NTV2_INPUTSOURCE_ANALOG1,
5309  0, 1, 2, 3, // NTV2_INPUTSOURCE_HDMI1 ... NTV2_INPUTSOURCE_HDMI4,
5310  0, 1, 2, 3, 4, 5, 6, 7 }; // NTV2_INPUTSOURCE_SDI1 ... NTV2_INPUTSOURCE_SDI8
5311  if (static_cast <size_t> (inValue) < sizeof (sInputSourcesIndexes) / sizeof (ULWord))
5312  return sInputSourcesIndexes [inValue];
5313  else
5314  return 0xFFFFFFFF;
5315 
5316 } // GetIndexForNTV2InputSource
5317 
5318 
5320 {
5321  static const ULWord gFrameSizeToByteCount[] = { 2 /* NTV2_FRAMESIZE_2MB */, 4 /* NTV2_FRAMESIZE_4MB */, 8 /* NTV2_FRAMESIZE_8MB */, 16 /* NTV2_FRAMESIZE_16MB */,
5322  6 /* NTV2_FRAMESIZE_6MB */, 10 /* NTV2_FRAMESIZE_10MB */, 12 /* NTV2_FRAMESIZE_12MB */, 14 /* NTV2_FRAMESIZE_14MB */,
5323  18 /* NTV2_FRAMESIZE_18MB */, 20 /* NTV2_FRAMESIZE_20MB */, 22 /* NTV2_FRAMESIZE_22MB */, 24 /* NTV2_FRAMESIZE_24MB */,
5324  26 /* NTV2_FRAMESIZE_26MB */, 28 /* NTV2_FRAMESIZE_28MB */, 30 /* NTV2_FRAMESIZE_30MB */, 32 /* NTV2_FRAMESIZE_32MB */,
5325  0 };
5326  if (inFrameSize < NTV2_MAX_NUM_Framesizes && inFrameSize < NTV2Framesize(sizeof(gFrameSizeToByteCount) / sizeof(ULWord)))
5327  return gFrameSizeToByteCount [inFrameSize] * 1024 * 1024;
5328  else
5329  return 0;
5330 
5331 } // NTV2FramesizeToByteCount
5332 
5333 
5335 { // STANDARD BIG MEDIUM BIGGER INVALID
5336  static const ULWord gBufferSizeToByteCount[] = { 1 * 1024*1024, 4 * 1024*1024, 2 * 1024*1024, 3 * 1024*1024, 0 };
5337  if (NTV2_IS_VALID_AUDIO_BUFFER_SIZE(inBufferSize))
5338  return gBufferSizeToByteCount[inBufferSize];
5339  return 0;
5340 }
5341 
5342 typedef std::set<NTV2FrameRate> NTV2FrameRates;
5343 typedef NTV2FrameRates::const_iterator NTV2FrameRatesConstIter;
5344 typedef std::vector<NTV2FrameRates> NTV2FrameRateFamilies;
5345 typedef NTV2FrameRateFamilies::const_iterator NTV2FrameRateFamiliesConstIter;
5346 
5349 
5350 
5352 {
5353  if (!sFRFamMutex.IsValid())
5354  return false;
5355 
5356  AJAAutoLock autoLock (&sFRFamMutex);
5357  if (sFRFamilies.empty())
5358  {
5359  NTV2FrameRates FR1498, FR1500, FR2398, FR2400, FR2500;
5360  FR1498.insert(NTV2_FRAMERATE_1498); FR1498.insert(NTV2_FRAMERATE_2997); FR1498.insert(NTV2_FRAMERATE_5994); FR1498.insert(NTV2_FRAMERATE_11988);
5361  sFRFamilies.push_back(FR1498);
5362  FR1500.insert(NTV2_FRAMERATE_1500); FR1500.insert(NTV2_FRAMERATE_3000); FR1500.insert(NTV2_FRAMERATE_6000); FR1500.insert(NTV2_FRAMERATE_12000);
5363  sFRFamilies.push_back(FR1500);
5364  FR2398.insert(NTV2_FRAMERATE_2398); FR2398.insert(NTV2_FRAMERATE_4795);
5365  sFRFamilies.push_back(FR2398);
5366  FR2400.insert(NTV2_FRAMERATE_2400); FR2400.insert(NTV2_FRAMERATE_4800);
5367  sFRFamilies.push_back(FR2400);
5368  FR2500.insert(NTV2_FRAMERATE_2500); FR2500.insert(NTV2_FRAMERATE_5000);
5369  sFRFamilies.push_back(FR2500);
5370  }
5371  return !sFRFamilies.empty();
5372 }
5373 
5374 
5376 {
5378  for (NTV2FrameRateFamiliesConstIter it(sFRFamilies.begin()); it != sFRFamilies.end(); ++it)
5379  {
5380  const NTV2FrameRates & family (*it);
5381  NTV2FrameRatesConstIter iter(family.find(inFrameRate));
5382  if (iter != family.end())
5383  return *(family.begin());
5384  }
5385  return NTV2_FRAMERATE_INVALID;
5386 }
5387 
5388 
5389 bool IsMultiFormatCompatible (const NTV2FrameRate inFrameRate1, const NTV2FrameRate inFrameRate2)
5390 {
5391  if (inFrameRate1 == inFrameRate2)
5392  return true;
5393 
5394  if (!NTV2_IS_SUPPORTED_NTV2FrameRate(inFrameRate1) || !NTV2_IS_SUPPORTED_NTV2FrameRate(inFrameRate2))
5395  return false;
5396 
5397  const NTV2FrameRate frFamily1 (GetFrameRateFamily(inFrameRate1));
5398  const NTV2FrameRate frFamily2 (GetFrameRateFamily(inFrameRate2));
5399 
5401  return false; // Probably uninitialized
5402 
5403  return frFamily1 == frFamily2;
5404 
5405 } // IsMultiFormatCompatible (NTV2FrameRate)
5406 
5407 
5408 AJAExport bool IsMultiFormatCompatible (const NTV2VideoFormat inFormat1, const NTV2VideoFormat inFormat2)
5409 {
5410  if (inFormat1 == NTV2_FORMAT_UNKNOWN || inFormat2 == NTV2_FORMAT_UNKNOWN)
5411  return false;
5413 
5414 } // IsMultiFormatCompatible (NTV2VideoFormat)
5415 
5416 
5417 AJAExport bool IsPSF (const NTV2VideoFormat format)
5418 {
5419  return NTV2_IS_PSF_VIDEO_FORMAT(format);
5420 }
5421 
5422 
5424 {
5426 }
5427 
5428 
5430 {
5431  NTV2Standard standard (::GetNTV2StandardFromVideoFormat(format));
5432  return IsProgressiveTransport(standard);
5433 }
5434 
5435 
5437 {
5438  return NTV2_IS_PROGRESSIVE_STANDARD(standard);
5439 }
5440 
5441 
5443 {
5444  return NTV2_IS_FBF_RGB(format);
5445 }
5446 
5447 
5449 {
5450  return !NTV2_IS_FBF_RGB(format); // works for now
5451 }
5452 
5453 
5455 {
5456  return NTV2_FBF_HAS_ALPHA(format);
5457 }
5458 
5459 
5461 {
5462  return NTV2_IS_2K_1080_VIDEO_FORMAT(format) || NTV2_IS_2K_VIDEO_FORMAT(format);
5463 }
5464 
5465 
5467 {
5469 }
5470 
5471 
5473 {
5474  return NTV2_IS_QUAD_QUAD_FORMAT(format);
5475 }
5476 
5477 
5478 AJAExport bool IsRaw (const NTV2FrameBufferFormat frameBufferFormat)
5479 {
5480  return NTV2_FBF_IS_RAW(frameBufferFormat);
5481 }
5482 
5483 
5485 {
5486  return NTV2_IS_FBF_8BIT(format);
5487 }
5488 
5489 
5491 {
5492  return NTV2_VIDEO_FORMAT_IS_A(format);
5493 }
5494 
5495 
5497 {
5498  return NTV2_IS_3Gb_FORMAT(format);
5499 }
5500 
5502 {
5503  return NTV2_VIDEO_FORMAT_IS_J2K_SUPPORTED(format);
5504 }
5505 
5506 
5508 {
5510 
5511  switch( inFormat )
5512  {
5513  case NTV2_FORMAT_720p_5994:
5514  if ( outFormat == NTV2_FORMAT_525_5994 )
5515  cMode = NTV2_720p_5994to525_5994;
5516  else if ( outFormat == NTV2_FORMAT_1080i_5994)
5518  else if ( outFormat == NTV2_FORMAT_1080psf_2997_2)
5520  break;
5521 
5522  case NTV2_FORMAT_720p_5000:
5523  if ( outFormat == NTV2_FORMAT_625_5000 )
5524  cMode = NTV2_720p_5000to625_2500;
5525  else if ( outFormat == NTV2_FORMAT_1080i_5000) // NTV2_FORMAT_1080psf_2500
5527  else if ( outFormat == NTV2_FORMAT_1080psf_2500_2)
5529  break;
5530 
5531  case NTV2_FORMAT_525_2398:
5532  if ( outFormat == NTV2_FORMAT_1080psf_2398 )
5533  cMode = NTV2_525_2398to1080i_2398;
5534  break;
5535 
5536  case NTV2_FORMAT_525_5994:
5537  if ( outFormat == NTV2_FORMAT_1080i_5994 )
5538  cMode = NTV2_525_5994to1080i_5994;
5539  else if (outFormat == NTV2_FORMAT_1080psf_2997_2)
5540  cMode = NTV2_525_5994to1080i_5994;
5541  else if ( outFormat == NTV2_FORMAT_720p_5994 )
5542  cMode = NTV2_525_5994to720p_5994;
5543  else if ( outFormat == NTV2_FORMAT_525_5994 )
5544  cMode = NTV2_525_5994to525_5994;
5545  else if ( outFormat == NTV2_FORMAT_525psf_2997 )
5547  break;
5548 
5549  case NTV2_FORMAT_625_5000:
5550  if ( outFormat == NTV2_FORMAT_1080i_5000) // NTV2_FORMAT_1080psf_2500
5551  cMode = NTV2_625_2500to1080i_2500;
5552  else if ( outFormat == NTV2_FORMAT_1080psf_2500_2)
5553  cMode = NTV2_625_2500to1080i_2500;
5554  else if ( outFormat == NTV2_FORMAT_720p_5000 )
5555  cMode = NTV2_625_2500to720p_5000;
5556  else if ( outFormat == NTV2_FORMAT_625_5000 )
5557  cMode = NTV2_625_2500to625_2500;
5558  else if ( outFormat == NTV2_FORMAT_625psf_2500 )
5560  break;
5561 
5562  case NTV2_FORMAT_720p_6000:
5563  if ( outFormat == NTV2_FORMAT_1080i_6000) // NTV2_FORMAT_1080psf_3000
5565  else if (outFormat == NTV2_FORMAT_1080psf_3000_2 )
5567  break;
5568 
5570  if ( outFormat == NTV2_FORMAT_525_2398 )
5571  cMode = NTV2_1080i2398to525_2398;
5572  else if ( outFormat == NTV2_FORMAT_525_5994 )
5573  cMode = NTV2_1080i2398to525_2997;
5574  else if ( outFormat == NTV2_FORMAT_720p_2398 )
5576  else if ( outFormat == NTV2_FORMAT_1080i_5994 )
5578  break;
5579 
5581  if ( outFormat == NTV2_FORMAT_1080i_6000 )
5583  break;
5584 
5586  if ( outFormat == NTV2_FORMAT_625_5000 )
5587  cMode = NTV2_1080i_2500to625_2500;
5588  else if ( outFormat == NTV2_FORMAT_720p_5000 )
5590  else if ( outFormat == NTV2_FORMAT_1080psf_2500_2 )
5592  else if ( outFormat == NTV2_FORMAT_1080psf_2500_2 )
5594  break;
5595 
5597  if ( outFormat == NTV2_FORMAT_1080i_5994 )
5599  break;
5600 
5602  if ( outFormat == NTV2_FORMAT_1080i_6000 )
5604  break;
5605 
5607  if ( outFormat == NTV2_FORMAT_1080i_5000 )
5609  break;
5610 
5612  if ( outFormat == NTV2_FORMAT_625_5000 )
5613  cMode = NTV2_1080i_2500to625_2500;
5614  else if ( outFormat == NTV2_FORMAT_720p_5000 )
5616  else if ( outFormat == NTV2_FORMAT_1080psf_2500_2 )
5618  break;
5619 
5622  if ( outFormat == NTV2_FORMAT_525_5994 )
5623  cMode = NTV2_1080i_5994to525_5994;
5624  else if ( outFormat == NTV2_FORMAT_720p_5994 )
5626  else if ( outFormat == NTV2_FORMAT_1080psf_2997_2 )
5628  break;
5629 
5632  if ( outFormat == NTV2_FORMAT_720p_6000 )
5634  else if ( outFormat == NTV2_FORMAT_1080psf_3000_2 )
5636  break;
5637 
5638  case NTV2_FORMAT_720p_2398:
5639  if ( outFormat == NTV2_FORMAT_1080psf_2398 )
5641  break;
5642 
5644  if ( outFormat == NTV2_FORMAT_720p_6000 )
5646  break;
5647 
5648  default:
5649  break;
5650  }
5651 
5652  return cMode;
5653 }
5654 
5656 {
5657  NTV2VideoFormat inputFormat = NTV2_FORMAT_UNKNOWN;
5658 
5659  switch( conversionMode )
5660  {
5661  case NTV2_525_5994to525_5994: inputFormat = NTV2_FORMAT_525_5994; break;
5662  case NTV2_525_5994to720p_5994: inputFormat = NTV2_FORMAT_525_5994; break;
5663  case NTV2_525_5994to1080i_5994: inputFormat = NTV2_FORMAT_525_5994; break;
5664  case NTV2_525_2398to1080i_2398: inputFormat = NTV2_FORMAT_525_2398; break;
5665  case NTV2_525_5994to525psf_2997: inputFormat = NTV2_FORMAT_525_5994; break;
5666 
5667  case NTV2_625_2500to625_2500: inputFormat = NTV2_FORMAT_625_5000; break;
5668  case NTV2_625_2500to720p_5000: inputFormat = NTV2_FORMAT_625_5000; break;
5669  case NTV2_625_2500to1080i_2500: inputFormat = NTV2_FORMAT_625_5000; break;
5670  case NTV2_625_5000to625psf_2500: inputFormat = NTV2_FORMAT_625_5000; break;
5671 
5672  case NTV2_720p_5000to625_2500: inputFormat = NTV2_FORMAT_720p_5000; break;
5673  case NTV2_720p_5000to1080i_2500: inputFormat = NTV2_FORMAT_720p_5000; break;
5674  case NTV2_720p_5994to525_5994: inputFormat = NTV2_FORMAT_720p_5994; break;
5675  case NTV2_720p_5994to1080i_5994: inputFormat = NTV2_FORMAT_720p_5994; break;
5676  case NTV2_720p_6000to1080i_3000: inputFormat = NTV2_FORMAT_720p_6000; break;
5677  case NTV2_720p_2398to1080i_2398: inputFormat = NTV2_FORMAT_720p_2398; break;
5678 
5679  case NTV2_1080i2398to525_2398: inputFormat = NTV2_FORMAT_1080psf_2398; break;
5680  case NTV2_1080i2398to525_2997: inputFormat = NTV2_FORMAT_1080psf_2398; break;
5681  case NTV2_1080i_2398to720p_2398: inputFormat = NTV2_FORMAT_1080psf_2398; break;
5682 
5683  case NTV2_1080i_2500to625_2500: inputFormat = NTV2_FORMAT_1080i_5000; break;
5684  case NTV2_1080i_2500to720p_5000: inputFormat = NTV2_FORMAT_1080i_5000; break;
5685  case NTV2_1080i_5994to525_5994: inputFormat = NTV2_FORMAT_1080i_5994; break;
5686  case NTV2_1080i_5994to720p_5994: inputFormat = NTV2_FORMAT_1080i_5994; break;
5687  case NTV2_1080i_3000to720p_6000: inputFormat = NTV2_FORMAT_1080i_6000; break;
5688  case NTV2_1080i_5000to1080psf_2500: inputFormat = NTV2_FORMAT_1080i_5000; break;
5689  case NTV2_1080i_5994to1080psf_2997: inputFormat = NTV2_FORMAT_1080i_5994; break;
5690  case NTV2_1080i_6000to1080psf_3000: inputFormat = NTV2_FORMAT_1080i_6000; break;
5691  case NTV2_1080p_3000to720p_6000: inputFormat = NTV2_FORMAT_1080p_3000; break;
5692 
5693  default: inputFormat = NTV2_FORMAT_UNKNOWN; break;
5694  }
5695  return inputFormat;
5696 }
5697 
5698 
5700 {
5701  NTV2VideoFormat outputFormat = NTV2_FORMAT_UNKNOWN;
5702 
5703  switch( conversionMode )
5704  {
5705  case NTV2_525_5994to525_5994: outputFormat = NTV2_FORMAT_525_5994; break;
5706  case NTV2_525_5994to720p_5994: outputFormat = NTV2_FORMAT_720p_5994; break;
5707  case NTV2_525_5994to1080i_5994: outputFormat = NTV2_FORMAT_1080i_5994; break;
5708  case NTV2_525_2398to1080i_2398: outputFormat = NTV2_FORMAT_1080psf_2398; break;
5709  case NTV2_525_5994to525psf_2997: outputFormat = NTV2_FORMAT_525psf_2997; break;
5710 
5711  case NTV2_625_2500to625_2500: outputFormat = NTV2_FORMAT_625_5000; break;
5712  case NTV2_625_2500to720p_5000: outputFormat = NTV2_FORMAT_720p_5000; break;
5713  case NTV2_625_2500to1080i_2500: outputFormat = NTV2_FORMAT_1080i_5000; break;
5714  case NTV2_625_5000to625psf_2500: outputFormat = NTV2_FORMAT_625psf_2500; break;
5715 
5716  case NTV2_720p_5000to625_2500: outputFormat = NTV2_FORMAT_625_5000; break;
5717  case NTV2_720p_5000to1080i_2500: outputFormat = NTV2_FORMAT_1080i_5000; break;
5718  case NTV2_720p_5994to525_5994: outputFormat = NTV2_FORMAT_525_5994; break;
5719  case NTV2_720p_5994to1080i_5994: outputFormat = NTV2_FORMAT_1080i_5994; break;
5720  case NTV2_720p_6000to1080i_3000: outputFormat = NTV2_FORMAT_1080i_6000; break;
5721  case NTV2_720p_2398to1080i_2398: outputFormat = NTV2_FORMAT_1080psf_2398; break;
5722 
5723  case NTV2_1080i2398to525_2398: outputFormat = NTV2_FORMAT_525_2398; break;
5724  case NTV2_1080i2398to525_2997: outputFormat = NTV2_FORMAT_525_5994; break;
5725  case NTV2_1080i_2398to720p_2398: outputFormat = NTV2_FORMAT_720p_2398; break;
5726  //case NTV2_1080i2400to525_2400: outputFormat = NTV2_FORMAT_525_2400; break;
5727 
5728  //case NTV2_1080p2398to525_2398: outputFormat = NTV2_FORMAT_525_2398; break;
5729  //case NTV2_1080p2398to525_2997: outputFormat = NTV2_FORMAT_525_5994; break;
5730  //case NTV2_1080p2400to525_2400: outputFormat = NTV2_FORMAT_525_2400; break;
5731 
5732  case NTV2_1080i_2500to625_2500: outputFormat = NTV2_FORMAT_625_5000; break;
5733  case NTV2_1080i_2500to720p_5000: outputFormat = NTV2_FORMAT_720p_5000; break;
5734  case NTV2_1080i_5994to525_5994: outputFormat = NTV2_FORMAT_525_5994; break;
5735  case NTV2_1080i_5994to720p_5994: outputFormat = NTV2_FORMAT_720p_5994; break;
5736  case NTV2_1080i_3000to720p_6000: outputFormat = NTV2_FORMAT_720p_6000; break;
5737  case NTV2_1080i_5000to1080psf_2500: outputFormat = NTV2_FORMAT_1080psf_2500_2; break;
5738  case NTV2_1080i_5994to1080psf_2997: outputFormat = NTV2_FORMAT_1080psf_2997_2; break;
5739  case NTV2_1080i_6000to1080psf_3000: outputFormat = NTV2_FORMAT_1080psf_3000_2; break;
5740  case NTV2_1080p_3000to720p_6000: outputFormat = NTV2_FORMAT_720p_6000; break;
5741  default: outputFormat = NTV2_FORMAT_UNKNOWN; break;
5742  }
5743  return outputFormat;
5744 }
5745 
5746 
5747 ostream & operator << (ostream & inOutStream, const NTV2FrameDimensions inFrameDimensions)
5748 {
5749  return inOutStream << inFrameDimensions.Width() << "Wx" << inFrameDimensions.Height() << "H";
5750 }
5751 
5752 
5753 ostream & operator << (ostream & inOutStream, const NTV2SmpteLineNumber & inSmpteLineNumber)
5754 {
5755  return inSmpteLineNumber.Print (inOutStream);
5756 }
5757 
5758 
5759 string NTV2ChannelToString (const NTV2Channel inValue, const bool inForRetailDisplay)
5760 {
5761  switch (inValue)
5762  {
5763  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch1", NTV2_CHANNEL1);
5764  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch2", NTV2_CHANNEL2);
5765  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch3", NTV2_CHANNEL3);
5766  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch4", NTV2_CHANNEL4);
5767  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch5", NTV2_CHANNEL5);
5768  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch6", NTV2_CHANNEL6);
5769  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch7", NTV2_CHANNEL7);
5770  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Ch8", NTV2_CHANNEL8);
5772  }
5773  return "";
5774 }
5775 
5776 
5777 string NTV2AudioSystemToString (const NTV2AudioSystem inValue, const bool inCompactDisplay)
5778 {
5779  ostringstream oss;
5780  if (NTV2_IS_VALID_AUDIO_SYSTEM(inValue))
5781  oss << (inCompactDisplay ? "AudSys" : "NTV2_AUDIOSYSTEM_") << (inValue + 1);
5782  else
5783  oss << (inCompactDisplay ? "NoAudio" : "NTV2_AUDIOSYSTEM_INVALID");
5784  return oss.str();
5785 }
5786 
5787 
5788 string NTV2AudioRateToString (const NTV2AudioRate inValue, const bool inForRetailDisplay)
5789 {
5790  switch (inValue)
5791  {
5792  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "48 kHz", NTV2_AUDIO_48K);
5793  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "96 kHz", NTV2_AUDIO_96K);
5794  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "192 kHz", NTV2_AUDIO_192K);
5796  }
5797  return "";
5798 }
5799 
5800 
5801 string NTV2AudioBufferSizeToString (const NTV2AudioBufferSize inValue, const bool inForRetailDisplay)
5802 {
5803  switch (inValue)
5804  {
5808  }
5809  return "";
5810 }
5811 
5812 
5813 string NTV2AudioLoopBackToString (const NTV2AudioLoopBack inValue, const bool inForRetailDisplay)
5814 {
5815  switch (inValue)
5816  {
5819  case NTV2_AUDIO_LOOPBACK_INVALID: break; //special case
5820  }
5821  return "???";
5822 }
5823 
5824 
5825 string NTV2EmbeddedAudioClockToString (const NTV2EmbeddedAudioClock inValue, const bool inForRetailDisplay)
5826 {
5827  switch (inValue)
5828  {
5829  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "from device reference", NTV2_EMBEDDED_AUDIO_CLOCK_REFERENCE);
5832  }
5833  return "???";
5834 }
5835 
5836 
5837 string NTV2CrosspointToString (const NTV2Crosspoint inChannel)
5838 {
5839  std::ostringstream oss;
5840  oss << (::IsNTV2CrosspointInput(inChannel) ? "Capture " : "Playout ")
5841  << (::IsNTV2CrosspointInput(inChannel) ? ::GetIndexForNTV2CrosspointInput(inChannel) : ::GetIndexForNTV2CrosspointChannel(inChannel)) + 1;
5842  return oss.str ();
5843 }
5844 
5845 
5846 string NTV2InputCrosspointIDToString (const NTV2InputCrosspointID inValue, const bool inForRetailDisplay)
5847 {
5848  switch (inValue)
5849  {
5866  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 1 Vid", NTV2_XptCSC1VidInput);
5867  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 1 Key", NTV2_XptCSC1KeyInput);
5868  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 2 Vid", NTV2_XptCSC2VidInput);
5869  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 2 Key", NTV2_XptCSC2KeyInput);
5870  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 3 Vid", NTV2_XptCSC3VidInput);
5871  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 3 Key", NTV2_XptCSC3KeyInput);
5872  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 4 Vid", NTV2_XptCSC4VidInput);
5873  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 4 Key", NTV2_XptCSC4KeyInput);
5874  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 5 Vid", NTV2_XptCSC5VidInput);
5875  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 5 Key", NTV2_XptCSC5KeyInput);
5876  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 6 Vid", NTV2_XptCSC6VidInput);
5877  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 6 Key", NTV2_XptCSC6KeyInput);
5878  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 7 Vid", NTV2_XptCSC7VidInput);
5879  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 7 Key", NTV2_XptCSC7KeyInput);
5880  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 8 Vid", NTV2_XptCSC8VidInput);
5881  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 8 Key", NTV2_XptCSC8KeyInput);
5882  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 1", NTV2_XptLUT1Input);
5883  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 2", NTV2_XptLUT2Input);
5884  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 3", NTV2_XptLUT3Input);
5885  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 4", NTV2_XptLUT4Input);
5886  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 5", NTV2_XptLUT5Input);
5887  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 6", NTV2_XptLUT6Input);
5888  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 7", NTV2_XptLUT7Input);
5889  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 8", NTV2_XptLUT8Input);
5894  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 1", NTV2_XptSDIOut1Input);
5895  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 1 DS2", NTV2_XptSDIOut1InputDS2);
5896  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 2", NTV2_XptSDIOut2Input);
5897  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 2 DS2", NTV2_XptSDIOut2InputDS2);
5898  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 3", NTV2_XptSDIOut3Input);
5899  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 3 DS2", NTV2_XptSDIOut3InputDS2);
5900  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 4", NTV2_XptSDIOut4Input);
5901  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 4 DS2", NTV2_XptSDIOut4InputDS2);
5902  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 5", NTV2_XptSDIOut5Input);
5903  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 5 DS2", NTV2_XptSDIOut5InputDS2);
5904  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 6", NTV2_XptSDIOut6Input);
5905  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 6 DS2", NTV2_XptSDIOut6InputDS2);
5906  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 7", NTV2_XptSDIOut7Input);
5907  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 7 DS2", NTV2_XptSDIOut7InputDS2);
5908  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 8", NTV2_XptSDIOut8Input);
5909  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI Out 8 DS2", NTV2_XptSDIOut8InputDS2);
5934  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 1 BG Key", NTV2_XptMixer1BGKeyInput);
5935  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 1 BG Vid", NTV2_XptMixer1BGVidInput);
5936  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 1 FG Key", NTV2_XptMixer1FGKeyInput);
5937  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 1 FG Vid", NTV2_XptMixer1FGVidInput);
5938  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 2 BG Key", NTV2_XptMixer2BGKeyInput);
5939  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 2 BG Vid", NTV2_XptMixer2BGVidInput);
5940  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 2 FG Key", NTV2_XptMixer2FGKeyInput);
5941  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 2 FG Vid", NTV2_XptMixer2FGVidInput);
5942  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 3 BG Key", NTV2_XptMixer3BGKeyInput);
5943  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 3 BG Vid", NTV2_XptMixer3BGVidInput);
5944  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 3 FG Key", NTV2_XptMixer3FGKeyInput);
5945  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 3 FG Vid", NTV2_XptMixer3FGVidInput);
5946  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 4 BG Key", NTV2_XptMixer4BGKeyInput);
5947  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 4 BG Vid", NTV2_XptMixer4BGVidInput);
5948  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 4 FG Key", NTV2_XptMixer4FGKeyInput);
5949  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 4 FG Vid", NTV2_XptMixer4FGVidInput);
5950  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI Out", NTV2_XptHDMIOutInput);
5951  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI Out Q2", NTV2_XptHDMIOutQ2Input);
5952  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI Out Q3", NTV2_XptHDMIOutQ3Input);
5953  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI Out Q4", NTV2_XptHDMIOutQ4Input);
5954  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "4K DownConv Q1", NTV2_Xpt4KDCQ1Input);
5955  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "4K DownConv Q2", NTV2_Xpt4KDCQ2Input);
5956  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "4K DownConv Q3", NTV2_Xpt4KDCQ3Input);
5957  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "4K DownConv Q4", NTV2_Xpt4KDCQ4Input);
5958  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 1A", NTV2_Xpt425Mux1AInput);
5959  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 1B", NTV2_Xpt425Mux1BInput);
5960  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 2A", NTV2_Xpt425Mux2AInput);
5961  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 2B", NTV2_Xpt425Mux2BInput);
5962  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 3A", NTV2_Xpt425Mux3AInput);
5963  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 3B", NTV2_Xpt425Mux3BInput);
5964  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 4A", NTV2_Xpt425Mux4AInput);
5965  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 4B", NTV2_Xpt425Mux4BInput);
5966  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Analog Out", NTV2_XptAnalogOutInput);
5967  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Analog Composite Out", NTV2_XptAnalogOutCompositeOut);
5968  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Stereo Left", NTV2_XptStereoLeftInput);
5969  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Stereo Right", NTV2_XptStereoRightInput);
5970  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Pro Amp", NTV2_XptProAmpInput);
5971  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "IICT1", NTV2_XptIICT1Input);
5972  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Water Marker 1", NTV2_XptWaterMarker1Input);
5973  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Water Marker 2", NTV2_XptWaterMarker2Input);
5974  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Update Register", NTV2_XptUpdateRegister);
5975  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Compression Module", NTV2_XptCompressionModInput);
5976  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Conversion Module", NTV2_XptConversionModInput);
5977  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 1 Key From In 2", NTV2_XptCSC1KeyFromInput2);
5978  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FrameSync2", NTV2_XptFrameSync2Input);
5979  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FrameSync1", NTV2_XptFrameSync1Input);
5980  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "3D LUT 1", NTV2_Xpt3DLUT1Input);
5983  }
5984  return "";
5985 
5986 } // NTV2InputCrosspointIDToString
5987 
5988 
5989 string NTV2OutputCrosspointIDToString (const NTV2OutputCrosspointID inValue, const bool inForRetailDisplay)
5990 {
5991  switch (inValue)
5992  {
5993  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Black", NTV2_XptBlack);
5994  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 1", NTV2_XptSDIIn1);
5995  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 1 DS2", NTV2_XptSDIIn1DS2);
5996  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 2", NTV2_XptSDIIn2);
5997  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 2 DS2", NTV2_XptSDIIn2DS2);
5998  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 1 YUV", NTV2_XptLUT1YUV);
5999  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 1 Vid YUV", NTV2_XptCSC1VidYUV);
6000  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Conversion Module", NTV2_XptConversionModule);
6001  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Compression Module", NTV2_XptCompressionModule);
6003  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FrameSync 1 YUV", NTV2_XptFrameSync1YUV);
6004  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FrameSync 2 YUV", NTV2_XptFrameSync2YUV);
6005  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 1", NTV2_XptDuallinkOut1);
6006  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 1 DS2", NTV2_XptDuallinkOut1DS2);
6007  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 2", NTV2_XptDuallinkOut2);
6008  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 2 DS2", NTV2_XptDuallinkOut2DS2);
6009  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 3", NTV2_XptDuallinkOut3);
6010  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 3 DS2", NTV2_XptDuallinkOut3DS2);
6011  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 4", NTV2_XptDuallinkOut4);
6012  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 4 DS2", NTV2_XptDuallinkOut4DS2);
6013  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Alpha Out", NTV2_XptAlphaOut);
6014  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Analog In", NTV2_XptAnalogIn);
6015  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1", NTV2_XptHDMIIn1);
6016  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1 Q2", NTV2_XptHDMIIn1Q2);
6017  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1 Q3", NTV2_XptHDMIIn1Q3);
6018  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1 Q4", NTV2_XptHDMIIn1Q4);
6019  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1 RGB", NTV2_XptHDMIIn1RGB);
6020  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1 Q2 RGB", NTV2_XptHDMIIn1Q2RGB);
6021  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1 Q3 RGB", NTV2_XptHDMIIn1Q3RGB);
6022  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 1 Q4 RGB", NTV2_XptHDMIIn1Q4RGB);
6023  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2", NTV2_XptHDMIIn2);
6024  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2 Q2", NTV2_XptHDMIIn2Q2);
6025  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2 Q3", NTV2_XptHDMIIn2Q3);
6026  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2 Q4", NTV2_XptHDMIIn2Q4);
6027  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2 RGB", NTV2_XptHDMIIn2RGB);
6028  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2 Q2 RGB", NTV2_XptHDMIIn2Q2RGB);
6029  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2 Q3 RGB", NTV2_XptHDMIIn2Q3RGB);
6030  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 2 Q4 RGB", NTV2_XptHDMIIn2Q4RGB);
6031  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 3", NTV2_XptHDMIIn3);
6032  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 3 RGB", NTV2_XptHDMIIn3RGB);
6033  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 4", NTV2_XptHDMIIn4);
6034  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "HDMI In 4 RGB", NTV2_XptHDMIIn4RGB);
6035  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 1", NTV2_XptDuallinkIn1);
6036  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 2", NTV2_XptDuallinkIn2);
6037  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 3", NTV2_XptDuallinkIn3);
6038  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 4", NTV2_XptDuallinkIn4);
6039  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 1", NTV2_XptLUT1Out);
6040  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 1 Vid RGB", NTV2_XptCSC1VidRGB);
6042  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FrameSync 1 RGB", NTV2_XptFrameSync1RGB);
6043  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FrameSync 2 RGB", NTV2_XptFrameSync2RGB);
6044  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 2", NTV2_XptLUT2Out);
6045  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 1 Key YUV", NTV2_XptCSC1KeyYUV);
6048  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 2 Vid YUV", NTV2_XptCSC2VidYUV);
6049  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 2 Vid RGB", NTV2_XptCSC2VidRGB);
6050  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 2 Key YUV", NTV2_XptCSC2KeyYUV);
6051  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 1 Vid YUV", NTV2_XptMixer1VidYUV);
6052  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 1 Key YUV", NTV2_XptMixer1KeyYUV);
6053  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 1 Vid RGB", NTV2_XptMixer1VidRGB);
6054  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "IICT RGB", NTV2_XptIICTRGB);
6055  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "IICT 2 RGB", NTV2_XptIICT2RGB);
6056  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Test Pattern YUV", NTV2_XptTestPatternYUV);
6057  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 2 Vid YUV", NTV2_XptMixer2VidYUV);
6058  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 2 Key YUV", NTV2_XptMixer2KeyYUV);
6059  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 2 Vid RGB", NTV2_XptMixer2VidRGB);
6060  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Stereo Compressor Out", NTV2_XptStereoCompressorOut);
6061  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 3", NTV2_XptLUT3Out);
6062  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 4", NTV2_XptLUT4Out);
6067  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 3", NTV2_XptSDIIn3);
6068  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 3 DS2", NTV2_XptSDIIn3DS2);
6069  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 4", NTV2_XptSDIIn4);
6070  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 4 DS2", NTV2_XptSDIIn4DS2);
6071  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 3 Vid YUV", NTV2_XptCSC3VidYUV);
6072  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 3 Vid RGB", NTV2_XptCSC3VidRGB);
6073  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 3 Key YUV", NTV2_XptCSC3KeyYUV);
6074  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 4 Vid YUV", NTV2_XptCSC4VidYUV);
6075  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 4 Vid RGB", NTV2_XptCSC4VidRGB);
6076  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 4 Key YUV", NTV2_XptCSC4KeyYUV);
6077  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 5 Vid YUV", NTV2_XptCSC5VidYUV);
6078  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 5 Vid RGB", NTV2_XptCSC5VidRGB);
6079  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 5 Key YUV", NTV2_XptCSC5KeyYUV);
6080  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 5", NTV2_XptLUT5Out);
6081  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 5", NTV2_XptDuallinkOut5);
6082  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 5 DS2", NTV2_XptDuallinkOut5DS2);
6083  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "4K DownConv Out", NTV2_Xpt4KDownConverterOut);
6084  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "4K DownConv Out RGB", NTV2_Xpt4KDownConverterOutRGB);
6093  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 5", NTV2_XptSDIIn5);
6094  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 5 DS2", NTV2_XptSDIIn5DS2);
6095  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 6", NTV2_XptSDIIn6);
6096  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 6 DS2", NTV2_XptSDIIn6DS2);
6097  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 7", NTV2_XptSDIIn7);
6098  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 7 DS2", NTV2_XptSDIIn7DS2);
6099  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 8", NTV2_XptSDIIn8);
6100  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 8 DS2", NTV2_XptSDIIn8DS2);
6101  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 6 Vid YUV", NTV2_XptCSC6VidYUV);
6102  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 6 Vid RGB", NTV2_XptCSC6VidRGB);
6103  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 6 Key YUV", NTV2_XptCSC6KeyYUV);
6104  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 7 Vid YUV", NTV2_XptCSC7VidYUV);
6105  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 7 Vid RGB", NTV2_XptCSC7VidRGB);
6106  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 7 Key YUV", NTV2_XptCSC7KeyYUV);
6107  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 8 Vid YUV", NTV2_XptCSC8VidYUV);
6108  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 8 Vid RGB", NTV2_XptCSC8VidRGB);
6109  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "CSC 8 Key YUV", NTV2_XptCSC8KeyYUV);
6110  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 6", NTV2_XptLUT6Out);
6111  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 7", NTV2_XptLUT7Out);
6112  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "LUT 8", NTV2_XptLUT8Out);
6113  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 6", NTV2_XptDuallinkOut6);
6114  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 6 DS2", NTV2_XptDuallinkOut6DS2);
6115  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 7", NTV2_XptDuallinkOut7);
6116  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 7 DS2", NTV2_XptDuallinkOut7DS2);
6117  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 8", NTV2_XptDuallinkOut8);
6118  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL Out 8 DS2", NTV2_XptDuallinkOut8DS2);
6119  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 3 Vid YUV", NTV2_XptMixer3VidYUV);
6120  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 3 Key YUV", NTV2_XptMixer3KeyYUV);
6121  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 3 Vid RGB", NTV2_XptMixer3VidRGB);
6122  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 4 Vid YUV", NTV2_XptMixer4VidYUV);
6123  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 4 Key YUV", NTV2_XptMixer4KeyYUV);
6124  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Mixer 4 Vid RGB", NTV2_XptMixer4VidRGB);
6125  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 5", NTV2_XptDuallinkIn5);
6126  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 6", NTV2_XptDuallinkIn6);
6127  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 7", NTV2_XptDuallinkIn7);
6128  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 8", NTV2_XptDuallinkIn8);
6129  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 1 DS2", NTV2_XptDuallinkIn1DS2);
6130  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 2 DS2", NTV2_XptDuallinkIn2DS2);
6131  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 3 DS2", NTV2_XptDuallinkIn3DS2);
6132  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 4 DS2", NTV2_XptDuallinkIn4DS2);
6133  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 5 DS2", NTV2_XptDuallinkIn5DS2);
6134  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 6 DS2", NTV2_XptDuallinkIn6DS2);
6135  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 7 DS2", NTV2_XptDuallinkIn7DS2);
6136  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DL In 8 DS2", NTV2_XptDuallinkIn8DS2);
6137  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 1a YUV", NTV2_Xpt425Mux1AYUV);
6138  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 1a RGB", NTV2_Xpt425Mux1ARGB);
6139  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 1b YUV", NTV2_Xpt425Mux1BYUV);
6140  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 1b RGB", NTV2_Xpt425Mux1BRGB);
6141  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 2a YUV", NTV2_Xpt425Mux2AYUV);
6142  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 2a RGB", NTV2_Xpt425Mux2ARGB);
6143  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 2b YUV", NTV2_Xpt425Mux2BYUV);
6144  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 2b RGB", NTV2_Xpt425Mux2BRGB);
6145  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 3a YUV", NTV2_Xpt425Mux3AYUV);
6146  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 3a RGB", NTV2_Xpt425Mux3ARGB);
6147  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 3b YUV", NTV2_Xpt425Mux3BYUV);
6148  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 3b RGB", NTV2_Xpt425Mux3BRGB);
6149  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 4a YUV", NTV2_Xpt425Mux4AYUV);
6150  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 4a RGB", NTV2_Xpt425Mux4ARGB);
6151  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 4b YUV", NTV2_Xpt425Mux4BYUV);
6152  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "425Mux 4b RGB", NTV2_Xpt425Mux4BRGB);
6153  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 1 DS2 YUV", NTV2_XptFrameBuffer1_DS2YUV);
6154  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 1 DS2 RGB", NTV2_XptFrameBuffer1_DS2RGB);
6155  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 2 DS2 YUV", NTV2_XptFrameBuffer2_DS2YUV);
6156  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 2 DS2 RGB", NTV2_XptFrameBuffer2_DS2RGB);
6157  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 3 DS2 YUV", NTV2_XptFrameBuffer3_DS2YUV);
6158  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 3 DS2 RGB", NTV2_XptFrameBuffer3_DS2RGB);
6159  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 4 DS2 YUV", NTV2_XptFrameBuffer4_DS2YUV);
6160  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 4 DS2 RGB", NTV2_XptFrameBuffer4_DS2RGB);
6161  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 5 DS2 YUV", NTV2_XptFrameBuffer5_DS2YUV);
6162  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 5 DS2 RGB", NTV2_XptFrameBuffer5_DS2RGB);
6163  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 6 DS2 YUV", NTV2_XptFrameBuffer6_DS2YUV);
6164  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 6 DS2 RGB", NTV2_XptFrameBuffer6_DS2RGB);
6165  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 7 DS2 YUV", NTV2_XptFrameBuffer7_DS2YUV);
6166  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 7 DS2 RGB", NTV2_XptFrameBuffer7_DS2RGB);
6167  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 8 DS2 YUV", NTV2_XptFrameBuffer8_DS2YUV);
6168  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "FB 8 DS2 RGB", NTV2_XptFrameBuffer8_DS2RGB);
6169  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Runtime Calc", NTV2_XptRuntimeCalc);
6170  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 1 DS1", NTV2_XptMultiLinkOut1DS1);
6171  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 1 DS2", NTV2_XptMultiLinkOut1DS2);
6172  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 1 DS3", NTV2_XptMultiLinkOut1DS3);
6173  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 1 DS4", NTV2_XptMultiLinkOut1DS4);
6174  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 2 DS1", NTV2_XptMultiLinkOut2DS1);
6175  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 2 DS2", NTV2_XptMultiLinkOut2DS2);
6176  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 2 DS3", NTV2_XptMultiLinkOut2DS3);
6177  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Multi-Link Out 2 DS4", NTV2_XptMultiLinkOut2DS4);
6178  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "3D LUT 1 YUV", NTV2_Xpt3DLUT1YUV);
6179  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "3D LUT 1 RGB", NTV2_Xpt3DLUT1RGB);
6180  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "OE Out YUV", NTV2_XptOEOutYUV);
6181  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "OE Out RGB", NTV2_XptOEOutRGB);
6182  #if !defined(NTV2_DEPRECATE_16_0)
6183  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "WaterMarker 1 RGB", NTV2_XptWaterMarkerRGB);
6184  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "WaterMarker 2 RGB", NTV2_XptWaterMarker2RGB);
6185  #endif
6186  #if !defined(_DEBUG)
6187  default: break;
6188  #endif
6189  } // switch on inValue
6190  return "";
6191 } // NTV2OutputCrosspointIDToString
6192 
6193 
6194 string NTV2WidgetIDToString (const NTV2WidgetID inValue, const bool inCompactDisplay)
6195 {
6196  switch (inValue)
6197  {
6202  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC1", NTV2_WgtCSC1);
6203  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC2", NTV2_WgtCSC2);
6204  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT1", NTV2_WgtLUT1);
6205  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT2", NTV2_WgtLUT2);
6208  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDIIn1", NTV2_WgtSDIIn1);
6209  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDIIn2", NTV2_WgtSDIIn2);
6210  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn1", NTV2_Wgt3GSDIIn1);
6211  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn2", NTV2_Wgt3GSDIIn2);
6212  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn3", NTV2_Wgt3GSDIIn3);
6213  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn4", NTV2_Wgt3GSDIIn4);
6214  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDIOut1", NTV2_WgtSDIOut1);
6215  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDIOut2", NTV2_WgtSDIOut2);
6216  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDIOut3", NTV2_WgtSDIOut3);
6217  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDIOut4", NTV2_WgtSDIOut4);
6218  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut1", NTV2_Wgt3GSDIOut1);
6219  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut2", NTV2_Wgt3GSDIOut2);
6220  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut3", NTV2_Wgt3GSDIOut3);
6221  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut4", NTV2_Wgt3GSDIOut4);
6229  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "AnlgIn1", NTV2_WgtAnalogIn1);
6230  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "AnlgOut1", NTV2_WgtAnalogOut1);
6232  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIIn1", NTV2_WgtHDMIIn1);
6233  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIOut1", NTV2_WgtHDMIOut1);
6236  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Mixer1", NTV2_WgtMixer1);
6237  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Compress1", NTV2_WgtCompression1);
6238  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "ProcAmp1", NTV2_WgtProcAmp1);
6239  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "WaterMrkr1", NTV2_WgtWaterMarker1);
6240  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "WaterMrkr2", NTV2_WgtWaterMarker2);
6241  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "IICT1", NTV2_WgtIICT1);
6242  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "IICT2", NTV2_WgtIICT2);
6244  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "GenLock", NTV2_WgtGenLock);
6245  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "DCIMixer1", NTV2_WgtDCIMixer1);
6246  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Mixer2", NTV2_WgtMixer2);
6248  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT3", NTV2_WgtLUT3);
6249  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT4", NTV2_WgtLUT4);
6254  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC3", NTV2_WgtCSC3);
6255  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC4", NTV2_WgtCSC4);
6256  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv2In1", NTV2_WgtHDMIIn1v2);
6257  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv2Out1", NTV2_WgtHDMIOut1v2);
6258  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDIMonOut1", NTV2_WgtSDIMonOut1);
6259  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC5", NTV2_WgtCSC5);
6260  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT5", NTV2_WgtLUT5);
6263  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn5", NTV2_Wgt3GSDIIn5);
6264  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn6", NTV2_Wgt3GSDIIn6);
6265  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn7", NTV2_Wgt3GSDIIn7);
6266  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIIn8", NTV2_Wgt3GSDIIn8);
6267  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut5", NTV2_Wgt3GSDIOut5);
6268  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut6", NTV2_Wgt3GSDIOut6);
6269  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut7", NTV2_Wgt3GSDIOut7);
6270  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3GSDIOut8", NTV2_Wgt3GSDIOut8);
6278  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC6", NTV2_WgtCSC6);
6279  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC7", NTV2_WgtCSC7);
6280  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "CSC8", NTV2_WgtCSC8);
6281  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT6", NTV2_WgtLUT6);
6282  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT7", NTV2_WgtLUT7);
6283  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "LUT8", NTV2_WgtLUT8);
6284  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Mixer3", NTV2_WgtMixer3);
6285  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Mixer4", NTV2_WgtMixer4);
6290  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv3In1", NTV2_WgtHDMIIn1v3);
6291  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv3Out1", NTV2_WgtHDMIOut1v3);
6292  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "425Mux1", NTV2_Wgt425Mux1);
6293  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "425Mux2", NTV2_Wgt425Mux2);
6294  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "425Mux3", NTV2_Wgt425Mux3);
6295  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "425Mux4", NTV2_Wgt425Mux4);
6296  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIIn1", NTV2_Wgt12GSDIIn1);
6297  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIIn2", NTV2_Wgt12GSDIIn2);
6298  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIIn3", NTV2_Wgt12GSDIIn3);
6299  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIIn4", NTV2_Wgt12GSDIIn4);
6300  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIOut1", NTV2_Wgt12GSDIOut1);
6301  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIOut2", NTV2_Wgt12GSDIOut2);
6302  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIOut3", NTV2_Wgt12GSDIOut3);
6303  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "12GSDIOut4", NTV2_Wgt12GSDIOut4);
6304  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv4In1", NTV2_WgtHDMIIn1v4);
6305  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv4In2", NTV2_WgtHDMIIn2v4);
6306  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv4In3", NTV2_WgtHDMIIn3v4);
6307  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv4In4", NTV2_WgtHDMIIn4v4);
6308  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv5In1", NTV2_WgtHDMIIn1v5);
6309  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv4Out1", NTV2_WgtHDMIOut1v4);
6310  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMIv5Out1", NTV2_WgtHDMIOut1v5);
6311  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "MultiLinkOut1", NTV2_WgtMultiLinkOut1);
6312  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "MultiLinkOut2", NTV2_WgtMultiLinkOut2);
6313  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "3DLUT1", NTV2_Wgt3DLUT1);
6314  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "OE1", NTV2_WgtOE1);
6315  case NTV2_WgtModuleTypeCount: return "???"; //special case
6316  }
6317  return "";
6318 
6319 } // NTV2WidgetIDToString
6320 
6321 string NTV2WidgetTypeToString (const NTV2WidgetType inValue, const bool inCompactDisplay)
6322 {
6323  switch (inValue) {
6328  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI Input", NTV2WidgetType_SDIIn);
6329  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI Input 3G", NTV2WidgetType_SDIIn3G);
6330  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI Output", NTV2WidgetType_SDIOut);
6331  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI Output 3G", NTV2WidgetType_SDIOut3G);
6332  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI Monitor Output", NTV2WidgetType_SDIMonOut);
6333  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "DualLink Input V1", NTV2WidgetType_DualLinkV1In);
6334  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "DualLink Input V2", NTV2WidgetType_DualLinkV2In);
6335  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "DualLink Output V1", NTV2WidgetType_DualLinkV1Out);
6336  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "DualLink Output V2", NTV2WidgetType_DualLinkV2Out);
6337  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Analog Input", NTV2WidgetType_AnalogIn);
6338  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Analog Output", NTV2WidgetType_AnalogOut);
6339  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Analog Composite Output", NTV2WidgetType_AnalogCompositeOut);
6340  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Input V1", NTV2WidgetType_HDMIInV1);
6341  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Input V2", NTV2WidgetType_HDMIInV2);
6342  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Input V3", NTV2WidgetType_HDMIInV3);
6343  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Input V4", NTV2WidgetType_HDMIInV4);
6344  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Input V5", NTV2WidgetType_HDMIInV5);
6345  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Up-Down Converter", NTV2WidgetType_UpDownConverter);
6349  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Stereo Compressor", NTV2WidgetType_StereoCompressor);
6352  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "4K Down Converter", NTV2WidgetType_4KDownConverter);
6353  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Output V1", NTV2WidgetType_HDMIOutV1);
6354  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Output V2", NTV2WidgetType_HDMIOutV2);
6355  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Output V3", NTV2WidgetType_HDMIOutV3);
6356  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Output V4", NTV2WidgetType_HDMIOutV4);
6357  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "HDMI Output V5", NTV2WidgetType_HDMIOutV5);
6358  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SMPTE 425 Mux", NTV2WidgetType_SMPTE425Mux);
6359  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI Input 12G", NTV2WidgetType_SDIIn12G);
6360  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI Output 12G", NTV2WidgetType_SDIOut12G);
6361  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Multi-Link Output", NTV2WidgetType_MultiLinkOut);
6367  case NTV2WidgetType_Max: return "???";
6368  }
6369  return "";
6370 }
6371 
6372 string NTV2TaskModeToString (const NTV2EveryFrameTaskMode inValue, const bool inCompactDisplay)
6373 {
6374  switch (inValue)
6375  {
6376  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Disabled", NTV2_DISABLE_TASKS);
6377  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Standard", NTV2_STANDARD_TASKS);
6380  }
6381  return "";
6382 }
6383 
6384 
6386 {
6387  ostringstream oss;
6388  oss << inObj;
6389  return oss.str ();
6390 }
6391 
6392 
6393 ostream & operator << (ostream & inOutStr, const NTV2RegisterNumberSet & inObj)
6394 {
6395  inOutStr << "[" << inObj.size () << " regs: ";
6396  for (NTV2RegNumSetConstIter iter (inObj.begin ()); iter != inObj.end (); )
6397  {
6398  inOutStr << ::NTV2RegisterNumberToString (NTV2RegisterNumber (*iter));
6399  if (++iter != inObj.end ())
6400  inOutStr << ", ";
6401  }
6402  return inOutStr << "]";
6403 }
6404 
6405 
6407 {
6408  inOutSet.insert (inRegisterNumber);
6409  return inOutSet;
6410 }
6411 
6412 
6413 string NTV2TCIndexToString (const NTV2TCIndex inValue, const bool inCompactDisplay)
6414 {
6415  switch (inValue)
6416  {
6418  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI1-VITC", NTV2_TCINDEX_SDI1);
6419  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI2-VITC", NTV2_TCINDEX_SDI2);
6420  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI3-VITC", NTV2_TCINDEX_SDI3);
6421  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI4-VITC", NTV2_TCINDEX_SDI4);
6426  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI5-VITC", NTV2_TCINDEX_SDI5);
6427  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI6-VITC", NTV2_TCINDEX_SDI6);
6428  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI7-VITC", NTV2_TCINDEX_SDI7);
6429  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI8-VITC", NTV2_TCINDEX_SDI8);
6436  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI1-VITC2", NTV2_TCINDEX_SDI1_2);
6437  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI2-VITC2", NTV2_TCINDEX_SDI2_2);
6438  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI3-VITC2", NTV2_TCINDEX_SDI3_2);
6439  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI4-VITC2", NTV2_TCINDEX_SDI4_2);
6440  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI5-VITC2", NTV2_TCINDEX_SDI5_2);
6441  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI6-VITC2", NTV2_TCINDEX_SDI6_2);
6442  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI7-VITC2", NTV2_TCINDEX_SDI7_2);
6443  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SDI8-VITC2", NTV2_TCINDEX_SDI8_2);
6445  }
6446  return "";
6447 }
6448 
6449 
6450 string NTV2AudioChannelPairToString (const NTV2AudioChannelPair inValue, const bool inCompactDisplay)
6451 {
6452  ostringstream oss;
6453  if (NTV2_IS_VALID_AUDIO_CHANNEL_PAIR(inValue))
6454  oss << (inCompactDisplay ? "" : "NTV2_AudioChannel") << DEC(inValue * 2 + 1) << (inCompactDisplay ? "-" : "_") << DEC(inValue * 2 + 2);
6455  else if (!inCompactDisplay)
6456  oss << "NTV2_AUDIO_CHANNEL_PAIR_INVALID";
6457  return oss.str();
6458 }
6459 
6460 
6461 string NTV2AudioChannelQuadToString (const NTV2Audio4ChannelSelect inValue, const bool inCompactDisplay)
6462 {
6463  ostringstream oss;
6464  if (NTV2_IS_VALID_AUDIO_CHANNEL_QUAD (inValue))
6465  oss << (inCompactDisplay ? "" : "NTV2_AudioChannel") << (inValue * 4 + 1) << (inCompactDisplay ? "-" : "_") << (inValue * 4 + 4);
6466  else if (!inCompactDisplay)
6467  oss << "NTV2_AUDIO_CHANNEL_QUAD_INVALID";
6468  return oss.str ();
6469 }
6470 
6471 
6472 string NTV2AudioChannelOctetToString (const NTV2Audio8ChannelSelect inValue, const bool inCompactDisplay)
6473 {
6474  ostringstream oss;
6475  if (NTV2_IS_VALID_AUDIO_CHANNEL_OCTET (inValue))
6476  oss << (inCompactDisplay ? "" : "NTV2_AudioChannel") << (inValue * 8 + 1) << (inCompactDisplay ? "-" : "_") << (inValue * 8 + 8);
6477  else if (!inCompactDisplay)
6478  oss << "NTV2_AUDIO_CHANNEL_OCTET_INVALID";
6479  return oss.str ();
6480 }
6481 
6482 
6483 string NTV2FramesizeToString (const NTV2Framesize inValue, const bool inCompactDisplay)
6484 {
6485  switch (inValue)
6486  {
6504  }
6505  return "";
6506 }
6507 
6508 
6509 string NTV2ModeToString (const NTV2Mode inValue, const bool inCompactDisplay)
6510 {
6511  switch (inValue)
6512  {
6516  }
6517  return "";
6518 }
6519 
6520 
6521 string NTV2VANCModeToString (const NTV2VANCMode inValue, const bool inCompactDisplay)
6522 {
6523  switch (inValue)
6524  {
6529  }
6530  return "";
6531 }
6532 
6533 
6534 string NTV2MixerKeyerModeToString (const NTV2MixerKeyerMode inValue, const bool inCompactDisplay)
6535 {
6536  switch(inValue)
6537  {
6543  }
6544  return "";
6545 }
6546 
6547 
6548 string NTV2MixerInputControlToString (const NTV2MixerKeyerInputControl inValue, const bool inCompactDisplay)
6549 {
6550  switch(inValue)
6551  {
6556  }
6557  return "";
6558 }
6559 
6560 
6561 string NTV2VideoLimitingToString (const NTV2VideoLimiting inValue, const bool inCompactDisplay)
6562 {
6563  switch(inValue)
6564  {
6569  }
6570  return "";
6571 }
6572 
6573 
6574 string NTV2BreakoutTypeToString (const NTV2BreakoutType inValue, const bool inCompactDisplay)
6575 {
6576  switch(inValue)
6577  {
6581  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KBox", NTV2_KBox);
6582  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KLBox", NTV2_KLBox);
6583  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "K3Box", NTV2_K3Box);
6584  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KLHiBox", NTV2_KLHiBox);
6585  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KLHePlusBox", NTV2_KLHePlusBox);
6586  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "K3GBox", NTV2_K3GBox);
6588  case NTV2_MAX_NUM_BreakoutTypes: break; //special case
6589  }
6590  return "";
6591 }
6592 
6593 string NTV2AncDataRgnToStr (const NTV2AncDataRgn inValue, const bool inCompactDisplay)
6594 {
6595  switch(inValue)
6596  {
6601  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "AncAll", NTV2_AncRgn_All);
6602  case NTV2_MAX_NUM_AncRgns: break; //special case
6603  }
6604  return "";
6605 }
6606 
6607 string NTV2UpConvertModeToString (const NTV2UpConvertMode inValue, const bool inCompact)
6608 {
6609  switch(inValue)
6610  {
6612  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompact, "4" "\xC3\x97" "3 Pillar Box", NTV2_UpConvertPillarbox4x3);
6613  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompact, "Zoomed 14" "\xC3\x97" "9", NTV2_UpConvertZoom14x9);
6616  case NTV2_MAX_NUM_UpConvertModes: break; //special case
6617  }
6618  return "";
6619 }
6620 
6621 string NTV2DownConvertModeToString (const NTV2DownConvertMode inValue, const bool inCompact)
6622 {
6623  switch(inValue)
6624  {
6628  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompact, "Zoomed 14" "\xC3\x97" "9", NTV2_DownConvert14x9);
6629  case NTV2_MAX_NUM_DownConvertModes: break; //special case
6630  }
6631  return "";
6632 }
6633 
6634 string NTV2IsoConvertModeToString (const NTV2IsoConvertMode inValue, const bool inCompact)
6635 {
6636  switch(inValue)
6637  {
6639  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompact, "Horiz Cropped", NTV2_IsoHCrop);
6640  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompact, "Vert Cropped", NTV2_IsoVCrop);
6642  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompact, "14" "\xC3\x97" "9", NTV2_Iso14x9);
6644  case NTV2_MAX_NUM_IsoConvertModes: break; //special case
6645  }
6646  return "";
6647 }
6648 
6649 string NTV2HDMIBitDepthToString (const NTV2HDMIBitDepth inValue, const bool inCompact)
6650 {
6651  switch(inValue)
6652  {
6656  case NTV2_INVALID_HDMIBitDepth: break;
6657  }
6658  return "";
6659 }
6660 
6661 string NTV2HDMIAudioChannelsToString (const NTV2HDMIAudioChannels inValue, const bool inCompact)
6662 {
6663  switch(inValue)
6664  {
6668  }
6669  return "";
6670 }
6671 
6672 string NTV2HDMIProtocolToString (const NTV2HDMIProtocol inValue, const bool inCompact)
6673 {
6674  switch(inValue)
6675  {
6678  case NTV2_INVALID_HDMI_PROTOCOL: break;
6679  }
6680  return "";
6681 }
6682 
6683 string NTV2HDMIRangeToString (const NTV2HDMIRange inValue, const bool inCompact)
6684 {
6685  switch(inValue)
6686  {
6689  case NTV2_INVALID_HDMI_RANGE: break;
6690  }
6691  return "";
6692 }
6693 
6694 string NTV2HDMIColorSpaceToString (const NTV2HDMIColorSpace inValue, const bool inCompact)
6695 {
6696  switch(inValue)
6697  {
6701  case NTV2_INVALID_HDMI_COLORSPACE: break;
6702  }
6703  return "";
6704 }
6705 
6706 string NTV2AudioFormatToString (const NTV2AudioFormat inValue, const bool inCompact)
6707 {
6708  switch(inValue)
6709  {
6712  case NTV2_AUDIO_FORMAT_INVALID: break;
6713  }
6714  return "";
6715 }
6716 
6717 string NTV2EmbeddedAudioInputToString (const NTV2EmbeddedAudioInput inValue, const bool inCompactDisplay)
6718 {
6719  switch(inValue)
6720  {
6730  }
6731  return "";
6732 }
6733 
6734 
6735 string NTV2AudioSourceToString (const NTV2AudioSource inValue, const bool inCompactDisplay)
6736 {
6737  switch (inValue)
6738  {
6745  }
6746  return "";
6747 }
6748 
6749 
6750 string NTV2VideoFormatToString (const NTV2VideoFormat inFormat, const bool inUseFrameRate)
6751 {
6752  switch (inFormat)
6753  {
6754  case NTV2_FORMAT_1080i_5000: return inUseFrameRate ? "1080i25" : "1080i50";
6755  case NTV2_FORMAT_1080i_5994: return inUseFrameRate ? "1080i29.97" : "1080i59.94";
6756  case NTV2_FORMAT_1080i_6000: return inUseFrameRate ? "1080i30" : "1080i60";
6757  case NTV2_FORMAT_720p_5994: return "720p59.94";
6758  case NTV2_FORMAT_720p_6000: return "720p60";
6759  case NTV2_FORMAT_1080psf_2398: return "1080sf23.98";
6760  case NTV2_FORMAT_1080psf_2400: return "1080sf24";
6761  case NTV2_FORMAT_1080p_2997: return "1080p29.97";
6762  case NTV2_FORMAT_1080p_3000: return "1080p30";
6763  case NTV2_FORMAT_1080p_2500: return "1080p25";
6764  case NTV2_FORMAT_1080p_2398: return "1080p23.98";
6765  case NTV2_FORMAT_1080p_2400: return "1080p24";
6766  case NTV2_FORMAT_1080p_2K_2398: return "2Kp23.98";
6767  case NTV2_FORMAT_1080p_2K_2400: return "2Kp24";
6768  case NTV2_FORMAT_1080psf_2K_2398: return "2Ksf23.98";
6769  case NTV2_FORMAT_1080psf_2K_2400: return "2Ksf24";
6770  case NTV2_FORMAT_720p_5000: return "720p50";
6771  case NTV2_FORMAT_1080p_5000_B: return "1080p50b";
6772  case NTV2_FORMAT_1080p_5994_B: return "1080p59.94b";
6773  case NTV2_FORMAT_1080p_6000_B: return "1080p60b";
6774  case NTV2_FORMAT_720p_2398: return "720p23.98";
6775  case NTV2_FORMAT_720p_2500: return "720p25";
6776  case NTV2_FORMAT_1080p_5000_A: return "1080p50a";
6777  case NTV2_FORMAT_1080p_5994_A: return "1080p59.94a";
6778  case NTV2_FORMAT_1080p_6000_A: return "1080p60a";
6779  case NTV2_FORMAT_1080p_2K_2500: return "2Kp25";
6780  case NTV2_FORMAT_1080psf_2K_2500: return "2Ksf25";
6781  case NTV2_FORMAT_1080psf_2500_2: return "1080sf25";
6782  case NTV2_FORMAT_1080psf_2997_2: return "1080sf29.97";
6783  case NTV2_FORMAT_1080psf_3000_2: return "1080sf30";
6784  case NTV2_FORMAT_525_5994: return inUseFrameRate ? "525i29.97" : "525i59.94";
6785  case NTV2_FORMAT_625_5000: return inUseFrameRate ? "625i25" : "625i50";
6786  case NTV2_FORMAT_525_2398: return "525i23.98";
6787  case NTV2_FORMAT_525_2400: return "525i24";
6788  case NTV2_FORMAT_525psf_2997: return "525sf29.97";
6789  case NTV2_FORMAT_625psf_2500: return "625sf25";
6790  case NTV2_FORMAT_2K_1498: return "2Kx1556sf14.98";
6791  case NTV2_FORMAT_2K_1500: return "2Kx1556sf15";
6792  case NTV2_FORMAT_2K_2398: return "2Kx1556sf23.98";
6793  case NTV2_FORMAT_2K_2400: return "2Kx1556sf24";
6794  case NTV2_FORMAT_2K_2500: return "2Kx1556sf25";
6795  case NTV2_FORMAT_4x1920x1080psf_2398: return "UHDsf23.98";
6796  case NTV2_FORMAT_4x1920x1080psf_2400: return "UHDsf24";
6797  case NTV2_FORMAT_4x1920x1080psf_2500: return "UHDsf25";
6798  case NTV2_FORMAT_4x1920x1080p_2398: return "UHDp23.98";
6799  case NTV2_FORMAT_4x1920x1080p_2400: return "UHDp24";
6800  case NTV2_FORMAT_4x1920x1080p_2500: return "UHDp25";
6801  case NTV2_FORMAT_4x2048x1080psf_2398: return "4Ksf23.98";
6802  case NTV2_FORMAT_4x2048x1080psf_2400: return "4Ksf24";
6803  case NTV2_FORMAT_4x2048x1080psf_2500: return "4Ksf25";
6804  case NTV2_FORMAT_4x2048x1080p_2398: return "4Kp23.98";
6805  case NTV2_FORMAT_4x2048x1080p_2400: return "4Kp24";
6806  case NTV2_FORMAT_4x2048x1080p_2500: return "4Kp25";
6807  case NTV2_FORMAT_4x1920x1080p_2997: return "UHDp29.97";
6808  case NTV2_FORMAT_4x1920x1080p_3000: return "UHDp30";
6809  case NTV2_FORMAT_4x1920x1080psf_2997: return "UHDsf29.97";
6810  case NTV2_FORMAT_4x1920x1080psf_3000: return "UHDsf30";
6811  case NTV2_FORMAT_4x2048x1080p_2997: return "4Kp29.97";
6812  case NTV2_FORMAT_4x2048x1080p_3000: return "4Kp30";
6813  case NTV2_FORMAT_4x2048x1080psf_2997: return "4Ksf29.97";
6814  case NTV2_FORMAT_4x2048x1080psf_3000: return "4Ksf30";
6815  case NTV2_FORMAT_4x1920x1080p_5000: return "UHDp50";
6816  case NTV2_FORMAT_4x1920x1080p_5994: return "UHDp59.94";
6817  case NTV2_FORMAT_4x1920x1080p_6000: return "UHDp60";
6818  case NTV2_FORMAT_4x2048x1080p_5000: return "4Kp50";
6819  case NTV2_FORMAT_4x2048x1080p_5994: return "4Kp59.94";
6820  case NTV2_FORMAT_4x2048x1080p_6000: return "4Kp60";
6821  case NTV2_FORMAT_4x2048x1080p_4795: return "4Kp47.95";
6822  case NTV2_FORMAT_4x2048x1080p_4800: return "4Kp48";
6823  case NTV2_FORMAT_4x2048x1080p_11988: return "4Kp119";
6824  case NTV2_FORMAT_4x2048x1080p_12000: return "4Kp120";
6825  case NTV2_FORMAT_1080p_2K_6000_A: return "2Kp60a";
6826  case NTV2_FORMAT_1080p_2K_5994_A: return "2Kp59.94a";
6827  case NTV2_FORMAT_1080p_2K_2997: return "2Kp29.97";
6828  case NTV2_FORMAT_1080p_2K_3000: return "2Kp30";
6829  case NTV2_FORMAT_1080p_2K_5000_A: return "2Kp50a";
6830  case NTV2_FORMAT_1080p_2K_4795_A: return "2Kp47.95a";
6831  case NTV2_FORMAT_1080p_2K_4800_A: return "2Kp48a";
6832  case NTV2_FORMAT_1080p_2K_4795_B: return "2Kp47.95b";
6833  case NTV2_FORMAT_1080p_2K_4800_B: return "2Kp48b";
6834  case NTV2_FORMAT_1080p_2K_5000_B: return "2Kp50b";
6835  case NTV2_FORMAT_1080p_2K_5994_B: return "2Kp59.94b";
6836  case NTV2_FORMAT_1080p_2K_6000_B: return "2Kp60b";
6837  case NTV2_FORMAT_3840x2160psf_2398: return "UHDsf23.98";
6838  case NTV2_FORMAT_3840x2160psf_2400: return "UHDsf24";
6839  case NTV2_FORMAT_3840x2160psf_2500: return "UHDsf25";
6840  case NTV2_FORMAT_3840x2160p_2398: return "UHDp23.98";
6841  case NTV2_FORMAT_3840x2160p_2400: return "UHDp24";
6842  case NTV2_FORMAT_3840x2160p_2500: return "UHDp25";
6843  case NTV2_FORMAT_3840x2160p_2997: return "UHDp29.97";
6844  case NTV2_FORMAT_3840x2160p_3000: return "UHDp30";
6845  case NTV2_FORMAT_3840x2160psf_2997: return "UHDsf29.97";
6846  case NTV2_FORMAT_3840x2160psf_3000: return "UHDsf30";
6847  case NTV2_FORMAT_3840x2160p_5000: return "UHDp50";
6848  case NTV2_FORMAT_3840x2160p_5994: return "UHDp59.94";
6849  case NTV2_FORMAT_3840x2160p_6000: return "UHDp60";
6850  case NTV2_FORMAT_4096x2160psf_2398: return "4Ksf23.98";
6851  case NTV2_FORMAT_4096x2160psf_2400: return "4Ksf24";
6852  case NTV2_FORMAT_4096x2160psf_2500: return "4Ksf25";
6853  case NTV2_FORMAT_4096x2160p_2398: return "4Kp23.98";
6854  case NTV2_FORMAT_4096x2160p_2400: return "4Kp24";
6855  case NTV2_FORMAT_4096x2160p_2500: return "4Kp25";
6856  case NTV2_FORMAT_4096x2160p_2997: return "4Kp29.97";
6857  case NTV2_FORMAT_4096x2160p_3000: return "4Kp30";
6858  case NTV2_FORMAT_4096x2160psf_2997: return "4Ksf29.97";
6859  case NTV2_FORMAT_4096x2160psf_3000: return "4Ksf30";
6860  case NTV2_FORMAT_4096x2160p_4795: return "4Kp47.95";
6861  case NTV2_FORMAT_4096x2160p_4800: return "4Kp48";
6862  case NTV2_FORMAT_4096x2160p_5000: return "4Kp50";
6863  case NTV2_FORMAT_4096x2160p_5994: return "4Kp59.94";
6864  case NTV2_FORMAT_4096x2160p_6000: return "4Kp60";
6865  case NTV2_FORMAT_4096x2160p_11988: return "4Kp119";
6866  case NTV2_FORMAT_4096x2160p_12000: return "4Kp120";
6867  case NTV2_FORMAT_4x1920x1080p_5000_B: return "UHDp50b";
6868  case NTV2_FORMAT_4x1920x1080p_5994_B: return "UHDp59.94b";
6869  case NTV2_FORMAT_4x1920x1080p_6000_B: return "UHDp60b";
6870  case NTV2_FORMAT_4x2048x1080p_5000_B: return "4Kp50b";
6871  case NTV2_FORMAT_4x2048x1080p_5994_B: return "4Kp59.94b";
6872  case NTV2_FORMAT_4x2048x1080p_6000_B: return "4Kp60b";
6873  case NTV2_FORMAT_4x2048x1080p_4795_B: return "4Kp47.95b";
6874  case NTV2_FORMAT_4x2048x1080p_4800_B: return "4Kp48b";
6875  case NTV2_FORMAT_3840x2160p_5000_B: return "UHDp50b";
6876  case NTV2_FORMAT_3840x2160p_5994_B: return "UHDp59.94b";
6877  case NTV2_FORMAT_3840x2160p_6000_B: return "UHDp60b";
6878  case NTV2_FORMAT_4096x2160p_4795_B: return "4Kp47.95b";
6879  case NTV2_FORMAT_4096x2160p_4800_B: return "4Kp48b";
6880  case NTV2_FORMAT_4096x2160p_5000_B: return "4Kp50b";
6881  case NTV2_FORMAT_4096x2160p_5994_B: return "4Kp59.94b";
6882  case NTV2_FORMAT_4096x2160p_6000_B: return "4Kp60b";
6883  case NTV2_FORMAT_4x3840x2160p_2398: return "UHD2p23.98";
6884  case NTV2_FORMAT_4x3840x2160p_2400: return "UHD2p24";
6885  case NTV2_FORMAT_4x3840x2160p_2500: return "UHD2p25";
6886  case NTV2_FORMAT_4x3840x2160p_2997: return "UHD2p29.97";
6887  case NTV2_FORMAT_4x3840x2160p_3000: return "UHD2p30";
6888  case NTV2_FORMAT_4x3840x2160p_5000: return "UHD2p50";
6889  case NTV2_FORMAT_4x3840x2160p_5994: return "UHD2p59.94";
6890  case NTV2_FORMAT_4x3840x2160p_6000: return "UHD2p60";
6891  case NTV2_FORMAT_4x3840x2160p_5000_B: return "UHD2p50b";
6892  case NTV2_FORMAT_4x3840x2160p_5994_B: return "UHD2p59.94b";
6893  case NTV2_FORMAT_4x3840x2160p_6000_B: return "UHD2p60b";
6894  case NTV2_FORMAT_4x4096x2160p_2398: return "8Kp23.98";
6895  case NTV2_FORMAT_4x4096x2160p_2400: return "8Kp24";
6896  case NTV2_FORMAT_4x4096x2160p_2500: return "8Kp25";
6897  case NTV2_FORMAT_4x4096x2160p_2997: return "8Kp29.97";
6898  case NTV2_FORMAT_4x4096x2160p_3000: return "8Kp30";
6899  case NTV2_FORMAT_4x4096x2160p_4795: return "8Kp47.95";
6900  case NTV2_FORMAT_4x4096x2160p_4800: return "8Kp48";
6901  case NTV2_FORMAT_4x4096x2160p_5000: return "8Kp50";
6902  case NTV2_FORMAT_4x4096x2160p_5994: return "8Kp59.94";
6903  case NTV2_FORMAT_4x4096x2160p_6000: return "8Kp60";
6904  case NTV2_FORMAT_4x4096x2160p_4795_B: return "8Kp47.95b";
6905  case NTV2_FORMAT_4x4096x2160p_4800_B: return "8Kp48b";
6906  case NTV2_FORMAT_4x4096x2160p_5000_B: return "8Kp50b";
6907  case NTV2_FORMAT_4x4096x2160p_5994_B: return "8Kp59.94b";
6908  case NTV2_FORMAT_4x4096x2160p_6000_B: return "8Kp60b";
6909  default: return "Unknown";
6910  }
6911 } // NTV2VideoFormatToString
6912 
6913 
6914 string NTV2StandardToString (const NTV2Standard inValue, const bool inForRetailDisplay)
6915 {
6916  switch (inValue)
6917  {
6918  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "1080i", NTV2_STANDARD_1080);
6928  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "UHD HFR", NTV2_STANDARD_3840HFR);
6935  }
6936  return "";
6937 }
6938 
6939 
6940 string NTV2FrameBufferFormatToString (const NTV2FrameBufferFormat inValue, const bool inForRetailDisplay)
6941 {
6942  switch (inValue)
6943  {
6946  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RGBA-8", NTV2_FBF_ARGB);
6947  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "ARGB-8", NTV2_FBF_RGBA);
6948  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RGB-10", NTV2_FBF_10BIT_RGB);
6950  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "ABGR-8", NTV2_FBF_ABGR);
6951  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RGB-10DPX", NTV2_FBF_10BIT_DPX);
6952  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "YUV-10DPX", NTV2_FBF_10BIT_YCBCR_DPX);
6953  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "DVCProHD", NTV2_FBF_8BIT_DVCPRO);
6956  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RGB-8", NTV2_FBF_24BIT_RGB);
6957  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "BGR-8", NTV2_FBF_24BIT_BGR);
6958  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "YUVA-10", NTV2_FBF_10BIT_YCBCRA);
6959  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RGB-10LDPX", NTV2_FBF_10BIT_DPX_LE);
6960  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RGB-12", NTV2_FBF_48BIT_RGB);
6962  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "ProRes-DVC", NTV2_FBF_PRORES_DVCPRO);
6963  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "ProRes-HDV", NTV2_FBF_PRORES_HDV);
6965  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "ARGB-10", NTV2_FBF_10BIT_ARGB);
6966  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "ARGB-16", NTV2_FBF_16BIT_ARGB);
6968  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RAW-RGB10", NTV2_FBF_10BIT_RAW_RGB);
6969  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "RAW-YUV10", NTV2_FBF_10BIT_RAW_YCBCR);
6972  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "YUV-P420-10", NTV2_FBF_10BIT_YCBCR_420PL2);
6976  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Unknown", NTV2_FBF_INVALID);
6977  }
6978  return "";
6979 }
6980 
6981 
6982 string NTV2M31VideoPresetToString (const M31VideoPreset inValue, const bool inForRetailDisplay)
6983 {
6984  if (inForRetailDisplay)
6985  return m31Presets [inValue]; // frameBufferFormatString (inValue);
6986 
6987  switch (inValue)
6988  {
6997 
7002 
7011 
7020 
7032 
7044 
7053 
7062 
7074 
7083 
7092 
7098 
7107 
7112 
7119 
7136 
7148  case M31_NUMVIDEOPRESETS: return ""; //special case
7149  }
7150  return "";
7151 }
7152 
7153 
7154 string NTV2FrameGeometryToString (const NTV2FrameGeometry inValue, const bool inForRetailDisplay)
7155 {
7156  switch (inValue)
7157  {
7158  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "1920x1080", NTV2_FG_1920x1080);
7159  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "1280x720", NTV2_FG_1280x720);
7160  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "720x486", NTV2_FG_720x486);
7161  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "720x576", NTV2_FG_720x576);
7162  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "1920x1114", NTV2_FG_1920x1114);
7163  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "2048x1114", NTV2_FG_2048x1114);
7164  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "720x508", NTV2_FG_720x508);
7165  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "720x598", NTV2_FG_720x598);
7166  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "1920x1112", NTV2_FG_1920x1112);
7167  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "1280x740", NTV2_FG_1280x740);
7168  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "2048x1080", NTV2_FG_2048x1080);
7169  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "2048x1556", NTV2_FG_2048x1556);
7170  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "2048x1588", NTV2_FG_2048x1588);
7171  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "2048x1112", NTV2_FG_2048x1112);
7172  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "720x514", NTV2_FG_720x514);
7173  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "720x612", NTV2_FG_720x612);
7174  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "3840x2160", NTV2_FG_4x1920x1080);
7175  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "4096x2160", NTV2_FG_4x2048x1080);
7176  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "7680x4320", NTV2_FG_4x3840x2160);
7177  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "8192x4320", NTV2_FG_4x4096x2160);
7178  case NTV2_FG_NUMFRAMEGEOMETRIES: return ""; //special case
7179  }
7180  return "";
7181 }
7182 
7183 
7184 string NTV2FrameRateToString (const NTV2FrameRate inValue, const bool inForRetailDisplay)
7185 {
7186  switch (inValue)
7187  {
7203 #if !defined(NTV2_DEPRECATE_16_0)
7208 #endif
7209  case NTV2_NUM_FRAMERATES: return ""; //special case
7210  }
7211  return "";
7212 }
7213 
7214 
7215 string NTV2InputSourceToString (const NTV2InputSource inValue, const bool inForRetailDisplay)
7216 {
7217  switch (inValue)
7218  {
7233  }
7234  return "";
7235 }
7236 
7237 
7238 string NTV2OutputDestinationToString (const NTV2OutputDestination inValue, const bool inForRetailDisplay)
7239 {
7240  switch (inValue)
7241  {
7253  }
7254  return "";
7255 }
7256 
7257 
7258 string NTV2ReferenceSourceToString (const NTV2ReferenceSource inValue, const bool inForRetailDisplay)
7259 {
7260  switch (inValue)
7261  {
7262  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Reference In", NTV2_REFERENCE_EXTERNAL);
7263  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 1", NTV2_REFERENCE_INPUT1);
7264  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 2", NTV2_REFERENCE_INPUT2);
7265  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Free Run", NTV2_REFERENCE_FREERUN);
7268  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 3", NTV2_REFERENCE_INPUT3);
7269  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 4", NTV2_REFERENCE_INPUT4);
7270  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 5", NTV2_REFERENCE_INPUT5);
7271  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 6", NTV2_REFERENCE_INPUT6);
7272  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 7", NTV2_REFERENCE_INPUT7);
7273  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SDI In 8", NTV2_REFERENCE_INPUT8);
7274  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SFP 1 PCR", NTV2_REFERENCE_SFP1_PCR);
7275  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SFP 1 PTP", NTV2_REFERENCE_SFP1_PTP);
7276  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SFP 2 PCR", NTV2_REFERENCE_SFP2_PCR);
7277  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "SFP 2 PTP", NTV2_REFERENCE_SFP2_PTP);
7281  case NTV2_NUM_REFERENCE_INPUTS: return ""; //special case
7282  }
7283  return "";
7284 }
7285 
7286 
7287 string NTV2RegisterWriteModeToString (const NTV2RegisterWriteMode inValue, const bool inForRetailDisplay)
7288 {
7289  switch (inValue)
7290  {
7291  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Sync To Field", NTV2_REGWRITE_SYNCTOFIELD);
7292  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Sync To Frame", NTV2_REGWRITE_SYNCTOFRAME);
7293  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inForRetailDisplay, "Immediate", NTV2_REGWRITE_IMMEDIATE);
7294  case NTV2_REGWRITE_SYNCTOFIELD_AFTER10LINES: return ""; //special case
7295  }
7296  return "";
7297 }
7298 
7299 
7300 std::string NTV2InterruptEnumToString (const INTERRUPT_ENUMS inInterruptEnumValue)
7301 {
7302  switch(inInterruptEnumValue)
7303  {
7345  case eNumInterruptTypes: return ""; //special case
7346  }
7347  return "";
7348 }
7349 
7350 std::string NTV2IpErrorEnumToString (const NTV2IpError inIpErrorEnumValue)
7351 {
7352  switch (inIpErrorEnumValue)
7353  {
7354  case NTV2IpErrNone: return "";
7355  case NTV2IpErrInvalidChannel: return "Invalid channel";
7356  case NTV2IpErrInvalidFormat: return "Invalid format";
7357  case NTV2IpErrInvalidBitdepth: return "Invalid bit depth";
7358  case NTV2IpErrInvalidUllHeight: return "Invalid height in ull mode";
7359  case NTV2IpErrInvalidUllLevels: return "Invalid number of levels in ull mode";
7360  case NTV2IpErrUllNotSupported: return "Ull mode not supported";
7361  case NTV2IpErrNotReady: return "KonaIP card not ready";
7362  case NTV2IpErrSoftwareMismatch: return "Host software does not match device firmware";
7363  case NTV2IpErrSFP1NotConfigured: return "SFP 1 not configured";
7364  case NTV2IpErrSFP2NotConfigured: return "SFP 2 not configured";
7365  case NTV2IpErrInvalidIGMPVersion: return "Invalid IGMP version";
7366  case NTV2IpErrCannotGetMacAddress: return "Failed to retrieve MAC address from ARP table";
7367  case NTV2IpErrNotSupported: return "Not supported for by this firmware";
7368  case NTV2IpErrWriteSOMToMB: return "Could not write SOM to MB";
7369  case NTV2IpErrWriteSeqToMB: return "Could not write sequence number to MB";
7370  case NTV2IpErrWriteCountToMB: return "Could not write count to MB";
7371  case NTV2IpErrTimeoutNoSOM: return "MB response timeout (no SOM)";
7372  case NTV2IpErrTimeoutNoSeq: return "MB response timeout (no sequence number)";
7373  case NTV2IpErrTimeoutNoBytecount: return "MB response timeout (no bytecount)";
7374  case NTV2IpErrExceedsFifo: return "Response exceeds FIFO length";
7375  case NTV2IpErrNoResponseFromMB: return "No response from MB";
7376  case NTV2IpErrAcquireMBTimeout: return "AcquireMailBoxLock timeout";
7377  case NTV2IpErrInvalidMBResponse: return "Invalid response from MB";
7378  case NTV2IpErrInvalidMBResponseSize: return "Invalid response size from MB";
7379  case NTV2IpErrInvalidMBResponseNoMac: return "MAC Address not found in response from MB";
7380  case NTV2IpErrMBStatusFail: return "MB Status Failure";
7381  case NTV2IpErrGrandMasterInfo: return "PTP Grand Master Info not found";
7382  case NTV2IpErrSDPTooLong: return "SDP too long";
7383  case NTV2IpErrSDPNotFound: return "SDP not found";
7384  case NTV2IpErrSDPEmpty: return "SDP is empty";
7385  case NTV2IpErrSDPInvalid: return "SDP is not valid";
7386  case NTV2IpErrSDPURLInvalid: return "Invalid SDP URL";
7387  case NTV2IpErrSDPNoVideo: return "SDP does not contain video";
7388  case NTV2IpErrSDPNoAudio: return "SDP does not contain audio";
7389  case NTV2IpErrSDPNoANC: return "SDP does not contain metadata";
7390  case NTV2IpErrSFPNotFound: return "SFP data not found";
7391  case NTV2IpErrInvalidConfig: return "Invalid configuration";
7392  default: return "Unknown IP error";
7393  }
7394 }
7395 
7396 ostream & operator << (ostream & inOutStream, const RP188_STRUCT & inObj)
7397 {
7398  return inOutStream << "DBB=0x" << hex << setw (8) << setfill ('0') << inObj.DBB
7399  << "|HI=0x" << hex << setw (8) << setfill ('0') << inObj.High
7400  << "|LO=0x" << hex << setw (8) << setfill ('0') << inObj.Low
7401  << dec;
7402 } // RP188_STRUCT ostream operator
7403 
7404 
7405 string NTV2GetBitfileName (const NTV2DeviceID inBoardID, const bool useOemNameOnWindows)
7406 {
7407  bool useWindowsName = !useOemNameOnWindows;
7408 #if defined (AJAMac) || defined (AJALinux)
7409  useWindowsName = false;
7410 #endif
7411  switch (inBoardID)
7412  {
7413  case DEVICE_ID_NOTFOUND: break;
7414  case DEVICE_ID_CORVID1: return useWindowsName ? "corvid1_pcie.bit" : "corvid1pcie.bit";
7415  case DEVICE_ID_CORVID22: return useWindowsName ? "corvid22_pcie.bit" : "Corvid22.bit";
7416  case DEVICE_ID_CORVID24: return useWindowsName ? "corvid24_pcie.bit" : "corvid24_quad.bit";
7417  case DEVICE_ID_CORVID3G: return useWindowsName ? "corvid3G_pcie.bit" : "corvid1_3gpcie.bit";
7418  case DEVICE_ID_CORVID44: return useWindowsName ? "corvid44_pcie.bit" : "corvid_44.bit";
7419  case DEVICE_ID_CORVID88: return useWindowsName ? "corvid88_pcie.bit" : "corvid_88.bit";
7420  case DEVICE_ID_CORVIDHEVC: return useWindowsName ? "corvid_hevc.bit" : "corvid_hevc.bit";
7421  case DEVICE_ID_IO4K: return useWindowsName ? "io4k_pcie.bit" : "IO_XT_4K.bit";
7422  case DEVICE_ID_IO4KUFC: return useWindowsName ? "io4k_ufc_pcie.bit" : "IO_XT_4K_UFC.bit";
7423  case DEVICE_ID_IOEXPRESS: return useWindowsName ? "ioexpress_pcie.bit" : "chekov_00_pcie.bit";
7424  case DEVICE_ID_IOXT: return useWindowsName ? "ioxt_pcie.bit" : "top_io_tx.bit";
7425  case DEVICE_ID_KONA3G: return useWindowsName ? "kona3g_pcie.bit" : "k3g_top.bit";
7426  case DEVICE_ID_KONA3GQUAD: return useWindowsName ? "kona3g_quad_pcie.bit" : "k3g_quad.bit";
7427  case DEVICE_ID_KONA4: return useWindowsName ? "kona4_pcie.bit" : "kona_4_quad.bit";
7428  case DEVICE_ID_KONA4UFC: return useWindowsName ? "kona4_ufc_pcie.bit" : "kona_4_ufc.bit";
7429  case DEVICE_ID_KONAIP_2022: return useWindowsName ? "kip_s2022.mcs" : "kip_s2022.mcs";
7430  case DEVICE_ID_KONAIP_4CH_2SFP: return useWindowsName ? "s2022_56_2p2ch_rxtx.mcs" : "s2022_56_2p2ch_rxtx.mcs";
7431  case DEVICE_ID_KONAIP_1RX_1TX_1SFP_J2K: return useWindowsName ? "kip_j2k_1i1o.mcs" : "kip_j2k_1i1o.mcs";
7432  case DEVICE_ID_KONAIP_2TX_1SFP_J2K: return useWindowsName ? "kip_j2k_2o.mcs" : "kip_j2k_2o.mcs";
7433  case DEVICE_ID_KONAIP_1RX_1TX_2110: return useWindowsName ? "s2110_1rx_1tx.mcs" : "s2110_1rx_1tx.mcs";
7434  case DEVICE_ID_KONALHEPLUS: return useWindowsName ? "lheplus_pcie.bit" : "lhe_12_pcie.bit";
7435  case DEVICE_ID_KONALHI: return useWindowsName ? "lhi_pcie.bit" : "top_pike.bit";
7436  case DEVICE_ID_TTAP: return useWindowsName ? "ttap_pcie.bit" : "t_tap_top.bit";
7437  case DEVICE_ID_IO4KPLUS: return useWindowsName ? "io4kplus_pcie.bit" : "io4kp.bit";
7438  case DEVICE_ID_IOIP_2022: return useWindowsName ? "ioip_s2022.mcs" : "ioip_s2022.mcs";
7439  case DEVICE_ID_IOIP_2110: return useWindowsName ? "ioip_s2110.mcs" : "ioip_s2110.mcs";
7440  case DEVICE_ID_IOIP_2110_RGB12: return useWindowsName ? "ioip_s2110_rgb.mcs" : "ioip_s2110_rgb.mcs";
7441  case DEVICE_ID_KONAIP_2110: return useWindowsName ? "kip_s2110.mcs" : "kip_s2110.mcs";
7442  case DEVICE_ID_KONAIP_2110_RGB12: return useWindowsName ? "kip_s2110_rgb.mcs" : "kip_s2110_rgb.mcs";
7443  case DEVICE_ID_KONAHDMI: return useWindowsName ? "kona_hdmi_4rx.bit" : "kona_hdmi_4rx.bit";
7444  case DEVICE_ID_KONA1: return useWindowsName ? "kona1_pcie.bit" : "kona1.bit";
7445  case DEVICE_ID_KONA5: return "kona5_retail_tprom.bit";
7446  case DEVICE_ID_KONA5_2X4K: return "kona5_2x4k_tprom.bit";
7447  case DEVICE_ID_KONA5_8KMK: return "kona5_8k_mk_tprom.bit";
7448  case DEVICE_ID_KONA5_8K: return "kona5_8k_tprom.bit";
7449  case DEVICE_ID_KONA5_3DLUT: return "kona5_3d_lut_tprom.bit";
7450  case DEVICE_ID_KONA5_OE1: return "kona5_oe_cfg1_tprom.bit";
7451  case DEVICE_ID_KONA5_OE2: return "kona5_oe_cfg3_tprom.bit";
7452  case DEVICE_ID_KONA5_OE3: return "kona5_oe_cfg3_tprom.bit";
7453  case DEVICE_ID_KONA5_OE4: return "kona5_oe_cfg4_tprom.bit";
7454  case DEVICE_ID_KONA5_OE5: return "kona5_oe_cfg5_tprom.bit";
7455  case DEVICE_ID_KONA5_OE6: return "kona5_oe_cfg6_tprom.bit";
7456  case DEVICE_ID_KONA5_OE7: return "kona5_oe_cfg7_tprom.bit";
7457  case DEVICE_ID_KONA5_OE8: return "kona5_oe_cfg8_tprom.bit";
7458  case DEVICE_ID_KONA5_OE9: return "kona5_oe_cfg9_tprom.bit";
7459  case DEVICE_ID_KONA5_OE10: return "kona5_oe_cfg10_tprom.bit";
7460  case DEVICE_ID_KONA5_OE11: return "kona5_oe_cfg11_tprom.bit";
7461  case DEVICE_ID_KONA5_OE12: return "kona5_oe_cfg12_tprom.bit";
7462  case DEVICE_ID_SOJI_OE1: return "soji_oe_cfg1.bit";
7463  case DEVICE_ID_SOJI_OE2: return "soji_oe_cfg3.bit";
7464  case DEVICE_ID_SOJI_OE3: return "soji_oe_cfg3.bit";
7465  case DEVICE_ID_SOJI_OE4: return "soji_oe_cfg4.bit";
7466  case DEVICE_ID_SOJI_OE5: return "soji_oe_cfg5.bit";
7467  case DEVICE_ID_SOJI_OE6: return "soji_oe_cfg6.bit";
7468  case DEVICE_ID_SOJI_OE7: return "soji_oe_cfg7.bit";
7469  case DEVICE_ID_SOJI_3DLUT: return "soji_3dlut.bit";
7470  case DEVICE_ID_SOJI_DIAGS: return "soji_diags.bit";
7471  case DEVICE_ID_KONA5_8K_MV_TX: return "kona5_8k_mv_tx_tprom.bit";
7472  case DEVICE_ID_CORVID44_8KMK: return "c44_12g_8k_mk_tprom.bit";
7473  case DEVICE_ID_CORVID44_8K: return "c44_12g_8k_tprom.bit";
7474  case DEVICE_ID_CORVID44_2X4K: return "c44_12g_2x4k_tprom.bit";
7475  case DEVICE_ID_CORVID44_PLNR: return "c44_12g_plnr_tprom.bit";
7476  case DEVICE_ID_TTAP_PRO: return "t_tap_pro.bit";
7477  case DEVICE_ID_IOX3: return "iox3.bit";
7478  case DEVICE_ID_KONAX: return "konax.bit";
7479  case DEVICE_ID_KONAXM: return "konaxm.bit";
7480  default: return "";
7481  }
7482  return "";
7483 } // NTV2GetBitfileName
7484 
7485 
7486 bool NTV2IsCompatibleBitfileName (const string & inBitfileName, const NTV2DeviceID inDeviceID)
7487 {
7488  const string deviceBitfileName (::NTV2GetBitfileName (inDeviceID));
7489  if (inBitfileName == deviceBitfileName)
7490  return true;
7491 
7492  switch (inDeviceID)
7493  {
7496 
7499 
7502 
7503  default: break;
7504  }
7505  return false;
7506 
7507 } // IsCompatibleBitfileName
7508 
7509 
7510 NTV2DeviceID NTV2GetDeviceIDFromBitfileName (const string & inBitfileName)
7511 {
7512  typedef map <string, NTV2DeviceID> BitfileName2DeviceID;
7513  static BitfileName2DeviceID sBitfileName2DeviceID;
7514  if (sBitfileName2DeviceID.empty ())
7515  {
7523  for (unsigned ndx (0); ndx < sizeof (sDeviceIDs) / sizeof (NTV2DeviceID); ndx++)
7524  sBitfileName2DeviceID [::NTV2GetBitfileName (sDeviceIDs [ndx])] = sDeviceIDs [ndx];
7525  }
7526  return sBitfileName2DeviceID [inBitfileName];
7527 }
7528 
7529 
7531 {
7532  #if defined (AJAMac)
7533  return "/Library/Application Support/AJA/Firmware";
7534  #elif defined (MSWindows)
7535  HKEY hKey (AJA_NULL);
7536  DWORD bufferSize (1024);
7537  char * lpData (new char [bufferSize]);
7538 
7539  if (RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\AJA", NULL, KEY_READ, &hKey) == ERROR_SUCCESS
7540  && RegQueryValueExA (hKey, "firmwarePath", NULL, NULL, (LPBYTE) lpData, &bufferSize) == ERROR_SUCCESS)
7541  return string (lpData);
7542  RegCloseKey (hKey);
7543  return "";
7544  #elif defined (AJALinux)
7545  return "/opt/aja/firmware";
7546  #else
7547  return "";
7548  #endif
7549 }
7550 
7551 
7553 {
7554  static const NTV2DeviceID sValidDeviceIDs [] = { DEVICE_ID_CORVID1,
7623  if (inKinds == NTV2_DEVICEKIND_NONE)
7624  return NTV2DeviceIDSet();
7625 
7626  NTV2DeviceIDSet result;
7627  for (unsigned ndx(0); ndx < sizeof(sValidDeviceIDs) / sizeof(NTV2DeviceID); ndx++)
7628  {
7629  const NTV2DeviceID deviceID(sValidDeviceIDs[ndx]);
7630  if (deviceID == DEVICE_ID_NOTFOUND)
7631  continue;
7632  bool insertIt (false);
7633  if (inKinds == NTV2_DEVICEKIND_ALL)
7634  insertIt = true;
7635  else if (inKinds & NTV2_DEVICEKIND_INPUT && ::NTV2DeviceCanDoCapture(deviceID))
7636  insertIt = true;
7637  else if (inKinds & NTV2_DEVICEKIND_OUTPUT && ::NTV2DeviceCanDoPlayback(deviceID))
7638  insertIt = true;
7639  else if (inKinds & NTV2_DEVICEKIND_SDI && (::NTV2DeviceGetNumVideoInputs(deviceID)+::NTV2DeviceGetNumVideoOutputs(deviceID)) > 0)
7640  insertIt = true;
7641  else if (inKinds & NTV2_DEVICEKIND_HDMI && (::NTV2DeviceGetNumHDMIVideoInputs(deviceID)+::NTV2DeviceGetNumHDMIVideoOutputs(deviceID)) > 0)
7642  insertIt = true;
7643  else if (inKinds & NTV2_DEVICEKIND_ANALOG && (::NTV2DeviceGetNumAnalogVideoInputs(deviceID)+::NTV2DeviceGetNumAnalogVideoOutputs(deviceID)) > 0)
7644  insertIt = true;
7645  else if (inKinds & NTV2_DEVICEKIND_SFP && ::NTV2DeviceCanDoIP(deviceID))
7646  insertIt = true;
7647  else if (inKinds & NTV2_DEVICEKIND_EXTERNAL && ::NTV2DeviceIsExternalToHost(deviceID))
7648  insertIt = true;
7649  else if (inKinds & NTV2_DEVICEKIND_4K && ::NTV2DeviceCanDo4KVideo(deviceID))
7650  insertIt = true;
7651  else if (inKinds & NTV2_DEVICEKIND_12G && ::NTV2DeviceCanDo12GSDI(deviceID))
7652  insertIt = true;
7653  else if (inKinds & NTV2_DEVICEKIND_6G && ::NTV2DeviceCanDo12GSDI(deviceID))
7654  insertIt = true;
7655  else if (inKinds & NTV2_DEVICEKIND_CUSTOM_ANC && ::NTV2DeviceCanDoCustomAnc(deviceID))
7656  insertIt = true;
7657  else if (inKinds & NTV2_DEVICEKIND_RELAYS && ::NTV2DeviceHasSDIRelays(deviceID))
7658  insertIt = true;
7659  if (insertIt)
7660  result.insert (deviceID);
7661  } // for each supported device
7662  return result;
7663 }
7664 
7665 ostream & operator << (std::ostream & inOutStr, const NTV2DeviceIDList & inList)
7666 {
7667  for (NTV2DeviceIDListConstIter iter(inList.begin()); iter != inList.end (); ++iter)
7668  inOutStr << (iter != inList.begin() ? ", " : "") << ::NTV2DeviceIDToString(*iter);
7669  return inOutStr;
7670 }
7671 
7672 ostream & operator << (ostream & inOutStr, const NTV2DeviceIDSet & inSet)
7673 {
7674  for (NTV2DeviceIDSetConstIter iter(inSet.begin()); iter != inSet.end(); ++iter)
7675  inOutStr << (iter != inSet.begin() ? ", " : "") << ::NTV2DeviceIDToString(*iter);
7676  return inOutStr;
7677 }
7678 
7679 
7680 std::string NTV2GetVersionString (const bool inDetailed)
7681 {
7682  ostringstream oss;
7683 
7685  if (!string (AJA_NTV2_SDK_BUILD_TYPE).empty ())
7687  if (inDetailed)
7688  oss << " built on " << AJA_NTV2_SDK_BUILD_DATETIME;
7689  return oss.str ();
7690 }
7691 
7692 UWord NTV2GetSDKVersionComponent (const int inVersionComponent)
7693 {
7694  switch (inVersionComponent)
7695  {
7696  case 0: return AJA_NTV2_SDK_VERSION_MAJOR;
7697  case 1: return AJA_NTV2_SDK_VERSION_MINOR;
7698  case 2: return AJA_NTV2_SDK_VERSION_POINT;
7699  case 3: return AJA_NTV2_SDK_BUILD_NUMBER;
7700  default: break;
7701  }
7702  return 0;
7703 }
7704 
7705 
7707 {
7708  return CNTV2RegisterExpert::GetDisplayName(inValue);
7709 }
7710 
7711 
7712 string AutoCircVidProcModeToString (const AutoCircVidProcMode inValue, const bool inCompactDisplay)
7713 {
7714  switch (inValue)
7715  {
7721  }
7722  return "??";
7723 }
7724 
7725 
7726 string NTV2ColorCorrectionModeToString (const NTV2ColorCorrectionMode inValue, const bool inCompactDisplay)
7727 {
7728  switch (inValue)
7729  {
7735  }
7736  return "??";
7737 }
7738 
7739 string NTV2BitfileTypeToString (const NTV2BitfileType inValue, const bool inCompactDisplay)
7740 {
7741  switch (inValue)
7742  {
7743  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid1 Main", NTV2_BITFILE_CORVID1_MAIN);
7744  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid22 Main", NTV2_BITFILE_CORVID22_MAIN);
7745  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona 3G Main", NTV2_BITFILE_KONA3G_MAIN);
7747  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "IoExpress Main", NTV2_BITFILE_IOEXPRESS_MAIN);
7748  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid3G Main", NTV2_BITFILE_CORVID3G_MAIN);
7749  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona 3G Quad", NTV2_BITFILE_KONA3G_QUAD);
7752  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid24 Main", NTV2_BITFILE_CORVID24_MAIN);
7753  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "T-Tap Main", NTV2_BITFILE_TTAP_MAIN);
7759  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid88 Main", NTV2_BITFILE_CORVID88);
7760  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid44 Main", NTV2_BITFILE_CORVID44);
7761  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid HEVC", NTV2_BITFILE_CORVIDHEVC);
7762  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KonaIP 2022", NTV2_BITFILE_KONAIP_2022);
7763  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KonaIP 4CH 2SFP", NTV2_BITFILE_KONAIP_4CH_2SFP);
7764  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KonaIP 1Rx 1Tx 1SFP J2K", NTV2_BITFILE_KONAIP_1RX_1TX_1SFP_J2K);
7765  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KonaIP 2Tx 1SFP J2K", NTV2_BITFILE_KONAIP_2TX_1SFP_J2K);
7766  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KonaIP 1Rx 1Tx 2110", NTV2_BITFILE_KONAIP_1RX_1TX_2110);
7770  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KonaIP 2110", NTV2_BITFILE_KONAIP_2110);
7772  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona HDMI", NTV2_BITFILE_KONAHDMI);
7778  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "T-Tap Pro Main", NTV2_BITFILE_TTAP_PRO_MAIN);
7779  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 2x4K Main", NTV2_BITFILE_KONA5_2X4K_MAIN);
7780  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid44 2x4K Main", NTV2_BITFILE_CORVID44_2X4K_MAIN);
7781  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 3D LUT Main", NTV2_BITFILE_KONA5_3DLUT_MAIN);
7782  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Corvid44 Planar Main", NTV2_BITFILE_CORVID44_PLNR_MAIN);
7784  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE1 Main", NTV2_BITFILE_KONA5_OE1_MAIN);
7785  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE2 Main", NTV2_BITFILE_KONA5_OE2_MAIN);
7786  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE3 Main", NTV2_BITFILE_KONA5_OE3_MAIN);
7787  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE4 Main", NTV2_BITFILE_KONA5_OE4_MAIN);
7788  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE5 Main", NTV2_BITFILE_KONA5_OE5_MAIN);
7789  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE6 Main", NTV2_BITFILE_KONA5_OE6_MAIN);
7790  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE7 Main", NTV2_BITFILE_KONA5_OE7_MAIN);
7791  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE8 Main", NTV2_BITFILE_KONA5_OE8_MAIN);
7792  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE9 Main", NTV2_BITFILE_KONA5_OE9_MAIN);
7793  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE10 Main", NTV2_BITFILE_KONA5_OE10_MAIN);
7794  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE11 Main", NTV2_BITFILE_KONA5_OE11_MAIN);
7795  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "Kona5 OE12 Main", NTV2_BITFILE_KONA5_OE12_MAIN);
7796  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI OE1 Main", NTV2_BITFILE_SOJI_OE1_MAIN);
7797  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI OE2 Main", NTV2_BITFILE_SOJI_OE2_MAIN);
7798  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI OE3 Main", NTV2_BITFILE_SOJI_OE3_MAIN);
7799  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI OE4 Main", NTV2_BITFILE_SOJI_OE4_MAIN);
7800  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI OE5 Main", NTV2_BITFILE_SOJI_OE5_MAIN);
7801  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI OE6 Main", NTV2_BITFILE_SOJI_OE6_MAIN);
7802  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI OE7 Main", NTV2_BITFILE_SOJI_OE7_MAIN);
7803  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI 3DLUT Main", NTV2_BITFILE_SOJI_3DLUT_MAIN);
7804  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "SOJI DIAGS Main", NTV2_BITFILE_SOJI_DIAGS_MAIN);
7806  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "KonaIP 2110 RGB12", NTV2_BITFILE_KONAIP_2110_RGB12);
7807  NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(inCompactDisplay, "IoIP 2110 RGB12", NTV2_BITFILE_IOIP_2110_RGB12);
7812  }
7813  return "(bad bitfile type)";
7814 }
7815 
7816 bool convertHDRFloatToRegisterValues(const HDRFloatValues & inFloatValues, HDRRegValues & outRegisterValues)
7817 {
7818  if ((inFloatValues.greenPrimaryX < 0 || inFloatValues.greenPrimaryX > float(1.0)) ||
7819  (inFloatValues.greenPrimaryY < 0 || inFloatValues.greenPrimaryY > float(1.0)) ||
7820  (inFloatValues.bluePrimaryX < 0 || inFloatValues.bluePrimaryX > float(1.0)) ||
7821  (inFloatValues.bluePrimaryY < 0 || inFloatValues.bluePrimaryY > float(1.0)) ||
7822  (inFloatValues.redPrimaryX < 0 || inFloatValues.redPrimaryX > float(1.0)) ||
7823  (inFloatValues.redPrimaryY < 0 || inFloatValues.redPrimaryY > float(1.0)) ||
7824  (inFloatValues.whitePointX < 0 || inFloatValues.whitePointX > float(1.0)) ||
7825  (inFloatValues.whitePointY < 0 || inFloatValues.whitePointY > float(1.0)) ||
7826  (inFloatValues.minMasteringLuminance < 0 || inFloatValues.minMasteringLuminance > float(6.5535)))
7827  return false;
7828 
7829  outRegisterValues.greenPrimaryX = static_cast<uint16_t>(inFloatValues.greenPrimaryX / float(0.00002));
7830  outRegisterValues.greenPrimaryY = static_cast<uint16_t>(inFloatValues.greenPrimaryY / float(0.00002));
7831  outRegisterValues.bluePrimaryX = static_cast<uint16_t>(inFloatValues.bluePrimaryX / float(0.00002));
7832  outRegisterValues.bluePrimaryY = static_cast<uint16_t>(inFloatValues.bluePrimaryY / float(0.00002));
7833  outRegisterValues.redPrimaryX = static_cast<uint16_t>(inFloatValues.redPrimaryX / float(0.00002));
7834  outRegisterValues.redPrimaryY = static_cast<uint16_t>(inFloatValues.redPrimaryY / float(0.00002));
7835  outRegisterValues.whitePointX = static_cast<uint16_t>(inFloatValues.whitePointX / float(0.00002));
7836  outRegisterValues.whitePointY = static_cast<uint16_t>(inFloatValues.whitePointY / float(0.00002));
7837  outRegisterValues.minMasteringLuminance = static_cast<uint16_t>(inFloatValues.minMasteringLuminance / float(0.0001));
7838  outRegisterValues.maxMasteringLuminance = inFloatValues.maxMasteringLuminance;
7839  outRegisterValues.maxContentLightLevel = inFloatValues.maxContentLightLevel;
7840  outRegisterValues.maxFrameAverageLightLevel = inFloatValues.maxFrameAverageLightLevel;
7841  outRegisterValues.electroOpticalTransferFunction = inFloatValues.electroOpticalTransferFunction;
7842  outRegisterValues.staticMetadataDescriptorID = inFloatValues.staticMetadataDescriptorID;
7843  return true;
7844 }
7845 
7846 bool convertHDRRegisterToFloatValues(const HDRRegValues & inRegisterValues, HDRFloatValues & outFloatValues)
7847 {
7848  if ((inRegisterValues.greenPrimaryX > 0xC350) ||
7849  (inRegisterValues.greenPrimaryY > 0xC350) ||
7850  (inRegisterValues.bluePrimaryX > 0xC350) ||
7851  (inRegisterValues.bluePrimaryY > 0xC350) ||
7852  (inRegisterValues.redPrimaryX > 0xC350) ||
7853  (inRegisterValues.redPrimaryY > 0xC350) ||
7854  (inRegisterValues.whitePointX > 0xC350) ||
7855  (inRegisterValues.whitePointY > 0xC350))
7856  return false;
7857  outFloatValues.greenPrimaryX = static_cast<float>(inRegisterValues.greenPrimaryX * 0.00002);
7858  outFloatValues.greenPrimaryY = static_cast<float>(inRegisterValues.greenPrimaryY * 0.00002);
7859  outFloatValues.bluePrimaryX = static_cast<float>(inRegisterValues.bluePrimaryX * 0.00002);
7860  outFloatValues.bluePrimaryY = static_cast<float>(inRegisterValues.bluePrimaryY * 0.00002);
7861  outFloatValues.redPrimaryX = static_cast<float>(inRegisterValues.redPrimaryX * 0.00002);
7862  outFloatValues.redPrimaryY = static_cast<float>(inRegisterValues.redPrimaryY * 0.00002);
7863  outFloatValues.whitePointX = static_cast<float>(inRegisterValues.whitePointX * 0.00002);
7864  outFloatValues.whitePointY = static_cast<float>(inRegisterValues.whitePointY * 0.00002);
7865  outFloatValues.minMasteringLuminance = static_cast<float>(inRegisterValues.minMasteringLuminance * 0.0001);
7866  outFloatValues.maxMasteringLuminance = inRegisterValues.maxMasteringLuminance;
7867  outFloatValues.maxContentLightLevel = inRegisterValues.maxContentLightLevel;
7868  outFloatValues.maxFrameAverageLightLevel = inRegisterValues.maxFrameAverageLightLevel;
7869  outFloatValues.electroOpticalTransferFunction = inRegisterValues.electroOpticalTransferFunction;
7870  outFloatValues.staticMetadataDescriptorID = inRegisterValues.staticMetadataDescriptorID;
7871  return true;
7872 }
7873 
7874 void setHDRDefaultsForBT2020(HDRRegValues & outRegisterValues)
7875 {
7876  outRegisterValues.greenPrimaryX = 0x2134;
7877  outRegisterValues.greenPrimaryY = 0x9BAA;
7878  outRegisterValues.bluePrimaryX = 0x1996;
7879  outRegisterValues.bluePrimaryY = 0x08FC;
7880  outRegisterValues.redPrimaryX = 0x8A48;
7881  outRegisterValues.redPrimaryY = 0x3908;
7882  outRegisterValues.whitePointX = 0x3D13;
7883  outRegisterValues.whitePointY = 0x4042;
7884  outRegisterValues.maxMasteringLuminance = 0x2710;
7885  outRegisterValues.minMasteringLuminance = 0x0032;
7886  outRegisterValues.maxContentLightLevel = 0;
7887  outRegisterValues.maxFrameAverageLightLevel = 0;
7888  outRegisterValues.electroOpticalTransferFunction = 0x02;
7889  outRegisterValues.staticMetadataDescriptorID = 0x00;
7890 }
7891 
7892 void setHDRDefaultsForDCIP3(HDRRegValues & outRegisterValues)
7893 {
7894  outRegisterValues.greenPrimaryX = 0x33C2;
7895  outRegisterValues.greenPrimaryY = 0x86C4;
7896  outRegisterValues.bluePrimaryX = 0x1D4C;
7897  outRegisterValues.bluePrimaryY = 0x0BB8;
7898  outRegisterValues.redPrimaryX = 0x84D0;
7899  outRegisterValues.redPrimaryY = 0x3E80;
7900  outRegisterValues.whitePointX = 0x3D13;
7901  outRegisterValues.whitePointY = 0x4042;
7902  outRegisterValues.maxMasteringLuminance = 0x02E8;
7903  outRegisterValues.minMasteringLuminance = 0x0032;
7904  outRegisterValues.maxContentLightLevel = 0;
7905  outRegisterValues.maxFrameAverageLightLevel = 0;
7906  outRegisterValues.electroOpticalTransferFunction = 0x02;
7907  outRegisterValues.staticMetadataDescriptorID = 0x00;
7908 }
7909 
7910 
7911 ostream & operator << (ostream & inOutStr, const NTV2OutputCrosspointIDs & inList)
7912 {
7913  inOutStr << "[";
7914  for (NTV2OutputCrosspointIDsConstIter it (inList.begin()); it != inList.end(); )
7915  {
7916  inOutStr << ::NTV2OutputCrosspointIDToString(*it);
7917  ++it;
7918  if (it != inList.end())
7919  inOutStr << ",";
7920  }
7921  inOutStr << "]";
7922  return inOutStr;
7923 }
7924 
7925 /*
7926 static ostream & operator << (ostream & inOutStr, const NTV2InputCrosspointIDs & inList)
7927 {
7928  inOutStr << "[";
7929  for (NTV2InputCrosspointIDsConstIter it (inList.begin()); it != inList.end(); )
7930  {
7931  inOutStr << ::NTV2InputCrosspointIDToString(*it);
7932  ++it;
7933  if (it != inList.end())
7934  inOutStr << ",";
7935  }
7936  inOutStr << "]";
7937  return inOutStr;
7938 }
7939 */
7940 
7941 ostream & operator << (ostream & inOutStream, const NTV2StringList & inData)
7942 {
7943  for (NTV2StringListConstIter it(inData.begin()); it != inData.end(); )
7944  {
7945  inOutStream << *it;
7946  if (++it != inData.end())
7947  inOutStream << ", ";
7948  }
7949  return inOutStream;
7950 }
7951 
7952 ostream & operator << (ostream & inOutStream, const NTV2StringSet & inData)
7953 {
7954  for (NTV2StringSetConstIter it(inData.begin()); it != inData.end(); )
7955  {
7956  inOutStream << *it;
7957  if (++it != inData.end())
7958  inOutStream << ", ";
7959  }
7960  return inOutStream;
7961 }
7962 
7963 
7965 {
7966  NTV2RegisterReads result;
7967  for (NTV2RegNumSetConstIter it (inRegNumSet.begin()); it != inRegNumSet.end(); ++it)
7968  result.push_back (NTV2RegInfo (*it));
7969  return result;
7970 }
7971 
7973 {
7974  NTV2RegNumSet result;
7975  for (NTV2RegisterReadsConstIter it (inRegReads.begin()); it != inRegReads.end(); ++it)
7976  result.insert (it->registerNumber);
7977  return result;
7978 }
7979 
7980 bool GetRegNumChanges (const NTV2RegNumSet & inBefore, const NTV2RegNumSet & inAfter, NTV2RegNumSet & outGone, NTV2RegNumSet & outSame, NTV2RegNumSet & outNew)
7981 {
7982  outGone.clear(); outSame.clear(); outNew.clear();
7983  set_difference (inBefore.begin(), inBefore.end(), inAfter.begin(), inAfter.end(), std::inserter(outGone, outGone.begin()));
7984  set_difference (inAfter.begin(), inAfter.end(), inBefore.begin(), inBefore.end(), std::inserter(outNew, outNew.begin()));
7985  set_intersection (inBefore.begin(), inBefore.end(), inAfter.begin(), inAfter.end(), std::inserter(outSame, outSame.begin()));
7986  return true;
7987 }
7988 
7989 bool GetChangedRegisters (const NTV2RegisterReads & inBefore, const NTV2RegisterReads & inAfter, NTV2RegNumSet & outChanged)
7990 {
7991  outChanged.clear();
7992  if (&inBefore == &inAfter)
7993  return false; // Same vector, identical!
7994  if (inBefore.size() != inAfter.size())
7995  { // Only check common reg nums...
7996  NTV2RegNumSet before(::ToRegNumSet(inBefore)), after(::ToRegNumSet(inAfter)), commonRegNums;
7997  set_intersection (before.begin(), before.end(), after.begin(), after.end(),
7998  std::inserter(commonRegNums, commonRegNums.begin()));
7999  for (NTV2RegNumSetConstIter it(commonRegNums.begin()); it != commonRegNums.end(); ++it)
8000  {
8003  if (beforeIt != inBefore.end() && afterIt != inAfter.end() && beforeIt->registerValue != afterIt->registerValue)
8004  outChanged.insert(*it);
8005  }
8006  }
8007  else if (inBefore.at(0).registerNumber == inAfter.at(0).registerNumber
8008  && inBefore.at(inBefore.size()-1).registerNumber == inAfter.at(inAfter.size()-1).registerNumber)
8009  { // Assume identical reg num layout
8010  for (size_t ndx(0); ndx < inBefore.size(); ndx++)
8011  if (inBefore[ndx].registerValue != inAfter[ndx].registerValue)
8012  outChanged.insert(inBefore[ndx].registerNumber);
8013  }
8014  else for (size_t ndx(0); ndx < inBefore.size(); ndx++)
8015  {
8016  const NTV2RegInfo & beforeInfo(inBefore.at(ndx));
8017  const NTV2RegInfo & afterInfo(inAfter.at(ndx));
8018  if (beforeInfo.registerNumber == afterInfo.registerNumber)
8019  {
8020  if (beforeInfo.registerValue != afterInfo.registerValue)
8021  outChanged.insert(beforeInfo.registerNumber);
8022  }
8023  else
8024  {
8026  if (it != inAfter.end())
8027  if (beforeInfo.registerValue != it->registerValue)
8028  outChanged.insert(beforeInfo.registerNumber);
8029  }
8030  }
8031  return !outChanged.empty();
8032 }
8033 
8034 
8035 string PercentEncode (const string & inStr)
8036 { ostringstream oss;
8037  for (size_t ndx(0); ndx < inStr.size(); ndx++)
8038  {
8039  const char chr(inStr.at(size_t(ndx)));
8040  if (::isalnum(chr) || chr == '-' || chr == '_' || chr == '.' || chr == '~')
8041  oss << chr;
8042  else
8043  oss << "%" << HEX0N(unsigned(chr),2);
8044  }
8045  return oss.str();
8046 }
8047 
8048 string PercentDecode (const string & inStr)
8049 { ostringstream oss;
8050  unsigned hexNum(0), state(0); // 0=unreserved expected, 1=1st hex digit expected, 2=2nd hex digit expected
8051  for (size_t ndx(0); ndx < inStr.size(); ndx++)
8052  {
8053  const char chr(inStr.at(size_t(ndx)));
8054  switch (state)
8055  {
8056  case 0:
8057  if (::isalnum(chr) || chr == '-' || chr == '_' || chr == '.' || chr == '~')
8058  oss << chr;
8059  if (chr == '%')
8060  {state++; break;}
8061  break;
8062  case 1:
8063  if (chr >= 'A' && chr <= 'F')
8064  hexNum = unsigned(chr + 10 - 'A') << 4;
8065  else if (chr >= 'a' && chr <= 'f')
8066  hexNum = unsigned(chr + 10 - 'a') << 4;
8067  else if (chr >= '0' && chr <= '9')
8068  hexNum = unsigned(chr - '0') << 4;
8069  else
8070  hexNum = 0;
8071  state++;
8072  break;
8073  case 2:
8074  if (chr >= 'A' && chr <= 'F')
8075  hexNum += unsigned(chr + 10 - 'A');
8076  else if (chr >= 'a' && chr <= 'f')
8077  hexNum += unsigned(chr + 10 - 'a');
8078  else if (chr >= '0' && chr <= '9')
8079  hexNum += unsigned(chr - '0');
8080  oss << char(hexNum);
8081  hexNum = 0;
8082  state = 0;
8083  break;
8084  default: NTV2_ASSERT(false); break;
8085  }
8086  }
8087  return oss.str();
8088 }
8089 
8090 bool StringToSerialNum64 (const string & inSerNumStr, uint64_t & outSerNum)
8091 {
8092  outSerNum = 0;
8093  if (inSerNumStr.length() < 8 || inSerNumStr.length() > 9)
8094  return false;
8095  string serNumStr(inSerNumStr);
8096  if (inSerNumStr.length() == 9) // Special case Io4K/DNXIV
8097  serNumStr.erase(0,1); // Lop off the first character
8098  uint64_t serNum(0);
8099  for (size_t ndx(0); ndx < serNumStr.length(); ndx++)
8100  {
8101  const char ch (serNumStr.at(ndx));
8102  // Allow only 0-9, A-Z, a-z, blank, and dash only
8103  if ( ! ( ( (ch >= '0') && (ch <= '9') ) ||
8104  ( (ch >= 'A') && (ch <= 'Z') ) ||
8105  ( (ch >= 'a') && (ch <= 'z') ) ||
8106  (ch == ' ') || (ch == '-') ) )
8107  return false; // Invalid character -- assume no Serial Number programmed
8108  serNum |= uint64_t(ch) << (ndx*8); // ((7-ndx)*8);
8109  }
8110  outSerNum = serNum;
8111  return true;
8112 }
8113 
8114 string SerialNum64ToString (const uint64_t & inSerNum)
8115 {
8116  const ULWord serialNumHigh (inSerNum >> 32);
8117  const ULWord serialNumLow (inSerNum & 0x00000000FFFFFFFF);
8118  char serialNum [9];
8119 
8120  serialNum[0] = char((serialNumLow & 0x000000FF) );
8121  serialNum[1] = char((serialNumLow & 0x0000FF00) >> 8);
8122  serialNum[2] = char((serialNumLow & 0x00FF0000) >> 16);
8123  serialNum[3] = char((serialNumLow & 0xFF000000) >> 24);
8124  serialNum[4] = char((serialNumHigh & 0x000000FF) );
8125  serialNum[5] = char((serialNumHigh & 0x0000FF00) >> 8);
8126  serialNum[6] = char((serialNumHigh & 0x00FF0000) >> 16);
8127  serialNum[7] = char((serialNumHigh & 0xFF000000) >> 24);
8128  serialNum[8] = '\0';
8129 
8130  for (unsigned ndx(0); ndx < 8; ndx++)
8131  {
8132  if (serialNum[ndx] == 0)
8133  {
8134  if (ndx == 0)
8135  return ""; // No characters: no serial number
8136  break; // End of string -- stop scanning
8137  }
8138 
8139  // Allow only 0-9, A-Z, a-z, blank, and dash only.
8140  if ( ! ( ( (serialNum[ndx] >= '0') && (serialNum[ndx] <= '9') ) ||
8141  ( (serialNum[ndx] >= 'A') && (serialNum[ndx] <= 'Z') ) ||
8142  ( (serialNum[ndx] >= 'a') && (serialNum[ndx] <= 'z') ) ||
8143  (serialNum[ndx] == ' ') || (serialNum[ndx] == '-') ) )
8144  return ""; // Invalid character -- assume no Serial Number programmed...
8145  }
8146  return serialNum;
8147 }
8148 
8149 #if defined (AJAMac)
8150  #include <fstream>
8151  #include "ajabase/common/common.h"
8152  // Poor man's plist reader
8153  // Fetches version components out of CFBundleShortVersionString
8154  // Returns true if the Info.plist exists; otherwise false
8155  // NOTE: This will fail for binary plist files!
8156  static const string AJAMacDriverInfoPlistPath ("/Library/Extensions/AJANTV2.kext/Contents/Info.plist");
8157  bool GetInstalledMacDriverVersion (UWord & outMaj, UWord & outMin, UWord & outPt, UWord & outBld, UWord & outType)
8158  {
8159  outMaj = outMin = outPt = outBld = outType = 0;
8160  ifstream ifs;
8161  ifs.open(AJAMacDriverInfoPlistPath.c_str(), std::ios::in);
8162  if (!ifs.is_open())
8163  return false;
8164  if (!ifs.good())
8165  return false;
8166  const string key("<key>CFBundleShortVersionString</key>");
8167  for (string line; std::getline(ifs, line); )
8168  {
8169  size_t keyPos(line.find(key));
8170  if (keyPos == string::npos)
8171  continue;
8172  if (!std::getline(ifs, line))
8173  break;
8174  //"<string>16.1.0b58</string>" or "<string>16.0.1</string>"
8175  size_t startPos(line.find("<string>")), endPos(line.find("</string>"));
8176  if (startPos == string::npos || endPos == string::npos)
8177  continue;
8178  startPos += 8;
8179  if (endPos < startPos)
8180  continue;
8181  string versStr(line.substr(startPos, endPos-startPos)); // "16.1.0b58" or "16.0.1"
8182  NTV2StringList versComps;
8183  aja::split(versStr, '.', versComps);
8184  if (versComps.size() < 3 || versComps.size() > 4)
8185  continue;
8186  const string sBuildTypes("_bad"); // 1=beta 2=alpha 3=dev
8187  for (size_t bt(1); bt < 4; bt++)
8188  if (versComps.at(2).find(sBuildTypes[bt]) != string::npos)
8189  { NTV2StringList lastComps;
8190  aja::split(versComps.at(2), sBuildTypes[bt], lastComps);
8191  versComps.erase(versComps.begin()+2);
8192  versComps.push_back(lastComps.at(0));
8193  outBld = UWord(aja::stoul(lastComps.at(1)));
8194  outType = UWord(bt);
8195  break;
8196  }
8197  for (size_t ndx(0); ndx < versComps.size(); ndx++)
8198  {
8199  if (versComps.at(ndx).empty())
8200  continue;
8201  UWord val(UWord(aja::stoul(versComps.at(ndx))));
8202  if (ndx == 0)
8203  outMaj = val;
8204  else if (ndx == 1)
8205  outMin = val;
8206  else if (ndx == 2)
8207  outPt = val;
8208  else if (ndx == 3 && outType == 0)
8209  outBld = val;
8210  else
8211  break;
8212  }
8213  break;
8214  }
8215  return true;
8216  }
8217 #endif // AJAMac
NTV2_XptFrameBuffer6YUV
@ NTV2_XptFrameBuffer6YUV
Definition: ntv2enums.h:2562
NTV2_1080i_5000to1080psf_2500
@ NTV2_1080i_5000to1080psf_2500
Definition: ntv2enums.h:3657
eUart2Rx
@ eUart2Rx
Definition: ntv2publicinterface.h:3744
NTV2_XptFrameBuffer8_DS2RGB
@ NTV2_XptFrameBuffer8_DS2RGB
Definition: ntv2enums.h:2620
M31_FILE_1280X720_420_8_30p
@ M31_FILE_1280X720_420_8_30p
Definition: ntv2m31enums.h:33
NTV2_FORMAT_FIRST_UHD2_DEF_FORMAT
@ NTV2_FORMAT_FIRST_UHD2_DEF_FORMAT
Definition: ntv2enums.h:508
NTV2_MAX_NUM_DownConvertModes
@ NTV2_MAX_NUM_DownConvertModes
Definition: ntv2enums.h:2189
NTV2CROSSPOINT_INPUT1
@ NTV2CROSSPOINT_INPUT1
Definition: ntv2enums.h:1649
GetFrameRateFamily
NTV2FrameRate GetFrameRateFamily(const NTV2FrameRate inFrameRate)
Definition: ntv2utils.cpp:5375
CopyToQuadrant
void CopyToQuadrant(uint8_t *srcBuffer, uint32_t srcHeight, uint32_t srcRowBytes, uint32_t dstQuadrant, uint8_t *dstBuffer, uint32_t quad13Offset)
Definition: ntv2utils.cpp:482
NTV2_IS_TALLER_VANC_GEOMETRY
#define NTV2_IS_TALLER_VANC_GEOMETRY(__g__)
Definition: ntv2enums.h:384
NTV2_REFERENCE_HDMI_INPUT2
@ NTV2_REFERENCE_HDMI_INPUT2
Specifies the HDMI In 2 connector.
Definition: ntv2enums.h:1417
NTV2DeviceCanDoCapture
bool NTV2DeviceCanDoCapture(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:1907
NTV2IsCompatibleBitfileName
bool NTV2IsCompatibleBitfileName(const string &inBitfileName, const NTV2DeviceID inDeviceID)
Definition: ntv2utils.cpp:7486
NTV2CROSSPOINT_CHANNEL4
@ NTV2CROSSPOINT_CHANNEL4
Definition: ntv2enums.h:1654
NTV2WidgetType_Max
@ NTV2WidgetType_Max
Definition: ntv2enums.h:3013
NTV2_FORMAT_3840x2160p_6000
@ NTV2_FORMAT_3840x2160p_6000
Definition: ntv2enums.h:616
NTV2IpErrorEnumToString
std::string NTV2IpErrorEnumToString(const NTV2IpError inIpErrorEnumValue)
Definition: ntv2utils.cpp:7350
NTV2TimecodeIndexToInputSource
NTV2InputSource NTV2TimecodeIndexToInputSource(const NTV2TCIndex inTCIndex)
Converts the given NTV2TCIndex value into the appropriate NTV2InputSource value.
Definition: ntv2utils.cpp:5046
NTV2_XptFrameBuffer4YUV
@ NTV2_XptFrameBuffer4YUV
Definition: ntv2enums.h:2517
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
NTV2_XptDualLinkIn3DSInput
@ NTV2_XptDualLinkIn3DSInput
Definition: ntv2enums.h:2753
NTV2_FORMAT_4096x2160psf_2500
@ NTV2_FORMAT_4096x2160psf_2500
Definition: ntv2enums.h:623
NTV2_SG_2Kx1080
@ NTV2_SG_2Kx1080
Definition: ntv2enums.h:469
NTV2DeviceCanDo12GSDI
bool NTV2DeviceCanDo12GSDI(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:377
NTV2IpErrCannotGetMacAddress
@ NTV2IpErrCannotGetMacAddress
Definition: ntv2enums.h:4238
NTV2_MAX_NUM_AncRgns
@ NTV2_MAX_NUM_AncRgns
Definition: ntv2enums.h:4144
UnPack10BitDPXtoForRP215
void UnPack10BitDPXtoForRP215(UWord *rawrp215Buffer, ULWord *DPXLinebuffer, ULWord numPixels)
Definition: ntv2utils.cpp:679
DEVICE_ID_KONALHIDVI
@ DEVICE_ID_KONALHIDVI
See KONA LHi.
Definition: ntv2enums.h:76
NTV2_XptMixer4BGKeyInput
@ NTV2_XptMixer4BGKeyInput
Definition: ntv2enums.h:2784
aja::stoul
unsigned long stoul(const std::string &str, std::size_t *idx, int base)
Definition: common.cpp:143
NTV2_BITFILE_KONA5_OE3_MAIN
@ NTV2_BITFILE_KONA5_OE3_MAIN
Definition: ntv2enums.h:3335
NTV2_WgtHDMIOut1v5
@ NTV2_WgtHDMIOut1v5
Definition: ntv2enums.h:2955
NTV2_XptMixer3FGVidInput
@ NTV2_XptMixer3FGVidInput
Definition: ntv2enums.h:2783
NTV2_FORMAT_625_5000
@ NTV2_FORMAT_625_5000
Definition: ntv2enums.h:544
NTV2_FORMAT_4x1920x1080p_6000
@ NTV2_FORMAT_4x1920x1080p_6000
Definition: ntv2enums.h:580
HDRRegValues::maxContentLightLevel
uint16_t maxContentLightLevel
Definition: ntv2publicinterface.h:9843
NTV2WidgetType_HDMIOutV5
@ NTV2WidgetType_HDMIOutV5
Definition: ntv2enums.h:3003
NTV2_1080i_5994to1080psf_2997
@ NTV2_1080i_5994to1080psf_2997
Definition: ntv2enums.h:3658
M31_FILE_3840X2160_420_8_5994p
@ M31_FILE_3840X2160_420_8_5994p
Definition: ntv2m31enums.h:95
eInput3
@ eInput3
Definition: ntv2publicinterface.h:3739
NTV2M31VideoPresetToString
string NTV2M31VideoPresetToString(const M31VideoPreset inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:6982
FindFirstMatchingRegisterNumber
NTV2RegReadsConstIter FindFirstMatchingRegisterNumber(const uint32_t inRegNum, const NTV2RegReads &inRegInfos)
Returns a const iterator to the first entry in the NTV2RegInfo collection with a matching register nu...
Definition: ntv2publicinterface.cpp:3367
NTV2_INPUTSOURCE_SDI4
@ NTV2_INPUTSOURCE_SDI4
Identifies the 4th SDI video input.
Definition: ntv2enums.h:1231
NTV2GetBitfileName
string NTV2GetBitfileName(const NTV2DeviceID inBoardID, const bool useOemNameOnWindows)
Definition: ntv2utils.cpp:7405
NTV2_XptHDMIOutInput
@ NTV2_XptHDMIOutInput
Definition: ntv2enums.h:2788
NTV2AudioChannelQuadToString
string NTV2AudioChannelQuadToString(const NTV2Audio4ChannelSelect inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6461
NTV2_FG_4x2048x1080
@ NTV2_FG_4x2048x1080
4096x2160, for 4K, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:356
NTV2_BITFILE_KONAIP_2110
@ NTV2_BITFILE_KONAIP_2110
Definition: ntv2enums.h:3319
NTV2MIXERMODE_SPLIT
@ NTV2MIXERMODE_SPLIT
Definition: ntv2enums.h:1740
NTV2_FORMAT_3840x2160psf_2500
@ NTV2_FORMAT_3840x2160psf_2500
Definition: ntv2enums.h:606
NTV2_XptHDMIIn2
@ NTV2_XptHDMIIn2
Definition: ntv2enums.h:2621
NTV2_Xpt425Mux1AInput
@ NTV2_Xpt425Mux1AInput
Definition: ntv2enums.h:2797
PackRGB10BitFor10BitRGBPacked
void PackRGB10BitFor10BitRGBPacked(RGBAlpha10BitPixel *pBuffer, const ULWord inNumPixels)
Definition: ntv2transcode.cpp:779
NTV2FormatDescriptor::GetBytesPerRow
ULWord GetBytesPerRow(const UWord inPlaneIndex0=0) const
Definition: ntv2formatdescriptor.h:140
NTV2_FORMAT_1080psf_2398
@ NTV2_FORMAT_1080psf_2398
Definition: ntv2enums.h:516
NTV2_XptSDIIn5DS2
@ NTV2_XptSDIIn5DS2
Definition: ntv2enums.h:2554
NTV2WidgetType_SDIOut
@ NTV2WidgetType_SDIOut
Definition: ntv2enums.h:2976
gChanVITC2
static const NTV2TCIndex gChanVITC2[]
Definition: ntv2utils.cpp:5016
NTV2_TCINDEX_SDI4
@ NTV2_TCINDEX_SDI4
SDI 4 embedded VITC.
Definition: ntv2enums.h:3871
NTV2WidgetType_DCIMixer
@ NTV2WidgetType_DCIMixer
Definition: ntv2enums.h:2993
NTV2_XptMultiLinkOut2DS3
@ NTV2_XptMultiLinkOut2DS3
New in SDK 16.0.
Definition: ntv2enums.h:2524
NTV2_Iso14x9
@ NTV2_Iso14x9
Definition: ntv2enums.h:2200
LWord
int32_t LWord
Definition: ajatypes.h:245
M31_FILE_1280X720_420_8_60p
@ M31_FILE_1280X720_420_8_60p
Definition: ntv2m31enums.h:36
NTV2_REFERENCE_INPUT3
@ NTV2_REFERENCE_INPUT3
Specifies the SDI In 3 connector.
Definition: ntv2enums.h:1407
NTV2_BITFILE_KONA5_3DLUT_MAIN
@ NTV2_BITFILE_KONA5_3DLUT_MAIN
Definition: ntv2enums.h:3330
AJA_NTV2_SDK_BUILD_DATETIME
#define AJA_NTV2_SDK_BUILD_DATETIME
The date and time the SDK was built, in ISO-8601 format.
Definition: ntv2version.h:17
RP188_STRUCT::High
ULWord High
Definition: ntv2publicinterface.h:4055
NTV2_XptDualLinkOut7Input
@ NTV2_XptDualLinkOut7Input
Definition: ntv2enums.h:2770
NTV2_FORMAT_4096x2160p_2400
@ NTV2_FORMAT_4096x2160p_2400
Definition: ntv2enums.h:625
NTV2CROSSPOINT_CHANNEL8
@ NTV2CROSSPOINT_CHANNEL8
Definition: ntv2enums.h:1660
NTV2_Xpt425Mux2BRGB
@ NTV2_Xpt425Mux2BRGB
Definition: ntv2enums.h:2596
NTV2_WgtStereoCompressor
@ NTV2_WgtStereoCompressor
Definition: ntv2enums.h:2893
M31_FILE_1920X1080_422_10_24p
@ M31_FILE_1920X1080_422_10_24p
Definition: ntv2m31enums.h:60
UnpackLine_10BitYUVto16BitYUV
void UnpackLine_10BitYUVto16BitYUV(const ULWord *pIn10BitYUVLine, UWord *pOut16BitYUVLine, const ULWord inNumPixels)
Unpacks a line of 10-bit-per-component YCbCr video into 16-bit-per-component YCbCr (NTV2_FBF_10BIT_YC...
Definition: ntv2utils.cpp:511
M31_FILE_1920X1080_420_8_50i
@ M31_FILE_1920X1080_420_8_50i
Definition: ntv2m31enums.h:52
NTV2_FBF_NUMFRAMEBUFFERFORMATS
@ NTV2_FBF_NUMFRAMEBUFFERFORMATS
Definition: ntv2enums.h:244
HDRRegValues::whitePointX
uint16_t whitePointX
Definition: ntv2publicinterface.h:9839
M31_FILE_2048X1080_422_10_50p
@ M31_FILE_2048X1080_422_10_50p
Definition: ntv2m31enums.h:85
NTV2RegNumSetConstIter
ULWordSetConstIter NTV2RegNumSetConstIter
A const iterator that iterates over a set of distinct NTV2RegisterNumbers.
Definition: ntv2publicinterface.h:7328
NTV2_WgtLUT1
@ NTV2_WgtLUT1
Definition: ntv2enums.h:2850
NTV2_XptDuallinkOut8DS2
@ NTV2_XptDuallinkOut8DS2
Definition: ntv2enums.h:2588
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
NTV2_FORMAT_720p_5000
@ NTV2_FORMAT_720p_5000
Definition: ntv2enums.h:527
NTV2WidgetType_DualLinkV1In
@ NTV2WidgetType_DualLinkV1In
Definition: ntv2enums.h:2979
NTV2_FBF_10BIT_YCBCR_420PL2
@ NTV2_FBF_10BIT_YCBCR_420PL2
10-Bit 4:2:0 2-Plane YCbCr
Definition: ntv2enums.h:239
NTV2_WgtOE1
@ NTV2_WgtOE1
Definition: ntv2enums.h:2959
DEVICE_ID_KONAIP_2110
@ DEVICE_ID_KONAIP_2110
See KONA IP.
Definition: ntv2enums.h:70
GetReadAddress_2vuy
static const UByte * GetReadAddress_2vuy(const UByte *pInFrameBuffer, const ULWord inBytesPerVertLine, const UWord inVertLineOffset, const UWord inHorzPixelOffset, const UWord inBytesPerHorzPixel)
Definition: ntv2utils.cpp:1201
HDRFloatValues::electroOpticalTransferFunction
uint8_t electroOpticalTransferFunction
Definition: ntv2publicinterface.h:9862
NTV2_BITFILE_KONAIP_4CH_2SFP
@ NTV2_BITFILE_KONAIP_4CH_2SFP
Definition: ntv2enums.h:3312
NTV2_XptIICTRGB
@ NTV2_XptIICTRGB
Definition: ntv2enums.h:2635
NTV2_AUDIO_LOOPBACK_OFF
@ NTV2_AUDIO_LOOPBACK_OFF
Embeds silence (zeroes) into the data stream.
Definition: ntv2enums.h:1971
IsMultiFormatCompatible
bool IsMultiFormatCompatible(const NTV2FrameRate inFrameRate1, const NTV2FrameRate inFrameRate2)
Compares two frame rates and returns true if they are "compatible" (with respect to a multiformat-cap...
Definition: ntv2utils.cpp:5389
NTV2_DEVICEKIND_OUTPUT
@ NTV2_DEVICEKIND_OUTPUT
Specifies devices that output (playout).
Definition: ntv2enums.h:1330
AddAudioTone
bool AddAudioTone(ULWord &outNumBytesWritten, NTV2Buffer &inAudioBuffer, ULWord &inOutCurrentSample, const ULWord inNumSamples, const double inSampleRate, const double inAmplitude, const double inFrequency, const ULWord inNumBitsPerSample, const bool inByteSwap, const ULWord inNumChannels)
Fills the given buffer with 32-bit (ULWord) audio tone samples.
Definition: ntv2utils.cpp:4478
NTV2_720p_5994to1080i_5994
@ NTV2_720p_5994to1080i_5994
Definition: ntv2enums.h:3639
NTV2_Xpt425Mux1ARGB
@ NTV2_Xpt425Mux1ARGB
Definition: ntv2enums.h:2590
NTV2_FORMAT_4096x2160p_12000
@ NTV2_FORMAT_4096x2160p_12000
Definition: ntv2enums.h:637
NTV2DeviceGetNumHDMIVideoInputs
UWord NTV2DeviceGetNumHDMIVideoInputs(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:10766
NTV2_Wgt12GSDIOut1
@ NTV2_Wgt12GSDIOut1
Definition: ntv2enums.h:2946
eAudio
@ eAudio
Definition: ntv2publicinterface.h:3717
NTV2_AUDIO_192K
@ NTV2_AUDIO_192K
Definition: ntv2enums.h:1877
NTV2_BITFILE_IOIP_2110
@ NTV2_BITFILE_IOIP_2110
Definition: ntv2enums.h:3318
IsRaw
bool IsRaw(const NTV2FrameBufferFormat frameBufferFormat)
Definition: ntv2utils.cpp:5478
M31_VIF_3840X2160_422_10_50p
@ M31_VIF_3840X2160_422_10_50p
Definition: ntv2m31enums.h:174
NTV2_XptStereoLeftInput
@ NTV2_XptStereoLeftInput
Definition: ntv2enums.h:2808
NTV2_CHANNEL8
@ NTV2_CHANNEL8
Specifies channel or Frame Store 8 (or the 8th item).
Definition: ntv2enums.h:1314
DEVICE_ID_KONAHDMI
@ DEVICE_ID_KONAHDMI
See KONA HDMI.
Definition: ntv2enums.h:66
NTV2MIXERINPUTCONTROL_UNSHAPED
@ NTV2MIXERINPUTCONTROL_UNSHAPED
Definition: ntv2enums.h:1725
NTV2_XptMultiLinkOut2Input
@ NTV2_XptMultiLinkOut2Input
New in SDK 16.0.
Definition: ntv2enums.h:2730
NTV2_BITFILE_CORVID88
@ NTV2_BITFILE_CORVID88
Definition: ntv2enums.h:3308
NTV2_INPUTSOURCE_SDI6
@ NTV2_INPUTSOURCE_SDI6
Identifies the 6th SDI video input.
Definition: ntv2enums.h:1233
NTV2DeviceIDListConstIter
NTV2DeviceIDList::const_iterator NTV2DeviceIDListConstIter
A convenient const iterator for NTV2DeviceIDList.
Definition: ntv2utils.h:1026
NTV2_FORMAT_2K_2400
@ NTV2_FORMAT_2K_2400
Definition: ntv2enums.h:554
NTV2_WgtSDIOut2
@ NTV2_WgtSDIOut2
Definition: ntv2enums.h:2861
NTV2_IS_VALID_NTV2FrameGeometry
#define NTV2_IS_VALID_NTV2FrameGeometry(__s__)
Definition: ntv2enums.h:364
AUTOCIRCVIDPROCMODE_HORZWIPE
@ AUTOCIRCVIDPROCMODE_HORZWIPE
Definition: ntv2publicinterface.h:4165
NTV2_DEVICEKIND_RELAYS
@ NTV2_DEVICEKIND_RELAYS
Specifies devices that have bypass relays.
Definition: ntv2enums.h:1343
NTV2_STANDARD_2Kx1080p
@ NTV2_STANDARD_2Kx1080p
Identifies SMPTE HD 2K1080p.
Definition: ntv2enums.h:161
NTV2_BITFILE_SOJI_OE7_MAIN
@ NTV2_BITFILE_SOJI_OE7_MAIN
Definition: ntv2enums.h:3353
NTV2_Xpt425Mux1BRGB
@ NTV2_Xpt425Mux1BRGB
Definition: ntv2enums.h:2592
M31_FILE_3840X2160_420_8_60p
@ M31_FILE_3840X2160_420_8_60p
Definition: ntv2m31enums.h:96
NTV2_REFERENCE_SFP1_PTP
@ NTV2_REFERENCE_SFP1_PTP
Specifies the PTP source on SFP 1.
Definition: ntv2enums.h:1413
NTV2_FORMAT_4x4096x2160p_4800
@ NTV2_FORMAT_4x4096x2160p_4800
Definition: ntv2enums.h:674
NTV2WidgetType_UpDownConverter
@ NTV2WidgetType_UpDownConverter
Definition: ntv2enums.h:2991
NTV2_REGWRITE_IMMEDIATE
@ NTV2_REGWRITE_IMMEDIATE
Register changes take effect immediately, without waiting for a field or frame VBI.
Definition: ntv2enums.h:1628
Convert8BitYCbCrToYUY2
void Convert8BitYCbCrToYUY2(UByte *ycbcrBuffer, ULWord numPixels)
Definition: ntv2transcode.cpp:612
NTV2_XptFrameBuffer1_DS2YUV
@ NTV2_XptFrameBuffer1_DS2YUV
Definition: ntv2enums.h:2605
NTV2_WgtMixer4
@ NTV2_WgtMixer4
Definition: ntv2enums.h:2931
NTV2HDMIBitDepth
NTV2HDMIBitDepth
Indicates or specifies the HDMI video bit depth.
Definition: ntv2enums.h:3606
NTV2_XptSDIOut4InputDS2
@ NTV2_XptSDIOut4InputDS2
Definition: ntv2enums.h:2739
INTERRUPT_ENUMS
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
NTV2_FORMAT_END_UHD2_FULL_DEF_FORMATS
@ NTV2_FORMAT_END_UHD2_FULL_DEF_FORMATS
Definition: ntv2enums.h:683
NTV2OutputDestination
NTV2OutputDestination
Identifies a specific video output destination.
Definition: ntv2enums.h:1276
DEVICE_ID_CORVID44_2X4K
@ DEVICE_ID_CORVID44_2X4K
See Corvid 44 12G.
Definition: ntv2enums.h:29
NTV2MIXERMODE_INVALID
@ NTV2MIXERMODE_INVALID
Invalid/uninitialized.
Definition: ntv2enums.h:1742
NTV2_REFERENCE_INPUT1
@ NTV2_REFERENCE_INPUT1
Specifies the SDI In 1 connector.
Definition: ntv2enums.h:1402
GetAudioSamplesPerSecond
double GetAudioSamplesPerSecond(const NTV2AudioRate inAudioRate)
Returns the audio sample rate as a number of audio samples per second.
Definition: ntv2utils.cpp:3203
NTV2InputSourceToAudioSource
NTV2AudioSource NTV2InputSourceToAudioSource(const NTV2InputSource inInputSource)
Definition: ntv2utils.cpp:4959
YCbCrPixel::cb
unsigned char cb
Definition: ntv2videodefines.h:195
NTV2_WgtWaterMarker1
@ NTV2_WgtWaterMarker1
Definition: ntv2enums.h:2885
GetDisplayHeight
ULWord GetDisplayHeight(const NTV2VideoFormat inVideoFormat)
Definition: ntv2utils.cpp:4106
NTV2_XptMixer2KeyYUV
@ NTV2_XptMixer2KeyYUV
Definition: ntv2enums.h:2510
HDRFloatValues::redPrimaryX
float redPrimaryX
Definition: ntv2publicinterface.h:9854
M31_FILE_3840X2160_420_8_50p
@ M31_FILE_3840X2160_420_8_50p
Definition: ntv2m31enums.h:94
NTV2_AUDIOSYSTEM_7
@ NTV2_AUDIOSYSTEM_7
This identifies the 7th Audio System.
Definition: ntv2enums.h:3817
NTV2_CHANNEL2
@ NTV2_CHANNEL2
Specifies channel or Frame Store 2 (or the 2nd item).
Definition: ntv2enums.h:1308
NTV2IpErrSDPURLInvalid
@ NTV2IpErrSDPURLInvalid
Definition: ntv2enums.h:4258
NTV2_FORMAT_4x4096x2160p_2398
@ NTV2_FORMAT_4x4096x2160p_2398
Definition: ntv2enums.h:668
NTV2_IS_VALID_AUDIO_CHANNEL_OCTET
#define NTV2_IS_VALID_AUDIO_CHANNEL_OCTET(__p__)
Definition: ntv2enums.h:3264
ToRegNumSet
NTV2RegNumSet ToRegNumSet(const NTV2RegisterReads &inRegReads)
Definition: ntv2utils.cpp:7972
NTV2_FBF_12BIT_RGB_PACKED
@ NTV2_FBF_12BIT_RGB_PACKED
See 12-Bit Packed RGB.
Definition: ntv2enums.h:228
DEVICE_ID_KONA5_OE9
@ DEVICE_ID_KONA5_OE9
See KONA 5.
Definition: ntv2enums.h:61
NTV2_FORMAT_525_5994
@ NTV2_FORMAT_525_5994
Definition: ntv2enums.h:543
NTV2SmpteLineNumber::GetFirstActiveLine
ULWord GetFirstActiveLine(const NTV2FieldID inRasterFieldID=NTV2_FIELD0) const
Definition: ntv2utils.cpp:4118
NTV2_REGWRITE_SYNCTOFIELD_AFTER10LINES
@ NTV2_REGWRITE_SYNCTOFIELD_AFTER10LINES
Register changes take effect after 10 lines after the next field VBI (not commonly used).
Definition: ntv2enums.h:1629
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_4
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_4
Definition: ntv2enums.h:1913
NTV2_SG_1125
@ NTV2_SG_1125
Definition: ntv2enums.h:467
NTV2_XptSDIIn3DS2
@ NTV2_XptSDIIn3DS2
Definition: ntv2enums.h:2528
NTV2_625_2500to720p_5000
@ NTV2_625_2500to720p_5000
Definition: ntv2enums.h:3637
NTV2_WgtSDIMonOut1
@ NTV2_WgtSDIMonOut1
Definition: ntv2enums.h:2904
M31_VIF_3840X2160_420_10_50p
@ M31_VIF_3840X2160_420_10_50p
Definition: ntv2m31enums.h:169
NTV2_DEVICEKIND_ANALOG
@ NTV2_DEVICEKIND_ANALOG
Specifies devices with analog video connectors.
Definition: ntv2enums.h:1333
NTV2_HDMIAudio2Channels
@ NTV2_HDMIAudio2Channels
2 audio channels
Definition: ntv2enums.h:3583
NTV2_1080i2398to525_2398
@ NTV2_1080i2398to525_2398
Definition: ntv2enums.h:3641
NTV2FrameDimensions
Describes the horizontal and vertical size dimensions of a raster, bitmap, frame or image.
Definition: ntv2publicinterface.h:5632
NTV2_XptDualLinkIn2DSInput
@ NTV2_XptDualLinkIn2DSInput
Definition: ntv2enums.h:2751
NTV2_WgtSDIIn1
@ NTV2_WgtSDIIn1
Definition: ntv2enums.h:2854
NTV2_XptFrameBuffer2RGB
@ NTV2_XptFrameBuffer2RGB
Definition: ntv2enums.h:2489
NTV2_UpConvertZoomWide
@ NTV2_UpConvertZoomWide
Definition: ntv2enums.h:2166
NTV2WidgetType_SDIIn12G
@ NTV2WidgetType_SDIIn12G
Definition: ntv2enums.h:3005
NTV2_XptMixer2BGKeyInput
@ NTV2_XptMixer2BGKeyInput
Definition: ntv2enums.h:2776
NTV2ChannelToTimecodeIndex
NTV2TCIndex NTV2ChannelToTimecodeIndex(const NTV2Channel inChannel, const bool inEmbeddedLTC, const bool inIsF2)
Converts the given NTV2Channel value into the equivalent NTV2TCIndex value.
Definition: ntv2utils.cpp:5020
NTV2_MAX_NUM_AudioSystemEnums
@ NTV2_MAX_NUM_AudioSystemEnums
Definition: ntv2enums.h:3819
ntv2transcode.h
Declares a number of pixel format transcoder functions.
M31_FILE_3840X2160_422_8_2997p
@ M31_FILE_3840X2160_422_8_2997p
Definition: ntv2m31enums.h:105
NTV2WidgetType_SMPTE425Mux
@ NTV2WidgetType_SMPTE425Mux
Definition: ntv2enums.h:3004
NTV2_FG_1920x1114
@ NTV2_FG_1920x1114
1920x1080, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:343
NTV2_VIDEO_FORMAT_IS_J2K_SUPPORTED
#define NTV2_VIDEO_FORMAT_IS_J2K_SUPPORTED(__f__)
Definition: ntv2enums.h:1123
NTV2_NUM_REFERENCE_INPUTS
@ NTV2_NUM_REFERENCE_INPUTS
Definition: ntv2enums.h:1420
NTV2_MAX_NUM_EmbeddedAudioInputs
@ NTV2_MAX_NUM_EmbeddedAudioInputs
Definition: ntv2enums.h:1918
NTV2MixerInputControlToString
string NTV2MixerInputControlToString(const NTV2MixerKeyerInputControl inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6548
NTV2IpErrSFP2NotConfigured
@ NTV2IpErrSFP2NotConfigured
Definition: ntv2enums.h:4236
ntv2devicefeatures.h
Declares device capability functions.
NTV2_FG_720x576
@ NTV2_FG_720x576
720x576, for PAL 625i, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:342
NTV2MixerKeyerModeToString
string NTV2MixerKeyerModeToString(const NTV2MixerKeyerMode inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6534
NTV2_FG_720x508
@ NTV2_FG_720x508
720x486, for NTSC 525i, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:345
NTV2_AUDIO_BUFFER_BIG
@ NTV2_AUDIO_BUFFER_BIG
Definition: ntv2enums.h:1864
NTV2ChannelToInputSource
NTV2InputSource NTV2ChannelToInputSource(const NTV2Channel inChannel, const NTV2IOKinds inSourceType)
Definition: ntv2utils.cpp:5190
NTV2_XptCompressionModule
@ NTV2_XptCompressionModule
Definition: ntv2enums.h:2478
NTV2_XptMixer2FGKeyInput
@ NTV2_XptMixer2FGKeyInput
Definition: ntv2enums.h:2778
eUart1Rx
@ eUart1Rx
Definition: ntv2publicinterface.h:3730
eDMA1
@ eDMA1
Definition: ntv2publicinterface.h:3720
NTV2IpErrSFPNotFound
@ NTV2IpErrSFPNotFound
Definition: ntv2enums.h:4262
NTV2_1080i_2500to625_2500
@ NTV2_1080i_2500to625_2500
Definition: ntv2enums.h:3631
NTV2_WgtLUT7
@ NTV2_WgtLUT7
Definition: ntv2enums.h:2928
NTV2_XptLUT7Input
@ NTV2_XptLUT7Input
Definition: ntv2enums.h:2726
NTV2_FORMAT_4096x2160p_11988
@ NTV2_FORMAT_4096x2160p_11988
Definition: ntv2enums.h:636
NTV2_XptSDIOut3InputDS2
@ NTV2_XptSDIOut3InputDS2
Definition: ntv2enums.h:2737
NTV2_NUM_CROSSPOINTS
@ NTV2_NUM_CROSSPOINTS
Definition: ntv2enums.h:1665
NTV2StringSet
std::set< std::string > NTV2StringSet
Definition: ntv2utils.h:1137
M31_VIF_720X480_420_8_60i
@ M31_VIF_720X480_420_8_60i
Definition: ntv2m31enums.h:129
NTV2_XptDuallinkOut7
@ NTV2_XptDuallinkOut7
Definition: ntv2enums.h:2585
NTV2_WgtDualLinkOut1
@ NTV2_WgtDualLinkOut1
Definition: ntv2enums.h:2871
NTV2FormatDescriptor
Describes a video frame for a given video standard or format and pixel format, including the total nu...
Definition: ntv2formatdescriptor.h:41
NTV2_XptSDIIn6DS2
@ NTV2_XptSDIIn6DS2
Definition: ntv2enums.h:2555
aja::strip
std::string & strip(std::string &str, const std::string &ws)
Definition: common.cpp:461
NTV2RegInfo::registerValue
ULWord registerValue
My register value to use in a ReadRegister or WriteRegister call.
Definition: ntv2publicinterface.h:3903
NTV2MIXERMODE_MIX
@ NTV2MIXERMODE_MIX
Overlays foreground video on top of background video.
Definition: ntv2enums.h:1739
AJA_NTV2_SDK_VERSION_POINT
#define AJA_NTV2_SDK_VERSION_POINT
The SDK "point" release version, an unsigned decimal integer.
Definition: ntv2version.h:15
NTV2_FBF_PRORES_HDV
@ NTV2_FBF_PRORES_HDV
Apple ProRes HDV.
Definition: ntv2enums.h:230
M31_FILE_1280X720_420_8_25p
@ M31_FILE_1280X720_420_8_25p
Definition: ntv2m31enums.h:31
NTV2_FORMAT_4096x2160p_2500
@ NTV2_FORMAT_4096x2160p_2500
Definition: ntv2enums.h:626
AUTOCIRCVIDPROCMODE_KEY
@ AUTOCIRCVIDPROCMODE_KEY
Definition: ntv2publicinterface.h:4167
NTV2_FBF_IS_RAW
#define NTV2_FBF_IS_RAW(__fbf__)
Definition: ntv2enums.h:319
eOutput6
@ eOutput6
Definition: ntv2publicinterface.h:3755
GetQuarterSizedStandard
NTV2Standard GetQuarterSizedStandard(const NTV2Standard inStandard)
Definition: ntv2utils.cpp:2242
NTV2FormatDescriptor::GetRowAddress
const void * GetRowAddress(const void *pInStartAddress, const ULWord inRowIndex0, const UWord inPlaneIndex0=0) const
Definition: ntv2formatdescriptor.cpp:997
NTV2_FRAMERATE_1500
@ NTV2_FRAMERATE_1500
15 frames per second
Definition: ntv2enums.h:412
AutoCircVidProcMode
AutoCircVidProcMode
Definition: ntv2publicinterface.h:4162
NTV2_BITFILE_SOJI_OE4_MAIN
@ NTV2_BITFILE_SOJI_OE4_MAIN
Definition: ntv2enums.h:3350
NTV2_TCINDEX_SDI2_2
@ NTV2_TCINDEX_SDI2_2
SDI 2 embedded VITC 2.
Definition: ntv2enums.h:3887
NTV2TCIndexes
std::set< NTV2TCIndex > NTV2TCIndexes
A set of distinct NTV2TCIndex values.
Definition: ntv2publicinterface.h:6794
HDRRegValues::redPrimaryY
uint16_t redPrimaryY
Definition: ntv2publicinterface.h:9838
NTV2_FRAMERATE_6000
@ NTV2_FRAMERATE_6000
60 frames per second
Definition: ntv2enums.h:399
NTV2_XptCSC2KeyYUV
@ NTV2_XptCSC2KeyYUV
Definition: ntv2enums.h:2492
NTV2_Wgt12GSDIIn4
@ NTV2_Wgt12GSDIIn4
Definition: ntv2enums.h:2945
NTV2WidgetType_IICT
@ NTV2WidgetType_IICT
Definition: ntv2enums.h:3011
NULL
#define NULL
Definition: ntv2caption608types.h:19
NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR
#define NTV2UTILS_ENUM_CASE_RETURN_VAL_OR_ENUM_STR(condition, retail_name, enum_name)
Definition: ntv2utils.cpp:38
HDRFloatValues
Definition: ntv2publicinterface.h:9849
NTV2_WgtHDMIOut1v4
@ NTV2_WgtHDMIOut1v4
Definition: ntv2enums.h:2954
NTV2_XptCSC7VidInput
@ NTV2_XptCSC7VidInput
Definition: ntv2enums.h:2716
NTV2_INPUTSOURCE_SDI7
@ NTV2_INPUTSOURCE_SDI7
Identifies the 7th SDI video input.
Definition: ntv2enums.h:1234
M31_FILE_720X480_420_8_5994i
@ M31_FILE_720X480_420_8_5994i
Definition: ntv2m31enums.h:15
NTV2FrameRateFamilies
std::vector< NTV2FrameRates > NTV2FrameRateFamilies
Definition: ntv2utils.cpp:5344
NTV2IpErrMBStatusFail
@ NTV2IpErrMBStatusFail
Definition: ntv2enums.h:4252
M31_VIF_3840X2160_422_10_30p
@ M31_VIF_3840X2160_422_10_30p
Definition: ntv2m31enums.h:173
NTV2InputCrosspointIDToString
string NTV2InputCrosspointIDToString(const NTV2InputCrosspointID inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:5846
NTV2_VIDEO_FORMAT_HAS_PROGRESSIVE_PICTURE
#define NTV2_VIDEO_FORMAT_HAS_PROGRESSIVE_PICTURE(__f__)
Definition: ntv2enums.h:1008
NTV2_SG_525
@ NTV2_SG_525
Definition: ntv2enums.h:464
NTV2_REFERENCE_SFP2_PCR
@ NTV2_REFERENCE_SFP2_PCR
Specifies the PCR source on SFP 2.
Definition: ntv2enums.h:1416
ConvertARGBYCbCrToABGR
void ConvertARGBYCbCrToABGR(UByte *rgbaBuffer, ULWord numPixels)
Definition: ntv2transcode.cpp:645
NTV2AudioFormat
NTV2AudioFormat
Definition: ntv2enums.h:1892
NTV2_BITFILE_KONA5_OE6_MAIN
@ NTV2_BITFILE_KONA5_OE6_MAIN
Definition: ntv2enums.h:3338
NTV2_FORMAT_525psf_2997
@ NTV2_FORMAT_525psf_2997
Definition: ntv2enums.h:547
NTV2_XptRuntimeCalc
@ NTV2_XptRuntimeCalc
Definition: ntv2enums.h:2650
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
NTV2HDMIColorSpace
NTV2HDMIColorSpace
Indicates or specifies HDMI Color Space.
Definition: ntv2enums.h:3520
NTV2IpErrSDPNotFound
@ NTV2IpErrSDPNotFound
Definition: ntv2enums.h:4255
NTV2_FG_4x4096x2160
@ NTV2_FG_4x4096x2160
8192x4320, for 8K, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:358
NTV2WidgetType_DualLinkV2In
@ NTV2WidgetType_DualLinkV2In
Definition: ntv2enums.h:2980
NTV2_XptCSC5KeyInput
@ NTV2_XptCSC5KeyInput
Definition: ntv2enums.h:2713
Convert16BitARGBTo16BitRGB
void Convert16BitARGBTo16BitRGB(RGBAlpha16BitPixel *rgbaLineBuffer, UWord *rgbLineBuffer, ULWord numPixels)
Definition: ntv2transcode.cpp:691
NTV2_WgtCSC2
@ NTV2_WgtCSC2
Definition: ntv2enums.h:2849
NTV2_WgtHDMIIn1v5
@ NTV2_WgtHDMIIn1v5
Definition: ntv2enums.h:2960
Fill8BitYCbCrVideoFrame
bool Fill8BitYCbCrVideoFrame(void *pBaseVideoAddress, const NTV2Standard inStandard, const NTV2FrameBufferFormat inFBF, const YCbCrPixel inPixelColor, const NTV2VANCMode inVancMode)
Definition: ntv2utils.cpp:900
NTV2_525_2398to1080i_2398
@ NTV2_525_2398to1080i_2398
Definition: ntv2enums.h:3652
NTV2Buffer
A generic user-space buffer object that has an address and a length. Used most often to share an arbi...
Definition: ntv2publicinterface.h:5967
NTV2_XptDuallinkOut1
@ NTV2_XptDuallinkOut1
Definition: ntv2enums.h:2485
NTV2_FORMAT_4x2048x1080p_4795
@ NTV2_FORMAT_4x2048x1080p_4795
Definition: ntv2enums.h:584
NTV2WidgetType_AnalogCompositeOut
@ NTV2WidgetType_AnalogCompositeOut
Definition: ntv2enums.h:2985
ntv2audiodefines.h
Declares common audio macros and structs used in the SDK.
NTV2CROSSPOINT_CHANNEL1
@ NTV2CROSSPOINT_CHANNEL1
Definition: ntv2enums.h:1647
NTV2ModeToString
string NTV2ModeToString(const NTV2Mode inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6509
NTV2_REFERENCE_INPUT7
@ NTV2_REFERENCE_INPUT7
Specifies the SDI In 7 connector.
Definition: ntv2enums.h:1411
NTV2_BITFILE_KONA5_OE11_MAIN
@ NTV2_BITFILE_KONA5_OE11_MAIN
Definition: ntv2enums.h:3343
NTV2_XptDualLinkIn1Input
@ NTV2_XptDualLinkIn1Input
Definition: ntv2enums.h:2748
NTV2_FBF_10BIT_DPX_LE
@ NTV2_FBF_10BIT_DPX_LE
10-Bit DPX Little-Endian
Definition: ntv2enums.h:226
M31_FILE_3840X2160_420_8_2997p
@ M31_FILE_3840X2160_420_8_2997p
Definition: ntv2m31enums.h:92
gChannelToInputInterrupt
static const INTERRUPT_ENUMS gChannelToInputInterrupt[]
Definition: ntv2interrupts.cpp:11
NTV2RegisterNumberSet
ULWordSet NTV2RegisterNumberSet
A set of distinct ULWord values.
Definition: ntv2publicinterface.h:7326
NTV2_XptSDIOut5InputDS2
@ NTV2_XptSDIOut5InputDS2
Definition: ntv2enums.h:2741
NTV2_FORMAT_4096x2160psf_2398
@ NTV2_FORMAT_4096x2160psf_2398
Definition: ntv2enums.h:621
gChanATCLTC
static const NTV2TCIndex gChanATCLTC[]
Definition: ntv2utils.cpp:5017
M31_FILE_4096X2160_422_10_50p
@ M31_FILE_4096X2160_422_10_50p
Definition: ntv2m31enums.h:122
NTV2_525_5994to525psf_2997
@ NTV2_525_5994to525psf_2997
Definition: ntv2enums.h:3655
M31_FILE_1920X1080_422_10_2398p
@ M31_FILE_1920X1080_422_10_2398p
Definition: ntv2m31enums.h:59
NTV2_FORMAT_3840x2160p_5994_B
@ NTV2_FORMAT_3840x2160p_5994_B
Definition: ntv2enums.h:618
NTV2_BITFILE_KONA5_8K_MAIN
@ NTV2_BITFILE_KONA5_8K_MAIN
Definition: ntv2enums.h:3325
GetQuadSizedVideoFormat
NTV2VideoFormat GetQuadSizedVideoFormat(const NTV2VideoFormat inVideoFormat, const bool isSquareDivision)
Definition: ntv2utils.cpp:2032
NTV2WidgetType
NTV2WidgetType
Definition: ntv2enums.h:2968
DEVICE_ID_KONA5
@ DEVICE_ID_KONA5
See KONA 5.
Definition: ntv2enums.h:48
aja::split
void split(const std::string &str, const char delim, std::vector< std::string > &elems)
Definition: common.cpp:350
M31_FILE_1920X1080_422_10_60p
@ M31_FILE_1920X1080_422_10_60p
Definition: ntv2m31enums.h:69
M31_FILE_1280X720_420_8_24p
@ M31_FILE_1280X720_420_8_24p
Definition: ntv2m31enums.h:30
YCbCr10BitPixel::cb
UWord cb
Definition: ntv2videodefines.h:202
GetStandardFromGeometry
NTV2Standard GetStandardFromGeometry(const NTV2FrameGeometry inGeometry, const bool inIsProgressive)
Definition: ntv2utils.cpp:4003
NTV2Buffer::GetByteCount
ULWord GetByteCount(void) const
Definition: ntv2publicinterface.h:6040
NTV2_STANDARD_INVALID
@ NTV2_STANDARD_INVALID
Definition: ntv2enums.h:173
NTV2_KLBox
@ NTV2_KLBox
Definition: ntv2enums.h:3029
NTV2_AUDIOSYSTEM_4
@ NTV2_AUDIOSYSTEM_4
This identifies the 4th Audio System.
Definition: ntv2enums.h:3814
NTV2_TCINDEX_SDI7_LTC
@ NTV2_TCINDEX_SDI7_LTC
SDI 7 embedded ATC LTC.
Definition: ntv2enums.h:3884
NTV2_ASSERT
#define NTV2_ASSERT(_expr_)
Definition: ajatypes.h:601
NTV2_DownConvertAnamorphic
@ NTV2_DownConvertAnamorphic
Definition: ntv2enums.h:2187
NTV2RegNumSetToString
string NTV2RegNumSetToString(const NTV2RegisterNumberSet &inObj)
Definition: ntv2utils.cpp:6385
NTV2_STANDARD_1080
@ NTV2_STANDARD_1080
Identifies SMPTE HD 1080i or 1080psf.
Definition: ntv2enums.h:155
NTV2_STANDARD_3840x2160p
@ NTV2_STANDARD_3840x2160p
Identifies Ultra-High-Definition (UHD)
Definition: ntv2enums.h:163
NTV2_XptCSC4VidInput
@ NTV2_XptCSC4VidInput
Definition: ntv2enums.h:2710
GetScaleFromFrameRate
ULWord GetScaleFromFrameRate(const NTV2FrameRate inFrameRate)
Definition: ntv2utils.cpp:3354
NTV2FrameBufferFormatToString
string NTV2FrameBufferFormatToString(const NTV2FrameBufferFormat inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:6940
M31_FILE_3840X2160_422_8_5994p
@ M31_FILE_3840X2160_422_8_5994p
Definition: ntv2m31enums.h:108
AJALock::IsValid
virtual bool IsValid(void) const
Definition: lock.h:67
M31_FILE_3840X2160_422_10_5994p
@ M31_FILE_3840X2160_422_10_5994p
Definition: ntv2m31enums.h:117
NTV2_FRAMERATE_2997
@ NTV2_FRAMERATE_2997
Fractional rate of 30,000 frames per 1,001 seconds.
Definition: ntv2enums.h:403
NTV2_BITFILE_NUMBITFILETYPES
@ NTV2_BITFILE_NUMBITFILETYPES
Definition: ntv2enums.h:3359
NTV2TimecodeIndex
enum NTV2TCIndex NTV2TimecodeIndex
NTV2_TCINDEX_SDI8_2
@ NTV2_TCINDEX_SDI8_2
SDI 8 embedded VITC 2.
Definition: ntv2enums.h:3893
NTV2_XptFrameBuffer3_DS2YUV
@ NTV2_XptFrameBuffer3_DS2YUV
Definition: ntv2enums.h:2609
NTV2_Wgt3GSDIIn2
@ NTV2_Wgt3GSDIIn2
Definition: ntv2enums.h:2857
NTV2_VIDEOLIMITING_LEGALSDI
@ NTV2_VIDEOLIMITING_LEGALSDI
Identifies the "Legal SDI" mode (Ymax=0x3AC, Cmax=0x3C0)
Definition: ntv2enums.h:3694
NTV2_FORMAT_1080p_2K_6000_B
@ NTV2_FORMAT_1080p_2K_6000_B
Definition: ntv2enums.h:601
NTV2_Wgt3GSDIOut3
@ NTV2_Wgt3GSDIOut3
Definition: ntv2enums.h:2866
NTV2WidgetType_LUT
@ NTV2WidgetType_LUT
Definition: ntv2enums.h:2972
IsAlphaChannelFormat
bool IsAlphaChannelFormat(const NTV2FrameBufferFormat format)
Definition: ntv2utils.cpp:5454
NTV2_FORMAT_4096x2160p_5000_B
@ NTV2_FORMAT_4096x2160p_5000_B
Definition: ntv2enums.h:640
NTV2IpErrSDPEmpty
@ NTV2IpErrSDPEmpty
Definition: ntv2enums.h:4256
NTV2_WgtFrameBuffer6
@ NTV2_WgtFrameBuffer6
Definition: ntv2enums.h:2933
NTV2_Wgt3GSDIOut7
@ NTV2_Wgt3GSDIOut7
Definition: ntv2enums.h:2915
M31_FILE_1280X720_422_10_24p
@ M31_FILE_1280X720_422_10_24p
Definition: ntv2m31enums.h:39
NTV2_FBF_RGBA
@ NTV2_FBF_RGBA
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:213
NTV2_STANDARD_625
@ NTV2_STANDARD_625
Identifies SMPTE SD 625i.
Definition: ntv2enums.h:158
YCbCrPixel::y
unsigned char y
Definition: ntv2videodefines.h:196
NTV2_FORMAT_1080psf_2K_2398
@ NTV2_FORMAT_1080psf_2K_2398
Definition: ntv2enums.h:525
NTV2HDMIAudioChannelsToString
string NTV2HDMIAudioChannelsToString(const NTV2HDMIAudioChannels inValue, const bool inCompact)
Definition: ntv2utils.cpp:6661
NTV2_WgtDualLinkV2In2
@ NTV2_WgtDualLinkV2In2
Definition: ntv2enums.h:2870
NTV2_XptSDIIn1DS2
@ NTV2_XptSDIIn1DS2
Definition: ntv2enums.h:2507
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_1
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_1
Definition: ntv2enums.h:1910
M31_FILE_4096X2160_420_10_5994p
@ M31_FILE_4096X2160_420_10_5994p
Definition: ntv2m31enums.h:120
NTV2_BITFILE_CORVID44_8K_MAIN
@ NTV2_BITFILE_CORVID44_8K_MAIN
Definition: ntv2enums.h:3326
NTV2_Xpt425Mux3ARGB
@ NTV2_Xpt425Mux3ARGB
Definition: ntv2enums.h:2598
NTV2_WgtDualLinkV2In6
@ NTV2_WgtDualLinkV2In6
Definition: ntv2enums.h:2918
IsProgressiveTransport
bool IsProgressiveTransport(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5429
NTV2_FORMAT_FIRST_4K_TSI_DEF_FORMAT
@ NTV2_FORMAT_FIRST_4K_TSI_DEF_FORMAT
Definition: ntv2enums.h:506
DEVICE_ID_IOX3
@ DEVICE_ID_IOX3
See IoX3.
Definition: ntv2enums.h:41
HDRRegValues::bluePrimaryX
uint16_t bluePrimaryX
Definition: ntv2publicinterface.h:9835
NTV2_XptMixer3BGKeyInput
@ NTV2_XptMixer3BGKeyInput
Definition: ntv2enums.h:2780
NTV2_AUDIO_48K
@ NTV2_AUDIO_48K
Definition: ntv2enums.h:1875
M31_FILE_2048X1080_422_10_5994p
@ M31_FILE_2048X1080_422_10_5994p
Definition: ntv2m31enums.h:86
sFRFamilies
static NTV2FrameRateFamilies sFRFamilies
Definition: ntv2utils.cpp:5347
NTV2_WgtLUT5
@ NTV2_WgtLUT5
Definition: ntv2enums.h:2906
NTV2_XptMultiLinkOut1Input
@ NTV2_XptMultiLinkOut1Input
New in SDK 16.0.
Definition: ntv2enums.h:2728
GetNTV2CrosspointForIndex
NTV2Crosspoint GetNTV2CrosspointForIndex(const ULWord index)
Definition: ntv2utils.cpp:4858
NTV2_FG_2048x1080
@ NTV2_FG_2048x1080
2048x1080, for 2Kx1080p, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:349
PackLine_UWordSequenceTo10BitYUV
bool PackLine_UWordSequenceTo10BitYUV(const UWordSequence &in16BitYUVLine, ULWord *pOut10BitYUVLine, const ULWord inNumPixels)
Packs a line of 16-bit-per-component YCbCr (NTV2_FBF_10BIT_YCBCR) video into 10-bit-per-component YCb...
Definition: ntv2utils.cpp:544
NTV2_STANDARD_4096HFR
@ NTV2_STANDARD_4096HFR
Identifies high frame-rate 4K.
Definition: ntv2enums.h:166
NTV2_IsoVCrop
@ NTV2_IsoVCrop
Definition: ntv2enums.h:2199
NTV2_STANDARD_4096x2160p
@ NTV2_STANDARD_4096x2160p
Identifies 4K.
Definition: ntv2enums.h:164
NTV2_1080i2398to525_2997
@ NTV2_1080i2398to525_2997
Definition: ntv2enums.h:3642
NTV2_BITFILE_KONA5_MAIN
@ NTV2_BITFILE_KONA5_MAIN
Definition: ntv2enums.h:3322
NTV2_XptSDIIn2DS2
@ NTV2_XptSDIIn2DS2
Definition: ntv2enums.h:2508
M31_FILE_3840X2160_422_8_25p
@ M31_FILE_3840X2160_422_8_25p
Definition: ntv2m31enums.h:104
NTV2_XptDualLinkIn8Input
@ NTV2_XptDualLinkIn8Input
Definition: ntv2enums.h:2762
NTV2_FORMAT_1080p_2K_4800_A
@ NTV2_FORMAT_1080p_2K_4800_A
Definition: ntv2enums.h:596
NTV2_FORMAT_4x2048x1080p_11988
@ NTV2_FORMAT_4x2048x1080p_11988
Definition: ntv2enums.h:586
DEVICE_ID_SOJI_OE6
@ DEVICE_ID_SOJI_OE6
Definition: ntv2enums.h:85
NTV2_XptDualLinkIn5DSInput
@ NTV2_XptDualLinkIn5DSInput
Definition: ntv2enums.h:2757
NTV2_XptDuallinkOut7DS2
@ NTV2_XptDuallinkOut7DS2
Definition: ntv2enums.h:2586
PercentDecode
string PercentDecode(const string &inStr)
Definition: ntv2utils.cpp:8048
NTV2_AUDIO_FORMAT_DOLBY
@ NTV2_AUDIO_FORMAT_DOLBY
Definition: ntv2enums.h:1895
NTV2_Wgt4KDownConverter
@ NTV2_Wgt4KDownConverter
Definition: ntv2enums.h:2908
eInput2
@ eInput2
Definition: ntv2publicinterface.h:3716
NTV2_XptFrameBuffer8YUV
@ NTV2_XptFrameBuffer8YUV
Definition: ntv2enums.h:2566
NTV2_XptFrameBuffer4_DS2YUV
@ NTV2_XptFrameBuffer4_DS2YUV
Definition: ntv2enums.h:2611
NTV2_FG_INVALID
@ NTV2_FG_INVALID
Definition: ntv2enums.h:361
NTV2_XptFrameBuffer3YUV
@ NTV2_XptFrameBuffer3YUV
Definition: ntv2enums.h:2515
NTV2_FRAMERATE_12000
@ NTV2_FRAMERATE_12000
120 frames per second
Definition: ntv2enums.h:410
NTV2_DownConvertLetterbox
@ NTV2_DownConvertLetterbox
Definition: ntv2enums.h:2185
NTV2_FBF_48BIT_RGB
@ NTV2_FBF_48BIT_RGB
See 48-Bit RGB.
Definition: ntv2enums.h:227
NTV2_OUTPUTDESTINATION_SDI2
@ NTV2_OUTPUTDESTINATION_SDI2
Definition: ntv2enums.h:1281
AddAudioTestPattern
ULWord AddAudioTestPattern(ULWord *pAudioBuffer, ULWord &inOutCurrentSample, const ULWord inNumSamples, const ULWord inModulus, const bool inEndianConvert, const ULWord inNumChannels)
Definition: ntv2utils.cpp:4652
NTV2SmpteLineNumber::PrintLineNumber
std::string PrintLineNumber(const ULWord inLineOffset=0, const NTV2FieldID inRasterFieldID=NTV2_FIELD0) const
Definition: ntv2utils.cpp:4145
NTV2FrameRateToString
string NTV2FrameRateToString(const NTV2FrameRate inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:7184
NTV2_XptFrameBuffer3DS2Input
@ NTV2_XptFrameBuffer3DS2Input
Definition: ntv2enums.h:2693
NTV2_AUDIO_MIC
@ NTV2_AUDIO_MIC
Obtain audio samples from the device microphone input, if available.
Definition: ntv2enums.h:1952
NTV2FormatDescriptor::linePitch
ULWord linePitch
Number of 32-bit words per line. Shadows mLinePitch[0] * sizeof(ULWord).
Definition: ntv2formatdescriptor.h:350
NTV2_WgtTestPattern1
@ NTV2_WgtTestPattern1
Definition: ntv2enums.h:2889
NTV2_FORMAT_1080i_5994
@ NTV2_FORMAT_1080i_5994
Definition: ntv2enums.h:512
DEVICE_ID_CORVID44_8KMK
@ DEVICE_ID_CORVID44_8KMK
See Corvid 44 12G.
Definition: ntv2enums.h:27
NTV2_OUTPUTDESTINATION_SDI3
@ NTV2_OUTPUTDESTINATION_SDI3
Definition: ntv2enums.h:1282
M31_VIF_3840X2160_422_10_5994p
@ M31_VIF_3840X2160_422_10_5994p
Definition: ntv2m31enums.h:175
DEVICE_ID_KONAIP_2110_RGB12
@ DEVICE_ID_KONAIP_2110_RGB12
See KONA IP.
Definition: ntv2enums.h:71
NTV2_XptLUT3Input
@ NTV2_XptLUT3Input
Definition: ntv2enums.h:2722
YCbCr10BitPixel::cr
UWord cr
Definition: ntv2videodefines.h:204
NTV2_BITFILE_IOIP_2110_RGB12
@ NTV2_BITFILE_IOIP_2110_RGB12
Definition: ntv2enums.h:3346
NTV2_WgtSDIOut4
@ NTV2_WgtSDIOut4
Definition: ntv2enums.h:2863
DEVICE_ID_CORVID22
@ DEVICE_ID_CORVID22
See Corvid 22.
Definition: ntv2enums.h:23
NTV2_FORMAT_4x1920x1080p_6000_B
@ NTV2_FORMAT_4x1920x1080p_6000_B
Definition: ntv2enums.h:647
NTV2_WgtLUT4
@ NTV2_WgtLUT4
Definition: ntv2enums.h:2895
NTV2_XptCSC7KeyYUV
@ NTV2_XptCSC7KeyYUV
Definition: ntv2enums.h:2579
DEVICE_ID_IOIP_2022
@ DEVICE_ID_IOIP_2022
See Io IP.
Definition: ntv2enums.h:38
NTV2_IS_VALID_TIMECODE_INDEX
#define NTV2_IS_VALID_TIMECODE_INDEX(__x__)
Definition: ntv2enums.h:3898
eInput7
@ eInput7
Definition: ntv2publicinterface.h:3748
NTV2_FRAMERATE_INVALID
@ NTV2_FRAMERATE_INVALID
Definition: ntv2enums.h:425
ntv2endian.h
Defines a number of handy byte-swapping macros.
NTV2_BITFILE_IOXT_MAIN
@ NTV2_BITFILE_IOXT_MAIN
Definition: ntv2enums.h:3300
NTV2_K3Box
@ NTV2_K3Box
Definition: ntv2enums.h:3030
NTV2_Xpt425Mux2AYUV
@ NTV2_Xpt425Mux2AYUV
Definition: ntv2enums.h:2593
CopyRaster20BytesPer16Pixels
static bool CopyRaster20BytesPer16Pixels(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Definition: ntv2utils.cpp:1354
NTV2_BITFILE_KONA5_8KMK_MAIN
@ NTV2_BITFILE_KONA5_8KMK_MAIN
Definition: ntv2enums.h:3323
NTV2HDMIAudioChannels
NTV2HDMIAudioChannels
Indicates or specifies the HDMI audio channel count.
Definition: ntv2enums.h:3581
NTV2DownConvertModeToString
string NTV2DownConvertModeToString(const NTV2DownConvertMode inValue, const bool inCompact)
Definition: ntv2utils.cpp:6621
NTV2_Wgt12GSDIIn2
@ NTV2_Wgt12GSDIIn2
Definition: ntv2enums.h:2943
NTV2_MAX_NUM_BreakoutTypes
@ NTV2_MAX_NUM_BreakoutTypes
Definition: ntv2enums.h:3035
NTV2_FG_NUMFRAMEGEOMETRIES
@ NTV2_FG_NUMFRAMEGEOMETRIES
Definition: ntv2enums.h:360
NTV2_XptMixer4KeyYUV
@ NTV2_XptMixer4KeyYUV
Definition: ntv2enums.h:2572
NTV2_AUDIOSYSTEM_1
@ NTV2_AUDIOSYSTEM_1
This identifies the first Audio System.
Definition: ntv2enums.h:3811
NTV2_SIGNALMASK_NONE
@ NTV2_SIGNALMASK_NONE
Output Black.
Definition: ntv2enums.h:1634
NTV2_WgtModuleTypeCount
@ NTV2_WgtModuleTypeCount
Definition: ntv2enums.h:2961
NTV2_FORMAT_4x1920x1080psf_3000
@ NTV2_FORMAT_4x1920x1080psf_3000
Definition: ntv2enums.h:573
AJA_NTV2_SDK_BUILD_TYPE
#define AJA_NTV2_SDK_BUILD_TYPE
The SDK build type, where "a"=alpha, "b"=beta, "d"=development, ""=release.
Definition: ntv2version.h:18
NTV2_WgtLUT6
@ NTV2_WgtLUT6
Definition: ntv2enums.h:2927
NTV2DeviceGetNumAnalogVideoInputs
UWord NTV2DeviceGetNumAnalogVideoInputs(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:9686
NTV2_WgtDualLinkV2In8
@ NTV2_WgtDualLinkV2In8
Definition: ntv2enums.h:2920
NTV2IpErrSDPNoANC
@ NTV2IpErrSDPNoANC
Definition: ntv2enums.h:4261
NTV2_FRAMESIZE_18MB
@ NTV2_FRAMESIZE_18MB
Definition: ntv2enums.h:2067
DEVICE_ID_CORVIDHEVC
@ DEVICE_ID_CORVIDHEVC
See Corvid HEVC.
Definition: ntv2enums.h:33
NTV2_BITFILE_SOJI_OE1_MAIN
@ NTV2_BITFILE_SOJI_OE1_MAIN
Definition: ntv2enums.h:3347
NTV2_FBF_8BIT_HDV
@ NTV2_FBF_8BIT_HDV
See 8-Bit HDV.
Definition: ntv2enums.h:222
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_8
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_8
Definition: ntv2enums.h:1917
NTV2_BreakoutCableBNC
@ NTV2_BreakoutCableBNC
Identifies the AES/EBU audio breakout cable that has BNC connectors.
Definition: ntv2enums.h:3027
GetQuarterSizedGeometry
NTV2FrameGeometry GetQuarterSizedGeometry(const NTV2FrameGeometry inGeometry)
Definition: ntv2utils.cpp:2217
NTV2_FORMAT_1080p_2K_3000
@ NTV2_FORMAT_1080p_2K_3000
Definition: ntv2enums.h:593
NTV2_BITFILE_CORVID44_8KMK_MAIN
@ NTV2_BITFILE_CORVID44_8KMK_MAIN
Definition: ntv2enums.h:3324
NTV2_FORMAT_4096x2160psf_2997
@ NTV2_FORMAT_4096x2160psf_2997
Definition: ntv2enums.h:629
NTV2_FORMAT_4x2048x1080p_4795_B
@ NTV2_FORMAT_4x2048x1080p_4795_B
Definition: ntv2enums.h:651
M31_FILE_3840X2160_420_8_30p
@ M31_FILE_3840X2160_420_8_30p
Definition: ntv2m31enums.h:93
NTV2_FORMAT_4x2048x1080p_2997
@ NTV2_FORMAT_4x2048x1080p_2997
Definition: ntv2enums.h:574
GetGeometryFromStandard
NTV2FrameGeometry GetGeometryFromStandard(const NTV2Standard inStandard)
Definition: ntv2utils.cpp:3967
NTV2_BITFILE_KONAHDMI
@ NTV2_BITFILE_KONAHDMI
Definition: ntv2enums.h:3321
NTV2InputSourceToChannelSpec
NTV2Crosspoint NTV2InputSourceToChannelSpec(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2Crosspoint value.
Definition: ntv2utils.cpp:5057
NTV2_VIDEO_FORMAT_IS_B
#define NTV2_VIDEO_FORMAT_IS_B(__f__)
Definition: ntv2enums.h:1088
NTV2_SG_750
@ NTV2_SG_750
Definition: ntv2enums.h:466
NTV2_FBF_10BIT_ARGB
@ NTV2_FBF_10BIT_ARGB
10-Bit ARGB
Definition: ntv2enums.h:232
AUTOCIRCVIDPROCMODE_VERTWIPE
@ AUTOCIRCVIDPROCMODE_VERTWIPE
Definition: ntv2publicinterface.h:4166
NTV2_WgtCSC8
@ NTV2_WgtCSC8
Definition: ntv2enums.h:2926
NTV2_XptIICT2RGB
@ NTV2_XptIICT2RGB
Definition: ntv2enums.h:2636
M31_VIF_1920X1080_422_10_60i
@ M31_VIF_1920X1080_422_10_60i
Definition: ntv2m31enums.h:162
NTV2_FBF_10BIT_YCBCRA
@ NTV2_FBF_10BIT_YCBCRA
10-Bit YCbCrA
Definition: ntv2enums.h:225
gChannelToOutputInterrupt
static const INTERRUPT_ENUMS gChannelToOutputInterrupt[]
Definition: ntv2interrupts.cpp:12
NTV2_FRAMERATE_1798
@ NTV2_FRAMERATE_1798
Definition: ntv2enums.h:419
IsRGBFormat
bool IsRGBFormat(const NTV2FrameBufferFormat format)
Definition: ntv2utils.cpp:5442
NTV2_IS_VALID_AUDIO_BUFFER_SIZE
#define NTV2_IS_VALID_AUDIO_BUFFER_SIZE(_x_)
Definition: ntv2enums.h:1870
DEVICE_ID_KONA5_8KMK
@ DEVICE_ID_KONA5_8KMK
See KONA 5.
Definition: ntv2enums.h:49
NTV2_BITFILE_IOEXPRESS_MAIN
@ NTV2_BITFILE_IOEXPRESS_MAIN
Definition: ntv2enums.h:3296
NTV2_IS_2K_VIDEO_FORMAT
#define NTV2_IS_2K_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:719
NTV2_FORMAT_4x4096x2160p_2500
@ NTV2_FORMAT_4x4096x2160p_2500
Definition: ntv2enums.h:670
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
NTV2_TCINDEX_SDI4_2
@ NTV2_TCINDEX_SDI4_2
SDI 4 embedded VITC 2.
Definition: ntv2enums.h:3889
NTV2_BITFILE_CORVID44_2X4K_MAIN
@ NTV2_BITFILE_CORVID44_2X4K_MAIN
Definition: ntv2enums.h:3329
NTV2_XptFrameBuffer7_DS2RGB
@ NTV2_XptFrameBuffer7_DS2RGB
Definition: ntv2enums.h:2618
NTV2_Xpt3DLUT1Input
@ NTV2_Xpt3DLUT1Input
New in SDK 16.0.
Definition: ntv2enums.h:2806
M31_FILE_1920X1080_420_8_25p
@ M31_FILE_1920X1080_420_8_25p
Definition: ntv2m31enums.h:49
NTV2AudioSourceToString
string NTV2AudioSourceToString(const NTV2AudioSource inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6735
NTV2_Xpt4KDCQ2Input
@ NTV2_Xpt4KDCQ2Input
Definition: ntv2enums.h:2794
NTV2_Xpt425Mux2BYUV
@ NTV2_Xpt425Mux2BYUV
Definition: ntv2enums.h:2595
HDRFloatValues::whitePointX
float whitePointX
Definition: ntv2publicinterface.h:9856
NTV2_XptOEOutYUV
@ NTV2_XptOEOutYUV
Definition: ntv2enums.h:2512
NTV2_WgtDualLinkV2Out8
@ NTV2_WgtDualLinkV2Out8
Definition: ntv2enums.h:2923
NTV2_HDMIRangeSMPTE
@ NTV2_HDMIRangeSMPTE
Levels are 16 - 235 (SMPTE)
Definition: ntv2enums.h:3551
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_AncRgn_MonField1
@ NTV2_AncRgn_MonField1
Identifies the "monitor" or "auxiliary" Field 1 ancillary data region.
Definition: ntv2enums.h:4142
NTV2_XptAnalogOutCompositeOut
@ NTV2_XptAnalogOutCompositeOut
Definition: ntv2enums.h:2807
GetVideoActiveSize
ULWord GetVideoActiveSize(const NTV2VideoFormat inVideoFormat, const NTV2FrameBufferFormat inFBFormat, const NTV2VANCMode inVancMode)
Definition: ntv2utils.cpp:2758
NTV2_FORMAT_4x1920x1080p_2997
@ NTV2_FORMAT_4x1920x1080p_2997
Definition: ntv2enums.h:570
NTV2_FORMAT_4x1920x1080p_2500
@ NTV2_FORMAT_4x1920x1080p_2500
Definition: ntv2enums.h:563
NTV2FormatDescriptor::GetRasterHeight
ULWord GetRasterHeight(const bool inVisibleOnly=false) const
Definition: ntv2formatdescriptor.h:170
NTV2_AncRgn_Field2
@ NTV2_AncRgn_Field2
Identifies the "normal" Field 2 ancillary data region.
Definition: ntv2enums.h:4141
NTV2_Wgt12GSDIOut3
@ NTV2_Wgt12GSDIOut3
Definition: ntv2enums.h:2948
NTV2_Wgt3GSDIOut1
@ NTV2_Wgt3GSDIOut1
Definition: ntv2enums.h:2864
NTV2_XptMixer3FGKeyInput
@ NTV2_XptMixer3FGKeyInput
Definition: ntv2enums.h:2782
NTV2FieldID
NTV2FieldID
These values are used to identify fields for interlaced video. See Field/Frame Interrupts and CNTV2Ca...
Definition: ntv2enums.h:1785
HDRFloatValues::whitePointY
float whitePointY
Definition: ntv2publicinterface.h:9857
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_BITFILE_LHI_MAIN
@ NTV2_BITFILE_LHI_MAIN
Definition: ntv2enums.h:3295
ConvertLineto16BitRGB
void ConvertLineto16BitRGB(UWord *ycbcrBuffer, RGBAlpha16BitPixel *rgbaBuffer, ULWord numPixels, bool fUseSDMatrix, bool fUseSMPTERange=false)
Definition: ntv2transcode.cpp:849
NTV2_XptSDIOut7Input
@ NTV2_XptSDIOut7Input
Definition: ntv2enums.h:2744
M31_VIF_3840X2160_420_8_50p
@ M31_VIF_3840X2160_420_8_50p
Definition: ntv2m31enums.h:166
eUart1Tx
@ eUart1Tx
Definition: ntv2publicinterface.h:3728
NTV2IpErrUllNotSupported
@ NTV2IpErrUllNotSupported
Definition: ntv2enums.h:4232
NTV2_XptDuallinkIn7
@ NTV2_XptDuallinkIn7
Definition: ntv2enums.h:2645
NTV2_Xpt4KDCQ4Input
@ NTV2_Xpt4KDCQ4Input
Definition: ntv2enums.h:2796
NTV2_XptCSC6VidYUV
@ NTV2_XptCSC6VidYUV
Definition: ntv2enums.h:2574
NTV2_VIDEO_FORMAT_IS_A
#define NTV2_VIDEO_FORMAT_IS_A(__f__)
Definition: ntv2enums.h:1053
NTV2_REFERENCE_SFP2_PTP
@ NTV2_REFERENCE_SFP2_PTP
Specifies the PTP source on SFP 2.
Definition: ntv2enums.h:1415
NTV2IpErrSDPInvalid
@ NTV2IpErrSDPInvalid
Definition: ntv2enums.h:4257
NTV2_Wgt425Mux1
@ NTV2_Wgt425Mux1
Definition: ntv2enums.h:2938
ntv2videodefines.h
Declares common video macros and structs used in the SDK.
NTV2_TCINDEX_SDI6
@ NTV2_TCINDEX_SDI6
SDI 6 embedded VITC.
Definition: ntv2enums.h:3877
NTV2_REFERENCE_ANALOG_INPUT1
@ NTV2_REFERENCE_ANALOG_INPUT1
Specifies the Analog In 1 connector.
Definition: ntv2enums.h:1405
NTV2_FG_720x486
@ NTV2_FG_720x486
720x486, for NTSC 525i and 525p60, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:341
NTV2_Xpt3DLUT1YUV
@ NTV2_Xpt3DLUT1YUV
Definition: ntv2enums.h:2542
NTV2_525_5994to525_5994
@ NTV2_525_5994to525_5994
Definition: ntv2enums.h:3653
GetIndexForNTV2CrosspointChannel
ULWord GetIndexForNTV2CrosspointChannel(const NTV2Crosspoint channel)
Definition: ntv2utils.cpp:4810
NTV2_XptFrameBuffer1RGB
@ NTV2_XptFrameBuffer1RGB
Definition: ntv2enums.h:2480
NTV2_FORMAT_FIRST_HIGH_DEF_FORMAT
@ NTV2_FORMAT_FIRST_HIGH_DEF_FORMAT
Definition: ntv2enums.h:500
NTV2UTILS_ENUM_CASE_RETURN_STR
#define NTV2UTILS_ENUM_CASE_RETURN_STR(enum_name)
Definition: ntv2utils.cpp:36
NTV2FramesizeToString
string NTV2FramesizeToString(const NTV2Framesize inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6483
M31_VIF_1280X720_420_8_5994p
@ M31_VIF_1280X720_420_8_5994p
Definition: ntv2m31enums.h:142
NTV2_XptDuallinkOut6DS2
@ NTV2_XptDuallinkOut6DS2
Definition: ntv2enums.h:2584
NTV2_XptDuallinkIn3DS2
@ NTV2_XptDuallinkIn3DS2
Definition: ntv2enums.h:2665
NTV2_FORMAT_FIRST_UHD2_FULL_DEF_FORMAT
@ NTV2_FORMAT_FIRST_UHD2_FULL_DEF_FORMAT
Definition: ntv2enums.h:509
NTV2_WgtDualLinkV2In1
@ NTV2_WgtDualLinkV2In1
Definition: ntv2enums.h:2869
NTV2_XptHDMIOutQ3Input
@ NTV2_XptHDMIOutQ3Input
Definition: ntv2enums.h:2791
NTV2DeviceIDSetConstIter
NTV2DeviceIDSet::const_iterator NTV2DeviceIDSetConstIter
A convenient const iterator for NTV2DeviceIDSet.
Definition: ntv2utils.h:1033
NTV2_Wgt3GSDIIn5
@ NTV2_Wgt3GSDIIn5
Definition: ntv2enums.h:2909
NTV2_AUDIOSYSTEM_8
@ NTV2_AUDIOSYSTEM_8
This identifies the 8th Audio System.
Definition: ntv2enums.h:3818
NTV2_IS_2K_1080_VIDEO_FORMAT
#define NTV2_IS_2K_1080_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:726
NTV2_FBF_10BIT_DPX
@ NTV2_FBF_10BIT_DPX
See 10-Bit RGB - DPX Format.
Definition: ntv2enums.h:218
NTV2CROSSPOINT_MATTE
@ NTV2CROSSPOINT_MATTE
Definition: ntv2enums.h:1651
NTV2_XptSDIOut2InputDS2
@ NTV2_XptSDIOut2InputDS2
Definition: ntv2enums.h:2735
NTV2_IS_VALID_OUTPUT_DEST
#define NTV2_IS_VALID_OUTPUT_DEST(_dest_)
Definition: ntv2enums.h:1295
NTV2_1080p_2500to1080i_2500
@ NTV2_1080p_2500to1080i_2500
Definition: ntv2enums.h:3666
M31_VIF_3840X2160_420_10_5994p
@ M31_VIF_3840X2160_420_10_5994p
Definition: ntv2m31enums.h:170
NTV2_XptFrameBuffer4Input
@ NTV2_XptFrameBuffer4Input
Definition: ntv2enums.h:2694
UnpackLine_10BitYUVtoU16s
bool UnpackLine_10BitYUVtoU16s(vector< uint16_t > &outYCbCrLine, const NTV2Buffer &inFrameBuffer, const NTV2FormatDescriptor &inDescriptor, const UWord inLineOffset)
Definition: ntv2utils.cpp:609
NTV2WidgetType_HDMIInV5
@ NTV2WidgetType_HDMIInV5
Definition: ntv2enums.h:2990
NTV2_Wgt3GSDIOut8
@ NTV2_Wgt3GSDIOut8
Definition: ntv2enums.h:2916
DEVICE_ID_SOJI_OE2
@ DEVICE_ID_SOJI_OE2
Definition: ntv2enums.h:81
NTV2_FORMAT_4x3840x2160p_5000_B
@ NTV2_FORMAT_4x3840x2160p_5000_B
Definition: ntv2enums.h:663
Make8BitBlackLine
void Make8BitBlackLine(UByte *lineData, ULWord numPixels, NTV2FrameBufferFormat fbFormat)
Definition: ntv2utils.cpp:828
PULWord
uint32_t * PULWord
Definition: ajatypes.h:247
NTV2IpErrWriteSeqToMB
@ NTV2IpErrWriteSeqToMB
Definition: ntv2enums.h:4241
eWrapRate
@ eWrapRate
Definition: ntv2publicinterface.h:3726
NTV2IOKinds
enum NTV2InputSourceKinds NTV2IOKinds
NTV2_XptSDIOut8InputDS2
@ NTV2_XptSDIOut8InputDS2
Definition: ntv2enums.h:2747
SetRasterLinesBlack
bool SetRasterLinesBlack(const NTV2PixelFormat inPixelFormat, UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines)
Sets all or part of a destination raster image to legal black.
Definition: ntv2utils.cpp:1081
NTV2IpErrInvalidConfig
@ NTV2IpErrInvalidConfig
Definition: ntv2enums.h:4263
NTV2_XptFrameBuffer3Input
@ NTV2_XptFrameBuffer3Input
Definition: ntv2enums.h:2692
NTV2_INVALID_HDMI_AUDIO_CHANNELS
@ NTV2_INVALID_HDMI_AUDIO_CHANNELS
Definition: ntv2enums.h:3586
NTV2_XptHDMIIn2Q2
@ NTV2_XptHDMIIn2Q2
Definition: ntv2enums.h:2623
NTV2_NUM_FRAMERATES
@ NTV2_NUM_FRAMERATES
Definition: ntv2enums.h:424
StringToSerialNum64
bool StringToSerialNum64(const string &inSerNumStr, uint64_t &outSerNum)
Definition: ntv2utils.cpp:8090
NTV2UpConvertModeToString
string NTV2UpConvertModeToString(const NTV2UpConvertMode inValue, const bool inCompact)
Definition: ntv2utils.cpp:6607
M31_FILE_720X480_420_8_60p
@ M31_FILE_720X480_420_8_60p
Definition: ntv2m31enums.h:18
NTV2_FORMAT_4x2048x1080p_6000_B
@ NTV2_FORMAT_4x2048x1080p_6000_B
Definition: ntv2enums.h:650
NTV2_XptMultiLinkOut1DS1
@ NTV2_XptMultiLinkOut1DS1
New in SDK 16.0.
Definition: ntv2enums.h:2496
NTV2ACFrameRange::setFromString
std::string setFromString(const std::string &inStr)
Definition: ntv2utils.cpp:4155
NTV2_WgtCSC3
@ NTV2_WgtCSC3
Definition: ntv2enums.h:2900
NTV2_XptDualLinkOut5Input
@ NTV2_XptDualLinkOut5Input
Definition: ntv2enums.h:2768
NTV2_SIGNALMASK_Y
@ NTV2_SIGNALMASK_Y
Output Y if set, else Output Y=0x40.
Definition: ntv2enums.h:1635
NTV2_AUDIO_FORMAT_LPCM
@ NTV2_AUDIO_FORMAT_LPCM
Definition: ntv2enums.h:1894
NTV2_IOKINDS_ANALOG
@ NTV2_IOKINDS_ANALOG
Specifies analog input/output kinds.
Definition: ntv2enums.h:1253
NTV2_XptMixer4VidRGB
@ NTV2_XptMixer4VidRGB
Definition: ntv2enums.h:2573
eAudioInWrap
@ eAudioInWrap
Definition: ntv2publicinterface.h:3718
NTV2_XptSDIOut4Input
@ NTV2_XptSDIOut4Input
Definition: ntv2enums.h:2738
NTV2_CHANNEL1
@ NTV2_CHANNEL1
Specifies channel or Frame Store 1 (or the first item).
Definition: ntv2enums.h:1307
NTV2_XptFrameBuffer6_DS2RGB
@ NTV2_XptFrameBuffer6_DS2RGB
Definition: ntv2enums.h:2616
DEVICE_ID_KONAIP_1RX_1TX_1SFP_J2K
@ DEVICE_ID_KONAIP_1RX_1TX_1SFP_J2K
See KONA IP.
Definition: ntv2enums.h:67
NTV2WidgetType_Compression
@ NTV2WidgetType_Compression
Definition: ntv2enums.h:2994
GetNTV2FrameRateFromNumeratorDenominator
NTV2FrameRate GetNTV2FrameRateFromNumeratorDenominator(const ULWord inNumerator, const ULWord inDenominator)
Definition: ntv2utils.cpp:3488
NTV2_XptCSC5KeyYUV
@ NTV2_XptCSC5KeyYUV
Definition: ntv2enums.h:2523
NTV2_XptMixer4BGVidInput
@ NTV2_XptMixer4BGVidInput
Definition: ntv2enums.h:2785
NTV2_BITFILE_KONAX
@ NTV2_BITFILE_KONAX
Definition: ntv2enums.h:3357
ntv2debug.h
NTV2_WgtFrameSync2
@ NTV2_WgtFrameSync2
Definition: ntv2enums.h:2853
NTV2_XptCSC7VidYUV
@ NTV2_XptCSC7VidYUV
Definition: ntv2enums.h:2577
M31_FILE_2048X1080_420_8_60p
@ M31_FILE_2048X1080_420_8_60p
Definition: ntv2m31enums.h:78
NTV2StringSetConstIter
NTV2StringSet::const_iterator NTV2StringSetConstIter
Definition: ntv2utils.h:1138
NTV2_FORMAT_4x3840x2160p_2398
@ NTV2_FORMAT_4x3840x2160p_2398
Definition: ntv2enums.h:655
M31_VIF_3840X2160_420_8_30p
@ M31_VIF_3840X2160_420_8_30p
Definition: ntv2m31enums.h:165
NTV2_XptCSC1VidInput
@ NTV2_XptCSC1VidInput
Definition: ntv2enums.h:2704
NTV2_FBF_24BIT_RGB
@ NTV2_FBF_24BIT_RGB
See 24-Bit RGB.
Definition: ntv2enums.h:223
NTV2_Xpt425Mux3AInput
@ NTV2_Xpt425Mux3AInput
Definition: ntv2enums.h:2801
NTV2CROSSPOINT_CHANNEL5
@ NTV2CROSSPOINT_CHANNEL5
Definition: ntv2enums.h:1657
NTV2HDMIColorSpaceToString
string NTV2HDMIColorSpaceToString(const NTV2HDMIColorSpace inValue, const bool inCompact)
Definition: ntv2utils.cpp:6694
NTV2_BreakoutNone
@ NTV2_BreakoutNone
No identifiable breakout hardware appears to be attached.
Definition: ntv2enums.h:3025
UnPack10BitDPXtoForRP215withEndianSwap
void UnPack10BitDPXtoForRP215withEndianSwap(UWord *rawrp215Buffer, ULWord *DPXLinebuffer, ULWord numPixels)
Definition: ntv2utils.cpp:669
NTV2_FORMAT_4x4096x2160p_6000_B
@ NTV2_FORMAT_4x4096x2160p_6000_B
Definition: ntv2enums.h:682
NTV2_XptProAmpInput
@ NTV2_XptProAmpInput
Definition: ntv2enums.h:2810
NTV2_FRAMERATE_1898
@ NTV2_FRAMERATE_1898
Definition: ntv2enums.h:417
NTV2_XptCSC4KeyInput
@ NTV2_XptCSC4KeyInput
Definition: ntv2enums.h:2711
NTV2_BITFILE_KONAIP_2TX_1SFP_J2K
@ NTV2_BITFILE_KONAIP_2TX_1SFP_J2K
Definition: ntv2enums.h:3314
NTV2_XptCSC6KeyInput
@ NTV2_XptCSC6KeyInput
Definition: ntv2enums.h:2715
NTV2_FIELD0
@ NTV2_FIELD0
Identifies the first field in time for an interlaced video frame, or the first and only field in a pr...
Definition: ntv2enums.h:1787
NTV2_XptFrameBuffer3RGB
@ NTV2_XptFrameBuffer3RGB
Definition: ntv2enums.h:2516
NTV2_IS_VALID_AUDIO_RATE
#define NTV2_IS_VALID_AUDIO_RATE(_x_)
Definition: ntv2enums.h:1882
NTV2_XptMixer2VidYUV
@ NTV2_XptMixer2VidYUV
Definition: ntv2enums.h:2509
HDRFloatValues::staticMetadataDescriptorID
uint8_t staticMetadataDescriptorID
Definition: ntv2publicinterface.h:9863
NTV2_Wgt3GSDIOut5
@ NTV2_Wgt3GSDIOut5
Definition: ntv2enums.h:2913
NTV2CROSSPOINT_CHANNEL7
@ NTV2CROSSPOINT_CHANNEL7
Definition: ntv2enums.h:1659
NTV2_WgtHDMIIn1v2
@ NTV2_WgtHDMIIn1v2
Definition: ntv2enums.h:2902
NTV2_K3GBox
@ NTV2_K3GBox
Definition: ntv2enums.h:3033
eInterruptMask2
@ eInterruptMask2
Definition: ntv2publicinterface.h:3750
NTV2_XptSDIIn4DS2
@ NTV2_XptSDIIn4DS2
Definition: ntv2enums.h:2529
NTV2_XptFrameBuffer7DS2Input
@ NTV2_XptFrameBuffer7DS2Input
Definition: ntv2enums.h:2701
NTV2_WgtMultiLinkOut1
@ NTV2_WgtMultiLinkOut1
Definition: ntv2enums.h:2956
NTV2IsoConvertModeToString
string NTV2IsoConvertModeToString(const NTV2IsoConvertMode inValue, const bool inCompact)
Definition: ntv2utils.cpp:6634
eGetIntCount
@ eGetIntCount
Definition: ntv2publicinterface.h:3725
NTV2_FRAMERATE_2500
@ NTV2_FRAMERATE_2500
25 frames per second
Definition: ntv2enums.h:404
NTV2_BITFILE_KONA5_OE2_MAIN
@ NTV2_BITFILE_KONA5_OE2_MAIN
Definition: ntv2enums.h:3334
NTV2HDMIRange
NTV2HDMIRange
Indicates or specifies the HDMI RGB range.
Definition: ntv2enums.h:3549
CCIR601_10BIT_WHITE
#define CCIR601_10BIT_WHITE
Definition: videoutilities.h:19
NTV2_DEVICEKIND_HDMI
@ NTV2_DEVICEKIND_HDMI
Specifies devices with HDMI connectors.
Definition: ntv2enums.h:1332
NTV2_XptCSC3KeyInput
@ NTV2_XptCSC3KeyInput
Definition: ntv2enums.h:2709
DEVICE_ID_IO4KUFC
@ DEVICE_ID_IO4KUFC
See Io4K (UFC Mode).
Definition: ntv2enums.h:36
M31_VIF_3840X2160_420_8_5994p
@ M31_VIF_3840X2160_420_8_5994p
Definition: ntv2m31enums.h:167
AJAMacDriverInfoPlistPath
static const string AJAMacDriverInfoPlistPath("/Library/Extensions/AJANTV2.kext/Contents/Info.plist")
NTV2_XptHDMIIn2Q2RGB
@ NTV2_XptHDMIIn2Q2RGB
Definition: ntv2enums.h:2624
NTV2_FORMAT_1080p_2K_4795_A
@ NTV2_FORMAT_1080p_2K_4795_A
Definition: ntv2enums.h:595
IsNTV2CrosspointOutput
bool IsNTV2CrosspointOutput(const NTV2Crosspoint inChannel)
Definition: ntv2utils.cpp:4913
NTV2_IS_TALL_VANC_GEOMETRY
#define NTV2_IS_TALL_VANC_GEOMETRY(__g__)
Definition: ntv2enums.h:377
NTV2_WgtHDMIIn2v4
@ NTV2_WgtHDMIIn2v4
Definition: ntv2enums.h:2951
NTV2_FORMAT_3840x2160p_2500
@ NTV2_FORMAT_3840x2160p_2500
Definition: ntv2enums.h:609
NTV2_Xpt425Mux2BInput
@ NTV2_Xpt425Mux2BInput
Definition: ntv2enums.h:2800
NTV2_HDMIAudio8Channels
@ NTV2_HDMIAudio8Channels
8 audio channels
Definition: ntv2enums.h:3584
NTV2_VIDEOLIMITING_LEGALBROADCAST
@ NTV2_VIDEOLIMITING_LEGALBROADCAST
Identifies the "Legal Broadcast" mode (Ymax=0x340, Cmax=0x340)
Definition: ntv2enums.h:3696
HDRFloatValues::bluePrimaryY
float bluePrimaryY
Definition: ntv2publicinterface.h:9853
NTV2_720p_5000to625_2500
@ NTV2_720p_5000to625_2500
Definition: ntv2enums.h:3633
NTV2FrameRate
NTV2FrameRate
Identifies a particular video frame rate.
Definition: ntv2enums.h:396
NTV2_INPUTSOURCE_HDMI3
@ NTV2_INPUTSOURCE_HDMI3
Identifies the 3rd HDMI video input.
Definition: ntv2enums.h:1226
DEVICE_ID_CORVID1
@ DEVICE_ID_CORVID1
See Corvid, Corvid 3G.
Definition: ntv2enums.h:22
Make8BitLine
void Make8BitLine(UByte *lineData, UByte Y, UByte Cb, UByte Cr, ULWord numPixels, NTV2FrameBufferFormat fbFormat)
Definition: ntv2utils.cpp:874
UnpackLine_10BitYUVtoUWordSequence
bool UnpackLine_10BitYUVtoUWordSequence(const void *pIn10BitYUVLine, UWordSequence &out16BitYUVLine, ULWord inNumPixels)
Unpacks a line of NTV2_FBF_10BIT_YCBCR video into 16-bit-per-component YUV data.
Definition: ntv2utils.cpp:119
NTV2ColorCorrectionMode
NTV2ColorCorrectionMode
Definition: ntv2enums.h:2020
NTV2_DownConvertCrop
@ NTV2_DownConvertCrop
Definition: ntv2enums.h:2186
NTV2_CCMODE_YCbCr
@ NTV2_CCMODE_YCbCr
Definition: ntv2enums.h:2024
NTV2_CHANNEL_INVALID
@ NTV2_CHANNEL_INVALID
Definition: ntv2enums.h:1316
NTV2_CHANNEL6
@ NTV2_CHANNEL6
Specifies channel or Frame Store 6 (or the 6th item).
Definition: ntv2enums.h:1312
NTV2AudioBufferSizeToString
string NTV2AudioBufferSizeToString(const NTV2AudioBufferSize inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:5801
HasVANCGeometries
bool HasVANCGeometries(const NTV2FrameGeometry inFG)
Definition: ntv2utils.cpp:3865
M31_FILE_720X576_420_8_50p
@ M31_FILE_720X576_420_8_50p
Definition: ntv2m31enums.h:25
ajatypes.h
Declares the most fundamental data types used by NTV2. Since Windows NT was the first principal devel...
HDRRegValues::maxFrameAverageLightLevel
uint16_t maxFrameAverageLightLevel
Definition: ntv2publicinterface.h:9844
NTV2_EMBEDDED_AUDIO_INPUT_INVALID
@ NTV2_EMBEDDED_AUDIO_INPUT_INVALID
Definition: ntv2enums.h:1919
M31_FILE_1920X1080_420_8_2398p
@ M31_FILE_1920X1080_420_8_2398p
Definition: ntv2m31enums.h:47
NTV2_1080psf_2398to1080i_5994
@ NTV2_1080psf_2398to1080i_5994
Definition: ntv2enums.h:3661
NTV2IpErrNotSupported
@ NTV2IpErrNotSupported
Definition: ntv2enums.h:4239
M31_FILE_3840X2160_420_10_60p
@ M31_FILE_3840X2160_420_10_60p
Definition: ntv2m31enums.h:100
NTV2_XptLUT2Input
@ NTV2_XptLUT2Input
Definition: ntv2enums.h:2721
NTV2_FORMAT_4096x2160p_6000_B
@ NTV2_FORMAT_4096x2160p_6000_B
Definition: ntv2enums.h:642
M31_FILE_720X480_422_10_60p
@ M31_FILE_720X480_422_10_60p
Definition: ntv2m31enums.h:22
NTV2_WgtDualLinkIn1
@ NTV2_WgtDualLinkIn1
Definition: ntv2enums.h:2868
NTV2_XptDualLinkIn7DSInput
@ NTV2_XptDualLinkIn7DSInput
Definition: ntv2enums.h:2761
NTV2_XptFrameBuffer6Input
@ NTV2_XptFrameBuffer6Input
Definition: ntv2enums.h:2698
NTV2DeviceCanDoVideoFormat
bool NTV2DeviceCanDoVideoFormat(const NTV2DeviceID inDeviceID, const NTV2VideoFormat inVideoFormat)
Definition: ntv2devicefeatures.hpp:18535
NTV2_Xpt4KDCQ3Input
@ NTV2_Xpt4KDCQ3Input
Definition: ntv2enums.h:2795
NTV2_XptDualLinkIn3Input
@ NTV2_XptDualLinkIn3Input
Definition: ntv2enums.h:2752
GetNTV2FrameGeometryWidth
ULWord GetNTV2FrameGeometryWidth(const NTV2FrameGeometry inGeometry)
Definition: ntv2utils.cpp:4090
NTV2_XptHDMIIn2Q4RGB
@ NTV2_XptHDMIIn2Q4RGB
Definition: ntv2enums.h:2628
NTV2DeviceCanDoFormat
bool NTV2DeviceCanDoFormat(const NTV2DeviceID inDeviceID, const NTV2FrameRate inFrameRate, const NTV2FrameGeometry inFrameGeometry, const NTV2Standard inStandard)
Definition: ntv2utils.cpp:4057
eInput4
@ eInput4
Definition: ntv2publicinterface.h:3740
NTV2_FORMAT_2K_2398
@ NTV2_FORMAT_2K_2398
Definition: ntv2enums.h:553
eDMA2
@ eDMA2
Definition: ntv2publicinterface.h:3721
NTV2_FORMAT_4x4096x2160p_2997
@ NTV2_FORMAT_4x4096x2160p_2997
Definition: ntv2enums.h:671
NTV2RegNumSet
NTV2RegisterNumberSet NTV2RegNumSet
A set of distinct NTV2RegisterNumbers.
Definition: ntv2publicinterface.h:7327
NTV2_FRAMERATE_4800
@ NTV2_FRAMERATE_4800
48 frames per second
Definition: ntv2enums.h:408
NTV2RegisterNumberToString
string NTV2RegisterNumberToString(const NTV2RegisterNumber inValue)
Definition: ntv2utils.cpp:7706
YCbCrPixel
Definition: ntv2videodefines.h:193
M31_VIF_720X480_422_10_5994i
@ M31_VIF_720X480_422_10_5994i
Definition: ntv2m31enums.h:131
PackRGB10BitFor10BitRGB
void PackRGB10BitFor10BitRGB(RGBAlpha10BitPixel *pBuffer, const ULWord inNumPixels)
Definition: ntv2transcode.cpp:745
M31_FILE_2048X1080_420_8_25p
@ M31_FILE_2048X1080_420_8_25p
Definition: ntv2m31enums.h:73
M31_VIF_720X480_420_8_60p
@ M31_VIF_720X480_420_8_60p
Definition: ntv2m31enums.h:130
M31_FILE_1920X1080_422_10_50i
@ M31_FILE_1920X1080_422_10_50i
Definition: ntv2m31enums.h:64
NTV2MixerKeyerInputControl
NTV2MixerKeyerInputControl
These enum values identify the Mixer/Keyer foreground and background input control values.
Definition: ntv2enums.h:1721
NTV2_XptCSC6KeyYUV
@ NTV2_XptCSC6KeyYUV
Definition: ntv2enums.h:2576
NTV2_HDMIProtocolDVI
@ NTV2_HDMIProtocolDVI
DVI protocol.
Definition: ntv2enums.h:3538
NTV2_Wgt3GSDIIn1
@ NTV2_Wgt3GSDIIn1
Definition: ntv2enums.h:2856
NTV2_FORMAT_4096x2160psf_2400
@ NTV2_FORMAT_4096x2160psf_2400
Definition: ntv2enums.h:622
NTV2_CHANNEL4
@ NTV2_CHANNEL4
Specifies channel or Frame Store 4 (or the 4th item).
Definition: ntv2enums.h:1310
NTV2InputSourceToEmbeddedAudioInput
NTV2EmbeddedAudioInput NTV2InputSourceToEmbeddedAudioInput(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2EmbeddedAudioInput value.
Definition: ntv2utils.cpp:4935
HDRRegValues::minMasteringLuminance
uint16_t minMasteringLuminance
Definition: ntv2publicinterface.h:9842
NTV2_XptFrameBuffer2_DS2YUV
@ NTV2_XptFrameBuffer2_DS2YUV
Definition: ntv2enums.h:2607
NTV2_SG_2Kx1556
@ NTV2_SG_2Kx1556
Definition: ntv2enums.h:470
NTV2_BITFILE_IOX3_MAIN
@ NTV2_BITFILE_IOX3_MAIN
Definition: ntv2enums.h:3332
DEVICE_ID_CORVID44_8K
@ DEVICE_ID_CORVID44_8K
See Corvid 44 12G.
Definition: ntv2enums.h:28
DEVICE_ID_KONAIP_2TX_1SFP_J2K
@ DEVICE_ID_KONAIP_2TX_1SFP_J2K
See KONA IP.
Definition: ntv2enums.h:72
NTV2_XptMixer4FGVidInput
@ NTV2_XptMixer4FGVidInput
Definition: ntv2enums.h:2787
NTV2_REGWRITE_SYNCTOFRAME
@ NTV2_REGWRITE_SYNCTOFRAME
Frame Mode: Register changes take effect at the next frame VBI (power-up default).
Definition: ntv2enums.h:1627
eNumInterruptTypes
@ eNumInterruptTypes
Definition: ntv2publicinterface.h:3758
NTV2_WgtCSC1
@ NTV2_WgtCSC1
Definition: ntv2enums.h:2848
NTV2_XptDualLinkIn7Input
@ NTV2_XptDualLinkIn7Input
Definition: ntv2enums.h:2760
NTV2_TCINDEX_SDI5_2
@ NTV2_TCINDEX_SDI5_2
SDI 5 embedded VITC 2.
Definition: ntv2enums.h:3890
NTV2RegisterWriteModeToString
string NTV2RegisterWriteModeToString(const NTV2RegisterWriteMode inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:7287
M31_VIF_1920X1080_420_8_60i
@ M31_VIF_1920X1080_420_8_60i
Definition: ntv2m31enums.h:152
NTV2_UpConvertAnamorphic
@ NTV2_UpConvertAnamorphic
Definition: ntv2enums.h:2162
NTV2WidgetType_Mixer
@ NTV2WidgetType_Mixer
Definition: ntv2enums.h:2992
M31_VIF_720X576_420_8_50i
@ M31_VIF_720X576_420_8_50i
Definition: ntv2m31enums.h:136
NTV2WidgetType_MultiLinkOut
@ NTV2WidgetType_MultiLinkOut
Definition: ntv2enums.h:3007
NTV2EmbeddedAudioInputToString
string NTV2EmbeddedAudioInputToString(const NTV2EmbeddedAudioInput inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6717
NTV2_525_5994to1080i_5994
@ NTV2_525_5994to1080i_5994
Definition: ntv2enums.h:3634
GetQuarterSizedVideoFormat
NTV2VideoFormat GetQuarterSizedVideoFormat(const NTV2VideoFormat inVideoFormat)
Definition: ntv2utils.cpp:1844
M31_VIF_720X480_420_8_5994p
@ M31_VIF_720X480_420_8_5994p
Definition: ntv2m31enums.h:128
NTV2_CHANNEL5
@ NTV2_CHANNEL5
Specifies channel or Frame Store 5 (or the 5th item).
Definition: ntv2enums.h:1311
NTV2_FRAMERATE_2400
@ NTV2_FRAMERATE_2400
24 frames per second
Definition: ntv2enums.h:405
NTV2GetSupportedDevices
NTV2DeviceIDSet NTV2GetSupportedDevices(const NTV2DeviceKinds inKinds)
Returns an NTV2DeviceIDSet of devices supported by the SDK.
Definition: ntv2utils.cpp:7552
NTV2EmbeddedAudioClock
NTV2EmbeddedAudioClock
This enum value determines/states the device audio clock reference source. It was important to set th...
Definition: ntv2enums.h:1931
NTV2_XptLUT1Input
@ NTV2_XptLUT1Input
Definition: ntv2enums.h:2720
AutoCircVidProcModeToString
string AutoCircVidProcModeToString(const AutoCircVidProcMode inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:7712
NTV2_BITFILE_CORVID3G_MAIN
@ NTV2_BITFILE_CORVID3G_MAIN
Definition: ntv2enums.h:3297
M31_FILE_3840X2160_422_10_25p
@ M31_FILE_3840X2160_422_10_25p
Definition: ntv2m31enums.h:113
NTV2FrameGeometryToString
string NTV2FrameGeometryToString(const NTV2FrameGeometry inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:7154
M31_FILE_3840X2160_422_10_30p
@ M31_FILE_3840X2160_422_10_30p
Definition: ntv2m31enums.h:115
M31_FILE_1920X1080_422_10_60i
@ M31_FILE_1920X1080_422_10_60i
Definition: ntv2m31enums.h:68
NTV2_KBox
@ NTV2_KBox
Definition: ntv2enums.h:3028
M31_NUMVIDEOPRESETS
@ M31_NUMVIDEOPRESETS
Definition: ntv2m31enums.h:178
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
NTV2_BITFILE_TYPE_INVALID
@ NTV2_BITFILE_TYPE_INVALID
Definition: ntv2enums.h:3291
NTV2_INPUTSOURCE_ANALOG1
@ NTV2_INPUTSOURCE_ANALOG1
Identifies the first analog video input.
Definition: ntv2enums.h:1223
NTV2_XptMultiLinkOut1DS2
@ NTV2_XptMultiLinkOut1DS2
New in SDK 16.0.
Definition: ntv2enums.h:2497
NTV2_IS_3Gb_FORMAT
#define NTV2_IS_3Gb_FORMAT(__f__)
Definition: ntv2enums.h:934
NTV2_FBF_8BIT_YCBCR_420PL2
@ NTV2_FBF_8BIT_YCBCR_420PL2
8-Bit 4:2:0 2-Plane YCbCr
Definition: ntv2enums.h:241
NTV2BreakoutTypeToString
string NTV2BreakoutTypeToString(const NTV2BreakoutType inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6574
DEVICE_ID_KONAIP_4CH_2SFP
@ DEVICE_ID_KONAIP_4CH_2SFP
See KONA IP.
Definition: ntv2enums.h:73
NTV2IpErrGrandMasterInfo
@ NTV2IpErrGrandMasterInfo
Definition: ntv2enums.h:4253
NTV2_BITFILE_KONA5_OE1_MAIN
@ NTV2_BITFILE_KONA5_OE1_MAIN
Definition: ntv2enums.h:3333
NTV2_FORMAT_4x2048x1080p_2398
@ NTV2_FORMAT_4x2048x1080p_2398
Definition: ntv2enums.h:567
NTV2_WgtDualLinkV2In7
@ NTV2_WgtDualLinkV2In7
Definition: ntv2enums.h:2919
NTV2InputSourceToReferenceSource
NTV2ReferenceSource NTV2InputSourceToReferenceSource(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2ReferenceSource value.
Definition: ntv2utils.cpp:5081
NTV2_KLHiBox
@ NTV2_KLHiBox
Definition: ntv2enums.h:3031
PackLine_16BitYUVto10BitYUV
void PackLine_16BitYUVto10BitYUV(const UWord *pIn16BitYUVLine, ULWord *pOut10BitYUVLine, const ULWord inNumPixels)
Packs a line of 16-bit-per-component YCbCr (NTV2_FBF_10BIT_YCBCR) video into 10-bit-per-component YCb...
Definition: ntv2utils.cpp:527
NTV2HDMIRangeToString
string NTV2HDMIRangeToString(const NTV2HDMIRange inValue, const bool inCompact)
Definition: ntv2utils.cpp:6683
NTV2_INPUTSOURCE_SDI1
@ NTV2_INPUTSOURCE_SDI1
Identifies the 1st SDI video input.
Definition: ntv2enums.h:1228
NTV2_WgtFrameBuffer5
@ NTV2_WgtFrameBuffer5
Definition: ntv2enums.h:2932
NTV2_BITFILE_KONA4UFC_MAIN
@ NTV2_BITFILE_KONA4UFC_MAIN
Definition: ntv2enums.h:3307
NTV2_NUM_OUTPUTDESTINATIONS
@ NTV2_NUM_OUTPUTDESTINATIONS
Definition: ntv2enums.h:1289
PercentEncode
string PercentEncode(const string &inStr)
Definition: ntv2utils.cpp:8035
NTV2_XptUpdateRegister
@ NTV2_XptUpdateRegister
Definition: ntv2enums.h:2814
NTV2AudioLoopBackToString
string NTV2AudioLoopBackToString(const NTV2AudioLoopBack inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:5813
NTV2_WgtSDIOut1
@ NTV2_WgtSDIOut1
Definition: ntv2enums.h:2860
eOutput7
@ eOutput7
Definition: ntv2publicinterface.h:3756
NTV2_FRAMESIZE_28MB
@ NTV2_FRAMESIZE_28MB
Definition: ntv2enums.h:2072
NTV2_XptFrameBuffer4_DS2RGB
@ NTV2_XptFrameBuffer4_DS2RGB
Definition: ntv2enums.h:2612
NTV2_REFERENCE_HDMI_INPUT4
@ NTV2_REFERENCE_HDMI_INPUT4
Specifies the HDMI In 4 connector.
Definition: ntv2enums.h:1419
GetRelatedGeometries
NTV2GeometrySet GetRelatedGeometries(const NTV2FrameGeometry inFG)
Definition: ntv2utils.cpp:3901
M31_FILE_3840X2160_420_8_24p
@ M31_FILE_3840X2160_420_8_24p
Definition: ntv2m31enums.h:90
M31_VIF_1920X1080_420_8_50p
@ M31_VIF_1920X1080_420_8_50p
Definition: ntv2m31enums.h:149
NTV2_TCINDEX_SDI2_LTC
@ NTV2_TCINDEX_SDI2_LTC
SDI 2 embedded ATC LTC.
Definition: ntv2enums.h:3873
NTV2_FORMAT_END_UHD2_DEF_FORMATS
@ NTV2_FORMAT_END_UHD2_DEF_FORMATS
Definition: ntv2enums.h:666
NTV2_XptFrameBuffer1_DS2RGB
@ NTV2_XptFrameBuffer1_DS2RGB
Definition: ntv2enums.h:2606
NTV2_WgtDualLinkV2Out3
@ NTV2_WgtDualLinkV2Out3
Definition: ntv2enums.h:2898
NTV2IpErrTimeoutNoSeq
@ NTV2IpErrTimeoutNoSeq
Definition: ntv2enums.h:4244
NTV2_WgtMixer3
@ NTV2_WgtMixer3
Definition: ntv2enums.h:2930
NTV2_BITFILE_IOIP_2022
@ NTV2_BITFILE_IOIP_2022
Definition: ntv2enums.h:3317
GetVANCFrameGeometry
NTV2FrameGeometry GetVANCFrameGeometry(const NTV2FrameGeometry inFrameGeometry, const NTV2VANCMode inVancMode)
Definition: ntv2utils.cpp:3803
NTV2_WgtMixer1
@ NTV2_WgtMixer1
Definition: ntv2enums.h:2882
YCbCr10BitPixel
Definition: ntv2videodefines.h:200
NTV2_FORMAT_1080psf_2K_2500
@ NTV2_FORMAT_1080psf_2K_2500
Definition: ntv2enums.h:537
NTV2_XptCSC3VidRGB
@ NTV2_XptCSC3VidRGB
Definition: ntv2enums.h:2535
NTV2WidgetTypeToString
string NTV2WidgetTypeToString(const NTV2WidgetType inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6321
NTV2_OUTPUTDESTINATION_SDI1
@ NTV2_OUTPUTDESTINATION_SDI1
Definition: ntv2enums.h:1280
NTV2_REFERENCE_INPUT5
@ NTV2_REFERENCE_INPUT5
Specifies the SDI In 5 connector.
Definition: ntv2enums.h:1409
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
M31_FILE_3840X2160_422_10_2398p
@ M31_FILE_3840X2160_422_10_2398p
Definition: ntv2m31enums.h:111
NTV2_TCINDEX_SDI1_LTC
@ NTV2_TCINDEX_SDI1_LTC
SDI 1 embedded ATC LTC.
Definition: ntv2enums.h:3872
NTV2_FBF_10BIT_RAW_RGB
@ NTV2_FBF_10BIT_RAW_RGB
10-Bit Raw RGB
Definition: ntv2enums.h:235
NTV2DownConvertMode
NTV2DownConvertMode
Definition: ntv2enums.h:2183
NTV2CROSSPOINT_INVALID
@ NTV2CROSSPOINT_INVALID
Definition: ntv2enums.h:1666
M31_FILE_1920X1080_420_8_60p
@ M31_FILE_1920X1080_420_8_60p
Definition: ntv2m31enums.h:57
NTV2_XptFrameBuffer2_DS2RGB
@ NTV2_XptFrameBuffer2_DS2RGB
Definition: ntv2enums.h:2608
NTV2FormatDescriptor::numPixels
ULWord numPixels
Width – total number of pixels per line.
Definition: ntv2formatdescriptor.h:349
M31_VIF_1920X1080_420_8_50i
@ M31_VIF_1920X1080_420_8_50i
Definition: ntv2m31enums.h:148
GetIndexForNTV2Crosspoint
ULWord GetIndexForNTV2Crosspoint(const NTV2Crosspoint channel)
Definition: ntv2utils.cpp:4882
NTV2_WgtHDMIIn4v4
@ NTV2_WgtHDMIIn4v4
Definition: ntv2enums.h:2953
NTV2_Wgt3GSDIOut2
@ NTV2_Wgt3GSDIOut2
Definition: ntv2enums.h:2865
NTV2_XptFrameBuffer7Input
@ NTV2_XptFrameBuffer7Input
Definition: ntv2enums.h:2700
NTV2_XptMultiLinkOut2DS1
@ NTV2_XptMultiLinkOut2DS1
New in SDK 16.0.
Definition: ntv2enums.h:2503
NTV2_IS_VALID_AUDIO_CHANNEL_QUAD
#define NTV2_IS_VALID_AUDIO_CHANNEL_QUAD(__p__)
Definition: ntv2enums.h:3231
NTV2_FRAMESIZE_32MB
@ NTV2_FRAMESIZE_32MB
Definition: ntv2enums.h:2074
IsProgressivePicture
bool IsProgressivePicture(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5423
HDRRegValues::whitePointY
uint16_t whitePointY
Definition: ntv2publicinterface.h:9840
M31_VIF_1280X720_422_10_60p
@ M31_VIF_1280X720_422_10_60p
Definition: ntv2m31enums.h:146
NTV2_XptHDMIIn1Q2RGB
@ NTV2_XptHDMIIn1Q2RGB
Definition: ntv2enums.h:2545
NTV2RegInfo::registerNumber
ULWord registerNumber
My register number to use in a ReadRegister or WriteRegister call.
Definition: ntv2publicinterface.h:3902
NTV2_FORMAT_1080p_5994_B
@ NTV2_FORMAT_1080p_5994_B
Definition: ntv2enums.h:529
NTV2_XptFrameBuffer1Input
@ NTV2_XptFrameBuffer1Input
Definition: ntv2enums.h:2688
NTV2_WgtDualLinkV2In4
@ NTV2_WgtDualLinkV2In4
Definition: ntv2enums.h:2897
operator<<
ostream & operator<<(ostream &inOutStream, const NTV2FrameDimensions inFrameDimensions)
Definition: ntv2utils.cpp:5747
NTV2_FORMAT_1080psf_3000_2
@ NTV2_FORMAT_1080psf_3000_2
Definition: ntv2enums.h:540
NTV2IpErrTimeoutNoSOM
@ NTV2IpErrTimeoutNoSOM
Definition: ntv2enums.h:4243
NTV2_XptCSC3KeyYUV
@ NTV2_XptCSC3KeyYUV
Definition: ntv2enums.h:2536
NTV2_TCINDEX_SDI1
@ NTV2_TCINDEX_SDI1
SDI 1 embedded VITC.
Definition: ntv2enums.h:3868
NTV2_FORMAT_1080p_2K_2400
@ NTV2_FORMAT_1080p_2K_2400
Definition: ntv2enums.h:524
NTV2_TCINDEX_SDI2
@ NTV2_TCINDEX_SDI2
SDI 2 embedded VITC.
Definition: ntv2enums.h:3869
NTV2BitfileTypeToString
string NTV2BitfileTypeToString(const NTV2BitfileType inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:7739
NTV2_FG_2048x1588
@ NTV2_FG_2048x1588
2048x1556, for 2Kx1556psf film format, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:351
NTV2DeviceKinds
enum _NTV2DeviceKinds NTV2DeviceKinds
These enum values are used for device selection/filtering.
NTV2_EMBEDDED_AUDIO_CLOCK_REFERENCE
@ NTV2_EMBEDDED_AUDIO_CLOCK_REFERENCE
Audio clock derived from the device reference.
Definition: ntv2enums.h:1933
NTV2_Xpt3DLUT1RGB
@ NTV2_Xpt3DLUT1RGB
Definition: ntv2enums.h:2543
NTV2InputSourceToTimecodeIndex
NTV2TimecodeIndex NTV2InputSourceToTimecodeIndex(const NTV2InputSource inInputSource, const bool inEmbeddedLTC)
Converts a given NTV2InputSource to its equivalent NTV2TimecodeIndex value.
Definition: ntv2utils.cpp:5153
NTV2_FORMAT_525_2398
@ NTV2_FORMAT_525_2398
Definition: ntv2enums.h:545
NTV2_BITFILE_KONA5_OE4_MAIN
@ NTV2_BITFILE_KONA5_OE4_MAIN
Definition: ntv2enums.h:3336
NTV2_VANCMODE_TALL
@ NTV2_VANCMODE_TALL
This identifies the "tall" mode in which there are some VANC lines in the frame buffer.
Definition: ntv2enums.h:3714
NTV2_REFERENCE_INPUT4
@ NTV2_REFERENCE_INPUT4
Specifies the SDI In 4 connector.
Definition: ntv2enums.h:1408
NTV2_XptDuallinkOut3
@ NTV2_XptDuallinkOut3
Definition: ntv2enums.h:2530
NTV2_FORMAT_4x2048x1080p_3000
@ NTV2_FORMAT_4x2048x1080p_3000
Definition: ntv2enums.h:575
NTV2_XptDualLinkIn2Input
@ NTV2_XptDualLinkIn2Input
Definition: ntv2enums.h:2750
NTV2_TCINDEX_SDI5
@ NTV2_TCINDEX_SDI5
SDI 5 embedded VITC.
Definition: ntv2enums.h:3876
M31_FILE_2048X1080_422_10_60p
@ M31_FILE_2048X1080_422_10_60p
Definition: ntv2m31enums.h:87
NTV2Standard
NTV2Standard
Identifies a particular video standard.
Definition: ntv2enums.h:153
M31_VIF_3840X2160_420_10_60p
@ M31_VIF_3840X2160_420_10_60p
Definition: ntv2m31enums.h:171
NTV2_XptCSC4VidRGB
@ NTV2_XptCSC4VidRGB
Definition: ntv2enums.h:2538
NTV2_DEVICEKIND_CUSTOM_ANC
@ NTV2_DEVICEKIND_CUSTOM_ANC
Specifies devices that have custom Anc inserter/extractor firmware.
Definition: ntv2enums.h:1342
NTV2_MAX_NUM_CHANNELS
@ NTV2_MAX_NUM_CHANNELS
Definition: ntv2enums.h:1315
NTV2EndianSwap16
#define NTV2EndianSwap16(__val__)
Definition: ntv2endian.h:15
NTV2_AUDIOSYSTEM_2
@ NTV2_AUDIOSYSTEM_2
This identifies the 2nd Audio System.
Definition: ntv2enums.h:3812
NTV2IpErrInvalidChannel
@ NTV2IpErrInvalidChannel
Definition: ntv2enums.h:4227
NTV2SmpteLineNumber::Print
std::ostream & Print(std::ostream &inOutStream) const
Writes a human-readable description of me into the given output stream.
Definition: ntv2utils.cpp:4130
NTV2_XptCSC1VidYUV
@ NTV2_XptCSC1VidYUV
Definition: ntv2enums.h:2475
NTV2_XptSDIIn7
@ NTV2_XptSDIIn7
Definition: ntv2enums.h:2556
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
Make10BitLine
void Make10BitLine(UWord *pOutLineData, const UWord Y, const UWord Cb, const UWord Cr, const ULWord inNumPixels)
Definition: ntv2utils.cpp:792
NTV2_FORMAT_4096x2160p_4795
@ NTV2_FORMAT_4096x2160p_4795
Definition: ntv2enums.h:631
NTV2_625_2500to1080i_2500
@ NTV2_625_2500to1080i_2500
Definition: ntv2enums.h:3636
IsVideoFormatA
bool IsVideoFormatA(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5490
NTV2_1080p_2400to1080i_3000
@ NTV2_1080p_2400to1080i_3000
Definition: ntv2enums.h:3665
NTV2_XptFrameBuffer7_DS2YUV
@ NTV2_XptFrameBuffer7_DS2YUV
Definition: ntv2enums.h:2617
kNumAudioChannelsMax
@ kNumAudioChannelsMax
Definition: ntv2audiodefines.h:44
NTV2_XptLUT6Out
@ NTV2_XptLUT6Out
Definition: ntv2enums.h:2647
lock.h
Declares the AJALock class.
NTV2_FRAMERATE_2398
@ NTV2_FRAMERATE_2398
Fractional rate of 24,000 frames per 1,001 seconds.
Definition: ntv2enums.h:406
DEVICE_ID_KONA5_8K
@ DEVICE_ID_KONA5_8K
See KONA 5.
Definition: ntv2enums.h:50
NTV2_WgtAnalogCompositeOut1
@ NTV2_WgtAnalogCompositeOut1
Definition: ntv2enums.h:2877
M_PI
#define M_PI
Definition: ntv2utils.cpp:4474
NTV2InputSourceToString
string NTV2InputSourceToString(const NTV2InputSource inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:7215
GetIndexForNTV2Channel
ULWord GetIndexForNTV2Channel(const NTV2Channel inChannel)
Definition: ntv2utils.cpp:4760
NTV2Buffer::IsNULL
bool IsNULL(void) const
Definition: ntv2publicinterface.h:6062
NTV2IpErrInvalidMBResponseNoMac
@ NTV2IpErrInvalidMBResponseNoMac
Definition: ntv2enums.h:4251
DEVICE_ID_KONA3G
@ DEVICE_ID_KONA3G
See KONA 3G (UFC Mode).
Definition: ntv2enums.h:44
HDRRegValues::greenPrimaryX
uint16_t greenPrimaryX
Definition: ntv2publicinterface.h:9833
NTV2_XptCSC5VidRGB
@ NTV2_XptCSC5VidRGB
Definition: ntv2enums.h:2522
ULWord
uint32_t ULWord
Definition: ajatypes.h:246
M31_FILE_1280X720_422_10_5994p
@ M31_FILE_1280X720_422_10_5994p
Definition: ntv2m31enums.h:44
NTV2_FORMAT_4x4096x2160p_3000
@ NTV2_FORMAT_4x4096x2160p_3000
Definition: ntv2enums.h:672
NTV2_XptMultiLinkOut1InputDS2
@ NTV2_XptMultiLinkOut1InputDS2
New in SDK 16.0.
Definition: ntv2enums.h:2729
NTV2_FORMAT_4x2048x1080p_5000_B
@ NTV2_FORMAT_4x2048x1080p_5000_B
Definition: ntv2enums.h:648
NTV2FramesizeToByteCount
ULWord NTV2FramesizeToByteCount(const NTV2Framesize inFrameSize)
Converts the given NTV2Framesize value into an exact byte count.
Definition: ntv2utils.cpp:5319
NTV2CROSSPOINT_INPUT7
@ NTV2CROSSPOINT_INPUT7
Definition: ntv2enums.h:1663
HDRFloatValues::maxMasteringLuminance
uint16_t maxMasteringLuminance
Definition: ntv2publicinterface.h:9858
NTV2AudioSystemToString
string NTV2AudioSystemToString(const NTV2AudioSystem inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:5777
NTV2_FORMAT_2K_2500
@ NTV2_FORMAT_2K_2500
Definition: ntv2enums.h:555
NTV2WidgetType_FrameSync
@ NTV2WidgetType_FrameSync
Definition: ntv2enums.h:2973
NTV2WidgetType_GenLock
@ NTV2WidgetType_GenLock
Definition: ntv2enums.h:2997
NTV2_FRAMERATE_1900
@ NTV2_FRAMERATE_1900
Definition: ntv2enums.h:416
NTV2WidgetType_TestPattern
@ NTV2WidgetType_TestPattern
Definition: ntv2enums.h:3012
M31_VIF_1280X720_420_8_60p
@ M31_VIF_1280X720_420_8_60p
Definition: ntv2m31enums.h:143
NTV2_XptLUT5Out
@ NTV2_XptLUT5Out
Definition: ntv2enums.h:2640
NTV2IpErrNone
@ NTV2IpErrNone
Definition: ntv2enums.h:4226
NTV2WidgetType_4KDownConverter
@ NTV2WidgetType_4KDownConverter
Definition: ntv2enums.h:2998
DEVICE_ID_SOJI_DIAGS
@ DEVICE_ID_SOJI_DIAGS
Definition: ntv2enums.h:87
NTV2_WgtCSC4
@ NTV2_WgtCSC4
Definition: ntv2enums.h:2901
DEVICE_ID_KONAXM
@ DEVICE_ID_KONAXM
See KONA XMâ„¢.
Definition: ntv2enums.h:78
eInput8
@ eInput8
Definition: ntv2publicinterface.h:3749
NTV2_XptCSC4VidYUV
@ NTV2_XptCSC4VidYUV
Definition: ntv2enums.h:2537
NTV2_XptSDIIn3
@ NTV2_XptSDIIn3
Definition: ntv2enums.h:2526
M31_FILE_1920X1080_420_8_5994p
@ M31_FILE_1920X1080_420_8_5994p
Definition: ntv2m31enums.h:55
NTV2_XptSDIIn8
@ NTV2_XptSDIIn8
Definition: ntv2enums.h:2557
NTV2_CHANNEL7
@ NTV2_CHANNEL7
Specifies channel or Frame Store 7 (or the 7th item).
Definition: ntv2enums.h:1313
NTV2_XptMixer1FGKeyInput
@ NTV2_XptMixer1FGKeyInput
Definition: ntv2enums.h:2774
NTV2_XptSDIIn7DS2
@ NTV2_XptSDIIn7DS2
Definition: ntv2enums.h:2558
GetSupportedNTV2VideoFormatFromInputVideoFormat
NTV2VideoFormat GetSupportedNTV2VideoFormatFromInputVideoFormat(const NTV2VideoFormat inVideoFormat)
Definition: ntv2utils.cpp:2499
NTV2WidgetType_HDMIInV2
@ NTV2WidgetType_HDMIInV2
Definition: ntv2enums.h:2987
NTV2AudioRateToString
string NTV2AudioRateToString(const NTV2AudioRate inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:5788
eTemp1High
@ eTemp1High
Definition: ntv2publicinterface.h:3736
NTV2_Wgt425Mux2
@ NTV2_Wgt425Mux2
Definition: ntv2enums.h:2939
M31_FILE_1920X1080_422_10_30p
@ M31_FILE_1920X1080_422_10_30p
Definition: ntv2m31enums.h:63
NTV2_WgtDualLinkV2Out7
@ NTV2_WgtDualLinkV2Out7
Definition: ntv2enums.h:2922
DEVICE_ID_CORVID3G
@ DEVICE_ID_CORVID3G
See Corvid, Corvid 3G.
Definition: ntv2enums.h:25
DEVICE_ID_KONAX
@ DEVICE_ID_KONAX
See KONA X.
Definition: ntv2enums.h:77
NTV2FormatDescriptor::numLines
ULWord numLines
Height – total number of lines.
Definition: ntv2formatdescriptor.h:348
NTV2_1080i_5994to525_5994
@ NTV2_1080i_5994to525_5994
Definition: ntv2enums.h:3630
NTV2_TCINDEX_SDI7_2
@ NTV2_TCINDEX_SDI7_2
SDI 7 embedded VITC 2.
Definition: ntv2enums.h:3892
NTV2_FORMAT_4x2048x1080psf_3000
@ NTV2_FORMAT_4x2048x1080psf_3000
Definition: ntv2enums.h:577
NTV2_CCMODE_3WAY
@ NTV2_CCMODE_3WAY
Definition: ntv2enums.h:2025
GetNTV2StandardFromVideoFormat
NTV2Standard GetNTV2StandardFromVideoFormat(const NTV2VideoFormat inVideoFormat)
Definition: ntv2utils.cpp:2277
NTV2_FORMAT_1080p_2997
@ NTV2_FORMAT_1080p_2997
Definition: ntv2enums.h:518
M31_VIF_1920X1080_420_10_50p
@ M31_VIF_1920X1080_420_10_50p
Definition: ntv2m31enums.h:155
NTV2WidgetType_AnalogOut
@ NTV2WidgetType_AnalogOut
Definition: ntv2enums.h:2984
DEVICE_ID_KONA5_OE5
@ DEVICE_ID_KONA5_OE5
See KONA 5.
Definition: ntv2enums.h:57
NTV2TaskModeToString
string NTV2TaskModeToString(const NTV2EveryFrameTaskMode inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6372
NTV2_625_5000to625psf_2500
@ NTV2_625_5000to625psf_2500
Definition: ntv2enums.h:3656
NTV2_DEVICEKIND_12G
@ NTV2_DEVICEKIND_12G
Specifies devices that have 12G SDI connectors.
Definition: ntv2enums.h:1341
DEVICE_ID_SOJI_OE7
@ DEVICE_ID_SOJI_OE7
Definition: ntv2enums.h:86
NTV2_WgtCompression1
@ NTV2_WgtCompression1
Definition: ntv2enums.h:2883
CNTV2RegisterExpert::GetDisplayName
static std::string GetDisplayName(const uint32_t inRegNum)
Definition: ntv2registerexpert.cpp:4495
NTV2_XptHDMIIn1Q2
@ NTV2_XptHDMIIn1Q2
Definition: ntv2enums.h:2544
NTV2ReferenceSource
NTV2ReferenceSource
These enum values identify a specific source for the device's (output) reference clock.
Definition: ntv2enums.h:1399
NTV2_FORMAT_1080p_2K_4795_B
@ NTV2_FORMAT_1080p_2K_4795_B
Definition: ntv2enums.h:597
NTV2_AncRgn_Field1
@ NTV2_AncRgn_Field1
Identifies the "normal" Field 1 ancillary data region.
Definition: ntv2enums.h:4140
NTV2_XptFrameBuffer1YUV
@ NTV2_XptFrameBuffer1YUV
Definition: ntv2enums.h:2479
NTV2EndianSwap32
#define NTV2EndianSwap32(__val__)
Definition: ntv2endian.h:19
DEVICE_ID_KONA4UFC
@ DEVICE_ID_KONA4UFC
See KONA 4 (UFC Mode).
Definition: ntv2enums.h:47
NTV2_XptDuallinkIn7DS2
@ NTV2_XptDuallinkIn7DS2
Definition: ntv2enums.h:2669
NTV2_WgtFrameBuffer4
@ NTV2_WgtFrameBuffer4
Definition: ntv2enums.h:2847
NTV2WidgetType_FrameStore
@ NTV2WidgetType_FrameStore
Definition: ntv2enums.h:2970
NTV2_XptSDIOut2Input
@ NTV2_XptSDIOut2Input
Definition: ntv2enums.h:2734
NTV2_IS_INPUT_CROSSPOINT
#define NTV2_IS_INPUT_CROSSPOINT(__x__)
Definition: ntv2enums.h:1669
NTV2_XptDuallinkOut2DS2
@ NTV2_XptDuallinkOut2DS2
Definition: ntv2enums.h:2520
NTV2_FG_720x612
@ NTV2_FG_720x612
720x576, for PAL 625i, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:354
NTV2FormatDescriptor::GetTotalBytes
ULWord GetTotalBytes(void) const
Definition: ntv2formatdescriptor.cpp:851
NTV2_FRAMERATE_1498
@ NTV2_FRAMERATE_1498
Fractional rate of 15,000 frames per 1,001 seconds.
Definition: ntv2enums.h:413
NTV2_IsoPassThrough
@ NTV2_IsoPassThrough
Definition: ntv2enums.h:2201
M31_FILE_1280X720_420_8_2997p
@ M31_FILE_1280X720_420_8_2997p
Definition: ntv2m31enums.h:32
NTV2_FORMAT_1080p_3000
@ NTV2_FORMAT_1080p_3000
Definition: ntv2enums.h:519
NTV2_XptDuallinkOut1DS2
@ NTV2_XptDuallinkOut1DS2
Definition: ntv2enums.h:2519
NTV2_XptDuallinkOut4DS2
@ NTV2_XptDuallinkOut4DS2
Definition: ntv2enums.h:2533
NTV2CROSSPOINT_CHANNEL2
@ NTV2CROSSPOINT_CHANNEL2
Definition: ntv2enums.h:1648
NTV2_1080i_5994to720p_5994
@ NTV2_1080i_5994to720p_5994
Definition: ntv2enums.h:3648
NTV2_FORMAT_4x3840x2160p_5994
@ NTV2_FORMAT_4x3840x2160p_5994
Definition: ntv2enums.h:661
DEVICE_ID_KONAIP_1RX_1TX_2110
@ DEVICE_ID_KONAIP_1RX_1TX_2110
See KONA IP.
Definition: ntv2enums.h:68
RePackLineDataForYCbCrDPX
void RePackLineDataForYCbCrDPX(ULWord *packedycbcrLine, ULWord numULWords)
Definition: ntv2utils.cpp:637
NTV2_XptIICT1Input
@ NTV2_XptIICT1Input
Definition: ntv2enums.h:2811
NTV2_FORMAT_4096x2160p_2398
@ NTV2_FORMAT_4096x2160p_2398
Definition: ntv2enums.h:624
UWordSequence
std::vector< uint16_t > UWordSequence
An ordered sequence of UWord (uint16_t) values.
Definition: ntv2publicinterface.h:41
NTV2GeometrySet
std::set< NTV2FrameGeometry > NTV2GeometrySet
A set of distinct NTV2FrameGeometry values.
Definition: ntv2publicinterface.h:8785
M31_VIF_720X480_422_10_60p
@ M31_VIF_720X480_422_10_60p
Definition: ntv2m31enums.h:134
NTV2_FORMAT_END_STANDARD_DEF_FORMATS
@ NTV2_FORMAT_END_STANDARD_DEF_FORMATS
Definition: ntv2enums.h:549
NTV2CROSSPOINT_INPUT5
@ NTV2CROSSPOINT_INPUT5
Definition: ntv2enums.h:1661
NTV2_CCMODE_INVALID
@ NTV2_CCMODE_INVALID
Definition: ntv2enums.h:2027
NTV2_Wgt3GSDIIn6
@ NTV2_Wgt3GSDIIn6
Definition: ntv2enums.h:2910
NTV2Mode
NTV2Mode
Used to identify the mode of a Frame Store, or the direction of an AutoCirculate stream: either Captu...
Definition: ntv2enums.h:1198
NTV2HDMIProtocol
NTV2HDMIProtocol
Indicates or specifies the HDMI protocol.
Definition: ntv2enums.h:3535
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
NTV2CROSSPOINT_INPUT4
@ NTV2CROSSPOINT_INPUT4
Definition: ntv2enums.h:1656
DEVICE_ID_SOJI_OE1
@ DEVICE_ID_SOJI_OE1
Definition: ntv2enums.h:80
eOutput2
@ eOutput2
Definition: ntv2publicinterface.h:3751
M31_VIF_1920X1080_420_8_5994i
@ M31_VIF_1920X1080_420_8_5994i
Definition: ntv2m31enums.h:150
M31_FILE_1920X1080_420_8_30p
@ M31_FILE_1920X1080_420_8_30p
Definition: ntv2m31enums.h:51
NTV2MIXERINPUTCONTROL_SHAPED
@ NTV2MIXERINPUTCONTROL_SHAPED
Definition: ntv2enums.h:1724
NTV2_XptWaterMarker1Input
@ NTV2_XptWaterMarker1Input
Definition: ntv2enums.h:2812
NTV2_FORMAT_1080p_2500
@ NTV2_FORMAT_1080p_2500
Definition: ntv2enums.h:520
NTV2IpErrAcquireMBTimeout
@ NTV2IpErrAcquireMBTimeout
Definition: ntv2enums.h:4248
NTV2_MAX_NUM_VIDEO_FORMATS
@ NTV2_MAX_NUM_VIDEO_FORMATS
Definition: ntv2enums.h:685
eInterruptMask
@ eInterruptMask
Definition: ntv2publicinterface.h:3714
M31_VIF_1920X1080_420_10_60p
@ M31_VIF_1920X1080_420_10_60p
Definition: ntv2m31enums.h:159
HDRFloatValues::minMasteringLuminance
float minMasteringLuminance
Definition: ntv2publicinterface.h:9859
HDRFloatValues::greenPrimaryX
float greenPrimaryX
Definition: ntv2publicinterface.h:9850
NTV2IpErrWriteCountToMB
@ NTV2IpErrWriteCountToMB
Definition: ntv2enums.h:4242
NTV2_BITFILE_IO4KPLUS_MAIN
@ NTV2_BITFILE_IO4KPLUS_MAIN
Definition: ntv2enums.h:3316
M31_VIF_720X480_422_10_5994p
@ M31_VIF_720X480_422_10_5994p
Definition: ntv2m31enums.h:132
NTV2_FORMAT_3840x2160psf_3000
@ NTV2_FORMAT_3840x2160psf_3000
Definition: ntv2enums.h:613
NTV2_XptFrameSync1RGB
@ NTV2_XptFrameSync1RGB
Definition: ntv2enums.h:2482
NTV2TCIndex
NTV2TCIndex
These enum values are indexes into the capture/playout AutoCirculate timecode arrays.
Definition: ntv2enums.h:3865
NTV2_FRAMESIZE_4MB
@ NTV2_FRAMESIZE_4MB
Definition: ntv2enums.h:2060
NTV2IpErrSDPTooLong
@ NTV2IpErrSDPTooLong
Definition: ntv2enums.h:4254
NTV2_FORMAT_4x1920x1080p_5000_B
@ NTV2_FORMAT_4x1920x1080p_5000_B
Definition: ntv2enums.h:645
NTV2_CCMODE_OFF
@ NTV2_CCMODE_OFF
Definition: ntv2enums.h:2022
NTV2_XptFrameBuffer8_DS2YUV
@ NTV2_XptFrameBuffer8_DS2YUV
Definition: ntv2enums.h:2619
NTV2_Wgt3GSDIIn8
@ NTV2_Wgt3GSDIIn8
Definition: ntv2enums.h:2912
GetFrameRateFromScale
NTV2FrameRate GetFrameRateFromScale(long scale, long duration, NTV2FrameRate playFrameRate)
Definition: ntv2utils.cpp:3391
NTV2CROSSPOINT_CHANNEL6
@ NTV2CROSSPOINT_CHANNEL6
Definition: ntv2enums.h:1658
NTV2_WgtAnalogIn1
@ NTV2_WgtAnalogIn1
Definition: ntv2enums.h:2875
NTV2_INPUTSOURCE_SDI5
@ NTV2_INPUTSOURCE_SDI5
Identifies the 5th SDI video input.
Definition: ntv2enums.h:1232
NTV2_XptHDMIIn4RGB
@ NTV2_XptHDMIIn4RGB
Definition: ntv2enums.h:2632
NTV2_FRAMESIZE_30MB
@ NTV2_FRAMESIZE_30MB
Definition: ntv2enums.h:2073
NTV2InterruptEnumToString
std::string NTV2InterruptEnumToString(const INTERRUPT_ENUMS inInterruptEnumValue)
Definition: ntv2utils.cpp:7300
NTV2RegisterReadsConstIter
NTV2RegWritesConstIter NTV2RegisterReadsConstIter
Definition: ntv2publicinterface.h:3984
NTV2CROSSPOINT_INPUT6
@ NTV2CROSSPOINT_INPUT6
Definition: ntv2enums.h:1662
NTV2_XptConversionModInput
@ NTV2_XptConversionModInput
Definition: ntv2enums.h:2817
NTV2_BITFILE_CORVID44
@ NTV2_BITFILE_CORVID44
Definition: ntv2enums.h:3309
NTV2WidgetType_HDMIInV4
@ NTV2WidgetType_HDMIInV4
Definition: ntv2enums.h:2989
NTV2_FORMAT_4x2048x1080p_5000
@ NTV2_FORMAT_4x2048x1080p_5000
Definition: ntv2enums.h:581
NTV2_XptLUT4Out
@ NTV2_XptLUT4Out
Definition: ntv2enums.h:2639
M31_FILE_3840X2160_420_10_50p
@ M31_FILE_3840X2160_420_10_50p
Definition: ntv2m31enums.h:98
GetFirstMatchingVideoFormat
NTV2VideoFormat GetFirstMatchingVideoFormat(const NTV2FrameRate inFrameRate, const UWord inHeightLines, const UWord inWidthPixels, const bool inIsInterlaced, const bool inIsLevelB, const bool inIsPSF)
Definition: ntv2utils.cpp:1825
NTV2IpErrInvalidUllLevels
@ NTV2IpErrInvalidUllLevels
Definition: ntv2enums.h:4231
HDRFloatValues::maxContentLightLevel
uint16_t maxContentLightLevel
Definition: ntv2publicinterface.h:9860
CopyRGBAImageToFrame
void CopyRGBAImageToFrame(ULWord *pSrcBuffer, ULWord srcWidth, ULWord srcHeight, ULWord *pDstBuffer, ULWord dstWidth, ULWord dstHeight)
Definition: ntv2utils.cpp:949
NTV2_FBF_24BIT_BGR
@ NTV2_FBF_24BIT_BGR
See 24-Bit BGR.
Definition: ntv2enums.h:224
NTV2_OUTPUTDESTINATION_SDI6
@ NTV2_OUTPUTDESTINATION_SDI6
Definition: ntv2enums.h:1285
GetIndexForNTV2CrosspointInput
ULWord GetIndexForNTV2CrosspointInput(const NTV2Crosspoint channel)
Definition: ntv2utils.cpp:4842
NTV2_FORMAT_FIRST_4K_DEF_FORMAT2
@ NTV2_FORMAT_FIRST_4K_DEF_FORMAT2
Definition: ntv2enums.h:507
NTV2_XptAlphaOut
@ NTV2_XptAlphaOut
Definition: ntv2enums.h:2486
NTV2_XptConversionModule
@ NTV2_XptConversionModule
Definition: ntv2enums.h:2477
NTV2_BITFILE_SOJI_DIAGS_MAIN
@ NTV2_BITFILE_SOJI_DIAGS_MAIN
Definition: ntv2enums.h:3356
NTV2WidgetType_CSC
@ NTV2WidgetType_CSC
Definition: ntv2enums.h:2971
NTV2HDMIProtocolToString
string NTV2HDMIProtocolToString(const NTV2HDMIProtocol inValue, const bool inCompact)
Definition: ntv2utils.cpp:6672
NTV2_HDMIColorSpaceYCbCr
@ NTV2_HDMIColorSpaceYCbCr
YCbCr color space.
Definition: ntv2enums.h:3524
NTV2_KLHePlusBox
@ NTV2_KLHePlusBox
Definition: ntv2enums.h:3032
NTV2DeviceGetNumVideoInputs
UWord NTV2DeviceGetNumVideoInputs(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:11923
NTV2DeviceGetNumHDMIVideoOutputs
UWord NTV2DeviceGetNumHDMIVideoOutputs(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:10855
NTV2_XptDuallinkIn5
@ NTV2_XptDuallinkIn5
Definition: ntv2enums.h:2643
NTV2_FORMAT_4096x2160p_6000
@ NTV2_FORMAT_4096x2160p_6000
Definition: ntv2enums.h:635
NTV2_REFERENCE_INPUT6
@ NTV2_REFERENCE_INPUT6
Specifies the SDI In 6 connector.
Definition: ntv2enums.h:1410
M31_VIF_1280X720_420_8_50p
@ M31_VIF_1280X720_420_8_50p
Definition: ntv2m31enums.h:141
NTV2_FG_720x514
@ NTV2_FG_720x514
720x486, for NTSC 525i and 525p60, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:353
NTV2AudioChannelPair
NTV2AudioChannelPair
Identifies a pair of audio channels.
Definition: ntv2enums.h:3051
NTV2_1080p_3000to720p_6000
@ NTV2_1080p_3000to720p_6000
Definition: ntv2enums.h:3660
NTV2_FRAMESIZE_20MB
@ NTV2_FRAMESIZE_20MB
Definition: ntv2enums.h:2068
NTV2_Xpt425Mux4BRGB
@ NTV2_Xpt425Mux4BRGB
Definition: ntv2enums.h:2604
M31_FILE_720X480_422_10_60i
@ M31_FILE_720X480_422_10_60i
Definition: ntv2m31enums.h:21
FromRegNumSet
NTV2RegisterReads FromRegNumSet(const NTV2RegNumSet &inRegNumSet)
Definition: ntv2utils.cpp:7964
NTV2InputSourceToChannel
NTV2Channel NTV2InputSourceToChannel(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2Channel value.
Definition: ntv2utils.cpp:5105
NTV2CrosspointToString
string NTV2CrosspointToString(const NTV2Crosspoint inChannel)
Definition: ntv2utils.cpp:5837
DEVICE_ID_TTAP_PRO
@ DEVICE_ID_TTAP_PRO
See T-Tap Pro.
Definition: ntv2enums.h:89
NTV2_CHANNEL3
@ NTV2_CHANNEL3
Specifies channel or Frame Store 3 (or the 3rd item).
Definition: ntv2enums.h:1309
NTV2FrameRates
std::set< NTV2FrameRate > NTV2FrameRates
Definition: ntv2utils.cpp:5342
NTV2Buffer::CopyFrom
bool CopyFrom(const void *pInSrcBuffer, const ULWord inByteCount)
Replaces my contents from the given memory buffer, resizing me to the new byte count.
Definition: ntv2publicinterface.cpp:1642
NTV2_STANDARD_1080p
@ NTV2_STANDARD_1080p
Identifies SMPTE HD 1080p.
Definition: ntv2enums.h:159
UWord
uint16_t UWord
Definition: ajatypes.h:244
NTV2_BITFILE_KONA5_OE10_MAIN
@ NTV2_BITFILE_KONA5_OE10_MAIN
Definition: ntv2enums.h:3342
NTV2RegisterReads
NTV2RegWrites NTV2RegisterReads
Definition: ntv2publicinterface.h:3983
NTV2DeviceCanDo4KVideo
bool NTV2DeviceCanDo4KVideo(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:827
RGBAlpha10BitPixel::Green
UWord Green
Definition: ntv2videodefines.h:147
GetInputForConversionMode
NTV2VideoFormat GetInputForConversionMode(const NTV2ConversionMode conversionMode)
Definition: ntv2utils.cpp:5655
NTV2AudioChannelPairToString
string NTV2AudioChannelPairToString(const NTV2AudioChannelPair inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6450
ePowerButtonChange
@ ePowerButtonChange
Definition: ntv2publicinterface.h:3738
NTV2_Xpt4KDCQ1Input
@ NTV2_Xpt4KDCQ1Input
Definition: ntv2enums.h:2793
NTV2_HDMI8Bit
@ NTV2_HDMI8Bit
8 bit
Definition: ntv2enums.h:3608
NTV2_WgtDualLinkV2In3
@ NTV2_WgtDualLinkV2In3
Definition: ntv2enums.h:2896
NTV2_XptCSC7VidRGB
@ NTV2_XptCSC7VidRGB
Definition: ntv2enums.h:2578
NTV2_WgtMultiLinkOut2
@ NTV2_WgtMultiLinkOut2
Definition: ntv2enums.h:2958
CopyFromQuadrant
void CopyFromQuadrant(uint8_t *srcBuffer, uint32_t srcHeight, uint32_t srcRowBytes, uint32_t srcQuadrant, uint8_t *dstBuffer, uint32_t quad13Offset)
Definition: ntv2utils.cpp:454
NTV2_WgtDualLinkV2Out4
@ NTV2_WgtDualLinkV2Out4
Definition: ntv2enums.h:2899
NTV2CROSSPOINT_INPUT2
@ NTV2CROSSPOINT_INPUT2
Definition: ntv2enums.h:1650
DEVICE_ID_SOJI_OE3
@ DEVICE_ID_SOJI_OE3
Definition: ntv2enums.h:82
NTV2_FORMAT_4x1920x1080p_3000
@ NTV2_FORMAT_4x1920x1080p_3000
Definition: ntv2enums.h:571
HDRFloatValues::greenPrimaryY
float greenPrimaryY
Definition: ntv2publicinterface.h:9851
NTV2IpErrInvalidIGMPVersion
@ NTV2IpErrInvalidIGMPVersion
Definition: ntv2enums.h:4237
NTV2_FRAMESIZE_12MB
@ NTV2_FRAMESIZE_12MB
Definition: ntv2enums.h:2065
NTV2_XptFrameBuffer6_DS2YUV
@ NTV2_XptFrameBuffer6_DS2YUV
Definition: ntv2enums.h:2615
NTV2_IS_VANCMODE_ON
#define NTV2_IS_VANCMODE_ON(__v__)
Definition: ntv2enums.h:3722
NTV2VideoLimitingToString
string NTV2VideoLimitingToString(const NTV2VideoLimiting inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6561
NTV2_IS_VALID_INPUT_SOURCE
#define NTV2_IS_VALID_INPUT_SOURCE(_inpSrc_)
Definition: ntv2enums.h:1243
NTV2_FORMAT_4x3840x2160p_2997
@ NTV2_FORMAT_4x3840x2160p_2997
Definition: ntv2enums.h:658
NTV2_TCINDEX_SDI7
@ NTV2_TCINDEX_SDI7
SDI 7 embedded VITC.
Definition: ntv2enums.h:3878
NTV2_FBF_8BIT_YCBCR
@ NTV2_FBF_8BIT_YCBCR
See 8-Bit YCbCr Format.
Definition: ntv2enums.h:211
NTV2_XptCSC8VidInput
@ NTV2_XptCSC8VidInput
Definition: ntv2enums.h:2718
NTV2_REFERENCE_FREERUN
@ NTV2_REFERENCE_FREERUN
Specifies the device's internal clock.
Definition: ntv2enums.h:1404
NTV2_XptDualLinkOut4Input
@ NTV2_XptDualLinkOut4Input
Definition: ntv2enums.h:2767
NTV2MIXERINPUTCONTROL_INVALID
@ NTV2MIXERINPUTCONTROL_INVALID
Definition: ntv2enums.h:1726
NTV2_XptHDMIIn1Q4RGB
@ NTV2_XptHDMIIn1Q4RGB
Definition: ntv2enums.h:2549
eInput6
@ eInput6
Definition: ntv2publicinterface.h:3747
NTV2_XptCSC8VidRGB
@ NTV2_XptCSC8VidRGB
Definition: ntv2enums.h:2581
NTV2_XptCSC3VidInput
@ NTV2_XptCSC3VidInput
Definition: ntv2enums.h:2708
NTV2UpConvertMode
NTV2UpConvertMode
Definition: ntv2enums.h:2160
NTV2_EMBEDDED_AUDIO_CLOCK_VIDEO_INPUT
@ NTV2_EMBEDDED_AUDIO_CLOCK_VIDEO_INPUT
Audio clock derived from the video input.
Definition: ntv2enums.h:1934
NTV2_OUTPUTDESTINATION_SDI8
@ NTV2_OUTPUTDESTINATION_SDI8
Definition: ntv2enums.h:1287
ntv2utils.h
Declares numerous NTV2 utility functions.
NTV2_XptLUT2Out
@ NTV2_XptLUT2Out
Definition: ntv2enums.h:2634
NTV2_XptLUT8Input
@ NTV2_XptLUT8Input
Definition: ntv2enums.h:2727
NTV2_WgtHDMIOut1v3
@ NTV2_WgtHDMIOut1v3
Definition: ntv2enums.h:2937
NTV2_FORMAT_1080p_5000_B
@ NTV2_FORMAT_1080p_5000_B
Definition: ntv2enums.h:528
NTV2Framesize
NTV2Framesize
Kona2/Xena2 specific enums.
Definition: ntv2enums.h:2057
eAudioOutWrap
@ eAudioOutWrap
Definition: ntv2publicinterface.h:3719
NTV2CROSSPOINT_FGKEY
@ NTV2CROSSPOINT_FGKEY
Definition: ntv2enums.h:1652
NTV2_XptFrameBuffer8DS2Input
@ NTV2_XptFrameBuffer8DS2Input
Definition: ntv2enums.h:2703
Word
int16_t Word
Definition: ajatypes.h:243
NTV2_FRAMESIZE_10MB
@ NTV2_FRAMESIZE_10MB
Definition: ntv2enums.h:2064
NTV2InputSourceToAudioSystem
NTV2AudioSystem NTV2InputSourceToAudioSystem(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2AudioSystem value.
Definition: ntv2utils.cpp:5129
NTV2_XptMixer2FGVidInput
@ NTV2_XptMixer2FGVidInput
Definition: ntv2enums.h:2779
M31_FILE_720X576_422_10_50i
@ M31_FILE_720X576_422_10_50i
Definition: ntv2m31enums.h:26
NTV2_TCINDEX_SDI5_LTC
@ NTV2_TCINDEX_SDI5_LTC
SDI 5 embedded ATC LTC.
Definition: ntv2enums.h:3882
NTV2_FRAMERATE_1800
@ NTV2_FRAMERATE_1800
Definition: ntv2enums.h:418
SetRasterLinesWhite8BitYCbCr
static bool SetRasterLinesWhite8BitYCbCr(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines)
Definition: ntv2utils.cpp:1043
eUart2Tx
@ eUart2Tx
Definition: ntv2publicinterface.h:3742
NTV2_WgtHDMIIn3v4
@ NTV2_WgtHDMIIn3v4
Definition: ntv2enums.h:2952
NTV2_BITFILE_KONAIP_1RX_1TX_1SFP_J2K
@ NTV2_BITFILE_KONAIP_1RX_1TX_1SFP_J2K
Definition: ntv2enums.h:3313
NTV2BreakoutType
NTV2BreakoutType
Identifies the Breakout Boxes and Cables that may be attached to an AJA NTV2 device.
Definition: ntv2enums.h:3023
M31_FILE_3840X2160_422_8_2398p
@ M31_FILE_3840X2160_422_8_2398p
Definition: ntv2m31enums.h:102
NTV2FrameRatesConstIter
NTV2FrameRates::const_iterator NTV2FrameRatesConstIter
Definition: ntv2utils.cpp:5343
NTV2_FORMAT_4x3840x2160p_5000
@ NTV2_FORMAT_4x3840x2160p_5000
Definition: ntv2enums.h:660
M31_FILE_1920X1080_422_10_25p
@ M31_FILE_1920X1080_422_10_25p
Definition: ntv2m31enums.h:61
DEVICE_ID_KONAIP_2022
@ DEVICE_ID_KONAIP_2022
See KONA IP.
Definition: ntv2enums.h:69
M31_VIF_3840X2160_422_10_60p
@ M31_VIF_3840X2160_422_10_60p
Definition: ntv2m31enums.h:176
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
NTV2_XptHDMIIn2Q3RGB
@ NTV2_XptHDMIIn2Q3RGB
Definition: ntv2enums.h:2626
NTV2_BITFILE_KONA5_2X4K_MAIN
@ NTV2_BITFILE_KONA5_2X4K_MAIN
Definition: ntv2enums.h:3328
NTV2IsoConvertMode
NTV2IsoConvertMode
Definition: ntv2enums.h:2194
NTV2InputCrosspointID
NTV2InputCrosspointID
Identifies a widget input that potentially can accept a signal emitted from another widget's output (...
Definition: ntv2enums.h:2685
IsVideoFormatB
bool IsVideoFormatB(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5496
DEVICE_ID_IOXT
@ DEVICE_ID_IOXT
See IoXT.
Definition: ntv2enums.h:42
GetDisplayWidth
ULWord GetDisplayWidth(const NTV2VideoFormat inVideoFormat)
Definition: ntv2utils.cpp:4098
NTV2_XptFrameBuffer5_DS2RGB
@ NTV2_XptFrameBuffer5_DS2RGB
Definition: ntv2enums.h:2614
NTV2CROSSPOINT_INPUT8
@ NTV2CROSSPOINT_INPUT8
Definition: ntv2enums.h:1664
NTV2ColorCorrectionModeToString
string NTV2ColorCorrectionModeToString(const NTV2ColorCorrectionMode inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:7726
HDRRegValues::redPrimaryX
uint16_t redPrimaryX
Definition: ntv2publicinterface.h:9837
M31_FILE_3840X2160_422_10_50p
@ M31_FILE_3840X2160_422_10_50p
Definition: ntv2m31enums.h:116
NTV2MIXERMODE_FOREGROUND_ON
@ NTV2MIXERMODE_FOREGROUND_ON
Passes only foreground video + key to the Mixer output.
Definition: ntv2enums.h:1738
NTV2_FORMAT_4x2048x1080p_12000
@ NTV2_FORMAT_4x2048x1080p_12000
Definition: ntv2enums.h:587
NTV2_WgtProcAmp1
@ NTV2_WgtProcAmp1
Definition: ntv2enums.h:2884
NTV2_WgtHDMIIn1
@ NTV2_WgtHDMIIn1
Definition: ntv2enums.h:2878
NTV2_DEVICEKIND_ALL
@ NTV2_DEVICEKIND_ALL
Specifies any/all devices.
Definition: ntv2enums.h:1328
NTV2_HDMIRangeFull
@ NTV2_HDMIRangeFull
Levels are 0 - 255 (Full)
Definition: ntv2enums.h:3552
DEVICE_ID_KONA5_8K_MV_TX
@ DEVICE_ID_KONA5_8K_MV_TX
See KONA 5.
Definition: ntv2enums.h:65
NTV2_Xpt425Mux4AYUV
@ NTV2_Xpt425Mux4AYUV
Definition: ntv2enums.h:2601
NTV2_BITFILE_KONA1
@ NTV2_BITFILE_KONA1
Definition: ntv2enums.h:3320
convertHDRRegisterToFloatValues
bool convertHDRRegisterToFloatValues(const HDRRegValues &inRegisterValues, HDRFloatValues &outFloatValues)
Definition: ntv2utils.cpp:7846
NTV2_XptSDIOut1InputDS2
@ NTV2_XptSDIOut1InputDS2
Definition: ntv2enums.h:2733
NTV2_AUDIO_LOOPBACK_INVALID
@ NTV2_AUDIO_LOOPBACK_INVALID
Definition: ntv2enums.h:1973
setHDRDefaultsForBT2020
void setHDRDefaultsForBT2020(HDRRegValues &outRegisterValues)
Definition: ntv2utils.cpp:7874
eHDMIRxV2HotplugDetect
@ eHDMIRxV2HotplugDetect
Definition: ntv2publicinterface.h:3745
NTV2_WgtIICT1
@ NTV2_WgtIICT1
Definition: ntv2enums.h:2887
NTV2_IS_FBF_8BIT
#define NTV2_IS_FBF_8BIT(__fbf__)
Definition: ntv2enums.h:287
DEVICE_ID_SOJI_OE4
@ DEVICE_ID_SOJI_OE4
Definition: ntv2enums.h:83
NTV2DeviceGetNumAnalogVideoOutputs
UWord NTV2DeviceGetNumAnalogVideoOutputs(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:9775
M31_FILE_3840X2160_420_8_2398p
@ M31_FILE_3840X2160_420_8_2398p
Definition: ntv2m31enums.h:89
CopyRaster36BytesPer8Pixels
static bool CopyRaster36BytesPer8Pixels(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Definition: ntv2utils.cpp:1414
M31_FILE_3840X2160_422_8_60p
@ M31_FILE_3840X2160_422_8_60p
Definition: ntv2m31enums.h:109
NTV2_XptAnalogIn
@ NTV2_XptAnalogIn
Definition: ntv2enums.h:2498
DEVICE_ID_KONA5_OE8
@ DEVICE_ID_KONA5_OE8
See KONA 5.
Definition: ntv2enums.h:60
M31_FILE_4096X2160_422_10_60p_IF
@ M31_FILE_4096X2160_422_10_60p_IF
Definition: ntv2m31enums.h:124
NTV2_DEVICEKIND_INPUT
@ NTV2_DEVICEKIND_INPUT
Specifies devices that input (capture).
Definition: ntv2enums.h:1329
NTV2WidgetIDToString
string NTV2WidgetIDToString(const NTV2WidgetID inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6194
NTV2_WgtFrameBuffer1
@ NTV2_WgtFrameBuffer1
Definition: ntv2enums.h:2844
NTV2_Wgt12GSDIOut4
@ NTV2_Wgt12GSDIOut4
Definition: ntv2enums.h:2949
NTV2WidgetType_HDMIInV1
@ NTV2WidgetType_HDMIInV1
Definition: ntv2enums.h:2986
ePushButtonChange
@ ePushButtonChange
Definition: ntv2publicinterface.h:3732
M31_FILE_1280X720_420_8_5994p
@ M31_FILE_1280X720_420_8_5994p
Definition: ntv2m31enums.h:35
NTV2_BITFILE_KONA3G_MAIN
@ NTV2_BITFILE_KONA3G_MAIN
Definition: ntv2enums.h:3294
NTV2_XptFrameBuffer1DS2Input
@ NTV2_XptFrameBuffer1DS2Input
Definition: ntv2enums.h:2689
NTV2_FBF_10BIT_YCBCR_422PL2
@ NTV2_FBF_10BIT_YCBCR_422PL2
10-Bit 4:2:2 2-Plane YCbCr
Definition: ntv2enums.h:240
NTV2_XptSDIIn6
@ NTV2_XptSDIIn6
Definition: ntv2enums.h:2553
NTV2_REFERENCE_HDMI_INPUT1
@ NTV2_REFERENCE_HDMI_INPUT1
Specifies the HDMI In 1 connector.
Definition: ntv2enums.h:1406
NTV2IpErrNotReady
@ NTV2IpErrNotReady
Definition: ntv2enums.h:4233
NTV2_TASK_MODE_INVALID
@ NTV2_TASK_MODE_INVALID
Definition: ntv2publicinterface.h:4262
PackTo10BitYCbCrBuffer
void PackTo10BitYCbCrBuffer(const uint16_t *ycbcrBuffer, uint32_t *packedBuffer, const uint32_t numPixels)
Definition: ntv2utils.cpp:184
NTV2WidgetType_SDIIn
@ NTV2WidgetType_SDIIn
Definition: ntv2enums.h:2974
NTV2_FORMAT_625psf_2500
@ NTV2_FORMAT_625psf_2500
Definition: ntv2enums.h:548
DEVICE_ID_KONALHEPLUS
@ DEVICE_ID_KONALHEPLUS
See KONA LHe Plus.
Definition: ntv2enums.h:74
NTV2_Xpt425Mux2ARGB
@ NTV2_Xpt425Mux2ARGB
Definition: ntv2enums.h:2594
NTV2WidgetID
NTV2WidgetID
Definition: ntv2enums.h:2842
NTV2_WgtLUT3
@ NTV2_WgtLUT3
Definition: ntv2enums.h:2894
DEVICE_ID_KONA5_OE1
@ DEVICE_ID_KONA5_OE1
See KONA 5.
Definition: ntv2enums.h:53
NTV2_INPUTSOURCE_HDMI4
@ NTV2_INPUTSOURCE_HDMI4
Identifies the 4th HDMI video input.
Definition: ntv2enums.h:1227
NTV2_DEVICEKIND_EXTERNAL
@ NTV2_DEVICEKIND_EXTERNAL
Specifies external devices (e.g. Thunderbolt).
Definition: ntv2enums.h:1336
NTV2AudioLoopBack
NTV2AudioLoopBack
This enum value determines/states if an audio output embedder will embed silence (zeroes) or de-embed...
Definition: ntv2enums.h:1969
CCIR601_10BIT_BLACK
#define CCIR601_10BIT_BLACK
Definition: videoutilities.h:18
M31_FILE_1920X1080_420_8_2997p
@ M31_FILE_1920X1080_420_8_2997p
Definition: ntv2m31enums.h:50
GetVaricamRepeatCount
ULWord GetVaricamRepeatCount(const NTV2FrameRate inSequenceRate, const NTV2FrameRate inPlayRate, const ULWord inCadenceFrame)
Definition: ntv2utils.cpp:3215
NTV2BitfileType
NTV2BitfileType
Definition: ntv2enums.h:3288
NTV2CROSSPOINT_INPUT3
@ NTV2CROSSPOINT_INPUT3
Definition: ntv2enums.h:1655
NTV2TimecodeIndexToChannel
NTV2Channel NTV2TimecodeIndexToChannel(const NTV2TCIndex inTCIndex)
Converts the given NTV2TCIndex value into the appropriate NTV2Channel value.
Definition: ntv2utils.cpp:5037
DEVICE_ID_CORVID88
@ DEVICE_ID_CORVID88
See Corvid 88.
Definition: ntv2enums.h:31
M31_FILE_2048X1080_420_8_50p
@ M31_FILE_2048X1080_420_8_50p
Definition: ntv2m31enums.h:76
NTV2_NUM_INPUTSOURCES
@ NTV2_NUM_INPUTSOURCES
Definition: ntv2enums.h:1237
NTV2DeviceCanDoPlayback
bool NTV2DeviceCanDoPlayback(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:4438
NTV2_FG_1280x720
@ NTV2_FG_1280x720
1280x720, for 720p, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:340
M31VideoPreset
M31VideoPreset
Definition: ntv2m31enums.h:12
M31_FILE_3840X2160_422_8_50p
@ M31_FILE_3840X2160_422_8_50p
Definition: ntv2m31enums.h:107
RP188_STRUCT
Definition: ntv2publicinterface.h:4052
NTV2_FORMAT_1080p_2K_2500
@ NTV2_FORMAT_1080p_2K_2500
Definition: ntv2enums.h:536
NTV2_WgtCSC5
@ NTV2_WgtCSC5
Definition: ntv2enums.h:2905
NTV2WidgetType_HDMIOutV4
@ NTV2WidgetType_HDMIOutV4
Definition: ntv2enums.h:3002
NTV2_Xpt425Mux1AYUV
@ NTV2_Xpt425Mux1AYUV
Definition: ntv2enums.h:2589
NTV2IpErrInvalidMBResponse
@ NTV2IpErrInvalidMBResponse
Definition: ntv2enums.h:4249
GetVANCModeForGeometry
NTV2VANCMode GetVANCModeForGeometry(const NTV2FrameGeometry inFG)
Definition: ntv2utils.cpp:3955
NTV2_1080psf_2400to1080i_3000
@ NTV2_1080psf_2400to1080i_3000
Definition: ntv2enums.h:3662
NTV2_Xpt425Mux3BInput
@ NTV2_Xpt425Mux3BInput
Definition: ntv2enums.h:2802
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
NTV2_Xpt425Mux1BYUV
@ NTV2_Xpt425Mux1BYUV
Definition: ntv2enums.h:2591
M31_FILE_2048X1080_420_8_2398p
@ M31_FILE_2048X1080_420_8_2398p
Definition: ntv2m31enums.h:71
NTV2IpErrWriteSOMToMB
@ NTV2IpErrWriteSOMToMB
Definition: ntv2enums.h:4240
ntv2version.h
Defines for the NTV2 SDK version number, used by ajantv2/includes/ntv2enums.h. See the ajantv2/includ...
NTV2_CONVERSIONMODE_UNKNOWN
@ NTV2_CONVERSIONMODE_UNKNOWN
Definition: ntv2enums.h:3668
NTV2_FORMAT_END_4K_DEF_FORMATS2
@ NTV2_FORMAT_END_4K_DEF_FORMATS2
Definition: ntv2enums.h:653
convertHDRFloatToRegisterValues
bool convertHDRFloatToRegisterValues(const HDRFloatValues &inFloatValues, HDRRegValues &outRegisterValues)
Definition: ntv2utils.cpp:7816
NTV2_FORMAT_1080p_6000_A
@ NTV2_FORMAT_1080p_6000_A
Definition: ntv2enums.h:535
NTV2DeviceIsExternalToHost
bool NTV2DeviceIsExternalToHost(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:7903
NTV2_FORMAT_3840x2160psf_2398
@ NTV2_FORMAT_3840x2160psf_2398
Definition: ntv2enums.h:604
NTV2_INPUTSOURCE_HDMI1
@ NTV2_INPUTSOURCE_HDMI1
Identifies the 1st HDMI video input.
Definition: ntv2enums.h:1224
NTV2_FORMAT_FIRST_UHD_TSI_DEF_FORMAT
@ NTV2_FORMAT_FIRST_UHD_TSI_DEF_FORMAT
Definition: ntv2enums.h:505
GetTCIndexesForSDIConnector
NTV2TCIndexes GetTCIndexesForSDIConnector(const NTV2Channel inSDI)
Definition: ntv2utils.cpp:5028
NTV2_TCINDEX_SDI4_LTC
@ NTV2_TCINDEX_SDI4_LTC
SDI 4 embedded ATC LTC.
Definition: ntv2enums.h:3881
NTV2_Xpt4KDownConverterOutRGB
@ NTV2_Xpt4KDownConverterOutRGB
Definition: ntv2enums.h:2551
NTV2_BITFILE_KONALHE_PLUS
@ NTV2_BITFILE_KONALHE_PLUS
Definition: ntv2enums.h:3299
MaskYCbCrLine
void MaskYCbCrLine(UWord *ycbcrLine, UWord signalMask, ULWord numPixels)
Definition: ntv2utils.cpp:691
NTV2TCIndexToString
string NTV2TCIndexToString(const NTV2TCIndex inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6413
NTV2_STANDARD_TASKS
@ NTV2_STANDARD_TASKS
1: Standard/Retail: Device is completely controlled by AJA ControlPanel, service/daemon,...
Definition: ntv2publicinterface.h:4260
NTV2_TCINDEX_SDI3_2
@ NTV2_TCINDEX_SDI3_2
SDI 3 embedded VITC 2.
Definition: ntv2enums.h:3888
NTV2_FRAMERATE_11988
@ NTV2_FRAMERATE_11988
Fractional rate of 120,000 frames per 1,001 seconds.
Definition: ntv2enums.h:411
NTV2_FORMAT_1080p_2K_2398
@ NTV2_FORMAT_1080p_2K_2398
Definition: ntv2enums.h:523
AJA_NTV2_SDK_VERSION_MAJOR
#define AJA_NTV2_SDK_VERSION_MAJOR
The SDK major version number, an unsigned decimal integer.
Definition: ntv2version.h:13
ConvertLineTo8BitYCbCr
void ConvertLineTo8BitYCbCr(const uint16_t *ycbcr10BitBuffer, uint8_t *ycbcr8BitBuffer, const uint32_t numPixels)
Definition: ntv2utils.cpp:212
HDRRegValues::maxMasteringLuminance
uint16_t maxMasteringLuminance
Definition: ntv2publicinterface.h:9841
NTV2_Wgt12GSDIIn3
@ NTV2_Wgt12GSDIIn3
Definition: ntv2enums.h:2944
NTV2_WgtDualLinkV2Out5
@ NTV2_WgtDualLinkV2Out5
Definition: ntv2enums.h:2907
NTV2_FORMAT_3840x2160p_2997
@ NTV2_FORMAT_3840x2160p_2997
Definition: ntv2enums.h:610
NTV2_FORMAT_4096x2160p_4800
@ NTV2_FORMAT_4096x2160p_4800
Definition: ntv2enums.h:632
M31_FILE_720X480_420_8_60i
@ M31_FILE_720X480_420_8_60i
Definition: ntv2m31enums.h:17
NTV2_XptSDIIn8DS2
@ NTV2_XptSDIIn8DS2
Definition: ntv2enums.h:2559
NTV2StringList
std::vector< std::string > NTV2StringList
Definition: ntv2utils.h:1134
GetTotalAudioSamplesFromFrameNbrZeroUpToFrameNbr
LWord64 GetTotalAudioSamplesFromFrameNbrZeroUpToFrameNbr(const NTV2FrameRate inFrameRate, const NTV2AudioRate inAudioRate, const ULWord inFrameNumNonInclusive)
Definition: ntv2utils.cpp:3046
NTV2_MAX_NUM_Framesizes
@ NTV2_MAX_NUM_Framesizes
Definition: ntv2enums.h:2075
Make10BitBlackLine
void Make10BitBlackLine(UWord *pOutLineData, const ULWord inNumPixels)
Writes a line of unpacked, legal SMPTE 10-bit Y/C black values into the given buffer.
Definition: ntv2utils.cpp:766
NTV2_FORMAT_1080p_2398
@ NTV2_FORMAT_1080p_2398
Definition: ntv2enums.h:521
NTV2_AncRgn_MonField2
@ NTV2_AncRgn_MonField2
Identifies the "monitor" or "auxiliary" Field 2 ancillary data region.
Definition: ntv2enums.h:4143
NTV2_XptLUT4Input
@ NTV2_XptLUT4Input
Definition: ntv2enums.h:2723
NTV2VANCMode
NTV2VANCMode
These enum values identify the available VANC modes.
Definition: ntv2enums.h:3711
NTV2_XptBlack
@ NTV2_XptBlack
Definition: ntv2enums.h:2470
NTV2_Wgt3GSDIIn7
@ NTV2_Wgt3GSDIIn7
Definition: ntv2enums.h:2911
NTV2_INVALID_HDMI_PROTOCOL
@ NTV2_INVALID_HDMI_PROTOCOL
Definition: ntv2enums.h:3540
IsNTV2CrosspointInput
bool IsNTV2CrosspointInput(const NTV2Crosspoint inChannel)
Definition: ntv2utils.cpp:4907
NTV2_XptMultiLinkOut2DS2
@ NTV2_XptMultiLinkOut2DS2
New in SDK 16.0.
Definition: ntv2enums.h:2504
M31_FILE_720X480_420_8_5994p
@ M31_FILE_720X480_420_8_5994p
Definition: ntv2m31enums.h:16
NTV2_BITFILE_IO4K_MAIN
@ NTV2_BITFILE_IO4K_MAIN
Definition: ntv2enums.h:3304
NTV2_STANDARD_4096i
@ NTV2_STANDARD_4096i
Identifies 4K psf.
Definition: ntv2enums.h:170
AJALock
Definition: lock.h:30
GetInstalledMacDriverVersion
bool GetInstalledMacDriverVersion(UWord &outMaj, UWord &outMin, UWord &outPt, UWord &outBld, UWord &outType)
Definition: ntv2utils.cpp:8157
NTV2_XptTestPatternYUV
@ NTV2_XptTestPatternYUV
Definition: ntv2enums.h:2506
NTV2_INVALID_HDMI_RANGE
@ NTV2_INVALID_HDMI_RANGE
Definition: ntv2enums.h:3554
NTV2_INPUT_CROSSPOINT_INVALID
@ NTV2_INPUT_CROSSPOINT_INVALID
Definition: ntv2enums.h:2822
NTV2_FORMAT_3840x2160psf_2400
@ NTV2_FORMAT_3840x2160psf_2400
Definition: ntv2enums.h:605
CopyRaster4BytesPerPixel
static bool CopyRaster4BytesPerPixel(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Definition: ntv2utils.cpp:1475
NTV2_IsoPillarBox
@ NTV2_IsoPillarBox
Definition: ntv2enums.h:2198
NTV2_XptHDMIIn4
@ NTV2_XptHDMIIn4
Definition: ntv2enums.h:2631
NTV2OutputCrosspointIDToString
string NTV2OutputCrosspointIDToString(const NTV2OutputCrosspointID inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:5989
NTV2_WgtLUT2
@ NTV2_WgtLUT2
Definition: ntv2enums.h:2851
NTV2_FORMAT_1080psf_2K_2400
@ NTV2_FORMAT_1080psf_2K_2400
Definition: ntv2enums.h:526
NTV2_IS_PSF_VIDEO_FORMAT
#define NTV2_IS_PSF_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:975
M31_VIF_1280X720_422_10_50p
@ M31_VIF_1280X720_422_10_50p
Definition: ntv2m31enums.h:144
NTV2_BreakoutCableXLR
@ NTV2_BreakoutCableXLR
Identifies the AES/EBU audio breakout cable that has XLR connectors.
Definition: ntv2enums.h:3026
NTV2_WgtDualLinkV2Out6
@ NTV2_WgtDualLinkV2Out6
Definition: ntv2enums.h:2921
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_6
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_6
Definition: ntv2enums.h:1915
Make8BitWhiteLine
void Make8BitWhiteLine(UByte *lineData, ULWord numPixels, NTV2FrameBufferFormat fbFormat)
Definition: ntv2utils.cpp:850
NTV2_XptFrameSync2Input
@ NTV2_XptFrameSync2Input
Definition: ntv2enums.h:2819
NTV2_XptFrameBuffer4DS2Input
@ NTV2_XptFrameBuffer4DS2Input
Definition: ntv2enums.h:2695
M31_FILE_720X576_422_10_50p
@ M31_FILE_720X576_422_10_50p
Definition: ntv2m31enums.h:27
NTV2_XptCSC1KeyYUV
@ NTV2_XptCSC1KeyYUV
Definition: ntv2enums.h:2487
AJA_NULL
#define AJA_NULL
Definition: ajatypes.h:190
NTV2CrosspointToNTV2Channel
NTV2Channel NTV2CrosspointToNTV2Channel(const NTV2Crosspoint inCrosspointChannel)
Definition: ntv2utils.cpp:4766
ConvertLinetoRGB
void ConvertLinetoRGB(UByte *ycbcrBuffer, RGBAlphaPixel *rgbaBuffer, ULWord numPixels, bool fUseSDMatrix, bool fUseSMPTERange=false)
Definition: ntv2transcode.cpp:280
NTV2ChannelToOutputDestination
NTV2OutputDestination NTV2ChannelToOutputDestination(const NTV2Channel inChannel)
Converts the given NTV2Channel value into its ordinary equivalent NTV2OutputDestination.
Definition: ntv2utils.cpp:5225
NTV2_IS_VALID_CHANNEL
#define NTV2_IS_VALID_CHANNEL(__x__)
Definition: ntv2enums.h:1319
NTV2_DISABLE_TASKS
@ NTV2_DISABLE_TASKS
0: Disabled: Device is completely configured by controlling application(s) – no driver involvement.
Definition: ntv2publicinterface.h:4259
M31_FILE_1920X1080_420_8_24p
@ M31_FILE_1920X1080_420_8_24p
Definition: ntv2m31enums.h:48
M31_FILE_1920X1080_420_8_50p
@ M31_FILE_1920X1080_420_8_50p
Definition: ntv2m31enums.h:53
M31_FILE_3840X2160_422_10_24p
@ M31_FILE_3840X2160_422_10_24p
Definition: ntv2m31enums.h:112
NTV2_XptMixer3VidYUV
@ NTV2_XptMixer3VidYUV
Definition: ntv2enums.h:2568
NTV2_XptSDIOut5Input
@ NTV2_XptSDIOut5Input
Definition: ntv2enums.h:2740
NTV2_VANCMODE_INVALID
@ NTV2_VANCMODE_INVALID
This identifies the invalid (unspecified, uninitialized) VANC mode.
Definition: ntv2enums.h:3716
IsTransportCompatibleFormat
bool IsTransportCompatibleFormat(const NTV2VideoFormat inFormat1, const NTV2VideoFormat inFormat2)
Definition: ntv2utils.cpp:5250
NTV2_FORMAT_3840x2160p_5994
@ NTV2_FORMAT_3840x2160p_5994
Definition: ntv2enums.h:615
NTV2_XptMixer2VidRGB
@ NTV2_XptMixer2VidRGB
Definition: ntv2enums.h:2511
NTV2_FORMAT_4x4096x2160p_2400
@ NTV2_FORMAT_4x4096x2160p_2400
Definition: ntv2enums.h:669
NTV2_WgtDualLinkV2Out1
@ NTV2_WgtDualLinkV2Out1
Definition: ntv2enums.h:2873
M31_VIF_1920X1080_422_10_5994p
@ M31_VIF_1920X1080_422_10_5994p
Definition: ntv2m31enums.h:161
NTV2_XptFrameSync2YUV
@ NTV2_XptFrameSync2YUV
Definition: ntv2enums.h:2483
NTV2_FBF_8BIT_YCBCR_YUY2
@ NTV2_FBF_8BIT_YCBCR_YUY2
See Alternate 8-Bit YCbCr ('YUY2').
Definition: ntv2enums.h:215
NTV2_XptSDIIn2
@ NTV2_XptSDIIn2
Definition: ntv2enums.h:2472
NTV2_XptHDMIIn2RGB
@ NTV2_XptHDMIIn2RGB
Definition: ntv2enums.h:2622
M31_FILE_720X576_420_8_50i
@ M31_FILE_720X576_420_8_50i
Definition: ntv2m31enums.h:24
NTV2FormatDescriptor::firstActiveLine
ULWord firstActiveLine
First active line of video (0 if NTV2_VANCMODE_OFF)
Definition: ntv2formatdescriptor.h:351
NTV2WidgetType_SDIOut3G
@ NTV2WidgetType_SDIOut3G
Definition: ntv2enums.h:2977
CCIR601_8BIT_BLACK
#define CCIR601_8BIT_BLACK
Definition: videoutilities.h:22
NTV2_XptDuallinkIn6
@ NTV2_XptDuallinkIn6
Definition: ntv2enums.h:2644
NTV2_BITFILE_SOJI_OE2_MAIN
@ NTV2_BITFILE_SOJI_OE2_MAIN
Definition: ntv2enums.h:3348
NTV2Buffer::GetHostAddress
void * GetHostAddress(const ULWord inByteOffset, const bool inFromEnd=false) const
Definition: ntv2publicinterface.cpp:1610
NTV2IpErrSoftwareMismatch
@ NTV2IpErrSoftwareMismatch
Definition: ntv2enums.h:4234
NTV2IpErrNoResponseFromMB
@ NTV2IpErrNoResponseFromMB
Definition: ntv2enums.h:4247
NTV2_INPUTSOURCE_HDMI2
@ NTV2_INPUTSOURCE_HDMI2
Identifies the 2nd HDMI video input.
Definition: ntv2enums.h:1225
NTV2_FORMAT_4x4096x2160p_6000
@ NTV2_FORMAT_4x4096x2160p_6000
Definition: ntv2enums.h:677
NTV2OutputCrosspointID
NTV2OutputCrosspointID
Identifies a widget output, a signal source, that potentially can drive another widget's input (ident...
Definition: ntv2enums.h:2467
NTV2_FORMAT_3840x2160p_2398
@ NTV2_FORMAT_3840x2160p_2398
Definition: ntv2enums.h:607
NTV2Buffer::GetHostPointer
void * GetHostPointer(void) const
Definition: ntv2publicinterface.h:6023
NTV2_FORMAT_4x2048x1080p_5994_B
@ NTV2_FORMAT_4x2048x1080p_5994_B
Definition: ntv2enums.h:649
NTV2_FG_1920x1112
@ NTV2_FG_1920x1112
1920x1080, for 1080i and 1080p, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:347
NTV2_INVALID_HDMIBitDepth
@ NTV2_INVALID_HDMIBitDepth
Definition: ntv2enums.h:3612
NTV2InputSource
NTV2InputSource
Identifies a specific video input source.
Definition: ntv2enums.h:1221
AJAAutoLock
Definition: lock.h:91
DEVICE_ID_IOIP_2110
@ DEVICE_ID_IOIP_2110
See Io IP.
Definition: ntv2enums.h:39
NTV2_WgtDualLinkOut2
@ NTV2_WgtDualLinkOut2
Definition: ntv2enums.h:2872
NTV2_1080p_2398to1080i_5994
@ NTV2_1080p_2398to1080i_5994
Definition: ntv2enums.h:3664
DEVICE_ID_KONA5_3DLUT
@ DEVICE_ID_KONA5_3DLUT
See KONA 5.
Definition: ntv2enums.h:52
NTV2_XptDualLinkIn4Input
@ NTV2_XptDualLinkIn4Input
Definition: ntv2enums.h:2754
NTV2_XptCSC4KeyYUV
@ NTV2_XptCSC4KeyYUV
Definition: ntv2enums.h:2539
NTV2IpErrExceedsFifo
@ NTV2IpErrExceedsFifo
Definition: ntv2enums.h:4246
NTV2_CCMODE_RGB
@ NTV2_CCMODE_RGB
Definition: ntv2enums.h:2023
NTV2GetFirmwareFolderPath
string NTV2GetFirmwareFolderPath(void)
Definition: ntv2utils.cpp:7530
NTV2ChannelToAudioSystem
NTV2AudioSystem NTV2ChannelToAudioSystem(const NTV2Channel inChannel)
Converts the given NTV2Channel value into its equivalent NTV2AudioSystem.
Definition: ntv2utils.cpp:4927
NTV2ACFrameRange::toString
std::string toString(const bool inNormalized=false) const
Definition: ntv2utils.cpp:4205
ntv2formatdescriptor.h
Declares the NTV2FormatDescriptor class.
NTV2_DEVICEKIND_SDI
@ NTV2_DEVICEKIND_SDI
Specifies devices with SDI connectors.
Definition: ntv2enums.h:1331
NTV2_BITFILE_KONA5_OE5_MAIN
@ NTV2_BITFILE_KONA5_OE5_MAIN
Definition: ntv2enums.h:3337
NTV2_FORMAT_UNKNOWN
@ NTV2_FORMAT_UNKNOWN
Definition: ntv2enums.h:498
NTV2_MAX_NUM_IsoConvertModes
@ NTV2_MAX_NUM_IsoConvertModes
Definition: ntv2enums.h:2202
ConvertARGBToRGB
void ConvertARGBToRGB(UByte *rgbaLineBuffer, UByte *rgbLineBuffer, ULWord numPixels)
Definition: ntv2transcode.cpp:661
NTV2WidgetType_SDIOut12G
@ NTV2WidgetType_SDIOut12G
Definition: ntv2enums.h:3006
NTV2_XptSDIOut8Input
@ NTV2_XptSDIOut8Input
Definition: ntv2enums.h:2746
NTV2_WgtFrameBuffer8
@ NTV2_WgtFrameBuffer8
Definition: ntv2enums.h:2935
NTV2_XptLUT5Input
@ NTV2_XptLUT5Input
Definition: ntv2enums.h:2724
GetNTV2CrosspointChannelForIndex
NTV2Crosspoint GetNTV2CrosspointChannelForIndex(const ULWord index)
Definition: ntv2utils.cpp:4794
NTV2_FORMAT_END_4K_TSI_DEF_FORMATS
@ NTV2_FORMAT_END_4K_TSI_DEF_FORMATS
Definition: ntv2enums.h:643
NTV2_IOKINDS_NONE
@ NTV2_IOKINDS_NONE
Doesn't specify any kind of input/output.
Definition: ntv2enums.h:1254
GetConversionMode
NTV2ConversionMode GetConversionMode(const NTV2VideoFormat inFormat, const NTV2VideoFormat outFormat)
Definition: ntv2utils.cpp:5507
NTV2_IS_QUAD_QUAD_FORMAT
#define NTV2_IS_QUAD_QUAD_FORMAT(__f__)
Definition: ntv2enums.h:778
NTV2OutputCrosspointIDsConstIter
NTV2OutputCrosspointIDs::const_iterator NTV2OutputCrosspointIDsConstIter
A convenient const iterator for NTV2OutputCrosspointIDs.
Definition: ntv2utils.h:1056
NTV2_Xpt4KDownConverterOut
@ NTV2_Xpt4KDownConverterOut
Definition: ntv2enums.h:2550
HDRRegValues::greenPrimaryY
uint16_t greenPrimaryY
Definition: ntv2publicinterface.h:9834
NTV2_AUDIO_AES
@ NTV2_AUDIO_AES
Obtain audio samples from the device AES inputs, if available.
Definition: ntv2enums.h:1949
NTV2_FORMAT_4x1920x1080psf_2398
@ NTV2_FORMAT_4x1920x1080psf_2398
Definition: ntv2enums.h:558
NTV2_FG_FIRST
@ NTV2_FG_FIRST
The ordinally first geometry (New in SDK 16.0)
Definition: ntv2enums.h:339
YUVComponentsTo10BitYUVPackedBuffer
bool YUVComponentsTo10BitYUVPackedBuffer(const vector< uint16_t > &inYCbCrLine, NTV2Buffer &inFrameBuffer, const NTV2FormatDescriptor &inDescriptor, const UWord inLineOffset)
Definition: ntv2utils.cpp:566
NTV2_WgtHDMIOut1
@ NTV2_WgtHDMIOut1
Definition: ntv2enums.h:2879
NTV2_WgtWaterMarker2
@ NTV2_WgtWaterMarker2
Definition: ntv2enums.h:2886
NTV2OutputDestinationToString
string NTV2OutputDestinationToString(const NTV2OutputDestination inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:7238
M31_FILE_4096X2160_420_10_60p
@ M31_FILE_4096X2160_420_10_60p
Definition: ntv2m31enums.h:121
NTV2_STANDARD_2K
@ NTV2_STANDARD_2K
Definition: ntv2enums.h:160
GetNormalizedFrameGeometry
NTV2FrameGeometry GetNormalizedFrameGeometry(const NTV2FrameGeometry inFrameGeometry)
Definition: ntv2utils.cpp:3755
NTV2_AUDIO_HDMI
@ NTV2_AUDIO_HDMI
Obtain audio samples from the device HDMI input, if available.
Definition: ntv2enums.h:1951
IsYCbCrFormat
bool IsYCbCrFormat(const NTV2FrameBufferFormat format)
Definition: ntv2utils.cpp:5448
NTV2_FORMAT_1080p_2K_6000_A
@ NTV2_FORMAT_1080p_2K_6000_A
Definition: ntv2enums.h:590
NTV2_XptFrameBuffer8RGB
@ NTV2_XptFrameBuffer8RGB
Definition: ntv2enums.h:2567
NTV2OutputDestinationToChannel
NTV2Channel NTV2OutputDestinationToChannel(const NTV2OutputDestination inOutputDest)
Converts a given NTV2OutputDestination to its equivalent NTV2Channel value.
Definition: ntv2utils.cpp:5213
NTV2_XptCSC8KeyInput
@ NTV2_XptCSC8KeyInput
Definition: ntv2enums.h:2719
NTV2_XptMixer1FGVidInput
@ NTV2_XptMixer1FGVidInput
Definition: ntv2enums.h:2775
m31Presets
static const char * m31Presets[M31_NUMVIDEOPRESETS]
Definition: ntv2utils.cpp:4236
NTV2_FG_720x598
@ NTV2_FG_720x598
720x576, for PAL 625i, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:346
NTV2AudioRate
NTV2AudioRate
Definition: ntv2enums.h:1873
NTV2_BITFILE_KONAIP_2022
@ NTV2_BITFILE_KONAIP_2022
Definition: ntv2enums.h:3311
NTV2_BITFILE_IO4KUFC_MAIN
@ NTV2_BITFILE_IO4KUFC_MAIN
Definition: ntv2enums.h:3305
AJA_NTV2_SDK_BUILD_NUMBER
#define AJA_NTV2_SDK_BUILD_NUMBER
The SDK build number, an unsigned decimal integer.
Definition: ntv2version.h:16
NTV2_FBF_10BIT_YCBCR
@ NTV2_FBF_10BIT_YCBCR
See 10-Bit YCbCr Format.
Definition: ntv2enums.h:210
NTV2_TCINDEX_SDI1_2
@ NTV2_TCINDEX_SDI1_2
SDI 1 embedded VITC 2.
Definition: ntv2enums.h:3886
NTV2_Wgt3GSDIOut4
@ NTV2_Wgt3GSDIOut4
Definition: ntv2enums.h:2867
PackRGB10BitFor10BitDPX
void PackRGB10BitFor10BitDPX(RGBAlpha10BitPixel *pBuffer, const ULWord inNumPixels, const bool bigEndian=true)
Definition: ntv2transcode.cpp:760
NTV2_XptFrameBuffer8Input
@ NTV2_XptFrameBuffer8Input
Definition: ntv2enums.h:2702
NTV2_1080i_2398to720p_2398
@ NTV2_1080i_2398to720p_2398
Definition: ntv2enums.h:3650
M31_VIF_720X480_422_10_60i
@ M31_VIF_720X480_422_10_60i
Definition: ntv2m31enums.h:133
NTV2_XptHDMIIn2Q3
@ NTV2_XptHDMIIn2Q3
Definition: ntv2enums.h:2625
RP188_STRUCT::DBB
ULWord DBB
Definition: ntv2publicinterface.h:4053
NTV2_FBF_PRORES_DVCPRO
@ NTV2_FBF_PRORES_DVCPRO
Apple ProRes DVC Pro.
Definition: ntv2enums.h:229
NTV2_XptMixer4FGKeyInput
@ NTV2_XptMixer4FGKeyInput
Definition: ntv2enums.h:2786
Fill4k8BitYCbCrVideoFrame
void Fill4k8BitYCbCrVideoFrame(PULWord _baseVideoAddress, NTV2FrameBufferFormat frameBufferFormat, YCbCrPixel color, bool vancEnabled, bool b4k, bool wideVANC)
Definition: ntv2utils.cpp:917
M31_FILE_1280X720_422_10_50p
@ M31_FILE_1280X720_422_10_50p
Definition: ntv2m31enums.h:43
NTV2_XptStereoRightInput
@ NTV2_XptStereoRightInput
Definition: ntv2enums.h:2809
NTV2_VANCMODE_TALLER
@ NTV2_VANCMODE_TALLER
This identifies the mode in which there are some + extra VANC lines in the frame buffer.
Definition: ntv2enums.h:3715
Get4xSizedStandard
NTV2Standard Get4xSizedStandard(const NTV2Standard inStandard, const bool bIs4k)
Definition: ntv2utils.cpp:2259
M31_FILE_1280X720_422_10_30p
@ M31_FILE_1280X720_422_10_30p
Definition: ntv2m31enums.h:42
NTV2IpErrInvalidBitdepth
@ NTV2IpErrInvalidBitdepth
Definition: ntv2enums.h:4229
NTV2_FRAMESIZE_2MB
@ NTV2_FRAMESIZE_2MB
Definition: ntv2enums.h:2059
NTV2SmpteLineNumber
Used to describe Start of Active Video (SAV) location and field dominance for a given NTV2Standard....
Definition: ntv2utils.h:869
NTV2DeviceHasSDIRelays
bool NTV2DeviceHasSDIRelays(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:7367
NTV2_FORMAT_4x1920x1080p_5994_B
@ NTV2_FORMAT_4x1920x1080p_5994_B
Definition: ntv2enums.h:646
NTV2_TCINDEX_SDI3
@ NTV2_TCINDEX_SDI3
SDI 3 embedded VITC.
Definition: ntv2enums.h:3870
NTV2_DEVICEKIND_SFP
@ NTV2_DEVICEKIND_SFP
Specifies devices with SFP connectors.
Definition: ntv2enums.h:1334
NTV2_XptFrameSync1Input
@ NTV2_XptFrameSync1Input
Definition: ntv2enums.h:2820
NTV2RegisterNumber
NTV2RegisterNumber
Definition: ntv2publicinterface.h:71
NTV2_NUMAUDIO_CHANNELS
#define NTV2_NUMAUDIO_CHANNELS
Definition: ntv2audiodefines.h:11
NTV2_HDMIProtocolHDMI
@ NTV2_HDMIProtocolHDMI
HDMI protocol.
Definition: ntv2enums.h:3537
LWord64
int64_t LWord64
Definition: ajatypes.h:248
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_XptFrameSync2RGB
@ NTV2_XptFrameSync2RGB
Definition: ntv2enums.h:2484
UnPack10BitDPXtoRGBAlpha10BitPixel
void UnPack10BitDPXtoRGBAlpha10BitPixel(RGBAlpha10BitPixel *rgba10BitBuffer, const ULWord *DPXLinebuffer, ULWord numPixels, bool bigEndian)
Definition: ntv2utils.cpp:648
M31_FILE_3840X2160_422_8_30p
@ M31_FILE_3840X2160_422_8_30p
Definition: ntv2m31enums.h:106
GetIndexForNTV2InputSource
ULWord GetIndexForNTV2InputSource(const NTV2InputSource inValue)
Definition: ntv2utils.cpp:5306
NTV2_XptHDMIIn1Q4
@ NTV2_XptHDMIIn1Q4
Definition: ntv2enums.h:2548
GetNTV2FrameGeometryFromVideoFormat
NTV2FrameGeometry GetNTV2FrameGeometryFromVideoFormat(const NTV2VideoFormat inVideoFormat)
Definition: ntv2utils.cpp:2545
GetGeometryFromFrameDimensions
NTV2FrameGeometry GetGeometryFromFrameDimensions(const NTV2FrameDimensions &inFD)
Definition: ntv2utils.cpp:3856
RP188_STRUCT::Low
ULWord Low
Definition: ntv2publicinterface.h:4054
NTV2_1080psf_2500to1080i_2500
@ NTV2_1080psf_2500to1080i_2500
Definition: ntv2enums.h:3663
NTV2_XptFrameBuffer6RGB
@ NTV2_XptFrameBuffer6RGB
Definition: ntv2enums.h:2563
StackQuadrants
void StackQuadrants(uint8_t *pSrc, uint32_t srcWidth, uint32_t srcHeight, uint32_t srcRowBytes, uint8_t *pDst)
Definition: ntv2utils.cpp:413
NTV2_XptDualLinkIn6DSInput
@ NTV2_XptDualLinkIn6DSInput
Definition: ntv2enums.h:2759
NTV2_XptLUT3Out
@ NTV2_XptLUT3Out
Definition: ntv2enums.h:2638
M31_FILE_1920X1080_422_10_50p
@ M31_FILE_1920X1080_422_10_50p
Definition: ntv2m31enums.h:65
NTV2_XptFrameBuffer2Input
@ NTV2_XptFrameBuffer2Input
Definition: ntv2enums.h:2690
RGBAlpha16BitPixel
Definition: ntv2videodefines.h:152
NTV2VideoLimiting
NTV2VideoLimiting
These enum values identify the available SDI video output limiting modes.
Definition: ntv2enums.h:3692
NTV2_AUDIOSYSTEM_3
@ NTV2_AUDIOSYSTEM_3
This identifies the 3rd Audio System.
Definition: ntv2enums.h:3813
NTV2CROSSPOINT_CHANNEL3
@ NTV2CROSSPOINT_CHANNEL3
Definition: ntv2enums.h:1653
NTV2_SIGNALMASK_Cb
@ NTV2_SIGNALMASK_Cb
Output Cb if set, elso Output Cb to 0x200.
Definition: ntv2enums.h:1636
NTV2_FORMAT_4x1920x1080psf_2500
@ NTV2_FORMAT_4x1920x1080psf_2500
Definition: ntv2enums.h:560
NTV2_FORMAT_END_2K_DEF_FORMATS
@ NTV2_FORMAT_END_2K_DEF_FORMATS
Definition: ntv2enums.h:556
NTV2_1080i_2500to720p_5000
@ NTV2_1080i_2500to720p_5000
Definition: ntv2enums.h:3647
GetNTV2ChannelForIndex
NTV2Channel GetNTV2ChannelForIndex(const ULWord inIndex)
Definition: ntv2utils.cpp:4755
eInput1
@ eInput1
Definition: ntv2publicinterface.h:3715
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_7
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_7
Definition: ntv2enums.h:1916
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
NTV2_XptDualLinkIn8DSInput
@ NTV2_XptDualLinkIn8DSInput
Definition: ntv2enums.h:2763
NTV2_XptFrameBuffer4RGB
@ NTV2_XptFrameBuffer4RGB
Definition: ntv2enums.h:2518
NTV2DeviceCanDoIP
bool NTV2DeviceCanDoIP(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:3526
eDMA3
@ eDMA3
Definition: ntv2publicinterface.h:3722
Get4xSizedGeometry
NTV2FrameGeometry Get4xSizedGeometry(const NTV2FrameGeometry inGeometry)
Definition: ntv2utils.cpp:2230
common.h
Private include file for all ajabase sources.
DEVICE_ID_CORVID24
@ DEVICE_ID_CORVID24
See Corvid 24.
Definition: ntv2enums.h:24
NTV2_FORMAT_4x3840x2160p_2400
@ NTV2_FORMAT_4x3840x2160p_2400
Definition: ntv2enums.h:656
NTV2_XptMixer1BGVidInput
@ NTV2_XptMixer1BGVidInput
Definition: ntv2enums.h:2773
NTV2_VIDEOLIMITING_INVALID
@ NTV2_VIDEOLIMITING_INVALID
Definition: ntv2enums.h:3698
UByte
uint8_t UByte
Definition: ajatypes.h:241
NTV2_XptDuallinkIn8
@ NTV2_XptDuallinkIn8
Definition: ntv2enums.h:2646
NTV2FormatDescriptor::GetWriteableRowAddress
void * GetWriteableRowAddress(void *pInStartAddress, const ULWord inRowIndex0, const UWord inPlaneIndex0=0) const
Definition: ntv2formatdescriptor.cpp:1018
NTV2_STANDARD_525
@ NTV2_STANDARD_525
Identifies SMPTE SD 525i.
Definition: ntv2enums.h:157
NTV2_FORMAT_4x4096x2160p_5000_B
@ NTV2_FORMAT_4x4096x2160p_5000_B
Definition: ntv2enums.h:680
M31_VIF_720X576_420_8_50p
@ M31_VIF_720X576_420_8_50p
Definition: ntv2m31enums.h:137
SetRasterLinesBlack10BitYCbCr
static bool SetRasterLinesBlack10BitYCbCr(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines)
Definition: ntv2utils.cpp:1021
NTV2_UpConvertPillarbox4x3
@ NTV2_UpConvertPillarbox4x3
Definition: ntv2enums.h:2163
NTV2_FBF_10BIT_RAW_YCBCR
@ NTV2_FBF_10BIT_RAW_YCBCR
See 10-Bit Raw YCbCr (CION).
Definition: ntv2enums.h:236
DEVICE_ID_KONA1
@ DEVICE_ID_KONA1
See KONA 1.
Definition: ntv2enums.h:43
IsVideoFormatJ2KSupported
bool IsVideoFormatJ2KSupported(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5501
NTV2_FRAMESIZE_26MB
@ NTV2_FRAMESIZE_26MB
Definition: ntv2enums.h:2071
NTV2ChannelToOutputInterrupt
INTERRUPT_ENUMS NTV2ChannelToOutputInterrupt(const NTV2Channel inChannel)
Converts the given NTV2Channel value into the equivalent output INTERRUPT_ENUMS value.
Definition: ntv2utils.cpp:5005
NTV2_XptMultiLinkOut2InputDS2
@ NTV2_XptMultiLinkOut2InputDS2
New in SDK 16.0.
Definition: ntv2enums.h:2731
NTV2_BITFILE_TTAP_MAIN
@ NTV2_BITFILE_TTAP_MAIN
Definition: ntv2enums.h:3302
NTV2_Xpt425Mux4ARGB
@ NTV2_Xpt425Mux4ARGB
Definition: ntv2enums.h:2602
NTV2_XptMixer3BGVidInput
@ NTV2_XptMixer3BGVidInput
Definition: ntv2enums.h:2781
NTV2_DEVICEKIND_6G
@ NTV2_DEVICEKIND_6G
Specifies devices that have 6G SDI connectors.
Definition: ntv2enums.h:1340
Is2KFormat
bool Is2KFormat(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5460
NTV2_XptHDMIIn1
@ NTV2_XptHDMIIn1
Definition: ntv2enums.h:2499
HEX0N
#define HEX0N(__x__, __n__)
Definition: debug.cpp:1174
NTV2_OUTPUTDESTINATION_INVALID
@ NTV2_OUTPUTDESTINATION_INVALID
Definition: ntv2enums.h:1288
NTV2OutputCrosspointIDs
std::vector< NTV2OutputCrosspointID > NTV2OutputCrosspointIDs
An ordered sequence of NTV2OutputCrosspointID values.
Definition: ntv2utils.h:1054
M31_FILE_2048X1080_420_8_30p
@ M31_FILE_2048X1080_420_8_30p
Definition: ntv2m31enums.h:75
ConvertARGBToBGR
void ConvertARGBToBGR(const UByte *pInRGBALineBuffer, UByte *pOutRGBLineBuffer, const ULWord inNumPixels)
Definition: ntv2transcode.cpp:730
NTV2_BITFILE_KONA5_OE12_MAIN
@ NTV2_BITFILE_KONA5_OE12_MAIN
Definition: ntv2enums.h:3344
NTV2_AUDIO_LOOPBACK_ON
@ NTV2_AUDIO_LOOPBACK_ON
Embeds SDI input source audio into the data stream.
Definition: ntv2enums.h:1972
NTV2_FORMAT_4x2048x1080p_2500
@ NTV2_FORMAT_4x2048x1080p_2500
Definition: ntv2enums.h:569
NTV2_XptHDMIIn1RGB
@ NTV2_XptHDMIIn1RGB
Definition: ntv2enums.h:2500
CopyRaster16BytesPer6Pixels
static bool CopyRaster16BytesPer6Pixels(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Definition: ntv2utils.cpp:1293
Make10BitWhiteLine
void Make10BitWhiteLine(UWord *pOutLineData, const ULWord inNumPixels)
Writes a line of unpacked, legal SMPTE 10-bit Y/C white values into the given buffer.
Definition: ntv2utils.cpp:779
NTV2WidgetType_LUT3D
@ NTV2WidgetType_LUT3D
Definition: ntv2enums.h:3008
NTV2_FORMAT_720p_2398
@ NTV2_FORMAT_720p_2398
Definition: ntv2enums.h:531
NTV2_FORMAT_4x1920x1080p_5994
@ NTV2_FORMAT_4x1920x1080p_5994
Definition: ntv2enums.h:579
GetWriteAddress_2vuy
static UByte * GetWriteAddress_2vuy(UByte *pInFrameBuffer, const ULWord inBytesPerVertLine, const UWord inVertLineOffset, const UWord inHorzPixelOffset, const UWord inBytesPerHorzPixel)
Definition: ntv2utils.cpp:1212
NTV2_FORMAT_4x4096x2160p_5000
@ NTV2_FORMAT_4x4096x2160p_5000
Definition: ntv2enums.h:675
NTV2_XptCSC7KeyInput
@ NTV2_XptCSC7KeyInput
Definition: ntv2enums.h:2717
NTV2RegisterWriteMode
NTV2RegisterWriteMode
These values are used to determine when certain register writes actually take effect....
Definition: ntv2enums.h:1624
M31_VIF_1920X1080_420_10_5994p
@ M31_VIF_1920X1080_420_10_5994p
Definition: ntv2m31enums.h:157
M31_FILE_4096X2160_422_10_5994p_IF
@ M31_FILE_4096X2160_422_10_5994p_IF
Definition: ntv2m31enums.h:123
NTV2_BITFILE_CORVID24_MAIN
@ NTV2_BITFILE_CORVID24_MAIN
Definition: ntv2enums.h:3301
M31_VIF_1920X1080_420_8_60p
@ M31_VIF_1920X1080_420_8_60p
Definition: ntv2m31enums.h:153
NTV2_MODE_CAPTURE
@ NTV2_MODE_CAPTURE
Capture (input) mode, which writes into device SDRAM.
Definition: ntv2enums.h:1202
DEVICE_ID_IO4KPLUS
@ DEVICE_ID_IO4KPLUS
See Io4K Plus.
Definition: ntv2enums.h:35
NTV2_XptStereoCompressorOut
@ NTV2_XptStereoCompressorOut
Definition: ntv2enums.h:2514
NTV2_XptMixer3VidRGB
@ NTV2_XptMixer3VidRGB
Definition: ntv2enums.h:2570
NTV2_INPUTSOURCE_SDI8
@ NTV2_INPUTSOURCE_SDI8
Identifies the 8th SDI video input.
Definition: ntv2enums.h:1235
NTV2_FORMAT_4x3840x2160p_6000
@ NTV2_FORMAT_4x3840x2160p_6000
Definition: ntv2enums.h:662
NTV2_XptDuallinkIn1DS2
@ NTV2_XptDuallinkIn1DS2
Definition: ntv2enums.h:2663
NTV2_BITFILE_CORVIDHEVC
@ NTV2_BITFILE_CORVIDHEVC
Definition: ntv2enums.h:3310
NTV2_WgtCSC7
@ NTV2_WgtCSC7
Definition: ntv2enums.h:2925
NTV2_FORMAT_4x2048x1080p_4800_B
@ NTV2_FORMAT_4x2048x1080p_4800_B
Definition: ntv2enums.h:652
NTV2MIXERINPUTCONTROL_FULLRASTER
@ NTV2MIXERINPUTCONTROL_FULLRASTER
Definition: ntv2enums.h:1723
NTV2_XptCompressionModInput
@ NTV2_XptCompressionModInput
Definition: ntv2enums.h:2816
NTV2WidgetType_ProcAmp
@ NTV2WidgetType_ProcAmp
Definition: ntv2enums.h:2996
NTV2_XptDualLinkOut3Input
@ NTV2_XptDualLinkOut3Input
Definition: ntv2enums.h:2766
DEVICE_ID_SOJI_OE5
@ DEVICE_ID_SOJI_OE5
Definition: ntv2enums.h:84
NTV2_STANDARD_3840HFR
@ NTV2_STANDARD_3840HFR
Identifies high frame-rate UHD.
Definition: ntv2enums.h:165
NTV2_FRAMESIZE_14MB
@ NTV2_FRAMESIZE_14MB
Definition: ntv2enums.h:2066
NTV2_IsoHCrop
@ NTV2_IsoHCrop
Definition: ntv2enums.h:2197
NTV2_FRAMESIZE_8MB
@ NTV2_FRAMESIZE_8MB
Definition: ntv2enums.h:2061
NTV2_FBF_10BIT_YCBCR_DPX
@ NTV2_FBF_10BIT_YCBCR_DPX
See 10-Bit YCbCr - DPX Format.
Definition: ntv2enums.h:219
NTV2_BITFILE_KONA5_OE9_MAIN
@ NTV2_BITFILE_KONA5_OE9_MAIN
Definition: ntv2enums.h:3341
NTV2_525_5994to720p_5994
@ NTV2_525_5994to720p_5994
Definition: ntv2enums.h:3635
NTV2_720p_6000to1080i_3000
@ NTV2_720p_6000to1080i_3000
Definition: ntv2enums.h:3640
NTV2_WgtLUT8
@ NTV2_WgtLUT8
Definition: ntv2enums.h:2929
NTV2_WgtHDMIIn1v4
@ NTV2_WgtHDMIIn1v4
Definition: ntv2enums.h:2950
NTV2_AUDIO_96K
@ NTV2_AUDIO_96K
Definition: ntv2enums.h:1876
M31_FILE_1280X720_422_10_2997p
@ M31_FILE_1280X720_422_10_2997p
Definition: ntv2m31enums.h:41
NTV2_XptDuallinkIn3
@ NTV2_XptDuallinkIn3
Definition: ntv2enums.h:2641
NTV2_INPUTSOURCE_SDI2
@ NTV2_INPUTSOURCE_SDI2
Identifies the 2nd SDI video input.
Definition: ntv2enums.h:1229
NTV2_FRAMESIZE_6MB
@ NTV2_FRAMESIZE_6MB
Definition: ntv2enums.h:2063
NTV2IpErrInvalidMBResponseSize
@ NTV2IpErrInvalidMBResponseSize
Definition: ntv2enums.h:4250
NTV2_XptFrameBuffer2YUV
@ NTV2_XptFrameBuffer2YUV
Definition: ntv2enums.h:2488
NTV2_IS_4K_QUADHD_VIDEO_FORMAT
#define NTV2_IS_4K_QUADHD_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:819
GetChangedRegisters
bool GetChangedRegisters(const NTV2RegisterReads &inBefore, const NTV2RegisterReads &inAfter, NTV2RegNumSet &outChanged)
Definition: ntv2utils.cpp:7989
DEVICE_ID_CORVID44
@ DEVICE_ID_CORVID44
See Corvid 44.
Definition: ntv2enums.h:26
M31_FILE_1280X720_422_10_2398p
@ M31_FILE_1280X720_422_10_2398p
Definition: ntv2m31enums.h:38
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
M31_FILE_2048X1080_420_8_2997p
@ M31_FILE_2048X1080_420_8_2997p
Definition: ntv2m31enums.h:74
NTV2_XptDuallinkIn4DS2
@ NTV2_XptDuallinkIn4DS2
Definition: ntv2enums.h:2666
NTV2_BITFILE_KONA5_OE8_MAIN
@ NTV2_BITFILE_KONA5_OE8_MAIN
Definition: ntv2enums.h:3340
NTV2_TCINDEX_LTC2
@ NTV2_TCINDEX_LTC2
Analog LTC 2.
Definition: ntv2enums.h:3875
NTV2_WgtDualLinkV2In5
@ NTV2_WgtDualLinkV2In5
Definition: ntv2enums.h:2917
NTV2StandardToString
string NTV2StandardToString(const NTV2Standard inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:6914
NTV2_XptMixer1VidRGB
@ NTV2_XptMixer1VidRGB
Definition: ntv2enums.h:2495
NTV2_XptFrameBuffer5RGB
@ NTV2_XptFrameBuffer5RGB
Definition: ntv2enums.h:2561
NTV2ReferenceSourceToString
string NTV2ReferenceSourceToString(const NTV2ReferenceSource inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:7258
NTV2VANCModeToString
string NTV2VANCModeToString(const NTV2VANCMode inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6521
NTV2_XptFrameBuffer5DS2Input
@ NTV2_XptFrameBuffer5DS2Input
Definition: ntv2enums.h:2697
NTV2IpError
NTV2IpError
Definition: ntv2enums.h:4224
Convert16BitARGBTo12BitRGBPacked
void Convert16BitARGBTo12BitRGBPacked(RGBAlpha16BitPixel *rgbaLineBuffer, UByte *rgbLineBuffer, ULWord numPixels)
Definition: ntv2transcode.cpp:704
eDMA4
@ eDMA4
Definition: ntv2publicinterface.h:3723
NTV2_Wgt3GSDIOut6
@ NTV2_Wgt3GSDIOut6
Definition: ntv2enums.h:2914
NTV2_AUDIO_EMBEDDED
@ NTV2_AUDIO_EMBEDDED
Obtain audio samples from the audio that's embedded in the video HANC.
Definition: ntv2enums.h:1948
NTV2_SG_625
@ NTV2_SG_625
Definition: ntv2enums.h:465
NTV2_XptFrameBuffer5_DS2YUV
@ NTV2_XptFrameBuffer5_DS2YUV
Definition: ntv2enums.h:2613
M31_FILE_1280X720_420_8_2398p
@ M31_FILE_1280X720_420_8_2398p
Definition: ntv2m31enums.h:29
NTV2_XptSDIIn1
@ NTV2_XptSDIIn1
Definition: ntv2enums.h:2471
NTV2WidgetType_HDMIInV3
@ NTV2WidgetType_HDMIInV3
Definition: ntv2enums.h:2988
NTV2_STANDARD_2Kx1080i
@ NTV2_STANDARD_2Kx1080i
Identifies SMPTE HD 2K1080psf.
Definition: ntv2enums.h:162
NTV2_FRAMERATE_UNKNOWN
@ NTV2_FRAMERATE_UNKNOWN
Represents an unknown or invalid frame rate.
Definition: ntv2enums.h:398
NTV2_XptFrameBuffer7YUV
@ NTV2_XptFrameBuffer7YUV
Definition: ntv2enums.h:2564
NTV2ChannelToInputInterrupt
INTERRUPT_ENUMS NTV2ChannelToInputInterrupt(const NTV2Channel inChannel)
Converts the given NTV2Channel value into the equivalent input INTERRUPT_ENUMS value.
Definition: ntv2utils.cpp:4995
NTV2_IS_VALID_FIELD
#define NTV2_IS_VALID_FIELD(__x__)
Definition: ntv2enums.h:1792
NTV2_XptDualLinkIn5Input
@ NTV2_XptDualLinkIn5Input
Definition: ntv2enums.h:2756
NTV2_FORMAT_1080p_5000_A
@ NTV2_FORMAT_1080p_5000_A
Definition: ntv2enums.h:533
DEVICE_ID_KONA4
@ DEVICE_ID_KONA4
See KONA 4 (Quad Mode).
Definition: ntv2enums.h:46
NTV2_FORMAT_4x2048x1080p_6000
@ NTV2_FORMAT_4x2048x1080p_6000
Definition: ntv2enums.h:583
NTV2_XptDuallinkIn2DS2
@ NTV2_XptDuallinkIn2DS2
Definition: ntv2enums.h:2664
RecordCopyAudio
int RecordCopyAudio(PULWord pAja, PULWord pSR, int iStartSample, int iNumBytes, int iChan0, int iNumChans, bool bKeepAudio24Bits)
Definition: ntv2utils.cpp:4403
AJAExport
#define AJAExport
Definition: export.h:33
M31_VIF_720X576_422_10_50p
@ M31_VIF_720X576_422_10_50p
Definition: ntv2m31enums.h:139
NTV2_WgtDualLinkV2Out2
@ NTV2_WgtDualLinkV2Out2
Definition: ntv2enums.h:2874
NTV2_WgtHDMIOut1v2
@ NTV2_WgtHDMIOut1v2
Definition: ntv2enums.h:2903
NTV2_XptSDIOut6Input
@ NTV2_XptSDIOut6Input
Definition: ntv2enums.h:2742
CCIR601_8BIT_CHROMAOFFSET
#define CCIR601_8BIT_CHROMAOFFSET
Definition: videoutilities.h:24
NTV2_FORMAT_3840x2160psf_2997
@ NTV2_FORMAT_3840x2160psf_2997
Definition: ntv2enums.h:612
M31_FILE_2048X1080_422_10_30p
@ M31_FILE_2048X1080_422_10_30p
Definition: ntv2m31enums.h:84
NTV2_XptMixer2BGVidInput
@ NTV2_XptMixer2BGVidInput
Definition: ntv2enums.h:2777
NTV2IpErrSDPNoAudio
@ NTV2IpErrSDPNoAudio
Definition: ntv2enums.h:4260
NTV2VideoFormat
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
YCbCrPixel::cr
unsigned char cr
Definition: ntv2videodefines.h:197
NTV2_STANDARD_8192
@ NTV2_STANDARD_8192
Identifies 8K.
Definition: ntv2enums.h:168
NTV2_XptDuallinkOut6
@ NTV2_XptDuallinkOut6
Definition: ntv2enums.h:2583
CCIR601_10BIT_CHROMAOFFSET
#define CCIR601_10BIT_CHROMAOFFSET
Definition: videoutilities.h:20
NTV2_FORMAT_4096x2160p_5000
@ NTV2_FORMAT_4096x2160p_5000
Definition: ntv2enums.h:633
NTV2_MAX_NUM_AudioBufferSizes
@ NTV2_MAX_NUM_AudioBufferSizes
Definition: ntv2enums.h:1866
NTV2_FRAMESIZE_22MB
@ NTV2_FRAMESIZE_22MB
Definition: ntv2enums.h:2069
NTV2_TCINDEX_DEFAULT
@ NTV2_TCINDEX_DEFAULT
The "default" timecode (mostly used by the AJA "Retail" service and Control Panel)
Definition: ntv2enums.h:3867
NTV2AudioFormatToString
string NTV2AudioFormatToString(const NTV2AudioFormat inValue, const bool inCompact)
Definition: ntv2utils.cpp:6706
GetFramesPerSecond
double GetFramesPerSecond(const NTV2FrameRate inFrameRate)
Definition: ntv2utils.cpp:1737
NTV2_FORMAT_1080i_5000
@ NTV2_FORMAT_1080i_5000
Definition: ntv2enums.h:511
NTV2_TCINDEX_SDI6_2
@ NTV2_TCINDEX_SDI6_2
SDI 6 embedded VITC 2.
Definition: ntv2enums.h:3891
UnPack10BitYCbCrBuffer
void UnPack10BitYCbCrBuffer(uint32_t *packedBuffer, uint16_t *ycbcrBuffer, uint32_t numPixels)
Definition: ntv2utils.cpp:169
NTV2_Wgt12GSDIIn1
@ NTV2_Wgt12GSDIIn1
Definition: ntv2enums.h:2942
NTV2WidgetType_WaterMarker
@ NTV2WidgetType_WaterMarker
Definition: ntv2enums.h:3010
NTV2_XptDuallinkOut5DS2
@ NTV2_XptDuallinkOut5DS2
Definition: ntv2enums.h:2541
NTV2_XptDualLinkIn6Input
@ NTV2_XptDualLinkIn6Input
Definition: ntv2enums.h:2758
NTV2_XptHDMIIn1Q3
@ NTV2_XptHDMIIn1Q3
Definition: ntv2enums.h:2546
eOutput4
@ eOutput4
Definition: ntv2publicinterface.h:3753
GetNTV2HDMIInputSourceForIndex
NTV2InputSource GetNTV2HDMIInputSourceForIndex(const ULWord inIndex0)
Definition: ntv2utils.cpp:5300
NTV2_BITFILE_SOJI_OE5_MAIN
@ NTV2_BITFILE_SOJI_OE5_MAIN
Definition: ntv2enums.h:3351
GetAudioSamplesPerFrame
ULWord GetAudioSamplesPerFrame(const NTV2FrameRate inFrameRate, const NTV2AudioRate inAudioRate, ULWord inCadenceFrame, const bool inIsSMPTE372Enabled)
Returns the number of audio samples for a given video frame rate, audio sample rate,...
Definition: ntv2utils.cpp:2789
NTV2_BITFILE_CORVID1_MAIN
@ NTV2_BITFILE_CORVID1_MAIN
Definition: ntv2enums.h:3292
NTV2_FORMAT_4x1920x1080p_5000
@ NTV2_FORMAT_4x1920x1080p_5000
Definition: ntv2enums.h:578
NTV2_WgtSDIOut3
@ NTV2_WgtSDIOut3
Definition: ntv2enums.h:2862
M31_FILE_720X480_422_10_5994p
@ M31_FILE_720X480_422_10_5994p
Definition: ntv2m31enums.h:20
NTV2_WgtAnalogOut1
@ NTV2_WgtAnalogOut1
Definition: ntv2enums.h:2876
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_BITFILE_KONA4_MAIN
@ NTV2_BITFILE_KONA4_MAIN
Definition: ntv2enums.h:3306
NTV2_XptCSC5VidYUV
@ NTV2_XptCSC5VidYUV
Definition: ntv2enums.h:2521
NTV2_STANDARD_720
@ NTV2_STANDARD_720
Identifies SMPTE HD 720p.
Definition: ntv2enums.h:156
NTV2EmbeddedAudioClockToString
string NTV2EmbeddedAudioClockToString(const NTV2EmbeddedAudioClock inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:5825
RGBAlpha10BitPixel::Red
UWord Red
Definition: ntv2videodefines.h:148
NTV2IpErrSDPNoVideo
@ NTV2IpErrSDPNoVideo
Definition: ntv2enums.h:4259
NTV2_FORMAT_4x1920x1080p_2398
@ NTV2_FORMAT_4x1920x1080p_2398
Definition: ntv2enums.h:561
NTV2_XptDuallinkIn4
@ NTV2_XptDuallinkIn4
Definition: ntv2enums.h:2642
NTV2ChannelToString
string NTV2ChannelToString(const NTV2Channel inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:5759
NTV2_FG_2048x1112
@ NTV2_FG_2048x1112
2048x1080, for 2Kx1080p, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:352
NTV2_XptCSC2VidRGB
@ NTV2_XptCSC2VidRGB
Definition: ntv2enums.h:2491
DEVICE_ID_TTAP
@ DEVICE_ID_TTAP
See T-Tap.
Definition: ntv2enums.h:88
NTV2_XptDualLinkOut6Input
@ NTV2_XptDualLinkOut6Input
Definition: ntv2enums.h:2769
GetNTV2CrosspointInputForIndex
NTV2Crosspoint GetNTV2CrosspointInputForIndex(const ULWord index)
Definition: ntv2utils.cpp:4826
setHDRDefaultsForDCIP3
void setHDRDefaultsForDCIP3(HDRRegValues &outRegisterValues)
Definition: ntv2utils.cpp:7892
NTV2FrameGeometry
NTV2FrameGeometry
Identifies a particular video frame geometry.
Definition: ntv2enums.h:336
M31_VIF_720X576_422_10_50i
@ M31_VIF_720X576_422_10_50i
Definition: ntv2m31enums.h:138
NTV2_XptDualLinkOut2Input
@ NTV2_XptDualLinkOut2Input
Definition: ntv2enums.h:2765
NTV2ConversionMode
NTV2ConversionMode
Definition: ntv2enums.h:3628
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
NTV2_XptCSC1KeyFromInput2
@ NTV2_XptCSC1KeyFromInput2
Definition: ntv2enums.h:2818
DEVICE_ID_KONA5_OE3
@ DEVICE_ID_KONA5_OE3
See KONA 5.
Definition: ntv2enums.h:55
NTV2EveryFrameTaskMode
NTV2EveryFrameTaskMode
Describes the task mode state. See also: Sharing AJA Devices With Other Applications.
Definition: ntv2publicinterface.h:4257
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_REGWRITE_SYNCTOFIELD
@ NTV2_REGWRITE_SYNCTOFIELD
Field Mode: Register changes take effect at the next field VBI.
Definition: ntv2enums.h:1626
M31_FILE_1280X720_422_10_60p
@ M31_FILE_1280X720_422_10_60p
Definition: ntv2m31enums.h:45
NTV2_XptDuallinkIn5DS2
@ NTV2_XptDuallinkIn5DS2
Definition: ntv2enums.h:2667
NTV2_XptDuallinkIn6DS2
@ NTV2_XptDuallinkIn6DS2
Definition: ntv2enums.h:2668
NTV2_XptDualLinkIn4DSInput
@ NTV2_XptDualLinkIn4DSInput
Definition: ntv2enums.h:2755
NTV2_XptFrameBuffer6DS2Input
@ NTV2_XptFrameBuffer6DS2Input
Definition: ntv2enums.h:2699
NTV2_TCINDEX_INVALID
@ NTV2_TCINDEX_INVALID
Definition: ntv2enums.h:3895
NTV2_TCINDEX_SDI3_LTC
@ NTV2_TCINDEX_SDI3_LTC
SDI 3 embedded ATC LTC.
Definition: ntv2enums.h:3880
NTV2_IsoLetterBox
@ NTV2_IsoLetterBox
Definition: ntv2enums.h:2196
NTV2_XptLUT1YUV
@ NTV2_XptLUT1YUV
Definition: ntv2enums.h:2473
NTV2_XptHDMIOutQ4Input
@ NTV2_XptHDMIOutQ4Input
Definition: ntv2enums.h:2792
NTV2_OUTPUTDESTINATION_SDI7
@ NTV2_OUTPUTDESTINATION_SDI7
Definition: ntv2enums.h:1286
NTV2_BITFILE_LHI_T_MAIN
@ NTV2_BITFILE_LHI_T_MAIN
Definition: ntv2enums.h:3303
NTV2_REFERENCE_INPUT2
@ NTV2_REFERENCE_INPUT2
Specifies the SDI In 2 connector.
Definition: ntv2enums.h:1403
NTV2_FBF_8BIT_DVCPRO
@ NTV2_FBF_8BIT_DVCPRO
See 8-Bit DVCPro.
Definition: ntv2enums.h:220
HDRFloatValues::redPrimaryY
float redPrimaryY
Definition: ntv2publicinterface.h:9855
NTV2_FORMAT_4096x2160p_5994_B
@ NTV2_FORMAT_4096x2160p_5994_B
Definition: ntv2enums.h:641
RGBAlpha10BitPixel::Blue
UWord Blue
Definition: ntv2videodefines.h:146
NTV2_XptOEOutRGB
@ NTV2_XptOEOutRGB
Definition: ntv2enums.h:2513
NTV2_FORMAT_4x3840x2160p_5994_B
@ NTV2_FORMAT_4x3840x2160p_5994_B
Definition: ntv2enums.h:664
NTV2WidgetType_AnalogIn
@ NTV2WidgetType_AnalogIn
Definition: ntv2enums.h:2983
NTV2_XptOEInput
@ NTV2_XptOEInput
Definition: ntv2enums.h:2815
DEVICE_ID_KONA5_OE7
@ DEVICE_ID_KONA5_OE7
See KONA 5.
Definition: ntv2enums.h:59
NTV2_UpConvertZoom14x9
@ NTV2_UpConvertZoom14x9
Definition: ntv2enums.h:2164
NTV2_WgtUpDownConverter2
@ NTV2_WgtUpDownConverter2
Definition: ntv2enums.h:2881
NTV2_WgtDCIMixer1
@ NTV2_WgtDCIMixer1
Definition: ntv2enums.h:2891
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_FG_2048x1114
@ NTV2_FG_2048x1114
2048x1080, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:344
NTV2_Xpt425Mux4BInput
@ NTV2_Xpt425Mux4BInput
Definition: ntv2enums.h:2804
NTV2_Wgt12GSDIOut2
@ NTV2_Wgt12GSDIOut2
Definition: ntv2enums.h:2947
NTV2_BreakoutBoard
@ NTV2_BreakoutBoard
Definition: ntv2enums.h:3034
GetNTV2FrameGeometryHeight
ULWord GetNTV2FrameGeometryHeight(const NTV2FrameGeometry inGeometry)
Definition: ntv2utils.cpp:4084
eSATAChange
@ eSATAChange
Definition: ntv2publicinterface.h:3735
NTV2_FBF_8BIT_YCBCR_422PL2
@ NTV2_FBF_8BIT_YCBCR_422PL2
8-Bit 4:2:2 2-Plane YCbCr
Definition: ntv2enums.h:242
NTV2_720p_2398to1080i_2398
@ NTV2_720p_2398to1080i_2398
Definition: ntv2enums.h:3651
NTV2_BITFILE_CORVID22_MAIN
@ NTV2_BITFILE_CORVID22_MAIN
Definition: ntv2enums.h:3293
NTV2_FORMAT_END_HIGH_DEF_FORMATS2
@ NTV2_FORMAT_END_HIGH_DEF_FORMATS2
Definition: ntv2enums.h:602
DEVICE_ID_KONA5_OE10
@ DEVICE_ID_KONA5_OE10
See KONA 5.
Definition: ntv2enums.h:62
NTV2Audio4ChannelSelect
NTV2Audio4ChannelSelect
Identifies a contiguous, adjacent group of four audio channels.
Definition: ntv2enums.h:3191
NTV2_FORMAT_4x2048x1080p_5994
@ NTV2_FORMAT_4x2048x1080p_5994
Definition: ntv2enums.h:582
NTV2WidgetType_SDIIn3G
@ NTV2WidgetType_SDIIn3G
Definition: ntv2enums.h:2975
NTV2_OUTPUTDESTINATION_SDI4
@ NTV2_OUTPUTDESTINATION_SDI4
Definition: ntv2enums.h:1283
M31_VIF_720X480_420_8_5994i
@ M31_VIF_720X480_420_8_5994i
Definition: ntv2m31enums.h:127
M31_FILE_1920X1080_422_10_2997p
@ M31_FILE_1920X1080_422_10_2997p
Definition: ntv2m31enums.h:62
gChanVITC1
static const NTV2TCIndex gChanVITC1[]
Definition: ntv2utils.cpp:5015
NTV2StringListConstIter
NTV2StringList::const_iterator NTV2StringListConstIter
Definition: ntv2utils.h:1136
M31_VIF_1920X1080_422_10_5994i
@ M31_VIF_1920X1080_422_10_5994i
Definition: ntv2m31enums.h:160
NTV2IpErrInvalidUllHeight
@ NTV2IpErrInvalidUllHeight
Definition: ntv2enums.h:4230
NTV2WidgetType_HDMIOutV3
@ NTV2WidgetType_HDMIOutV3
Definition: ntv2enums.h:3001
NTV2_XptCSC3VidYUV
@ NTV2_XptCSC3VidYUV
Definition: ntv2enums.h:2534
HDRRegValues::bluePrimaryY
uint16_t bluePrimaryY
Definition: ntv2publicinterface.h:9836
CheckFrameRateFamiliesInitialized
static bool CheckFrameRateFamiliesInitialized(void)
Definition: ntv2utils.cpp:5351
NTV2_DEVICEKIND_NONE
@ NTV2_DEVICEKIND_NONE
Doesn't specify any kind of device.
Definition: ntv2enums.h:1344
M31_FILE_1280X720_422_10_25p
@ M31_FILE_1280X720_422_10_25p
Definition: ntv2m31enums.h:40
NTV2_XptHDMIIn2Q4
@ NTV2_XptHDMIIn2Q4
Definition: ntv2enums.h:2627
GetNTV2FrameRateFromVideoFormat
NTV2FrameRate GetNTV2FrameRateFromVideoFormat(const NTV2VideoFormat videoFormat)
Definition: ntv2utils.cpp:3530
M31_VIF_1280X720_422_10_5994p
@ M31_VIF_1280X720_422_10_5994p
Definition: ntv2m31enums.h:145
NTV2_BITFILE_TTAP_PRO_MAIN
@ NTV2_BITFILE_TTAP_PRO_MAIN
Definition: ntv2enums.h:3327
NTV2_FG_4x1920x1080
@ NTV2_FG_4x1920x1080
3840x2160, for UHD, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:355
NTV2_XptHDMIOutQ2Input
@ NTV2_XptHDMIOutQ2Input
Definition: ntv2enums.h:2790
NTV2_XptFrameBuffer5Input
@ NTV2_XptFrameBuffer5Input
Definition: ntv2enums.h:2696
NTV2WidgetType_StereoCompressor
@ NTV2WidgetType_StereoCompressor
Definition: ntv2enums.h:2995
NTV2_FORMAT_4x3840x2160p_3000
@ NTV2_FORMAT_4x3840x2160p_3000
Definition: ntv2enums.h:659
NTV2_XptLUT1Out
@ NTV2_XptLUT1Out
Definition: ntv2enums.h:2474
AJA_NTV2_SDK_VERSION_MINOR
#define AJA_NTV2_SDK_VERSION_MINOR
The SDK minor version number, an unsigned decimal integer.
Definition: ntv2version.h:14
NTV2_FORMAT_1080p_2K_5994_B
@ NTV2_FORMAT_1080p_2K_5994_B
Definition: ntv2enums.h:600
NTV2_AUDIOSYSTEM_5
@ NTV2_AUDIOSYSTEM_5
This identifies the 5th Audio System.
Definition: ntv2enums.h:3815
NTV2_INVALID_HDMI_COLORSPACE
@ NTV2_INVALID_HDMI_COLORSPACE
Definition: ntv2enums.h:3526
M31_FILE_3840X2160_422_10_2997p
@ M31_FILE_3840X2160_422_10_2997p
Definition: ntv2m31enums.h:114
M31_VIF_1920X1080_420_10_5994i
@ M31_VIF_1920X1080_420_10_5994i
Definition: ntv2m31enums.h:156
NTV2WidgetType_DualLinkV2Out
@ NTV2WidgetType_DualLinkV2Out
Definition: ntv2enums.h:2982
NTV2_BITFILE_KONA3G_QUAD
@ NTV2_BITFILE_KONA3G_QUAD
Definition: ntv2enums.h:3298
NTV2_FBF_16BIT_ARGB
@ NTV2_FBF_16BIT_ARGB
16-Bit ARGB
Definition: ntv2enums.h:233
NTV2VideoFormatToString
string NTV2VideoFormatToString(const NTV2VideoFormat inFormat, const bool inUseFrameRate)
Definition: ntv2utils.cpp:6750
NTV2_IS_4K_4096_VIDEO_FORMAT
#define NTV2_IS_4K_4096_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:792
NTV2_Xpt425Mux4AInput
@ NTV2_Xpt425Mux4AInput
Definition: ntv2enums.h:2803
NTV2_XptCSC1VidRGB
@ NTV2_XptCSC1VidRGB
Definition: ntv2enums.h:2476
NTV2_Wgt425Mux4
@ NTV2_Wgt425Mux4
Definition: ntv2enums.h:2941
DEVICE_ID_SOJI_3DLUT
@ DEVICE_ID_SOJI_3DLUT
Definition: ntv2enums.h:79
NTV2_MODE_INVALID
@ NTV2_MODE_INVALID
The invalid mode.
Definition: ntv2enums.h:1204
NTV2_XptLUT7Out
@ NTV2_XptLUT7Out
Definition: ntv2enums.h:2648
NTV2_MAX_NUM_UpConvertModes
@ NTV2_MAX_NUM_UpConvertModes
Definition: ntv2enums.h:2167
NTV2_INPUT_SOURCE_IS_SDI
#define NTV2_INPUT_SOURCE_IS_SDI(_inpSrc_)
Definition: ntv2enums.h:1242
NTV2AncDataRgn
enum NTV2AncillaryDataRegion NTV2AncDataRgn
eTemp2High
@ eTemp2High
Definition: ntv2publicinterface.h:3737
NTV2_XptSDIIn4
@ NTV2_XptSDIIn4
Definition: ntv2enums.h:2527
NTV2ChannelToInputCrosspoint
NTV2Crosspoint NTV2ChannelToInputCrosspoint(const NTV2Channel inChannel)
Definition: ntv2utils.cpp:4973
NTV2_IS_VANCMODE_TALL
#define NTV2_IS_VANCMODE_TALL(__v__)
Definition: ntv2enums.h:3720
NTV2_IOKINDS_SDI
@ NTV2_IOKINDS_SDI
Specifies SDI input/output kinds.
Definition: ntv2enums.h:1251
SetRasterLinesWhite10BitYCbCr
static bool SetRasterLinesWhite10BitYCbCr(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines)
Definition: ntv2utils.cpp:1059
M31_FILE_1920X1080_422_10_5994i
@ M31_FILE_1920X1080_422_10_5994i
Definition: ntv2m31enums.h:66
NTV2Buffer::Fill
bool Fill(const T &inValue)
Fills me with the given scalar value.
Definition: ntv2publicinterface.h:6192
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
DEVICE_ID_KONA3GQUAD
@ DEVICE_ID_KONA3GQUAD
See KONA 3G (Quad Mode).
Definition: ntv2enums.h:45
M31_FILE_3840X2160_422_10_60p
@ M31_FILE_3840X2160_422_10_60p
Definition: ntv2m31enums.h:118
DEVICE_ID_CORVIDHBR
@ DEVICE_ID_CORVIDHBR
See Corvid HB-R.
Definition: ntv2enums.h:32
NTV2_XptDuallinkIn1
@ NTV2_XptDuallinkIn1
Definition: ntv2enums.h:2633
CopyRaster
bool CopyRaster(const NTV2PixelFormat inPixelFormat, UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Copies all or part of a source raster image into a destination raster at a given position.
Definition: ntv2utils.cpp:1642
GetVideoWriteSize
ULWord GetVideoWriteSize(const NTV2VideoFormat inVideoFormat, const NTV2FrameBufferFormat inFBFormat, const NTV2VANCMode inVancMode)
Identical to the GetVideoActiveSize function, except rounds the result up to the nearest 4K page size...
Definition: ntv2utils.cpp:2775
NTV2_TCINDEX_SDI8
@ NTV2_TCINDEX_SDI8
SDI 8 embedded VITC.
Definition: ntv2enums.h:3879
NTV2_XptCSC8VidYUV
@ NTV2_XptCSC8VidYUV
Definition: ntv2enums.h:2580
NTV2DeviceGetNumVideoOutputs
UWord NTV2DeviceGetNumVideoOutputs(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:12012
NTV2_HDMIColorSpaceRGB
@ NTV2_HDMIColorSpaceRGB
RGB color space.
Definition: ntv2enums.h:3523
M31_FILE_2048X1080_422_10_2398p
@ M31_FILE_2048X1080_422_10_2398p
Definition: ntv2m31enums.h:80
NTV2_FORMAT_3840x2160p_5000
@ NTV2_FORMAT_3840x2160p_5000
Definition: ntv2enums.h:614
M31_FILE_1920X1080_420_8_60i
@ M31_FILE_1920X1080_420_8_60i
Definition: ntv2m31enums.h:56
NTV2_XptFrameBuffer3_DS2RGB
@ NTV2_XptFrameBuffer3_DS2RGB
Definition: ntv2enums.h:2610
NTV2_IS_OUTPUT_CROSSPOINT
#define NTV2_IS_OUTPUT_CROSSPOINT(__x__)
Definition: ntv2enums.h:1678
NTV2_WgtIICT2
@ NTV2_WgtIICT2
Definition: ntv2enums.h:2888
NTV2_FORMAT_720p_5994
@ NTV2_FORMAT_720p_5994
Definition: ntv2enums.h:514
Is8BitFrameBufferFormat
bool Is8BitFrameBufferFormat(const NTV2FrameBufferFormat format)
Definition: ntv2utils.cpp:5484
NTV2_BITFILE_KONAIP_1RX_1TX_2110
@ NTV2_BITFILE_KONAIP_1RX_1TX_2110
Definition: ntv2enums.h:3315
NTV2_XptDuallinkIn2
@ NTV2_XptDuallinkIn2
Definition: ntv2enums.h:2637
NTV2_FORMAT_4096x2160psf_3000
@ NTV2_FORMAT_4096x2160psf_3000
Definition: ntv2enums.h:630
eLowPower
@ eLowPower
Definition: ntv2publicinterface.h:3733
NTV2_XptSDIOut7InputDS2
@ NTV2_XptSDIOut7InputDS2
Definition: ntv2enums.h:2745
NTV2DeviceCanDoCustomAnc
bool NTV2DeviceCanDoCustomAnc(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:2087
NTV2_BITFILE_SOJI_3DLUT_MAIN
@ NTV2_BITFILE_SOJI_3DLUT_MAIN
Definition: ntv2enums.h:3354
NTV2_WgtGenLock
@ NTV2_WgtGenLock
Definition: ntv2enums.h:2890
NTV2IpErrSFP1NotConfigured
@ NTV2IpErrSFP1NotConfigured
Definition: ntv2enums.h:4235
NTV2_Xpt425Mux3AYUV
@ NTV2_Xpt425Mux3AYUV
Definition: ntv2enums.h:2597
NTV2WidgetType_SDIMonOut
@ NTV2WidgetType_SDIMonOut
Definition: ntv2enums.h:2978
NTV2_AUDIO_ANALOG
@ NTV2_AUDIO_ANALOG
Obtain audio samples from the device analog input(s), if available.
Definition: ntv2enums.h:1950
NTV2_XptWaterMarker2Input
@ NTV2_XptWaterMarker2Input
Definition: ntv2enums.h:2813
NTV2_XptCSC2VidYUV
@ NTV2_XptCSC2VidYUV
Definition: ntv2enums.h:2490
M31_FILE_3840X2160_422_8_24p
@ M31_FILE_3840X2160_422_8_24p
Definition: ntv2m31enums.h:103
NTV2_FG_1280x740
@ NTV2_FG_1280x740
1280x720, for 720p, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:348
NTV2_XptCSC6VidRGB
@ NTV2_XptCSC6VidRGB
Definition: ntv2enums.h:2575
NTV2WidgetType_DualLinkV1Out
@ NTV2WidgetType_DualLinkV1Out
Definition: ntv2enums.h:2981
NTV2_FORMAT_1080p_2K_5000_A
@ NTV2_FORMAT_1080p_2K_5000_A
Definition: ntv2enums.h:594
NTV2_AUDIO_BUFFER_STANDARD
@ NTV2_AUDIO_BUFFER_STANDARD
Definition: ntv2enums.h:1863
NTV2_TCINDEX_SDI8_LTC
@ NTV2_TCINDEX_SDI8_LTC
SDI 8 embedded ATC LTC.
Definition: ntv2enums.h:3885
NTV2_FRAMERATE_5000
@ NTV2_FRAMERATE_5000
50 frames per second
Definition: ntv2enums.h:407
ConvertARGBYCbCrToRGBA
void ConvertARGBYCbCrToRGBA(UByte *rgbaBuffer, ULWord numPixels)
Definition: ntv2transcode.cpp:629
NTV2_XptMixer4VidYUV
@ NTV2_XptMixer4VidYUV
Definition: ntv2enums.h:2571
NTV2_WgtFrameSync1
@ NTV2_WgtFrameSync1
Definition: ntv2enums.h:2852
NTV2_FORMAT_4x4096x2160p_4795_B
@ NTV2_FORMAT_4x4096x2160p_4795_B
Definition: ntv2enums.h:678
NTV2_XptMultiLinkOut1DS4
@ NTV2_XptMultiLinkOut1DS4
New in SDK 16.0.
Definition: ntv2enums.h:2502
NTV2_TCINDEX_SDI6_LTC
@ NTV2_TCINDEX_SDI6_LTC
SDI 6 embedded ATC LTC.
Definition: ntv2enums.h:3883
NTV2_BITFILE_KONAXM
@ NTV2_BITFILE_KONAXM
Definition: ntv2enums.h:3358
NTV2_AUDIO_FORMAT_INVALID
@ NTV2_AUDIO_FORMAT_INVALID
Definition: ntv2enums.h:1897
NTV2DeviceIDList
std::vector< NTV2DeviceID > NTV2DeviceIDList
An ordered list of NTV2DeviceIDs.
Definition: ntv2utils.h:1024
RGBAlpha10BitPixel
Definition: ntv2videodefines.h:145
CCIR601_8BIT_WHITE
#define CCIR601_8BIT_WHITE
Definition: videoutilities.h:23
NTV2_HDMI10Bit
@ NTV2_HDMI10Bit
10 bit
Definition: ntv2enums.h:3609
NTV2_WgtHDMIIn1v3
@ NTV2_WgtHDMIIn1v3
Definition: ntv2enums.h:2936
NTV2_FORMAT_4x2048x1080psf_2500
@ NTV2_FORMAT_4x2048x1080psf_2500
Definition: ntv2enums.h:566
M31_FILE_2048X1080_422_10_2997p
@ M31_FILE_2048X1080_422_10_2997p
Definition: ntv2m31enums.h:83
NTV2_FBF_10BIT_RGB
@ NTV2_FBF_10BIT_RGB
See 10-Bit RGB Format.
Definition: ntv2enums.h:214
NTV2_625_2500to625_2500
@ NTV2_625_2500to625_2500
Definition: ntv2enums.h:3654
DEVICE_ID_KONA5_OE11
@ DEVICE_ID_KONA5_OE11
See KONA 5.
Definition: ntv2enums.h:63
YCbCr10BitPixel::y
UWord y
Definition: ntv2videodefines.h:203
NTV2_INPUTSOURCE_SDI3
@ NTV2_INPUTSOURCE_SDI3
Identifies the 3rd SDI video input.
Definition: ntv2enums.h:1230
NTV2FrameRateFamiliesConstIter
NTV2FrameRateFamilies::const_iterator NTV2FrameRateFamiliesConstIter
Definition: ntv2utils.cpp:5345
NTV2_FG_2048x1556
@ NTV2_FG_2048x1556
2048x1556, for 2Kx1556psf film format, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:350
M31_VIF_1920X1080_420_8_5994p
@ M31_VIF_1920X1080_420_8_5994p
Definition: ntv2m31enums.h:151
SerialNum64ToString
string SerialNum64ToString(const uint64_t &inSerNum)
Definition: ntv2utils.cpp:8114
HDRFloatValues::bluePrimaryX
float bluePrimaryX
Definition: ntv2publicinterface.h:9852
NTV2_BITFILE_KONA5_8K_MV_TX_MAIN
@ NTV2_BITFILE_KONA5_8K_MV_TX_MAIN
Definition: ntv2enums.h:3355
NTV2_REFERENCE_EXTERNAL
@ NTV2_REFERENCE_EXTERNAL
Specifies the External Reference connector.
Definition: ntv2enums.h:1401
NTV2GetVersionString
std::string NTV2GetVersionString(const bool inDetailed)
Definition: ntv2utils.cpp:7680
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
NTV2_WgtFrameBuffer7
@ NTV2_WgtFrameBuffer7
Definition: ntv2enums.h:2934
NTV2ChannelToEmbeddedAudioInput
NTV2EmbeddedAudioInput NTV2ChannelToEmbeddedAudioInput(const NTV2Channel inChannel)
Converts the given NTV2Channel value into its equivalent NTV2EmbeddedAudioInput.
Definition: ntv2utils.cpp:4919
NTV2AncDataRgnToStr
string NTV2AncDataRgnToStr(const NTV2AncDataRgn inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6593
NTV2_XptMultiLinkOut2DS4
@ NTV2_XptMultiLinkOut2DS4
New in SDK 16.0.
Definition: ntv2enums.h:2525
M31_FILE_2048X1080_422_10_25p
@ M31_FILE_2048X1080_422_10_25p
Definition: ntv2m31enums.h:82
NTV2_DownConvert14x9
@ NTV2_DownConvert14x9
Definition: ntv2enums.h:2188
NTV2_Wgt3GSDIIn4
@ NTV2_Wgt3GSDIIn4
Definition: ntv2enums.h:2859
eOutput5
@ eOutput5
Definition: ntv2publicinterface.h:3754
NTV2IpErrInvalidFormat
@ NTV2IpErrInvalidFormat
Definition: ntv2enums.h:4228
NTV2GetDeviceIDFromBitfileName
NTV2DeviceID NTV2GetDeviceIDFromBitfileName(const string &inBitfileName)
Definition: ntv2utils.cpp:7510
NTV2EmbeddedAudioInput
NTV2EmbeddedAudioInput
This enum value determines/states which SDI video input will be used to supply audio samples to an au...
Definition: ntv2enums.h:1908
NTV2_FRAMERATE_3000
@ NTV2_FRAMERATE_3000
30 frames per second
Definition: ntv2enums.h:402
AUTOCIRCVIDPROCMODE_INVALID
@ AUTOCIRCVIDPROCMODE_INVALID
Definition: ntv2publicinterface.h:4168
NTV2DeviceIDToString
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay)
Definition: ntv2utils.cpp:4673
Is8KFormat
bool Is8KFormat(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5472
CopyRaster3BytesPerPixel
static bool CopyRaster3BytesPerPixel(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Definition: ntv2utils.cpp:1531
M31_FILE_720X480_422_10_5994i
@ M31_FILE_720X480_422_10_5994i
Definition: ntv2m31enums.h:19
HDRFloatValues::maxFrameAverageLightLevel
uint16_t maxFrameAverageLightLevel
Definition: ntv2publicinterface.h:9861
NTV2_WgtFrameBuffer2
@ NTV2_WgtFrameBuffer2
Definition: ntv2enums.h:2845
NTV2_Wgt425Mux3
@ NTV2_Wgt425Mux3
Definition: ntv2enums.h:2940
NTV2_IS_VALID_AUDIO_CHANNEL_PAIR
#define NTV2_IS_VALID_AUDIO_CHANNEL_PAIR(__p__)
Definition: ntv2enums.h:3123
M31_VIF_1920X1080_420_10_60i
@ M31_VIF_1920X1080_420_10_60i
Definition: ntv2m31enums.h:158
CalcRowBytesForFormat
uint32_t CalcRowBytesForFormat(const NTV2FrameBufferFormat inPixelFormat, const uint32_t inPixelWidth)
Definition: ntv2utils.cpp:45
SetRasterLinesWhite
bool SetRasterLinesWhite(const NTV2PixelFormat inPixelFormat, UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines)
Sets all or part of a destination raster image to legal white.
Definition: ntv2utils.cpp:1141
M31_FILE_1280X720_420_8_50p
@ M31_FILE_1280X720_420_8_50p
Definition: ntv2m31enums.h:34
NTV2_XptDuallinkOut5
@ NTV2_XptDuallinkOut5
Definition: ntv2enums.h:2540
NTV2_FRAMESIZE_16MB
@ NTV2_FRAMESIZE_16MB
Definition: ntv2enums.h:2062
Is4KFormat
bool Is4KFormat(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5466
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
NTV2_AUDIO_RATE_INVALID
@ NTV2_AUDIO_RATE_INVALID
Definition: ntv2enums.h:1879
NTV2_XptFrameBuffer5YUV
@ NTV2_XptFrameBuffer5YUV
Definition: ntv2enums.h:2560
AUTOCIRCVIDPROCMODE_MIX
@ AUTOCIRCVIDPROCMODE_MIX
Definition: ntv2publicinterface.h:4164
NTV2_IS_SUPPORTED_NTV2FrameRate
#define NTV2_IS_SUPPORTED_NTV2FrameRate(__r__)
Definition: ntv2enums.h:429
M31_FILE_1920X1080_422_10_5994p
@ M31_FILE_1920X1080_422_10_5994p
Definition: ntv2m31enums.h:67
DEVICE_ID_IOIP_2110_RGB12
@ DEVICE_ID_IOIP_2110_RGB12
See Io IP.
Definition: ntv2enums.h:40
NTV2_IS_VALID_AUDIO_SYSTEM
#define NTV2_IS_VALID_AUDIO_SYSTEM(__x__)
Definition: ntv2enums.h:3828
NTV2_FORMAT_525_2400
@ NTV2_FORMAT_525_2400
Definition: ntv2enums.h:546
NTV2_XptSDIIn5
@ NTV2_XptSDIIn5
Definition: ntv2enums.h:2552
NTV2_FG_4x3840x2160
@ NTV2_FG_4x3840x2160
7680x4320, for UHD2, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:357
NTV2_XptDuallinkOut8
@ NTV2_XptDuallinkOut8
Definition: ntv2enums.h:2587
NTV2_FORMAT_FIRST_4K_DEF_FORMAT
@ NTV2_FORMAT_FIRST_4K_DEF_FORMAT
Definition: ntv2enums.h:503
DEVICE_ID_KONA5_2X4K
@ DEVICE_ID_KONA5_2X4K
See KONA 5.
Definition: ntv2enums.h:51
M31_FILE_2048X1080_422_10_24p
@ M31_FILE_2048X1080_422_10_24p
Definition: ntv2m31enums.h:81
SetRasterLinesBlack8BitYCbCr
static bool SetRasterLinesBlack8BitYCbCr(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines)
Definition: ntv2utils.cpp:1005
M31_VIF_1920X1080_420_10_50i
@ M31_VIF_1920X1080_420_10_50i
Definition: ntv2m31enums.h:154
NTV2_XptMixer1BGKeyInput
@ NTV2_XptMixer1BGKeyInput
Definition: ntv2enums.h:2772
NTV2_FORMAT_1080psf_2997_2
@ NTV2_FORMAT_1080psf_2997_2
Definition: ntv2enums.h:539
NTV2_XptCSC5VidInput
@ NTV2_XptCSC5VidInput
Definition: ntv2enums.h:2712
NTV2_WgtCSC6
@ NTV2_WgtCSC6
Definition: ntv2enums.h:2924
NTV2_REFERENCE_INPUT8
@ NTV2_REFERENCE_INPUT8
Specifies the SDI In 8 connector.
Definition: ntv2enums.h:1412
HDRRegValues
Definition: ntv2publicinterface.h:9832
NTV2_TCINDEX_LTC1
@ NTV2_TCINDEX_LTC1
Analog LTC 1.
Definition: ntv2enums.h:3874
NTV2_INPUT_SOURCE_IS_ANALOG
#define NTV2_INPUT_SOURCE_IS_ANALOG(_inpSrc_)
Definition: ntv2enums.h:1241
NTV2_IS_VALID_VANCMODE
#define NTV2_IS_VALID_VANCMODE(__v__)
Definition: ntv2enums.h:3719
eDisplayFIFO
@ eDisplayFIFO
Definition: ntv2publicinterface.h:3734
NTV2_FORMAT_4x4096x2160p_5994
@ NTV2_FORMAT_4x4096x2160p_5994
Definition: ntv2enums.h:676
NTV2_FORMAT_4x2048x1080p_2400
@ NTV2_FORMAT_4x2048x1080p_2400
Definition: ntv2enums.h:568
NTV2_XptCSC2KeyInput
@ NTV2_XptCSC2KeyInput
Definition: ntv2enums.h:2707
NTV2_EMBEDDED_AUDIO_CLOCK_INVALID
@ NTV2_EMBEDDED_AUDIO_CLOCK_INVALID
Definition: ntv2enums.h:1936
NTV2_AUDIOSYSTEM_6
@ NTV2_AUDIOSYSTEM_6
This identifies the 6th Audio System.
Definition: ntv2enums.h:3816
NTV2_XptMixer3KeyYUV
@ NTV2_XptMixer3KeyYUV
Definition: ntv2enums.h:2569
NTV2IpErrTimeoutNoBytecount
@ NTV2IpErrTimeoutNoBytecount
Definition: ntv2enums.h:4245
NTV2MixerKeyerMode
NTV2MixerKeyerMode
These enum values identify the mixer mode.
Definition: ntv2enums.h:1736
M31_FILE_1920X1080_420_8_5994i
@ M31_FILE_1920X1080_420_8_5994i
Definition: ntv2m31enums.h:54
NTV2Audio8ChannelSelect
NTV2Audio8ChannelSelect
Identifies a contiguous, adjacent group of eight audio channels.
Definition: ntv2enums.h:3240
NTV2_FRAMESIZE_INVALID
@ NTV2_FRAMESIZE_INVALID
Definition: ntv2enums.h:2076
NTV2_BITFILE_KONA5_OE7_MAIN
@ NTV2_BITFILE_KONA5_OE7_MAIN
Definition: ntv2enums.h:3339
NTV2_MODE_DISPLAY
@ NTV2_MODE_DISPLAY
Playout (output) mode, which reads from device SDRAM.
Definition: ntv2enums.h:1200
NTV2_XptMultiLinkOut1DS3
@ NTV2_XptMultiLinkOut1DS3
New in SDK 16.0.
Definition: ntv2enums.h:2501
NTV2_FORMAT_1080p_2K_4800_B
@ NTV2_FORMAT_1080p_2K_4800_B
Definition: ntv2enums.h:598
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_2
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_2
Definition: ntv2enums.h:1911
NTV2_REFERENCE_HDMI_INPUT3
@ NTV2_REFERENCE_HDMI_INPUT3
Specifies the HDMI In 3 connector.
Definition: ntv2enums.h:1418
DEVICE_ID_KONA5_OE2
@ DEVICE_ID_KONA5_OE2
See KONA 5.
Definition: ntv2enums.h:54
MakeUnPacked10BitYCbCrBuffer
void MakeUnPacked10BitYCbCrBuffer(uint16_t *buffer, uint16_t Y, uint16_t Cb, uint16_t Cr, uint32_t numPixels)
Definition: ntv2utils.cpp:197
NTV2_XptFrameBuffer2DS2Input
@ NTV2_XptFrameBuffer2DS2Input
Definition: ntv2enums.h:2691
NTV2AudioSource
NTV2AudioSource
This enum value determines/states where an audio system will obtain its audio samples.
Definition: ntv2enums.h:1946
NTV2_XptMixer1VidYUV
@ NTV2_XptMixer1VidYUV
Definition: ntv2enums.h:2493
NTV2_STANDARD_7680
@ NTV2_STANDARD_7680
Identifies UHD2.
Definition: ntv2enums.h:167
ConvertLineto10BitRGB
void ConvertLineto10BitRGB(UWord *ycbcrBuffer, RGBAlpha10BitPixel *rgbaBuffer, ULWord numPixels, bool fUseSDMatrix, bool fUseSMPTERange=false)
Definition: ntv2transcode.cpp:474
NTV2_FORMAT_4x1920x1080p_2400
@ NTV2_FORMAT_4x1920x1080p_2400
Definition: ntv2enums.h:562
ntv2registerexpert.h
Declares the CNTV2RegisterExpert class.
IsPSF
bool IsPSF(const NTV2VideoFormat format)
Definition: ntv2utils.cpp:5417
NTV2_FORMAT_4x1920x1080psf_2400
@ NTV2_FORMAT_4x1920x1080psf_2400
Definition: ntv2enums.h:559
M31_FILE_3840X2160_420_8_25p
@ M31_FILE_3840X2160_420_8_25p
Definition: ntv2m31enums.h:91
NTV2FormatDescriptor::GetFullRasterHeight
ULWord GetFullRasterHeight(void) const
Definition: ntv2formatdescriptor.h:175
NTV2_XptCSC8KeyYUV
@ NTV2_XptCSC8KeyYUV
Definition: ntv2enums.h:2582
NTV2_FG_1920x1080
@ NTV2_FG_1920x1080
1920x1080, for 1080i and 1080p, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:338
NTV2_Xpt425Mux3BRGB
@ NTV2_Xpt425Mux3BRGB
Definition: ntv2enums.h:2600
NTV2_OUTPUTDESTINATION_ANALOG
@ NTV2_OUTPUTDESTINATION_ANALOG
Definition: ntv2enums.h:1278
NTV2_Xpt425Mux3BYUV
@ NTV2_Xpt425Mux3BYUV
Definition: ntv2enums.h:2599
NTV2_HDMIColorSpaceAuto
@ NTV2_HDMIColorSpaceAuto
Automatic (not for OEM use)
Definition: ntv2enums.h:3522
NTV2_FORMAT_720p_2500
@ NTV2_FORMAT_720p_2500
Definition: ntv2enums.h:532
NTV2Crosspoint
NTV2Crosspoint
Logically, these are an NTV2Channel combined with an NTV2Mode.
Definition: ntv2enums.h:1645
NTV2_XptMixer1KeyYUV
@ NTV2_XptMixer1KeyYUV
Definition: ntv2enums.h:2494
NTV2_FORMAT_3840x2160p_6000_B
@ NTV2_FORMAT_3840x2160p_6000_B
Definition: ntv2enums.h:619
NTV2_XptCSC2VidInput
@ NTV2_XptCSC2VidInput
Definition: ntv2enums.h:2706
NTV2_FRAMESIZE_24MB
@ NTV2_FRAMESIZE_24MB
Definition: ntv2enums.h:2070
NTV2_XptFrameBuffer7RGB
@ NTV2_XptFrameBuffer7RGB
Definition: ntv2enums.h:2565
eInput5
@ eInput5
Definition: ntv2publicinterface.h:3746
GetOutputForConversionMode
NTV2VideoFormat GetOutputForConversionMode(const NTV2ConversionMode conversionMode)
Definition: ntv2utils.cpp:5699
NTV2_AUDIOSAMPLESIZE
#define NTV2_AUDIOSAMPLESIZE
Definition: ntv2audiodefines.h:12
NTV2FormatDescriptor::IsValid
bool IsValid(void) const
Definition: ntv2formatdescriptor.h:94
NTV2_BITFILE_KONAIP_2110_RGB12
@ NTV2_BITFILE_KONAIP_2110_RGB12
Definition: ntv2enums.h:3345
NTV2AudioChannelOctetToString
string NTV2AudioChannelOctetToString(const NTV2Audio8ChannelSelect inValue, const bool inCompactDisplay)
Definition: ntv2utils.cpp:6472
NTV2_FORMAT_1080psf_2500_2
@ NTV2_FORMAT_1080psf_2500_2
Definition: ntv2enums.h:538
DEVICE_ID_IO4K
@ DEVICE_ID_IO4K
See Io4K (Quad Mode).
Definition: ntv2enums.h:34
NTV2_XptAnalogOutInput
@ NTV2_XptAnalogOutInput
Definition: ntv2enums.h:2805
NTV2_BITFILE_SOJI_OE3_MAIN
@ NTV2_BITFILE_SOJI_OE3_MAIN
Definition: ntv2enums.h:3349
GetNTV2InputSourceForIndex
NTV2InputSource GetNTV2InputSourceForIndex(const ULWord inIndex0, const NTV2IOKinds inKinds)
Definition: ntv2utils.cpp:5268
NTV2WidgetType_OE
@ NTV2WidgetType_OE
Definition: ntv2enums.h:3009
NTV2_FORMAT_4096x2160p_4795_B
@ NTV2_FORMAT_4096x2160p_4795_B
Definition: ntv2enums.h:638
NTV2_720p_5994to525_5994
@ NTV2_720p_5994to525_5994
Definition: ntv2enums.h:3632
NTV2_XptWaterMarker2RGB
@ NTV2_XptWaterMarker2RGB
Definition: ntv2enums.h:2661
NTV2_XptLUT6Input
@ NTV2_XptLUT6Input
Definition: ntv2enums.h:2725
HDRRegValues::staticMetadataDescriptorID
uint8_t staticMetadataDescriptorID
Definition: ntv2publicinterface.h:9846
DEVICE_ID_KONALHI
@ DEVICE_ID_KONALHI
See KONA LHi.
Definition: ntv2enums.h:75
DEVICE_ID_NOTFOUND
@ DEVICE_ID_NOTFOUND
Invalid or "not found".
Definition: ntv2enums.h:90
MaskUnPacked10BitYCbCrBuffer
void MaskUnPacked10BitYCbCrBuffer(uint16_t *ycbcrUnPackedBuffer, uint16_t signalMask, uint32_t numPixels)
Definition: ntv2utils.cpp:330
NTV2_WgtUpDownConverter1
@ NTV2_WgtUpDownConverter1
Definition: ntv2enums.h:2880
NTV2_WgtFrameBuffer3
@ NTV2_WgtFrameBuffer3
Definition: ntv2enums.h:2846
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
ConvertUnpacked10BitYCbCrToPixelFormat
void ConvertUnpacked10BitYCbCrToPixelFormat(uint16_t *unPackedBuffer, uint32_t *packedBuffer, uint32_t numPixels, NTV2FrameBufferFormat pixelFormat, bool bUseSmpteRange, bool bAlphaFromLuma)
Definition: ntv2utils.cpp:223
NTV2_XptLUT8Out
@ NTV2_XptLUT8Out
Definition: ntv2enums.h:2649
sFRFamMutex
static AJALock sFRFamMutex
Definition: ntv2utils.cpp:5348
M31_VIF_1920X1080_422_10_60p
@ M31_VIF_1920X1080_422_10_60p
Definition: ntv2m31enums.h:163
NTV2AudioBufferSize
NTV2AudioBufferSize
Represents the size of the audio buffer used by a device audio system for storing captured samples or...
Definition: ntv2enums.h:1859
eOutput1
@ eOutput1
Definition: ntv2publicinterface.h:3713
M31_FILE_2048X1080_420_8_24p
@ M31_FILE_2048X1080_420_8_24p
Definition: ntv2m31enums.h:72
NTV2_XptSDIOut1Input
@ NTV2_XptSDIOut1Input
Definition: ntv2enums.h:2732
NTV2_WgtMixer2
@ NTV2_WgtMixer2
Definition: ntv2enums.h:2892
DEVICE_ID_KONA5_OE4
@ DEVICE_ID_KONA5_OE4
See KONA 5.
Definition: ntv2enums.h:56
NTV2_XptCSC1KeyInput
@ NTV2_XptCSC1KeyInput
Definition: ntv2enums.h:2705
NTV2_Wgt3DLUT1
@ NTV2_Wgt3DLUT1
Definition: ntv2enums.h:2957
NTV2_AncRgn_All
@ NTV2_AncRgn_All
Identifies "all" ancillary data regions.
Definition: ntv2enums.h:4148
HDRRegValues::electroOpticalTransferFunction
uint8_t electroOpticalTransferFunction
Definition: ntv2publicinterface.h:9845
NTV2_FBF_ABGR
@ NTV2_FBF_ABGR
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:216
NTV2_Xpt425Mux1BInput
@ NTV2_Xpt425Mux1BInput
Definition: ntv2enums.h:2798
NTV2_AUDIO_SOURCE_INVALID
@ NTV2_AUDIO_SOURCE_INVALID
Definition: ntv2enums.h:1954
NTV2_Wgt3GSDIIn3
@ NTV2_Wgt3GSDIIn3
Definition: ntv2enums.h:2858
NTV2_HDMI12Bit
@ NTV2_HDMI12Bit
12 bit
Definition: ntv2enums.h:3610
GetRegNumChanges
bool GetRegNumChanges(const NTV2RegNumSet &inBefore, const NTV2RegNumSet &inAfter, NTV2RegNumSet &outGone, NTV2RegNumSet &outSame, NTV2RegNumSet &outNew)
Definition: ntv2utils.cpp:7980
NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
Definition: ntv2publicinterface.h:3900
NTV2_XptHDMIIn1Q3RGB
@ NTV2_XptHDMIIn1Q3RGB
Definition: ntv2enums.h:2547
M31_FILE_3840X2160_420_10_5994p
@ M31_FILE_3840X2160_420_10_5994p
Definition: ntv2m31enums.h:99
NTV2FormatDescriptor::GetVisibleRasterHeight
ULWord GetVisibleRasterHeight(void) const
Definition: ntv2formatdescriptor.h:185
NTV2_IS_VALID_VIDEO_FORMAT
#define NTV2_IS_VALID_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:688
eOutput8
@ eOutput8
Definition: ntv2publicinterface.h:3757
NTV2_OUTPUTDESTINATION_SDI5
@ NTV2_OUTPUTDESTINATION_SDI5
Definition: ntv2enums.h:1284
eChangeEvent
@ eChangeEvent
Definition: ntv2publicinterface.h:3724
NTV2_720p_5000to1080i_2500
@ NTV2_720p_5000to1080i_2500
Definition: ntv2enums.h:3638
NTV2_STANDARD_3840i
@ NTV2_STANDARD_3840i
Identifies Ultra-High-Definition (UHD) psf.
Definition: ntv2enums.h:169
NTV2ChannelToOutputCrosspoint
NTV2Crosspoint NTV2ChannelToOutputCrosspoint(const NTV2Channel inChannel)
Definition: ntv2utils.cpp:4984
RGBAlphaPixel
Definition: ntv2videodefines.h:137
M31_VIF_3840X2160_420_8_60p
@ M31_VIF_3840X2160_420_8_60p
Definition: ntv2m31enums.h:168
NTV2_1080i_6000to1080psf_3000
@ NTV2_1080i_6000to1080psf_3000
Definition: ntv2enums.h:3659
NTV2AudioBufferSizeToByteCount
ULWord NTV2AudioBufferSizeToByteCount(const NTV2AudioBufferSize inBufferSize)
Converts the given NTV2BufferSize value into its exact byte count.
Definition: ntv2utils.cpp:5334
NTV2_XptSDIOut6InputDS2
@ NTV2_XptSDIOut6InputDS2
Definition: ntv2enums.h:2743
NTV2_FORMAT_3840x2160p_3000
@ NTV2_FORMAT_3840x2160p_3000
Definition: ntv2enums.h:611
NTV2MIXERMODE_FOREGROUND_OFF
@ NTV2MIXERMODE_FOREGROUND_OFF
Passes only background video + key to the Mixer output.
Definition: ntv2enums.h:1741
NTV2_FORMAT_1080psf_2400
@ NTV2_FORMAT_1080psf_2400
Definition: ntv2enums.h:517
eAuxVerticalInterrupt
@ eAuxVerticalInterrupt
Definition: ntv2publicinterface.h:3731
NTV2_IS_PROGRESSIVE_STANDARD
#define NTV2_IS_PROGRESSIVE_STANDARD(__s__)
Definition: ntv2enums.h:177
NTV2WidgetType_HDMIOutV1
@ NTV2WidgetType_HDMIOutV1
Definition: ntv2enums.h:2999
NTV2_OEM_TASKS
@ NTV2_OEM_TASKS
2: OEM: Device is configured by controlling application(s), with minimal driver involvement.
Definition: ntv2publicinterface.h:4261
NTV2_XptSDIOut3Input
@ NTV2_XptSDIOut3Input
Definition: ntv2enums.h:2736
NTV2_XptDuallinkOut4
@ NTV2_XptDuallinkOut4
Definition: ntv2enums.h:2532
NTV2GetSDKVersionComponent
UWord NTV2GetSDKVersionComponent(const int inVersionComponent)
Returns an SDK version component value.
Definition: ntv2utils.cpp:7692
NTV2_XptDualLinkIn1DSInput
@ NTV2_XptDualLinkIn1DSInput
Definition: ntv2enums.h:2749
NTV2_BITFILE_SOJI_OE6_MAIN
@ NTV2_BITFILE_SOJI_OE6_MAIN
Definition: ntv2enums.h:3352
NTV2_BITFILE_CORVID44_PLNR_MAIN
@ NTV2_BITFILE_CORVID44_PLNR_MAIN
Definition: ntv2enums.h:3331
M31_FILE_2048X1080_420_8_5994p
@ M31_FILE_2048X1080_420_8_5994p
Definition: ntv2m31enums.h:77
NTV2_Xpt425Mux2AInput
@ NTV2_Xpt425Mux2AInput
Definition: ntv2enums.h:2799
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
NTV2WidgetType_HDMIOutV2
@ NTV2WidgetType_HDMIOutV2
Definition: ntv2enums.h:3000
NTV2_FORMAT_END_HIGH_DEF_FORMATS
@ NTV2_FORMAT_END_HIGH_DEF_FORMATS
Definition: ntv2enums.h:541
DEVICE_ID_KONA5_OE6
@ DEVICE_ID_KONA5_OE6
See KONA 5.
Definition: ntv2enums.h:58
CopyRaster4BytesPer2Pixels
static bool CopyRaster4BytesPer2Pixels(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Definition: ntv2utils.cpp:1224
DEVICE_ID_KONA5_OE12
@ DEVICE_ID_KONA5_OE12
See KONA 5.
Definition: ntv2enums.h:64
NTV2_NUM_AUDIOSYSTEMS
@ NTV2_NUM_AUDIOSYSTEMS
Definition: ntv2enums.h:3820
NTV2_XptDuallinkOut2
@ NTV2_XptDuallinkOut2
Definition: ntv2enums.h:2505
NTV2_Xpt425Mux4BYUV
@ NTV2_Xpt425Mux4BYUV
Definition: ntv2enums.h:2603
NTV2HDMIBitDepthToString
string NTV2HDMIBitDepthToString(const NTV2HDMIBitDepth inValue, const bool inCompact)
Definition: ntv2utils.cpp:6649
NTV2_REFERENCE_SFP1_PCR
@ NTV2_REFERENCE_SFP1_PCR
Specifies the PCR source on SFP 1.
Definition: ntv2enums.h:1414
Fill10BitYCbCrVideoFrame
bool Fill10BitYCbCrVideoFrame(void *pBaseVideoAddress, const NTV2Standard inStandard, const NTV2FrameBufferFormat inFBF, const YCbCr10BitPixel inPixelColor, const NTV2VANCMode inVancMode)
Definition: ntv2utils.cpp:805
NTV2_XptDualLinkOut1Input
@ NTV2_XptDualLinkOut1Input
Definition: ntv2enums.h:2764
DEVICE_ID_CORVID44_PLNR
@ DEVICE_ID_CORVID44_PLNR
See Corvid 44 12G.
Definition: ntv2enums.h:30
NTV2_XptDuallinkIn8DS2
@ NTV2_XptDuallinkIn8DS2
Definition: ntv2enums.h:2670
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_5
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_5
Definition: ntv2enums.h:1914
NTV2_XptHDMIIn3RGB
@ NTV2_XptHDMIIn3RGB
Definition: ntv2enums.h:2630
NTV2_XptDuallinkOut3DS2
@ NTV2_XptDuallinkOut3DS2
Definition: ntv2enums.h:2531
NTV2_XptHDMIIn3
@ NTV2_XptHDMIIn3
Definition: ntv2enums.h:2629
GetNTV2StandardFromScanGeometry
NTV2Standard GetNTV2StandardFromScanGeometry(const UByte inScanGeometry, const bool inIsProgressiveTransport)
Definition: ntv2utils.cpp:1807
NTV2_FORMAT_4x2048x1080psf_2997
@ NTV2_FORMAT_4x2048x1080psf_2997
Definition: ntv2enums.h:576
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_3
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_3
Definition: ntv2enums.h:1912
NTV2_WgtSDIIn2
@ NTV2_WgtSDIIn2
Definition: ntv2enums.h:2855
NTV2_XptCSC6VidInput
@ NTV2_XptCSC6VidInput
Definition: ntv2enums.h:2714
NTV2_XptDualLinkOut8Input
@ NTV2_XptDualLinkOut8Input
Definition: ntv2enums.h:2771
NTV2_FBF_LAST
@ NTV2_FBF_LAST
Definition: ntv2enums.h:243
NTV2_XptWaterMarkerRGB
@ NTV2_XptWaterMarkerRGB
Definition: ntv2enums.h:2659
NTV2_UpConvertZoomLetterbox
@ NTV2_UpConvertZoomLetterbox
Definition: ntv2enums.h:2165
NTV2_VIDEOLIMITING_OFF
@ NTV2_VIDEOLIMITING_OFF
Disables normal FrameBuffer Y/C value read limiting (NOT RECOMMENDED).
Definition: ntv2enums.h:3695
NTV2_AUDIOSYSTEM_INVALID
@ NTV2_AUDIOSYSTEM_INVALID
Definition: ntv2enums.h:3821
GetTransportCompatibleFormat
NTV2VideoFormat GetTransportCompatibleFormat(const NTV2VideoFormat inFormat, const NTV2VideoFormat inTargetFormat)
Definition: ntv2utils.cpp:5238
NTV2_FORMAT_1080p_2K_2997
@ NTV2_FORMAT_1080p_2K_2997
Definition: ntv2enums.h:592
eOutput3
@ eOutput3
Definition: ntv2publicinterface.h:3752
NTV2_1080i_3000to720p_6000
@ NTV2_1080i_3000to720p_6000
Definition: ntv2enums.h:3649
CopyRaster6BytesPerPixel
static bool CopyRaster6BytesPerPixel(UByte *pDstBuffer, const ULWord inDstBytesPerLine, const UWord inDstTotalLines, const UWord inDstVertLineOffset, const UWord inDstHorzPixelOffset, const UByte *pSrcBuffer, const ULWord inSrcBytesPerLine, const UWord inSrcTotalLines, const UWord inSrcVertLineOffset, const UWord inSrcVertLinesToCopy, const UWord inSrcHorzPixelOffset, const UWord inSrcHorzPixelsToCopy)
Definition: ntv2utils.cpp:1587
NTV2_SIGNALMASK_Cr
@ NTV2_SIGNALMASK_Cr
Output Cr if set, elso Output Cr to 0x200.
Definition: ntv2enums.h:1637
DEVICE_ID_IOEXPRESS
@ DEVICE_ID_IOEXPRESS
See Io Express.
Definition: ntv2enums.h:37
NTV2_XptFrameSync1YUV
@ NTV2_XptFrameSync1YUV
Definition: ntv2enums.h:2481