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