AJA NTV2 SDK  18.1.0.2439
NTV2 SDK 18.1.0.2439
ntv2virtualregisters.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef NTV2VIRTUALREGISTERS_H
9 #define NTV2VIRTUALREGISTERS_H
10 
11 #include "ajatypes.h"
12 #define VIRTUALREG_START 10000 // Virtual registers start at register number 10000
13 #define MAX_NUM_VIRTUAL_REGISTERS 1024 // Starting in SDK 12.6, there's room for 1024 virtual registers
14 
23 typedef enum
24 {
25  // Common to all platforms
27 
28  // Windows platform custom section
29  kVRegAudioRecordPinDelay = VIRTUALREG_START+1, // Audio Delay relative to video, for Windows Media capture
30  kVRegRelativeVideoPlaybackDelay = VIRTUALREG_START+2, // Video Delay relative to audio, for Windows Media playback
31  kVRegGlobalAudioPlaybackMode = VIRTUALREG_START+3, // Shared with Linux, but not Mac
33  kVRegStrictTiming = VIRTUALREG_START+5, // Drift Correction requires Strict Frame Timing for Windows Media playback;Required for BackHaul;Correlate Presentation Time Stamp with Graph Clock;Turn off (default) to allow Playback even when Graph Manager gives us a Bogus Clcok!
34  kVRegCCPlayerBufSizeKB = VIRTUALREG_START+6, // NTV2CCPlayer: custom Anc buffer size (KiloBytes)
35  kVRegCCPlayerCustomPkt = VIRTUALREG_START+7, // NTV2CCPlayer: if nonzero, insert custom Anc pkt: DID|SID|lineNum
36  kVRegDriverType = VIRTUALREG_START+10, // Driver type: 0=normal (KEXT on macOS), 'DEXT' (macOS) or 'VDEV'
37 
38  // COMMON_VIRTUAL_REGS_KONA2
39  kVRegInputSelect = VIRTUALREG_START+20, // Input 1, Input 2, DualLink
40  kVRegSecondaryFormatSelect = VIRTUALREG_START+21, // NTV2VideoFormats
41  kVRegDigitalOutput1Select = VIRTUALREG_START+22, // Primary, Secondary
42  kVRegDigitalOutput2Select = VIRTUALREG_START+23, // Primary, Secondary, DualLink
43  kVRegAnalogOutputSelect = VIRTUALREG_START+24, // Primary, Secondary
44  kVRegAnalogOutputType = VIRTUALREG_START+25, // Analog output type
45  kVRegAnalogOutBlackLevel = VIRTUALREG_START+26, // Analog output black level
46  kVRegInputSelectUser = VIRTUALREG_START+27, // Input 1, Input 2, DualLink, set by user
47 
48  // COMMON_VIRTUAL_REGS_MISC
49  kVRegVideoOutPauseMode = VIRTUALREG_START+40, // whether we pause on a frame or a field
50  kVRegPulldownPattern = VIRTUALREG_START+41, // which 3:2 pulldown pattern to use
51  kVRegColorSpaceMode = VIRTUALREG_START+42, // which color space matrix (Rec601, Rec709, ...) to use
52  kVRegGammaMode = VIRTUALREG_START+43, // which gamma LUT (Rec601, Rec709, ...) to use
53  kVRegLUTType = VIRTUALREG_START+44, // the current LUT function loaded into hardware
54  kVRegRGB10Range = VIRTUALREG_START+45, // deprecated
55  kVRegRGB10Endian = VIRTUALREG_START+46, // the user selected 10-bit RGB endian
56  kVRegFanControl = VIRTUALREG_START+47, // the user fan control setting
57 
58  // Windows platform custom section
59  kVRegBitFileDownload = VIRTUALREG_START+50, // NTV2BitfileType
61  kVRegRecallRegistersFromRegistry = VIRTUALREG_START+52, // same address as above, on purpose
62  kVRegClearAllSubscriptions = VIRTUALREG_START+53, // Forcibly clear all subscribed event handles
64  kVRegAcquireReferenceCount = VIRTUALREG_START+55, // Acquire the board with a reference count on acquire
66 
67  kVRegDTAudioMux0 = VIRTUALREG_START+60, // Firmware desired
68  kVRegDTAudioMux1 = VIRTUALREG_START+61, // Firmware desired
69  kVRegDTAudioMux2 = VIRTUALREG_START+62, // Firmware desired
70  kVRegDTFirmware = VIRTUALREG_START+63, // Firmware desired
71  kVRegDTVersionAja = VIRTUALREG_START+64, // Driver version (Aja)
72  kVRegDTVersionDurian = VIRTUALREG_START+65, // Driver version (Durian)
73  kVRegDTAudioCapturePinConnected = VIRTUALREG_START+66, // Audio Capture Pin Connected ?
74 
75  kVRegTimeStampMode = VIRTUALREG_START+70, // 0-Scaled timestamps(100ns), 1- Raw PerformanceCounter
104 
105  kVRegDebug1 = VIRTUALREG_START+100, // general debug register
106  kVRegDebugLastFormat = VIRTUALREG_START+101, // IP debug registers
108 
109  // Control Panel virtual registers
120 
131 
133  kVRegHDMIOutRgbRange = VIRTUALREG_START+141, // See also kVRegHDMIOutRGBRange
142 
153 
164 
175 
180  kVRegApplicationPID = VIRTUALREG_START+184, // The rest of this section handled by IOCTL in Mac
190 
191 
192  // COMMON_VIRTUAL_REGS_PROCAMP_CONTROLS
201 
211 
212  // COMMON_VIRTUAL_REGS_USERSPACE_BUFFLEVEL
217 
218  // COMMON_VIRTUAL_REGS_EX
235 
236  // Macintosh platform custom section
242 
250  kVRegEnableQueuedDMAs = VIRTUALREG_START+313, // If non-zero, enables queued DMAs on multi-engine devices (Mac only)
251 
252  // Linux platform custom section
253  kVRegBA0MemorySize = VIRTUALREG_START+320, // Memory-mapped register (BAR0) window size in bytes.
254  kVRegBA1MemorySize = VIRTUALREG_START+321, // Memory-mapped framebuffer window size in bytes.
256  kVRegNumDmaDriverBuffers = VIRTUALREG_START+323, // Number of bigphysarea frames available (Read only).
257  kVRegDMADriverBufferPhysicalAddress = VIRTUALREG_START+324, // Physical address of bigphysarea buffer
259  kVRegAcquireLinuxReferenceCount = VIRTUALREG_START+326, // Acquire the board with a reference count on acquire
261 
262  // IoHD virtual registers
263  kVRegAdvancedIndexing = VIRTUALREG_START+340, // OBSOLETE after 12.4
276 
279 
284 
286 
293 
294  kVRegResetCycleCount = VIRTUALREG_START+366, // counts the number of device resets caused by plug-and-play or sleep, increments each time
295  kVRegUseProgressive = VIRTUALREG_START+367, // when an option (e.g. Avid MC) choose P over PSF formats
296 
297  kVRegFlashSize = VIRTUALREG_START+368, // size of the flash partition for flash status
298  kVRegFlashStatus = VIRTUALREG_START+369, // progress of flash patition
299  kVRegFlashState = VIRTUALREG_START+370, // state status of flash
300 
301  kVRegPCIDeviceID = VIRTUALREG_START+371, // set by driver (read only)
302 
304 
305  kVRegEFTNeedsUpdating = VIRTUALREG_START+373, // set when any retail virtual register has been changed
306 
307  kVRegSuspendSystemAudio = VIRTUALREG_START+374, // set when app wants to use AC audio and disable host audio (e.g., CoreAudio on MacOS)
309 
311 
313  kVRegServicesInitialized = VIRTUALREG_START+378, // set true when device is initialized by services
314 
316 
318  // kVRegChannelCrosspointFirst+1
319  // kVRegChannelCrosspointFirst+2
320  // kVRegChannelCrosspointFirst+3
321  // kVRegChannelCrosspointFirst+4
322  // kVRegChannelCrosspointFirst+5
323  // kVRegChannelCrosspointFirst+6
324  kVRegChannelCrosspointLast = VIRTUALREG_START+387, // kVRegChannelCrosspointFirst+7
325 
326  // Starting in SDK 13.0, kVRegDriverVersionMajor, kVRegDriverVersionMinor and kVRegDriverVersionPoint
327  // were all replaced by a single virtual register kVRegDriverVersion.
331 
335 
341 
350 
351  // SWDevice
352  kVRegSWDevMasterRunning = VIRTUALREG_START+410, // SWDevice master running if incrementing over time
353  kVRegSWDevMasterPIDLo = VIRTUALREG_START+411, // SWDevice master PID (LS 32 bits)
354  kVRegSWDevMasterPIDHi = VIRTUALREG_START+412, // SWDevice master PID (MS 32 bits)
355  kVRegSWDevMasterRecordVideo = VIRTUALREG_START+413, // SWDevice master: bits 0-7 (record output chl 1-8), 8-15 (record input chl 1-8)
356  kVRegSWDevMasterRecordAudio = VIRTUALREG_START+414, // SWDevice master: bits 0-7 (record AudSys 1-8 output), 8-15 (record AudSys 1-8 input), bit 31 (record .wav file)
357  kVRegSWDevMasterRecordAnc = VIRTUALREG_START+415, // SWDevice master: bits 0-7 (record AncIns 1-8), 8-15 (record AncExt 1-8)
358  kVRegSWDevMasterRecordTM = VIRTUALREG_START+416, // SWDevice master: telemetry recording bits
359  kVRegSWDevMasterAudChPairChgInterval = VIRTUALREG_START+417, // SWDevice master: if non-zero, input VBI interval for changing audio chl pair detect pattern
360  kVRegSWDevReadyRegNum = VIRTUALREG_START+418, // SWDevice: register number to check if software/virtual device "is ready"
361 #if 0 // IoIP/KonaIP10g purge
362  // Sarek VOIP section
363  kVRegIPAddrEth0 = VIRTUALREG_START+409,
364  kVRegSubnetEth0 = VIRTUALREG_START+410,
365  kVRegGatewayEth0 = VIRTUALREG_START+411,
366 
367  kVRegIPAddrEth1 = VIRTUALREG_START+412,
368  kVRegSubnetEth1 = VIRTUALREG_START+413,
369  kVRegGatewayEth1 = VIRTUALREG_START+414,
370 
371  kVRegRxcEnable1 = VIRTUALREG_START+415,
372  kVRegRxcSfp1RxMatch1 = VIRTUALREG_START+416,
373  kVRegRxcSfp1SourceIp1 = VIRTUALREG_START+417,
374  kVRegRxcSfp1DestIp1 = VIRTUALREG_START+418,
375  kVRegRxcSfp1SourcePort1 = VIRTUALREG_START+419,
376  kVRegRxcSfp1DestPort1 = VIRTUALREG_START+420,
377  kVRegRxcSfp1Vlan1 = VIRTUALREG_START+421,
378  kVRegRxcSfp2RxMatch1 = VIRTUALREG_START+422,
379  kVRegRxcSfp2SourceIp1 = VIRTUALREG_START+423,
380  kVRegRxcSfp2DestIp1 = VIRTUALREG_START+424,
381  kVRegRxcSfp2SourcePort1 = VIRTUALREG_START+425,
382  kVRegRxcSfp2DestPort1 = VIRTUALREG_START+426,
383  kVRegRxcSfp2Vlan1 = VIRTUALREG_START+427,
384  kVRegRxcSsrc1 = VIRTUALREG_START+428,
385  kVRegRxcPlayoutDelay1 = VIRTUALREG_START+429,
386 
387  kVRegRxcEnable2 = VIRTUALREG_START+430,
388  kVRegRxcSfp1RxMatch2 = VIRTUALREG_START+431,
389  kVRegRxcSfp1SourceIp2 = VIRTUALREG_START+432,
390  kVRegRxcSfp1DestIp2 = VIRTUALREG_START+433,
391  kVRegRxcSfp1SourcePort2 = VIRTUALREG_START+434,
392  kVRegRxcSfp1DestPort2 = VIRTUALREG_START+435,
393  kVRegRxcSfp1Vlan2 = VIRTUALREG_START+436,
394  kVRegRxcSfp2RxMatch2 = VIRTUALREG_START+437,
395  kVRegRxcSfp2SourceIp2 = VIRTUALREG_START+438,
396  kVRegRxcSfp2DestIp2 = VIRTUALREG_START+439,
397  kVRegRxcSfp2SourcePort2 = VIRTUALREG_START+440,
398  kVRegRxcSfp2DestPort2 = VIRTUALREG_START+441,
399  kVRegRxcSfp2Vlan2 = VIRTUALREG_START+442,
400  kVRegRxcSsrc2 = VIRTUALREG_START+443,
401  kVRegRxcPlayoutDelay2 = VIRTUALREG_START+444,
402 
403  kVRegTxcEnable3 = VIRTUALREG_START+445,
404  kVRegTxcSfp1LocalPort3 = VIRTUALREG_START+446,
405  kVRegTxcSfp1RemoteIp3 = VIRTUALREG_START+447,
406  kVRegTxcSfp1RemotePort3 = VIRTUALREG_START+448,
407  kVRegTxcSfp2LocalPort3 = VIRTUALREG_START+449,
408  kVRegTxcSfp2RemoteIp3 = VIRTUALREG_START+450,
409  kVRegTxcSfp2RemotePort3 = VIRTUALREG_START+451,
410 
411  kVRegTxcEnable4 = VIRTUALREG_START+452,
412  kVRegTxcSfp1LocalPort4 = VIRTUALREG_START+453,
413  kVRegTxcSfp1RemoteIp4 = VIRTUALREG_START+454,
414  kVRegTxcSfp1RemotePort4 = VIRTUALREG_START+455,
415  kVRegTxcSfp2LocalPort4 = VIRTUALREG_START+456,
416  kVRegTxcSfp2RemoteIp4 = VIRTUALREG_START+457,
417  kVRegTxcSfp2RemotePort4 = VIRTUALREG_START+458,
418 #endif // IoIP/KonaIP10g purge
422  kVRegMailBoxTimeoutNS = VIRTUALREG_START+462, // Units are 100 ns, not nanoseconds!
423 #if 0 // IoIP/KonaIP10g purge
424  kVRegRxc_2DecodeSelectionMode1 = VIRTUALREG_START+463,
425  kVRegRxc_2DecodeProgramNumber1 = VIRTUALREG_START+464,
426  kVRegRxc_2DecodeProgramPID1 = VIRTUALREG_START+465,
427  kVRegRxc_2DecodeAudioNumber1 = VIRTUALREG_START+466,
428 
429  kVRegRxc_2DecodeSelectionMode2 = VIRTUALREG_START+467,
430  kVRegRxc_2DecodeProgramNumber2 = VIRTUALREG_START+468,
431  kVRegRxc_2DecodeProgramPID2 = VIRTUALREG_START+469,
432  kVRegRxc_2DecodeAudioNumber2 = VIRTUALREG_START+470,
433 
434  kVRegTxc_2EncodeVideoFormat1 = VIRTUALREG_START+471,
435  kVRegTxc_2EncodeUllMode1 = VIRTUALREG_START+472,
436  kVRegTxc_2EncodeBitDepth1 = VIRTUALREG_START+473,
437  kVRegTxc_2EncodeChromaSubSamp1 = VIRTUALREG_START+474,
438  kVRegTxc_2EncodeMbps1 = VIRTUALREG_START+475,
439  kVRegTxc_2EncodeAudioChannels1 = VIRTUALREG_START+476,
440  kVRegTxc_2EncodeStreamType1 = VIRTUALREG_START+477,
441  kVRegTxc_2EncodeProgramPid1 = VIRTUALREG_START+478,
442  kVRegTxc_2EncodeVideoPid1 = VIRTUALREG_START+479,
443  kVRegTxc_2EncodePcrPid1 = VIRTUALREG_START+480,
444  kVRegTxc_2EncodeAudio1Pid1 = VIRTUALREG_START+481,
445 
446  kVRegTxc_2EncodeVideoFormat2 = VIRTUALREG_START+482,
447  kVRegTxc_2EncodeUllMode2 = VIRTUALREG_START+483,
448  kVRegTxc_2EncodeBitDepth2 = VIRTUALREG_START+484,
449  kVRegTxc_2EncodeChromaSubSamp2 = VIRTUALREG_START+485,
450  kVRegTxc_2EncodeMbps2 = VIRTUALREG_START+486,
451  kVRegTxc_2EncodeAudioChannels2 = VIRTUALREG_START+487,
452  kVRegTxc_2EncodeStreamType2 = VIRTUALREG_START+488,
453  kVRegTxc_2EncodeProgramPid2 = VIRTUALREG_START+489,
454  kVRegTxc_2EncodeVideoPid2 = VIRTUALREG_START+490,
455  kVRegTxc_2EncodePcrPid2 = VIRTUALREG_START+491,
456  kVRegTxc_2EncodeAudio1Pid2 = VIRTUALREG_START+492,
457 
458  kVReg2022_7Enable = VIRTUALREG_START+493,
459  kVReg2022_7NetworkPathDiff = VIRTUALREG_START+494,
460 
461  kVRegKIPRxCfgError = VIRTUALREG_START+495,
462  kVRegKIPTxCfgError = VIRTUALREG_START+496,
463  kVRegKIPEncCfgError = VIRTUALREG_START+497,
464  kVRegKIPDecCfgError = VIRTUALREG_START+498,
465  kVRegKIPNetCfgError = VIRTUALREG_START+499,
466 #endif // IoIP/KonaIP10g purge
469 
487 
490 
493 
497 
498  kVRegServicesForceInit = VIRTUALREG_START+528, // set true when power state changes
500 
507 
511 
515 
519 
523 
527 
531 
535 
539 
556 
558 
562 
579 
588 
596 
632  kVRegDynFirmwareUpdateCounts = VIRTUALREG_START+643, // MS 16 bits: # attempts; LS 16 bits: # successful
635 
636  // These replace the hardware registers for hdmi output version >= 6
637  kVRegHDMIOutControl1 = VIRTUALREG_START+646, // kRegHDMIOutControl 125
638  kVRegHDMIInputStatus1 = VIRTUALREG_START+647, // kRegHDMIInputStatus 126
639  kVRegHDMIInputControl1 = VIRTUALREG_START+648, // kRegHDMIInputControl 127
640 // kVRegHDMIOutStatus1 = VIRTUALREG_START+641, // Already defined above...
648 
660 
672 
684 
689 
694 
699 
704 
709 
714 
719 
724 
725  // channel default key signal
734 
735  // sdi out key signal override
744 
748 
750 
751 typedef enum
752 {
756  kVRegMaskHDMIInEOTF = BIT(11)+BIT(10)+BIT(9)+BIT(8),
768 
769  kVRegMaskSDIOutVPIDValue = BIT(0)+BIT(1)+BIT(2)+BIT(3)+BIT(4)+BIT(5)+BIT(6)+BIT(7)+BIT(8)+BIT(9)+BIT(10)+BIT(11)+BIT(12)+BIT(13)+BIT(14)+BIT(15),
772 
773 typedef enum
774 {
790 
794 
795 #endif // NTV2VIRTUALREGISTERS_H
Anc Field2 byte offset from end of frame buffer (GUMP on all boards except RTP for SMPTE2022/IP) ...
#define BIT(_x_)
Definition: ajatypes.h:496
NTV2VirtualRegisterShifts
The last AJA virtual register slot.
NTV2VirtualRegisterMasks
Anc Field1 byte offset from end of frame buffer (GUMP on all boards except RTP for SMPTE2022/IP) ...
Last virtual register slot.
The first virtual register slot available for general use.
Monitor Anc Field2 byte offset from end of frame buffer (IoIP only, GUMP)
Declares the most fundamental data types used by NTV2. Since Windows NT was the first principal devel...
#define VIRTUALREG_START
#define MAX_NUM_VIRTUAL_REGISTERS
Monitor Anc Field1 byte offset from end of frame buffer (IoIP only, GUMP)
VirtualRegisterNum
Virtual registers are used to pass 32-bit values to/from the device driver, independent of hardware r...
enum VirtualRegisterNum NTV2VirtualRegisters
Packed driver version – use NTV2DriverVersionEncode, NTV2DriverVersionDecode* macros to encode/decod...