AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ntv2devicefeatures.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
12 #include "ntv2devicefeatures.h"
13 
14 // Most of the device features functions are generated using a Python script from files inside 'ntv2projects/sdkgen/device'.
15 // The script writes the declarations into 'ntv2devicefeatures.hh', and implementations into 'ntv2devicefeatures.hpp'...
16 #include "ntv2devicefeatures.hpp"
17 
19 // The rest of the non-sdkgen-generated function implementations follow...
21 
22 #if !defined(NTV2_DEPRECATE_17_2)
23  bool NTV2DeviceCanDoAudioOut (const NTV2DeviceID inDeviceID)
24  {
25  UWord outputs = 0;
26  outputs += NTV2DeviceGetNumVideoOutputs(inDeviceID);
27  outputs += NTV2DeviceGetNumHDMIAudioOutputChannels(inDeviceID);
28  outputs += NTV2DeviceGetNumAnalogAudioOutputChannels(inDeviceID);
29  return outputs > 0 ? true : false;
30  }
31 
32  bool NTV2DeviceCanDoAudioIn (const NTV2DeviceID inDeviceID)
33  {
34  UWord inputs = 0;
35  inputs += NTV2DeviceGetNumVideoInputs(inDeviceID);
36  inputs += NTV2DeviceGetNumHDMIAudioInputChannels(inDeviceID);
37  inputs += NTV2DeviceGetNumAnalogAudioInputChannels(inDeviceID);
38  return inputs > 0 ? true : false;
39  }
40 
41  bool NTV2DeviceCanDo292Out (NTV2DeviceID boardID, UWord index0)
42  {
43  switch (index0)
44  {
45  case 0: return NTV2DeviceCanDoWidget(boardID, NTV2_WgtSDIOut1);
46  case 1: return NTV2DeviceCanDoWidget(boardID, NTV2_WgtSDIOut2);
47  case 2: return NTV2DeviceCanDoWidget(boardID, NTV2_WgtSDIOut3);
48  case 3: return NTV2DeviceCanDoWidget(boardID, NTV2_WgtSDIOut4);
49  default: return false;
50  }
51  } // NTV2DeviceCanDo292Out
52 
53  bool NTV2DeviceCanDo292In (NTV2DeviceID boardID, UWord index0)
54  {
55  switch (index0)
56  {
57  case 0: return NTV2DeviceCanDoWidget(boardID, NTV2_WgtSDIIn1);
58  case 1: return NTV2DeviceCanDoWidget(boardID, NTV2_WgtSDIIn2);
59  default: return false;
60  }
61  } // NTV2DeviceCanDo292In
62 
64  {
65  switch (index0)
66  {
71  case 2: return (NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn3) || NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIIn3));
72  case 3: return (NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn4) || NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIIn4));
73  case 4: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn5);
74  case 5: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn6);
75  case 6: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn7);
76  case 7: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn8);
77  default: return false;
78  }
79  } // NTV2DeviceCanDoLTCEmbeddedN
80 
81  bool NTV2DeviceCanDoOutputDestination (const NTV2DeviceID inDeviceID, const NTV2OutputDest inOutputDest)
82  {
83  const UWord numSDIs = NTV2DeviceGetNumVideoOutputs(inDeviceID);
84  switch(inOutputDest)
85  {
88  case NTV2_OUTPUTDESTINATION_SDI1: return numSDIs > 0;
89  case NTV2_OUTPUTDESTINATION_SDI2: return numSDIs > 1;
90  case NTV2_OUTPUTDESTINATION_SDI3: return numSDIs > 2;
91  case NTV2_OUTPUTDESTINATION_SDI4: return numSDIs > 3;
92  case NTV2_OUTPUTDESTINATION_SDI5: return numSDIs > 4;
93  case NTV2_OUTPUTDESTINATION_SDI6: return numSDIs > 5;
94  case NTV2_OUTPUTDESTINATION_SDI7: return numSDIs > 6;
95  case NTV2_OUTPUTDESTINATION_SDI8: return numSDIs > 7;
96  default: break;
97  }
98  return false;
99  }
100 
102  {
103  if (NTV2DeviceGetNumLUTs(inDeviceID) > 0)
104  return true;
105  return false;
106  }
107 
109  {
110  if (NTV2DeviceGetNumCSCs(inDeviceID) > 0)
111  return true;
112  return false;
113  }
114 
116  {
117  UWord factor = 1; // default
118  switch (inFG)
119  {
120  case NTV2_FG_4x1920x1080:
121  case NTV2_FG_1920x1080:
122  if (inFBF == NTV2_FBF_10BIT_ARGB || inFBF == NTV2_FBF_16BIT_ARGB || inFBF == NTV2_FBF_48BIT_RGB || inFBF == NTV2_FBF_12BIT_RGB_PACKED )
123  factor = 2;
124  break;
125 
126  case NTV2_FG_2048x1556:
127  case NTV2_FG_2048x1588:
128  factor = (inFBF == NTV2_FBF_10BIT_ARGB || inFBF == NTV2_FBF_16BIT_ARGB || inFBF == NTV2_FBF_48BIT_RGB || inFBF == NTV2_FBF_12BIT_RGB_PACKED) ? 4 : 2;
129  break;
130 
131  case NTV2_FG_4x2048x1080:
132  case NTV2_FG_2048x1080:
133  case NTV2_FG_1920x1112:
134  case NTV2_FG_1920x1114:
135  case NTV2_FG_2048x1112:
136  case NTV2_FG_2048x1114:
137  factor = (inFBF == NTV2_FBF_16BIT_ARGB) ? 4 : 2;
138  break;
139 
140  case NTV2_FG_4x3840x2160:
141  switch (inFBF)
142  {
144  case NTV2_FBF_48BIT_RGB: return 24;
145  case NTV2_FBF_10BIT_ARGB: return 22;
146  case NTV2_FBF_16BIT_ARGB: factor = 2; break;
147  default: break;
148  }
149  break;
150 
151  case NTV2_FG_4x4096x2160:
152  switch (inFBF)
153  {
154  case NTV2_FBF_ARGB:
155  case NTV2_FBF_RGBA:
156  case NTV2_FBF_ABGR:
157  case NTV2_FBF_10BIT_RGB:
158  case NTV2_FBF_10BIT_DPX:
161  case NTV2_FBF_10BIT_RGB_PACKED: return 17;
163  case NTV2_FBF_48BIT_RGB: return 26;
164  case NTV2_FBF_10BIT_ARGB: return 23;
165  case NTV2_FBF_16BIT_ARGB: return 34;
166  default: break;
167  }
168  break;
169 
170 #if defined(_DEBUG)
171  case NTV2_FG_1280x720:
172  case NTV2_FG_720x486:
173  case NTV2_FG_720x576:
174  case NTV2_FG_720x508:
175  case NTV2_FG_720x598:
176  case NTV2_FG_1280x740:
177  case NTV2_FG_720x514:
178  case NTV2_FG_720x612:
179  case NTV2_FG_INVALID:
180  break;
181 #else
182  default: break;
183 #endif
184  }
185  if (inFG == NTV2_FG_4x1920x1080 || inFG == NTV2_FG_4x2048x1080)
186  factor *= 4;
187  if (inFG == NTV2_FG_4x3840x2160 || inFG == NTV2_FG_4x4096x2160)
188  factor *= 16;
189  return factor;
190  } // Get8MBFrameSizeFactor
191 #endif // !defined(NTV2_DEPRECATE_17_2)
192 
193  bool NTV2DeviceCanDo3GOut (NTV2DeviceID boardID, UWord index0)
194  {
195  switch (index0)
196  {
197  case 0: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut1);
198  case 1: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut2);
199  case 2: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut3);
200  case 3: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut4);
201  case 4: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut5);
202  case 5: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut6);
203  case 6: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut7);
204  case 7: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIOut8);
205  default: return false;
206  }
207  } // NTV2DeviceCanDo3GOut
208 
209  bool NTV2DeviceCanDo12GOut (NTV2DeviceID boardID, UWord index0)
210  {
211  switch (index0)
212  {
213  case 0: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIOut1);
214  case 1: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIOut2);
215  case 2: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIOut3);
216  case 3: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIOut4);
217  default: return false;
218  }
219  } // NTV2DeviceCanDo12GOut
220 
221  bool NTV2DeviceCanDo3GIn (NTV2DeviceID boardID, UWord index0)
222  {
223  switch (index0)
224  {
225  case 0: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn1);
226  case 1: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn2);
227  case 2: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn3);
228  case 3: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn4);
229  case 4: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn5);
230  case 5: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn6);
231  case 6: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn7);
232  case 7: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt3GSDIIn8);
233  default: return false;
234  }
235  } // NTV2DeviceCanDo3GIn
236 
237  bool NTV2DeviceCanDo12GIn (NTV2DeviceID boardID, UWord index0)
238  {
239  switch (index0)
240  {
241  case 0: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIIn1);
242  case 1: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIIn2);
243  case 2: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIIn3);
244  case 3: return NTV2DeviceCanDoWidget(boardID, NTV2_Wgt12GSDIIn4);
245  default: return false;
246  }
247  } // NTV2DeviceCanDo12GIn
248 
249 
250  // Overloading not supported by the ANSI C compiler used for Linux drivers.
251  #if (defined(__CPLUSPLUS__) || defined(__cplusplus)) && !defined(NTV2_BUILDING_DRIVER)
253  { (void) boardID;
254  return XENA2_FRAMEBUFFER_SIZE;
255  }
256  #else
258  { (void) boardID;
259  return XENA2_FRAMEBUFFER_SIZE;
260  }
261  #endif
262 
263  #if (defined(__CPLUSPLUS__) || defined(__cplusplus)) && !defined(NTV2_BUILDING_DRIVER)
265  #else
267  #endif
268  {
269  if (NTV2DeviceCanDoStackedAudio(boardID))
270  {
271  ULWord totalFrames = NTV2DeviceGetActiveMemorySize(boardID)/0x800000;
272  totalFrames -= NTV2DeviceGetNumAudioSystems(boardID)*(NTV2DeviceCanDo12gRouting(boardID) ? 4 : 1);
273  if(boardID == DEVICE_ID_IOX3 || boardID == DEVICE_ID_KONA5_8K_MV_TX)
274  totalFrames -= 6;
275  return totalFrames;
276  }
277  else switch (boardID)
278  {
279  case DEVICE_ID_IOEXPRESS: // EOL
281  case DEVICE_ID_TTAP: // EOL
282  return 16;
283  case DEVICE_ID_KONALHIDVI: // EOL
284  case DEVICE_ID_KONALHI:
285  case DEVICE_ID_CORVID1: // EOL
286  case DEVICE_ID_CORVID3G: // EOL
287  return 32;
288  case DEVICE_ID_IOXT: // EOL
289  return 24;
290  case DEVICE_ID_CORVID22: // EOL
291  return 64;
292  case DEVICE_ID_KONA3G: // EOL
293  return 56; // ufc uses 8
294  default:
295  return 0;
296  }
297  }
298 
299 
300  #if (defined(__CPLUSPLUS__) || defined(__cplusplus)) && !defined(NTV2_BUILDING_DRIVER)
302  {
303  return (NTV2DeviceGetNumberFrameBuffers(boardID) - NTV2DeviceGetNumAudioSystems(boardID)); // audio base is 2 MB buffer at top - 2MB (16 - 1 for 2 MB buffers)
304  }
305  #else
307  {
308  return (NTV2DeviceGetNumberFrameBuffers_Ex(boardID) - NTV2DeviceGetNumAudioSystems(boardID)); // audio base is 2 MB buffer at top - 2MB (16 - 1 for 2 MB buffers)
309  }
310  #endif // #if (defined(__CPLUSPLUS__) || defined(__cplusplus)) && !defined(NTV2_BUILDING_DRIVER)
311 
312 
313  #if (defined(__CPLUSPLUS__) || defined(__cplusplus)) && !defined(NTV2_BUILDING_DRIVER)
315  {
316  return (NTV2DeviceGetNumberFrameBuffers(boardID)-2);
317  }
318  #else
320  {
321  return (NTV2DeviceGetNumberFrameBuffers_Ex(boardID)-2);
322  }
323  #endif // #if defined(__CPLUSPLUS__) || defined(__cplusplus)
324 
326  {
327  ULWord multiplier = 1; // default
328  switch (id)
329  {
330  case DEVICE_ID_TTAP:
331  break;
332  // based on FrameGeometry
334  case DEVICE_ID_KONALHI:
336  case DEVICE_ID_IOEXPRESS:
337  case DEVICE_ID_CORVID1:
338  case DEVICE_ID_CORVID22:
339  case DEVICE_ID_CORVID3G:
340  case DEVICE_ID_IOXT:
341  case DEVICE_ID_KONA1:
342  case DEVICE_ID_IOX3:
343  switch (fg)
344  {
345  case NTV2_FG_2048x1080:
346  case NTV2_FG_2048x1556:
347  case NTV2_FG_2048x1588:
348  case NTV2_FG_1920x1112:
349  case NTV2_FG_2048x1112:
350  multiplier = 2;
351  break;
352  default:
353  break;
354  }
355  break;
356  case DEVICE_ID_KONA3G:
358  case DEVICE_ID_CORVID24:
359  case DEVICE_ID_IO4K:
360  case DEVICE_ID_IO4KUFC:
361  case DEVICE_ID_KONA4:
362  case DEVICE_ID_KONA4UFC:
363  case DEVICE_ID_CORVID88:
364  case DEVICE_ID_CORVID44:
366  case DEVICE_ID_CORVIDHBR:
372  case DEVICE_ID_IO4KPLUS:
373  case DEVICE_ID_IOIP_2022:
374  case DEVICE_ID_IOIP_2110:
378  case DEVICE_ID_KONAHDMI:
379  case DEVICE_ID_KONA5:
381  case DEVICE_ID_KONA5_8K:
384  case DEVICE_ID_KONA5_OE1:
385  case DEVICE_ID_KONA5_OE2:
386  case DEVICE_ID_KONA5_OE3:
387  case DEVICE_ID_KONA5_OE4:
388  case DEVICE_ID_KONA5_OE5:
389  case DEVICE_ID_KONA5_OE6:
390  case DEVICE_ID_KONA5_OE7:
391  case DEVICE_ID_KONA5_OE8:
392  case DEVICE_ID_KONA5_OE9:
396  case DEVICE_ID_SOJI_OE1:
397  case DEVICE_ID_SOJI_OE2:
398  case DEVICE_ID_SOJI_OE3:
399  case DEVICE_ID_SOJI_OE4:
400  case DEVICE_ID_SOJI_OE5:
401  case DEVICE_ID_SOJI_OE6:
402  case DEVICE_ID_SOJI_OE7:
410  case DEVICE_ID_TTAP_PRO:
411  case DEVICE_ID_KONAX:
412  case DEVICE_ID_KONAX_4CH:
414  case DEVICE_ID_IP25_R:
415  case DEVICE_ID_IP25_T:
418  switch (fg)
419  {
420  case NTV2_FG_4x3840x2160:
422  multiplier = 32;
423  else
424  multiplier = 16;
425  break;
426  case NTV2_FG_4x4096x2160:
427  switch(fbf)
428  {
429  case NTV2_FBF_48BIT_RGB:
431  case NTV2_FBF_10BIT_ARGB:
432  case NTV2_FBF_ARGB:
433  case NTV2_FBF_RGBA:
434  case NTV2_FBF_10BIT_RGB:
435  case NTV2_FBF_ABGR:
436  case NTV2_FBF_10BIT_DPX:
438  multiplier = 32;
439  break;
440  default:
441  multiplier = 16;
442  break;
443  }
444  break;
445  case NTV2_FG_4x1920x1080:
447  multiplier = 8;
448  else
449  multiplier = 4;
450  break;
451  case NTV2_FG_1920x1080:
452  if( fbf == NTV2_FBF_10BIT_ARGB ||
453  fbf == NTV2_FBF_16BIT_ARGB ||
454  fbf == NTV2_FBF_48BIT_RGB ||
456  multiplier = 2;
457  break;
458  case NTV2_FG_4x2048x1080:
459  switch(fbf)
460  {
461  case NTV2_FBF_48BIT_RGB:
463  case NTV2_FBF_10BIT_ARGB:
464  case NTV2_FBF_ARGB:
465  case NTV2_FBF_RGBA:
466  case NTV2_FBF_10BIT_RGB:
467  case NTV2_FBF_ABGR:
468  case NTV2_FBF_10BIT_DPX:
470  multiplier = 8;
471  break;
472  default:
473  multiplier = 4;
474  break;
475  }
476  break;
477  case NTV2_FG_2048x1080:
478  case NTV2_FG_2048x1556:
479  case NTV2_FG_2048x1588:
480  case NTV2_FG_1920x1112:
481  case NTV2_FG_1920x1114:
482  case NTV2_FG_2048x1112:
483  case NTV2_FG_2048x1114:
484  if(fbf == NTV2_FBF_16BIT_ARGB)
485  multiplier = 4;
486  else
487  multiplier = 2;
488  break;
489  default:
490  break;
491  }
492  break;
493  default:
494  break;
495  } // switch
496 
497  return XENA2_FRAMEBUFFER_SIZE * multiplier;
498  } // NTV2DeviceGetFrameBufferSize
499 
500 
502  {
503  ULWord divisor = 1; // default
504  switch (id)
505  {
506  case DEVICE_ID_TTAP:
507  break;
508  // based on FrameGeometry
510  case DEVICE_ID_KONALHI:
512  case DEVICE_ID_IOEXPRESS:
513  case DEVICE_ID_CORVID1:
514  case DEVICE_ID_CORVID22:
515  case DEVICE_ID_CORVID3G:
516  case DEVICE_ID_IOXT:
517  case DEVICE_ID_KONA1:
518  case DEVICE_ID_IOX3:
519  switch (fg)
520  {
521  case NTV2_FG_2048x1080:
522  case NTV2_FG_2048x1556:
523  case NTV2_FG_2048x1588:
524  case NTV2_FG_1920x1112:
525  case NTV2_FG_2048x1112:
526  divisor = 2;
527  break;
528  default:
529  break;
530  }
531  break;
532  case DEVICE_ID_KONA3G:
534  case DEVICE_ID_CORVID24:
535  case DEVICE_ID_IO4K:
536  case DEVICE_ID_IO4KUFC:
537  case DEVICE_ID_KONA4:
538  case DEVICE_ID_KONA4UFC:
539  case DEVICE_ID_CORVID88:
540  case DEVICE_ID_CORVID44:
546  case DEVICE_ID_CORVIDHBR:
548  case DEVICE_ID_IO4KPLUS:
549  case DEVICE_ID_IOIP_2022:
550  case DEVICE_ID_IOIP_2110:
554  case DEVICE_ID_KONAHDMI:
555  case DEVICE_ID_KONA5:
557  case DEVICE_ID_KONA5_8K:
560  case DEVICE_ID_KONA5_OE1:
561  case DEVICE_ID_KONA5_OE2:
562  case DEVICE_ID_KONA5_OE3:
563  case DEVICE_ID_KONA5_OE4:
564  case DEVICE_ID_KONA5_OE5:
565  case DEVICE_ID_KONA5_OE6:
566  case DEVICE_ID_KONA5_OE7:
567  case DEVICE_ID_KONA5_OE8:
568  case DEVICE_ID_KONA5_OE9:
572  case DEVICE_ID_SOJI_OE1:
573  case DEVICE_ID_SOJI_OE2:
574  case DEVICE_ID_SOJI_OE3:
575  case DEVICE_ID_SOJI_OE4:
576  case DEVICE_ID_SOJI_OE5:
577  case DEVICE_ID_SOJI_OE6:
578  case DEVICE_ID_SOJI_OE7:
586  case DEVICE_ID_TTAP_PRO:
587  case DEVICE_ID_KONAX:
588  case DEVICE_ID_KONAX_4CH:
592  case DEVICE_ID_IP25_R:
593  case DEVICE_ID_IP25_T:
594  switch (fg)
595  {
596  case NTV2_FG_4x1920x1080:
597  case NTV2_FG_1920x1080:
598  if (fbf == NTV2_FBF_10BIT_ARGB || fbf == NTV2_FBF_16BIT_ARGB
599  || fbf == NTV2_FBF_48BIT_RGB || fbf == NTV2_FBF_12BIT_RGB_PACKED)
600  divisor = 2;
601  break;
602  case NTV2_FG_4x2048x1080:
603  case NTV2_FG_2048x1080:
604  case NTV2_FG_2048x1556:
605  case NTV2_FG_2048x1588:
606  case NTV2_FG_1920x1112:
607  case NTV2_FG_1920x1114:
608  case NTV2_FG_2048x1112:
609  case NTV2_FG_2048x1114:
610  if (fbf == NTV2_FBF_16BIT_ARGB)
611  divisor = 4;
612  else
613  divisor = 2;
614  break;
615  default:
616  break;
617  } // switch
618  if (fg == NTV2_FG_4x1920x1080 || fg == NTV2_FG_4x2048x1080)
619  divisor *= 4;
620  if (fg == NTV2_FG_4x3840x2160 || fg == NTV2_FG_4x4096x2160)
621  divisor *= 16;
622  break;
623  default:
624  break;
625  } // switch
626 
627  if ( fbf == NTV2_FBF_48BIT_RGB || fbf == NTV2_FBF_12BIT_RGB_PACKED )
628  divisor *= 2;
629 
630  #if (defined(__CPLUSPLUS__) || defined(__cplusplus)) && !defined(NTV2_BUILDING_DRIVER)
631  return divisor ? NTV2DeviceGetNumberFrameBuffers(id) / divisor : 0;
632  #else
633  return divisor ? NTV2DeviceGetNumberFrameBuffers_Ex(id) / divisor : 0;
634  #endif
635  } // NTV2DeviceGetNumberFrameBuffers
636 
638 {
639  ULWord activeMemorySize = NTV2DeviceGetActiveMemorySize(inDeviceID);
640  ULWord numAudioSystems = NTV2DeviceGetNumAudioSystems(inDeviceID);
641  ULWord numAudioBytes = 0;
642  ULWord hwBytesPerFrame = 0;
643  ULWord videoMemorySize = 0;
644 
645  static const ULWord gFrameSizeToByteCount[NTV2_MAX_NUM_Framesizes] = { 2 /* NTV2_FRAMESIZE_2MB */, 4 /* NTV2_FRAMESIZE_4MB */, 8 /* NTV2_FRAMESIZE_8MB */, 16 /* NTV2_FRAMESIZE_16MB */,
646  6 /* NTV2_FRAMESIZE_6MB */, 10 /* NTV2_FRAMESIZE_10MB */, 12 /* NTV2_FRAMESIZE_12MB */, 14 /* NTV2_FRAMESIZE_14MB */,
647  18 /* NTV2_FRAMESIZE_18MB */, 20 /* NTV2_FRAMESIZE_20MB */, 22 /* NTV2_FRAMESIZE_22MB */, 24 /* NTV2_FRAMESIZE_24MB */,
648  26 /* NTV2_FRAMESIZE_26MB */, 28 /* NTV2_FRAMESIZE_28MB */, 30 /* NTV2_FRAMESIZE_30MB */, 32 /* NTV2_FRAMESIZE_32MB */};
649  if (inFrameSize < NTV2_MAX_NUM_Framesizes)
650  hwBytesPerFrame = gFrameSizeToByteCount [inFrameSize] * 1024 * 1024;
651 
652 
653  numAudioSystems += NTV2DeviceCanDoAudioMixer(inDeviceID) ? 2 : 0;
654  numAudioBytes = numAudioSystems * (NTV2DeviceCanDoStackedAudio(inDeviceID) ? 0x800000 : hwBytesPerFrame);
655  videoMemorySize = activeMemorySize - numAudioBytes;
656  hwBytesPerFrame *= NTV2_IS_QUAD_FRAME_GEOMETRY(inFrameGeometry) ? 4 : 1;
657  hwBytesPerFrame *= NTV2_IS_QUAD_QUAD_FRAME_GEOMETRY(inFrameGeometry) ? 8 : 1;
658  return hwBytesPerFrame ? videoMemorySize / hwBytesPerFrame : 0;
659 }
660 
661 
663 {
664  return (NTV2DeviceGetNumberFrameBuffers (boardID, inFrameGeometry, frameFormat) - 1); // audio base is 2 MB buffer at top -2MB (16-1 for 2MB buffers)
665 }
666 
667 
669 {
670  return (NTV2DeviceGetNumberFrameBuffers (boardID, inFrameGeometry, frameFormat) - 2);
671 }
672 
673 
675  const NTV2FrameRate inFrameRate,
676  const NTV2FrameGeometry inFrameGeometry,
677  const NTV2Standard inStandard,
678  const ULWord inIsSMPTE372Enabled)
679 {
680  return NTV2DeviceGetVideoFormatFromState_Ex (pOutValue, inFrameRate, inFrameGeometry, inStandard, inIsSMPTE372Enabled, false);
681 }
682 
684  const NTV2FrameRate inFrameRate,
685  const NTV2FrameGeometry inFrameGeometry,
686  const NTV2Standard inStandard,
687  const ULWord inIsSMPTE372Enabled,
688  const bool inIsProgressivePicture)
689 {
690  return NTV2DeviceGetVideoFormatFromState_Ex2 (pOutValue, inFrameRate, inFrameGeometry, inStandard, inIsSMPTE372Enabled, inIsProgressivePicture, true);
691 }
692 
694  const NTV2FrameRate inFrameRate,
695  const NTV2FrameGeometry inFrameGeometry,
696  const NTV2Standard inStandard,
697  const ULWord inIsSMPTE372Enabled,
698  const bool inIsProgressivePicture,
699  const bool inIsSquareDivision)
700 {
701  if (!pOutValue)
702  return false;
703 
704  *pOutValue = NTV2_FORMAT_UNKNOWN;
705 
706  switch (inStandard)
707  {
708  case NTV2_STANDARD_525:
709  switch (inFrameRate)
710  {
711  case NTV2_FRAMERATE_2398: *pOutValue = NTV2_FORMAT_525_2398; break;
712  case NTV2_FRAMERATE_2400: *pOutValue = NTV2_FORMAT_525_2400; break;
713  case NTV2_FRAMERATE_2997: *pOutValue = inIsProgressivePicture ? NTV2_FORMAT_525psf_2997 : NTV2_FORMAT_525_5994; break;
714  default: return false;
715  }
716  break;
717 
718  case NTV2_STANDARD_625:
719  *pOutValue = inIsProgressivePicture ? NTV2_FORMAT_625psf_2500 : NTV2_FORMAT_625_5000;
720  break;
721 
722  case NTV2_STANDARD_720:
723  switch (inFrameRate)
724  {
725  case NTV2_FRAMERATE_2398: *pOutValue = NTV2_FORMAT_720p_2398; break;
726  case NTV2_FRAMERATE_2500: *pOutValue = NTV2_FORMAT_720p_2500; break;
727  case NTV2_FRAMERATE_5000: *pOutValue = NTV2_FORMAT_720p_5000; break;
728  case NTV2_FRAMERATE_5994: *pOutValue = NTV2_FORMAT_720p_5994; break;
729  case NTV2_FRAMERATE_6000: *pOutValue = NTV2_FORMAT_720p_6000; break;
730  default: return false;
731  }
732  break;
733 
734  case NTV2_STANDARD_1080:
735  case NTV2_STANDARD_3840i:
736  case NTV2_STANDARD_4096i:
737  switch (inFrameRate)
738  {
739  case NTV2_FRAMERATE_2398:
740  if (inIsSMPTE372Enabled)
741  *pOutValue = NTV2_FORMAT_1080p_2K_4795_B;
742  else if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
743  *pOutValue = NTV2_FORMAT_1080psf_2K_2398;
744  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
745  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080psf_2398 : NTV2_FORMAT_3840x2160psf_2398;
746  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
747  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080psf_2398 : NTV2_FORMAT_4096x2160psf_2398;
748  else
749  *pOutValue = NTV2_FORMAT_1080psf_2398;
750  break;
751  case NTV2_FRAMERATE_2400:
752  if (inIsSMPTE372Enabled)
753  *pOutValue = NTV2_FORMAT_1080p_2K_4800_B;
754  else if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
755  *pOutValue = NTV2_FORMAT_1080psf_2K_2400;
756  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
757  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080psf_2400 : NTV2_FORMAT_3840x2160psf_2400;
758  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
759  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080psf_2400 : NTV2_FORMAT_4096x2160psf_2400;
760  else
761  *pOutValue = NTV2_FORMAT_1080psf_2400;
762  break;
763  case NTV2_FRAMERATE_2500:
764  if (inIsSMPTE372Enabled)
765  {
766  if (inFrameGeometry == NTV2_FG_2048x1080)
767  *pOutValue = NTV2_FORMAT_1080p_2K_5000_B;
768  else
769  *pOutValue = NTV2_FORMAT_1080p_5000_B;
770  }
771  else if (inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
772  *pOutValue = NTV2_FORMAT_1080psf_2K_2500;
773  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
774  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080psf_2500 : NTV2_FORMAT_3840x2160psf_2500;
775  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
776  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080psf_2500 : NTV2_FORMAT_4096x2160psf_2500;
777  else
778  *pOutValue = inIsProgressivePicture ? NTV2_FORMAT_1080psf_2500_2 : NTV2_FORMAT_1080i_5000;
779  break;
780  case NTV2_FRAMERATE_2997:
781  if (inIsSMPTE372Enabled)
782  {
783  if (inFrameGeometry == NTV2_FG_2048x1080)
784  *pOutValue = NTV2_FORMAT_1080p_2K_5994_B;
785  else
786  *pOutValue = NTV2_FORMAT_1080p_5994_B;
787  }
788  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
789  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080psf_2997 : NTV2_FORMAT_3840x2160psf_2997;
790  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
791  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080psf_2997 : NTV2_FORMAT_4096x2160psf_2997;
792  else
793  *pOutValue = inIsProgressivePicture ? NTV2_FORMAT_1080psf_2997_2: NTV2_FORMAT_1080i_5994;
794  break;
795  case NTV2_FRAMERATE_3000:
796  if (inIsSMPTE372Enabled)
797  {
798  if (inFrameGeometry == NTV2_FG_2048x1080)
799  *pOutValue = NTV2_FORMAT_1080p_2K_6000_B;
800  else
801  *pOutValue = NTV2_FORMAT_1080p_6000_B;
802  }
803  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
804  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080psf_3000 : NTV2_FORMAT_3840x2160psf_3000;
805  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
806  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080psf_3000 : NTV2_FORMAT_4096x2160psf_3000;
807  else
808  *pOutValue = inIsProgressivePicture ? NTV2_FORMAT_1080psf_3000_2 : NTV2_FORMAT_1080i_6000;
809  break;
810  default:
811  return false;
812  }
813  break;
814 
815  case NTV2_STANDARD_2K:
816  switch (inFrameRate)
817  {
818  case NTV2_FRAMERATE_1498: *pOutValue = NTV2_FORMAT_2K_1498; break;
819  case NTV2_FRAMERATE_1500: *pOutValue = NTV2_FORMAT_2K_1500; break;
820  case NTV2_FRAMERATE_2398: *pOutValue = NTV2_FORMAT_2K_2398; break;
821  case NTV2_FRAMERATE_2400: *pOutValue = NTV2_FORMAT_2K_2400; break;
822  case NTV2_FRAMERATE_2500: *pOutValue = NTV2_FORMAT_2K_2500; break;
823  default: return false;
824  }
825  break;
826 
827  case NTV2_STANDARD_1080p:
832  case NTV2_STANDARD_7680:
833  case NTV2_STANDARD_8192:
834  switch (inFrameRate)
835  {
836  case NTV2_FRAMERATE_2398:
837  if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
838  *pOutValue = NTV2_FORMAT_1080p_2K_2398;
839  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
840  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_2398 : NTV2_FORMAT_3840x2160p_2398;
841  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
842  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_2398 : NTV2_FORMAT_4096x2160p_2398;
843  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
844  *pOutValue = NTV2_FORMAT_4x3840x2160p_2398;
845  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
846  *pOutValue = NTV2_FORMAT_4x4096x2160p_2398;
847  else
848  *pOutValue = NTV2_FORMAT_1080p_2398;
849  break;
850  case NTV2_FRAMERATE_2400:
851  if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
852  *pOutValue = NTV2_FORMAT_1080p_2K_2400;
853  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
854  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_2400 : NTV2_FORMAT_3840x2160p_2400;
855  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
856  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_2400 : NTV2_FORMAT_4096x2160p_2400;
857  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
858  *pOutValue = NTV2_FORMAT_4x3840x2160p_2400;
859  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
860  *pOutValue = NTV2_FORMAT_4x4096x2160p_2400;
861  else
862  *pOutValue = NTV2_FORMAT_1080p_2400;
863  break;
864  case NTV2_FRAMERATE_2500:
865  if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
866  *pOutValue = NTV2_FORMAT_1080p_2K_2500;
867  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
868  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_2500 : NTV2_FORMAT_3840x2160p_2500;
869  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
870  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_2500 : NTV2_FORMAT_4096x2160p_2500;
871  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
872  *pOutValue = NTV2_FORMAT_4x3840x2160p_2500;
873  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
874  *pOutValue = NTV2_FORMAT_4x4096x2160p_2500;
875  else
876  *pOutValue = NTV2_FORMAT_1080p_2500;
877  break;
878  case NTV2_FRAMERATE_2997:
879  if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
880  *pOutValue = NTV2_FORMAT_1080p_2K_2997;
881  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
882  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_2997 : NTV2_FORMAT_3840x2160p_2997;
883  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
884  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_2997 : NTV2_FORMAT_4096x2160p_2997;
885  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
886  *pOutValue = NTV2_FORMAT_4x3840x2160p_2997;
887  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
888  *pOutValue = NTV2_FORMAT_4x4096x2160p_2997;
889  else
890  *pOutValue = NTV2_FORMAT_1080p_2997;
891  break;
892  case NTV2_FRAMERATE_3000:
893  if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
894  *pOutValue = NTV2_FORMAT_1080p_2K_3000;
895  else if (inFrameGeometry == NTV2_FG_4x1920x1080)
896  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_3000 : NTV2_FORMAT_3840x2160p_3000;
897  else if (inFrameGeometry == NTV2_FG_4x2048x1080)
898  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_3000 : NTV2_FORMAT_4096x2160p_3000;
899  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
900  *pOutValue = NTV2_FORMAT_4x3840x2160p_3000;
901  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
902  *pOutValue = NTV2_FORMAT_4x4096x2160p_3000;
903  else
904  *pOutValue = NTV2_FORMAT_1080p_3000;
905  break;
906  case NTV2_FRAMERATE_4795:
907  if ( inFrameGeometry == NTV2_FG_4x2048x1080 )
908  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_4795 : NTV2_FORMAT_4096x2160p_4795;
909  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
910  *pOutValue = NTV2_FORMAT_4x4096x2160p_4795;
911  else
912  *pOutValue = NTV2_FORMAT_1080p_2K_4795_A;
913  break;
914  case NTV2_FRAMERATE_4800:
915  if ( inFrameGeometry == NTV2_FG_4x2048x1080 )
916  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_4800 : NTV2_FORMAT_4096x2160p_4800;
917  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
918  *pOutValue = NTV2_FORMAT_4x4096x2160p_4800;
919  else
920  *pOutValue = NTV2_FORMAT_1080p_2K_4800_A;
921  break;
922  case NTV2_FRAMERATE_5000:
923  if ( inFrameGeometry == NTV2_FG_4x1920x1080 )
924  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_5000 : NTV2_FORMAT_3840x2160p_5000;
925  else if ( inFrameGeometry == NTV2_FG_4x2048x1080 )
926  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_5000 : NTV2_FORMAT_4096x2160p_5000;
927  else if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
928  *pOutValue = NTV2_FORMAT_1080p_2K_5000_A;
929  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
930  *pOutValue = NTV2_FORMAT_4x3840x2160p_5000;
931  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
932  *pOutValue = NTV2_FORMAT_4x4096x2160p_5000;
933  else
934  *pOutValue = NTV2_FORMAT_1080p_5000_A;
935  break;
936  case NTV2_FRAMERATE_5994:
937  if ( inFrameGeometry == NTV2_FG_4x1920x1080 )
938  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_5994 : NTV2_FORMAT_3840x2160p_5994;
939  else if ( inFrameGeometry == NTV2_FG_4x2048x1080 )
940  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_5994 : NTV2_FORMAT_4096x2160p_5994;
941  else if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
942  *pOutValue = NTV2_FORMAT_1080p_2K_5994_A;
943  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
944  *pOutValue = NTV2_FORMAT_4x3840x2160p_5994;
945  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
946  *pOutValue = NTV2_FORMAT_4x4096x2160p_5994;
947  else
948  *pOutValue = NTV2_FORMAT_1080p_5994_A;
949  break;
950  case NTV2_FRAMERATE_6000:
951  if ( inFrameGeometry == NTV2_FG_4x1920x1080 )
952  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x1920x1080p_6000 : NTV2_FORMAT_3840x2160p_6000;
953  else if ( inFrameGeometry == NTV2_FG_4x2048x1080 )
954  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_6000 : NTV2_FORMAT_4096x2160p_6000;
955  else if ( inFrameGeometry == NTV2_FG_2048x1080 || inFrameGeometry == NTV2_FG_2048x1112 || inFrameGeometry == NTV2_FG_2048x1114)
956  *pOutValue = NTV2_FORMAT_1080p_2K_6000_A;
957  else if (inFrameGeometry == NTV2_FG_4x3840x2160)
958  *pOutValue = NTV2_FORMAT_4x3840x2160p_6000;
959  else if (inFrameGeometry == NTV2_FG_4x4096x2160)
960  *pOutValue = NTV2_FORMAT_4x4096x2160p_6000;
961  else
962  *pOutValue = NTV2_FORMAT_1080p_6000_A;
963  break;
965  if ( inFrameGeometry == NTV2_FG_4x2048x1080 )
966  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_11988 : NTV2_FORMAT_4096x2160p_11988;
967  break;
969  if ( inFrameGeometry == NTV2_FG_4x2048x1080 )
970  *pOutValue = inIsSquareDivision ? NTV2_FORMAT_4x2048x1080p_12000 : NTV2_FORMAT_4096x2160p_12000;
971  break;
972  default:
973  return false;
974  }
975  break;
976 
978  case NTV2_STANDARD_2Kx1080i: return false;
979 
980 #if defined(_DEBUG)
981  case NTV2_NUM_STANDARDS: return false;
982 #else
983  default: return false;
984 #endif
985  }
986 
987  return true;
988 }
989 
990 
991 #define MAX_OF(__a__,__b__) ((__a__) > (__b__) ? (__a__) : (__b__))
992 
993 bool NTV2DeviceCanDoTCIndex (const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
994 {
995  UWord maxNumLTCs = MAX_OF(NTV2DeviceGetNumLTCInputs(inDeviceID), NTV2DeviceGetNumLTCOutputs(inDeviceID));
996  UWord maxNumSDIs = MAX_OF(NTV2DeviceGetNumVideoInputs(inDeviceID), NTV2DeviceGetNumVideoOutputs(inDeviceID));
997 
998  if (NTV2_IS_ATC_VITC2_TIMECODE_INDEX(inTCIndex) && !NTV2DeviceCanDoVITC2(inDeviceID))
999  return false; // Can't do VITC2
1000 
1001  switch (inTCIndex)
1002  {
1003  case NTV2_TCINDEX_DEFAULT: return true; // All devices support this index
1004 
1005  case NTV2_TCINDEX_LTC1: return maxNumLTCs > 0;
1006  case NTV2_TCINDEX_LTC2: return maxNumLTCs > 1;
1007 
1008  case NTV2_TCINDEX_SDI1:
1009  case NTV2_TCINDEX_SDI1_LTC:
1010  case NTV2_TCINDEX_SDI1_2: return maxNumSDIs > 0;
1011 
1012  case NTV2_TCINDEX_SDI2:
1013  case NTV2_TCINDEX_SDI2_LTC:
1014  case NTV2_TCINDEX_SDI2_2: return maxNumSDIs > 1;
1015 
1016  case NTV2_TCINDEX_SDI3:
1017  case NTV2_TCINDEX_SDI3_LTC:
1018  case NTV2_TCINDEX_SDI3_2: return maxNumSDIs > 2;
1019 
1020  case NTV2_TCINDEX_SDI4:
1021  case NTV2_TCINDEX_SDI4_LTC:
1022  case NTV2_TCINDEX_SDI4_2: return maxNumSDIs > 3;
1023 
1024  case NTV2_TCINDEX_SDI5:
1025  case NTV2_TCINDEX_SDI5_LTC:
1026  case NTV2_TCINDEX_SDI5_2: return maxNumSDIs > 4;
1027 
1028  case NTV2_TCINDEX_SDI6:
1029  case NTV2_TCINDEX_SDI6_LTC:
1030  case NTV2_TCINDEX_SDI6_2:
1031  case NTV2_TCINDEX_SDI7:
1032  case NTV2_TCINDEX_SDI7_LTC:
1033  case NTV2_TCINDEX_SDI7_2:
1034  case NTV2_TCINDEX_SDI8:
1035  case NTV2_TCINDEX_SDI8_LTC:
1036  case NTV2_TCINDEX_SDI8_2: return maxNumSDIs > 5;
1037 
1038  default: break;
1039  }
1040  return false;
1041 }
1042 
1043 bool NTV2DeviceCanDoInputTCIndex (const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
1044 {
1045  const UWord maxNumLTCs = NTV2DeviceGetNumLTCInputs(inDeviceID);
1046  const UWord maxNumSDIs = NTV2DeviceGetNumVideoInputs(inDeviceID);
1047 
1048  if (NTV2_IS_ATC_VITC2_TIMECODE_INDEX(inTCIndex) && !NTV2DeviceCanDoVITC2(inDeviceID))
1049  return false; // Can't do VITC2
1050 
1051  switch (inTCIndex)
1052  {
1053  case NTV2_TCINDEX_DEFAULT: return true; // All devices support this index
1054 
1055  case NTV2_TCINDEX_LTC1: return maxNumLTCs > 0;
1056  case NTV2_TCINDEX_LTC2: return maxNumLTCs > 1;
1057 
1058  case NTV2_TCINDEX_SDI1:
1059  case NTV2_TCINDEX_SDI1_LTC:
1060  case NTV2_TCINDEX_SDI1_2: return maxNumSDIs > 0;
1061 
1062  case NTV2_TCINDEX_SDI2:
1063  case NTV2_TCINDEX_SDI2_LTC:
1064  case NTV2_TCINDEX_SDI2_2: return maxNumSDIs > 1;
1065 
1066  case NTV2_TCINDEX_SDI3:
1067  case NTV2_TCINDEX_SDI3_LTC:
1068  case NTV2_TCINDEX_SDI3_2: return maxNumSDIs > 2;
1069 
1070  case NTV2_TCINDEX_SDI4:
1071  case NTV2_TCINDEX_SDI4_LTC:
1072  case NTV2_TCINDEX_SDI4_2: return maxNumSDIs > 3;
1073 
1074  case NTV2_TCINDEX_SDI5:
1075  case NTV2_TCINDEX_SDI5_LTC:
1076  case NTV2_TCINDEX_SDI5_2: return maxNumSDIs > 4;
1077 
1078  case NTV2_TCINDEX_SDI6:
1079  case NTV2_TCINDEX_SDI6_LTC:
1080  case NTV2_TCINDEX_SDI6_2:
1081  case NTV2_TCINDEX_SDI7:
1082  case NTV2_TCINDEX_SDI7_LTC:
1083  case NTV2_TCINDEX_SDI7_2:
1084  case NTV2_TCINDEX_SDI8:
1085  case NTV2_TCINDEX_SDI8_LTC:
1086  case NTV2_TCINDEX_SDI8_2: return maxNumSDIs > 5;
1087 
1088  default: break;
1089  }
1090  return false;
1091 }
1092 
1093 bool NTV2DeviceCanDoOutputTCIndex (const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
1094 {
1095  const UWord maxNumLTCs = NTV2DeviceGetNumLTCOutputs(inDeviceID);
1096  const UWord maxNumSDIs = NTV2DeviceGetNumVideoOutputs(inDeviceID);
1097 
1098  if (NTV2_IS_ATC_VITC2_TIMECODE_INDEX(inTCIndex) && !NTV2DeviceCanDoVITC2(inDeviceID))
1099  return false; // Can't do VITC2
1100 
1101  switch (inTCIndex)
1102  {
1103  case NTV2_TCINDEX_DEFAULT: return true; // All devices support this index
1104 
1105  case NTV2_TCINDEX_LTC1: return maxNumLTCs > 0;
1106  case NTV2_TCINDEX_LTC2: return maxNumLTCs > 1;
1107 
1108  case NTV2_TCINDEX_SDI1:
1109  case NTV2_TCINDEX_SDI1_LTC:
1110  case NTV2_TCINDEX_SDI1_2: return maxNumSDIs > 0;
1111 
1112  case NTV2_TCINDEX_SDI2:
1113  case NTV2_TCINDEX_SDI2_LTC:
1114  case NTV2_TCINDEX_SDI2_2: return maxNumSDIs > 1;
1115 
1116  case NTV2_TCINDEX_SDI3:
1117  case NTV2_TCINDEX_SDI3_LTC:
1118  case NTV2_TCINDEX_SDI3_2: return maxNumSDIs > 2;
1119 
1120  case NTV2_TCINDEX_SDI4:
1121  case NTV2_TCINDEX_SDI4_LTC:
1122  case NTV2_TCINDEX_SDI4_2: return maxNumSDIs > 3;
1123 
1124  case NTV2_TCINDEX_SDI5:
1125  case NTV2_TCINDEX_SDI5_LTC:
1126  case NTV2_TCINDEX_SDI5_2: return maxNumSDIs > 4;
1127 
1128  case NTV2_TCINDEX_SDI6:
1129  case NTV2_TCINDEX_SDI6_LTC:
1130  case NTV2_TCINDEX_SDI6_2:
1131  case NTV2_TCINDEX_SDI7:
1132  case NTV2_TCINDEX_SDI7_LTC:
1133  case NTV2_TCINDEX_SDI7_2:
1134  case NTV2_TCINDEX_SDI8:
1135  case NTV2_TCINDEX_SDI8_LTC:
1136  case NTV2_TCINDEX_SDI8_2: return maxNumSDIs > 5;
1137 
1138  default: break;
1139  }
1140  return false;
1141 }
1142 
1144 {
1145  if (NTV2DeviceGetNumAudioSystems(inDeviceID))
1146  return (NTV2AudioSystem)(NTV2DeviceGetNumAudioSystems(inDeviceID) + 1);
1147  return NTV2_AUDIOSYSTEM_INVALID;
1148 }
1149 
1151 {
1152  if (NTV2DeviceGetNumAudioSystems(inDeviceID))
1153  return (NTV2AudioSystem)(NTV2DeviceGetNumAudioSystems(inDeviceID));
1154  else
1155  return NTV2_AUDIOSYSTEM_INVALID;
1156 }
1157 
1159 {
1160  if (NTV2DeviceGetSPIFlashVersion(inDeviceID) >= 3 && NTV2DeviceGetSPIFlashVersion(inDeviceID) <= 6)
1161  return true;
1162  else
1163  return false;
1164 }
1165 
1166 #if !defined(NTV2_DEPRECATE_17_0)
1167  bool NTV2DeviceHasSPIv2 (const NTV2DeviceID inDeviceID) {return NTV2DeviceGetSPIFlashVersion(inDeviceID) == 2;}
1168  bool NTV2DeviceHasSPIv3(const NTV2DeviceID inDeviceID) {return NTV2DeviceGetSPIFlashVersion(inDeviceID) == 3;}
1169  bool NTV2DeviceHasSPIv4(const NTV2DeviceID inDeviceID) {return NTV2DeviceGetSPIFlashVersion(inDeviceID) == 4;}
1170  bool NTV2DeviceHasSPIv5(const NTV2DeviceID inDeviceID) {return NTV2DeviceGetSPIFlashVersion(inDeviceID) == 5;}
1171 
1172  bool NTV2DeviceHasGenlockv2(const NTV2DeviceID devID) {return NTV2DeviceGetGenlockVersion(devID) == 2;}
1173  bool NTV2DeviceHasGenlockv3(const NTV2DeviceID devID) {return NTV2DeviceGetGenlockVersion(devID) == 3;}
1174 
1176 
1180 
1182  bool NTV2DeviceCanDoAudioN(const NTV2DeviceID devID, UWord index0) {return index0 < NTV2DeviceGetNumAudioSystems(devID);}
1183  bool NTV2DeviceCanDoLTCOutN(const NTV2DeviceID devID, UWord index0) {return index0 < NTV2DeviceGetNumLTCOutputs(devID);}
1184  bool NTV2DeviceCanDoLTCInN(const NTV2DeviceID devID, UWord index0) {return index0 < NTV2DeviceGetNumLTCInputs(devID);}
1185  bool NTV2DeviceCanDoRS422N(const NTV2DeviceID devID, const NTV2Channel ch) {return ch < NTV2DeviceGetNumSerialPorts(devID);}
1186 #endif // !defined(NTV2_DEPRECATE_17_0)
1187 
1188 bool work_around_erroneous_compiler_warning (void) {return true;}
Fractional rate of 15,000 frames per 1,001 seconds.
Definition: ntv2enums.h:429
See Io XT.
Definition: ntv2enums.h:44
bool NTV2DeviceGetVideoFormatFromState_Ex2(NTV2VideoFormat *pOutValue, const NTV2FrameRate inFrameRate, const NTV2FrameGeometry inFrameGeometry, const NTV2Standard inStandard, const ULWord inIsSMPTE372Enabled, const bool inIsProgressivePicture, const bool inIsSquareDivision)
UWord Get8MBFrameSizeFactor(const NTV2FrameGeometry inFG, const NTV2FrameBufferFormat inFBF)
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information...
Definition: ntv2enums.h:3895
UWord NTV2DeviceGetNumLTCInputs(const NTV2DeviceID inDeviceID)
SDI 3 embedded VITC 2.
Definition: ntv2enums.h:3974
Identifies SMPTE HD 1080p.
Definition: ntv2enums.h:171
bool NTV2DeviceCanDoAudioOut(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDo292In(NTV2DeviceID boardID, UWord index0)
UWord NTV2DeviceGetNumAnalogAudioOutputChannels(const NTV2DeviceID inDeviceID)
See KONA IP.
Definition: ntv2enums.h:71
See Io IP.
Definition: ntv2enums.h:41
1920x1080, for 1080i and 1080p, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:359
See KONA 5.
Definition: ntv2enums.h:55
NTV2FrameBufferFormat
Identifies a particular video frame buffer pixel format. See Device Frame Buffer Formats for details...
Definition: ntv2enums.h:219
bool NTV2DeviceCanDo3GOut(NTV2DeviceID boardID, UWord index0)
#define XENA2_FRAMEBUFFER_SIZE
See KONA 5.
Definition: ntv2enums.h:63
See KONA LHe Plus.
Definition: ntv2enums.h:77
720x576, for PAL 625i, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:358
NTV2AudioSystem NTV2DeviceGetHostAudioSystem(const NTV2DeviceID inDeviceID)
See KONA 5.
Definition: ntv2enums.h:56
See Corvid 88.
Definition: ntv2enums.h:32
SDI 1 embedded VITC 2.
Definition: ntv2enums.h:3972
ULWord NTV2DeviceGetActiveMemorySize(const NTV2DeviceID inDeviceID)
ULWord NTV2DeviceGetNumberFrameBuffers_Ex(NTV2DeviceID boardID)
1280x720, for 720p, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:352
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
SDI 3 embedded VITC.
Definition: ntv2enums.h:3956
SDI 4 embedded ATC LTC.
Definition: ntv2enums.h:3967
Fractional rate of 120,000 frames per 1,001 seconds.
Definition: ntv2enums.h:427
See Corvid 24.
Definition: ntv2enums.h:24
Identifies SMPTE SD 525i.
Definition: ntv2enums.h:169
Identifies 4K psf.
Definition: ntv2enums.h:182
bool NTV2DeviceCanDoLTCOutN(const NTV2DeviceID devID, UWord index0)
#define NTV2_IS_QUAD_QUAD_FRAME_GEOMETRY(geom)
Definition: ntv2enums.h:382
UWord NTV2DeviceGetNumSerialPorts(const NTV2DeviceID inDeviceID)
Identifies high frame-rate UHD.
Definition: ntv2enums.h:177
Analog LTC 2.
Definition: ntv2enums.h:3961
UWord NTV2DeviceGetNumCSCs(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoLTCInN(const NTV2DeviceID devID, UWord index0)
See KONA 4 (Quad Mode).
Definition: ntv2enums.h:48
Identifies 8K.
Definition: ntv2enums.h:180
The "default" timecode (mostly used by the AJA "Retail" service and Control Panel) ...
Definition: ntv2enums.h:3953
bool NTV2DeviceHasColorSpaceConverterOnChannel2(const NTV2DeviceID devID)
2048x1080, for 2Kx1080p, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:364
Fractional rate of 60,000 frames per 1,001 seconds.
Definition: ntv2enums.h:417
See KONA 5.
Definition: ntv2enums.h:58
bool NTV2DeviceROMHasBankSelect(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetGenlockVersion(const NTV2DeviceID inDeviceID)
See KONA 1.
Definition: ntv2enums.h:45
uint32_t ULWord
Definition: ajatypes.h:223
See KONA 5.
Definition: ntv2enums.h:65
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They&#39;re also commonly use...
Definition: ntv2enums.h:1357
bool NTV2DeviceCanDoAudioMixer(const NTV2DeviceID inDeviceID)
See Io 4K Plus.
Definition: ntv2enums.h:37
bool NTV2DeviceHasSPIv3(const NTV2DeviceID inDeviceID)
3840x2160, for UHD, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:367
See Corvid 44.
Definition: ntv2enums.h:26
bool NTV2DeviceHasGenlockv2(const NTV2DeviceID devID)
Identifies SMPTE HD 2K1080psf.
Definition: ntv2enums.h:174
See KONA 3G (Quad Mode).
Definition: ntv2enums.h:47
SDI 8 embedded VITC.
Definition: ntv2enums.h:3965
SDI 8 embedded ATC LTC.
Definition: ntv2enums.h:3971
50 frames per second
Definition: ntv2enums.h:423
SDI 6 embedded VITC 2.
Definition: ntv2enums.h:3977
Identifies SMPTE HD 720p.
Definition: ntv2enums.h:168
See KONA 5.
Definition: ntv2enums.h:66
See T-TAP.
Definition: ntv2enums.h:93
2048x1556, for 2Kx1556psf film format, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:362
NTV2TCIndex
These enum values are indexes into the capture/playout AutoCirculate timecode arrays.
Definition: ntv2enums.h:3951
bool NTV2DeviceHasSPIv5(const NTV2DeviceID inDeviceID)
Fractional rate of 48,000 frames per 1,001 seconds.
Definition: ntv2enums.h:425
bool NTV2DeviceCanDoAudioIn(const NTV2DeviceID inDeviceID)
30 frames per second
Definition: ntv2enums.h:418
UWord NTV2DeviceGetNumHDMIVideoOutputs(const NTV2DeviceID inDeviceID)
SDI 3 embedded ATC LTC.
Definition: ntv2enums.h:3966
NTV2FrameRate
Identifies a particular video frame rate.
Definition: ntv2enums.h:412
7680x4320, for UHD2, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:371
See KONA 5.
Definition: ntv2enums.h:62
#define true
Analog LTC 1.
Definition: ntv2enums.h:3960
2048x1080, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:356
NTV2Standard
Identifies a particular video standard.
Definition: ntv2enums.h:165
UWord NTV2DeviceGetNumAudioStreams(const NTV2DeviceID devID)
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
See KONA 5.
Definition: ntv2enums.h:57
bool NTV2DeviceCanDoWidget(const NTV2DeviceID inDeviceID, const NTV2WidgetID inWidgetID)
Identifies UHD2.
Definition: ntv2enums.h:179
bool NTV2DeviceCanDoProgrammableCSC(const NTV2DeviceID inDeviceID)
1920x1080, for 1080i and 1080p, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:350
See Io 4K (Quad Mode).
Definition: ntv2enums.h:36
bool NTV2DeviceCanDoAudio6Channels(const NTV2DeviceID devID)
16-Bit ARGB
Definition: ntv2enums.h:245
See KONA LHi.
Definition: ntv2enums.h:78
#define NTV2_IS_ATC_VITC2_TIMECODE_INDEX(__x__)
Definition: ntv2enums.h:3991
See Corvid HB-R.
Definition: ntv2enums.h:34
bool NTV2DeviceGetVideoFormatFromState(NTV2VideoFormat *pOutValue, const NTV2FrameRate inFrameRate, const NTV2FrameGeometry inFrameGeometry, const NTV2Standard inStandard, const ULWord inIsSMPTE372Enabled)
ULWord NTV2DeviceGetAudioFrameBuffer2_Ex(NTV2DeviceID boardID)
Identifies Ultra-High-Definition (UHD) psf.
Definition: ntv2enums.h:181
bool NTV2DeviceCanDoRS422N(const NTV2DeviceID devID, const NTV2Channel ch)
1280x720, for 720p, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:360
SDI 6 embedded ATC LTC.
Definition: ntv2enums.h:3969
bool NTV2DeviceCanDoAudio2Channels(const NTV2DeviceID devID)
See 10-Bit RGB Format.
Definition: ntv2enums.h:226
See KONA 5.
Definition: ntv2enums.h:61
See KONA 5.
Definition: ntv2enums.h:67
ULWord NTV2DeviceGetFrameBufferSize_Ex(NTV2DeviceID boardID)
See Corvid 44 12G.
Definition: ntv2enums.h:31
See KONA 5.
Definition: ntv2enums.h:54
bool NTV2DeviceCanDoTCIndex(const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
bool NTV2DeviceCanDoColorCorrection(const NTV2DeviceID inDeviceID)
SDI 4 embedded VITC.
Definition: ntv2enums.h:3957
#define MAX_OF(__a__, __b__)
See KONA 5.
Definition: ntv2enums.h:59
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:228
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:224
UWord NTV2DeviceGetNumAnalogVideoOutputs(const NTV2DeviceID inDeviceID)
See KONA HDMI.
Definition: ntv2enums.h:68
Identifies SMPTE HD 2K1080p.
Definition: ntv2enums.h:173
See Corvid 44 12G.
Definition: ntv2enums.h:27
ULWord NTV2DeviceGetAudioFrameBuffer(NTV2DeviceID boardID, NTV2FrameGeometry inFrameGeometry, NTV2FrameBufferFormat frameFormat)
See 12-Bit Packed RGB.
Definition: ntv2enums.h:240
See Io Express.
Definition: ntv2enums.h:39
1920x1080, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:355
UWord NTV2DeviceGetNumVideoInputs(const NTV2DeviceID inDeviceID)
720x486, for NTSC 525i, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:357
See KONA LHi.
Definition: ntv2enums.h:79
bool NTV2DeviceCanDoLTCEmbeddedN(NTV2DeviceID boardID, UWord index0)
4096x2160, for 4K, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:369
NTV2Framesize
Kona2/Xena2 specific enums.
Definition: ntv2enums.h:2116
NTV2AudioSystem NTV2DeviceGetAudioMixerSystem(const NTV2DeviceID inDeviceID)
8192x4320, for 8K, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:373
UWord NTV2DeviceGetNumAudioSystems(const NTV2DeviceID inDeviceID)
10-Bit DPX Little-Endian
Definition: ntv2enums.h:238
See KONA 5.
Definition: ntv2enums.h:50
bool NTV2DeviceCanDo12GIn(NTV2DeviceID boardID, UWord index0)
Identifies SMPTE HD 1080i or 1080psf.
Definition: ntv2enums.h:167
Identifies Ultra-High-Definition (UHD)
Definition: ntv2enums.h:175
See KONA IP.
Definition: ntv2enums.h:72
Fractional rate of 30,000 frames per 1,001 seconds.
Definition: ntv2enums.h:419
bool NTV2DeviceCanDo12GOut(NTV2DeviceID boardID, UWord index0)
Identifies SMPTE SD 625i.
Definition: ntv2enums.h:170
bool NTV2DeviceCanDoOutputTCIndex(const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
bool NTV2DeviceCanDo12gRouting(const NTV2DeviceID inDeviceID)
2048x1080, for 2Kx1080p, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:361
Identifies 4K.
Definition: ntv2enums.h:176
bool NTV2DeviceCanDoStackedAudio(const NTV2DeviceID inDeviceID)
See KONA 5.
Definition: ntv2enums.h:64
bool NTV2DeviceHasSPIv2(const NTV2DeviceID inDeviceID)
See Corvid 22.
Definition: ntv2enums.h:23
#define AJAExport
Definition: export.h:33
NTV2FrameGeometry
Identifies a particular video frame geometry.
Definition: ntv2enums.h:348
720x576, for PAL 625i, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:354
See Corvid HEVC.
Definition: ntv2enums.h:35
SDI 2 embedded VITC 2.
Definition: ntv2enums.h:3973
60 frames per second
Definition: ntv2enums.h:415
UWord NTV2DeviceGetNumLUTs(const NTV2DeviceID inDeviceID)
15 frames per second
Definition: ntv2enums.h:428
10-Bit ARGB
Definition: ntv2enums.h:244
bool NTV2DeviceCanDo3GIn(NTV2DeviceID boardID, UWord index0)
SDI 4 embedded VITC 2.
Definition: ntv2enums.h:3975
SDI 7 embedded ATC LTC.
Definition: ntv2enums.h:3970
SDI 8 embedded VITC 2.
Definition: ntv2enums.h:3979
See 8-Bit ARGB, RGBA, ABGR Formats.
Definition: ntv2enums.h:225
SDI 6 embedded VITC.
Definition: ntv2enums.h:3963
720x486, for NTSC 525i and 525p60, NTV2_VANCMODE_OFF
Definition: ntv2enums.h:353
UWord NTV2DeviceGetNumHDMIAudioInputChannels(const NTV2DeviceID inDeviceID)
ULWord NTV2DeviceGetAudioFrameBuffer_Ex(NTV2DeviceID boardID)
ULWord NTV2DeviceGetFrameBufferSize(NTV2DeviceID id, NTV2FrameGeometry fg, NTV2FrameBufferFormat fbf)
See Io X3.
Definition: ntv2enums.h:43
Identifies high frame-rate 4K.
Definition: ntv2enums.h:178
uint16_t UWord
Definition: ajatypes.h:221
#define NTV2_IS_QUAD_FRAME_GEOMETRY(geom)
Definition: ntv2enums.h:385
UWord NTV2DeviceGetNumLTCOutputs(const NTV2DeviceID inDeviceID)
120 frames per second
Definition: ntv2enums.h:426
bool NTV2DeviceCanDoAudioN(const NTV2DeviceID devID, UWord index0)
See 48-Bit RGB.
Definition: ntv2enums.h:239
bool work_around_erroneous_compiler_warning(void)
See Corvid 44 12G.
Definition: ntv2enums.h:29
See Io IP.
Definition: ntv2enums.h:40
25 frames per second
Definition: ntv2enums.h:420
See Io 4K (UFC Mode).
Definition: ntv2enums.h:38
See Corvid, Corvid 3G.
Definition: ntv2enums.h:22
10-Bit YCbCrA
Definition: ntv2enums.h:237
See KONA 5.
Definition: ntv2enums.h:51
See Corvid 44.
Definition: ntv2enums.h:33
See Corvid 44 12G.
Definition: ntv2enums.h:28
SDI 5 embedded VITC 2.
Definition: ntv2enums.h:3976
enum NTV2OutputDestination NTV2OutputDest
UWord NTV2DeviceGetNumVideoOutputs(const NTV2DeviceID inDeviceID)
See 10-Bit RGB - DPX Format.
Definition: ntv2enums.h:230
ULWord NTV2DeviceGetAudioFrameBuffer2(NTV2DeviceID boardID, NTV2FrameGeometry inFrameGeometry, NTV2FrameBufferFormat frameFormat)
SDI 2 embedded ATC LTC.
Definition: ntv2enums.h:3959
bool NTV2DeviceCanDoVITC2(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetSPIFlashVersion(const NTV2DeviceID inDeviceID)
SDI 1 embedded ATC LTC.
Definition: ntv2enums.h:3958
See KONA X™.
Definition: ntv2enums.h:82
SDI 2 embedded VITC.
Definition: ntv2enums.h:3955
See Corvid 44.
Definition: ntv2enums.h:30
2048x1556, for 2Kx1556psf film format, NTV2_VANCMODE_TALL
Definition: ntv2enums.h:363
SDI 5 embedded VITC.
Definition: ntv2enums.h:3962
UWord NTV2DeviceGetNumHDMIAudioOutputChannels(const NTV2DeviceID inDeviceID)
See KONA 3G (UFC Mode).
Definition: ntv2enums.h:46
48 frames per second
Definition: ntv2enums.h:424
See KONA X™.
Definition: ntv2enums.h:80
SDI 7 embedded VITC 2.
Definition: ntv2enums.h:3978
bool NTV2DeviceCanDo292Out(NTV2DeviceID boardID, UWord index0)
See KONA 4 (UFC Mode).
Definition: ntv2enums.h:49
bool NTV2DeviceCanDoAudio8Channels(const NTV2DeviceID devID)
24 frames per second
Definition: ntv2enums.h:421
10-Bit Packed RGB
Definition: ntv2enums.h:243
UWord NTV2DeviceGetMaxAudioChannels(const NTV2DeviceID inDeviceID)
720x576, for PAL 625i, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:366
ULWord NTV2DeviceGetNumberFrameBuffers(NTV2DeviceID id, NTV2FrameGeometry fg, NTV2FrameBufferFormat fbf)
ULWord NTV2DeviceGetNumberVideoFrameBuffers(NTV2DeviceID inDeviceID, NTV2FrameGeometry inFrameGeometry, NTV2Framesize inFrameSize)
UWord NTV2DeviceGetNumAnalogAudioInputChannels(const NTV2DeviceID inDeviceID)
Contains implementations of NTV2DeviceCanDo... and NTV2DeviceGetNum... functions. This module is incl...
bool NTV2DeviceHasGenlockv3(const NTV2DeviceID devID)
bool NTV2DeviceCanDoInputTCIndex(const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
Declares device capability functions.
SDI 1 embedded VITC.
Definition: ntv2enums.h:3954
bool NTV2DeviceHasSPIv4(const NTV2DeviceID inDeviceID)
Fractional rate of 24,000 frames per 1,001 seconds.
Definition: ntv2enums.h:422
720x486, for NTSC 525i and 525p60, NTV2_VANCMODE_TALLER
Definition: ntv2enums.h:365
See KONA 5.
Definition: ntv2enums.h:52
See T-TAP Pro.
Definition: ntv2enums.h:94
See KONA IP25.
Definition: ntv2enums.h:74
bool NTV2DeviceGetVideoFormatFromState_Ex(NTV2VideoFormat *pOutValue, const NTV2FrameRate inFrameRate, const NTV2FrameGeometry inFrameGeometry, const NTV2Standard inStandard, const ULWord inIsSMPTE372Enabled, const bool inIsProgressivePicture)
bool NTV2DeviceCanDoOutputDestination(const NTV2DeviceID inDeviceID, const NTV2OutputDest inOutputDest)
SDI 7 embedded VITC.
Definition: ntv2enums.h:3964
See Corvid, Corvid 3G.
Definition: ntv2enums.h:25
See KONA 5.
Definition: ntv2enums.h:60
SDI 5 embedded ATC LTC.
Definition: ntv2enums.h:3968