AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
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 
26 typedef enum
27 {
28  // Common to all platforms
30 
31  // Windows platform custom section
32  kVRegAudioRecordPinDelay = VIRTUALREG_START+1, // Audio Delay relative to video, for Windows Media capture
33  kVRegRelativeVideoPlaybackDelay = VIRTUALREG_START+2, // Video Delay relative to audio, for Windows Media playback
34  kVRegGlobalAudioPlaybackMode = VIRTUALREG_START+3, // Shared with Linux, but not Mac
36  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!
37  kVRegCCPlayerBufSizeKB = VIRTUALREG_START+6, // NTV2CCPlayer: custom Anc buffer size (KiloBytes)
38  kVRegCCPlayerCustomPkt = VIRTUALREG_START+7, // NTV2CCPlayer: if nonzero, insert custom Anc pkt: DID|SID|lineNum
39  kVRegDriverType = VIRTUALREG_START+10, // Driver type (MacOS only: 0 == KEXT, 'DEXT' == DEXT)
40  kVRegVDevReadyRegNum = VIRTUALREG_START+11, // Register number to check if virtual device "is ready"
41 
42  // COMMON_VIRTUAL_REGS_KONA2
43  kVRegInputSelect = VIRTUALREG_START+20, // Input 1, Input 2, DualLink
44  kVRegSecondaryFormatSelect = VIRTUALREG_START+21, // NTV2VideoFormats
45  kVRegDigitalOutput1Select = VIRTUALREG_START+22, // Primary, Secondary
46  kVRegDigitalOutput2Select = VIRTUALREG_START+23, // Primary, Secondary, DualLink
47  kVRegAnalogOutputSelect = VIRTUALREG_START+24, // Primary, Secondary
48  kVRegAnalogOutputType = VIRTUALREG_START+25, // Analog output type
49  kVRegAnalogOutBlackLevel = VIRTUALREG_START+26, // Analog output black level
50  kVRegInputSelectUser = VIRTUALREG_START+27, // Input 1, Input 2, DualLink, set by user
51 
52  // COMMON_VIRTUAL_REGS_MISC
53  kVRegVideoOutPauseMode = VIRTUALREG_START+40, // whether we pause on a frame or a field
54  kVRegPulldownPattern = VIRTUALREG_START+41, // which 3:2 pulldown pattern to use
55  kVRegColorSpaceMode = VIRTUALREG_START+42, // which color space matrix (Rec601, Rec709, ...) to use
56  kVRegGammaMode = VIRTUALREG_START+43, // which gamma LUT (Rec601, Rec709, ...) to use
57  kVRegLUTType = VIRTUALREG_START+44, // the current LUT function loaded into hardware
58  kVRegRGB10Range = VIRTUALREG_START+45, // deprecated
59  kVRegRGB10Endian = VIRTUALREG_START+46, // the user selected 10-bit RGB endian
60  kVRegFanControl = VIRTUALREG_START+47, // the user fan control setting
61 
62  // Windows platform custom section
63  kVRegBitFileDownload = VIRTUALREG_START+50, // NTV2BitfileType
65  kVRegRecallRegistersFromRegistry = VIRTUALREG_START+52, // same address as above, on purpose
68  kVRegAcquireReferenceCount = VIRTUALREG_START+55, // Acquire the board with a reference count on acquire
70 
71  kVRegDTAudioMux0 = VIRTUALREG_START+60, // Firmware desired
72  kVRegDTAudioMux1 = VIRTUALREG_START+61, // Firmware desired
73  kVRegDTAudioMux2 = VIRTUALREG_START+62, // Firmware desired
74  kVRegDTFirmware = VIRTUALREG_START+63, // Firmware desired
75  kVRegDTVersionAja = VIRTUALREG_START+64, // Driver version (Aja)
76  kVRegDTVersionDurian = VIRTUALREG_START+65, // Driver version (Durian)
77  kVRegDTAudioCapturePinConnected = VIRTUALREG_START+66, // Audio Capture Pin Connected ?
78 
79  kVRegTimeStampMode = VIRTUALREG_START+70, // 0-Scaled timestamps(100ns), 1- Raw PerformanceCounter
91  kVRegSyncChannels = VIRTUALREG_START+81, // Windows and Linux name for the same thing
109 
110  kVRegDebug1 = VIRTUALREG_START+100, // general debug register
111  kVRegDebugLastFormat = VIRTUALREG_START+101, // IP debug registers
113 
114  // Control Panel virtual registers
125 
136 
138  kVRegHDMIOutRgbRange = VIRTUALREG_START+141, // See also kVRegHDMIOutRGBRange
147 
158 
169 
180 
185  kVRegApplicationPID = VIRTUALREG_START+184, // The rest of this section handled by IOCTL in Mac
195 
196 
197  // COMMON_VIRTUAL_REGS_PROCAMP_CONTROLS
206 
216 
217  // COMMON_VIRTUAL_REGS_USERSPACE_BUFFLEVEL
222 
223  // COMMON_VIRTUAL_REGS_EX
240 
241  // Macintosh platform custom section
247 
255  kVRegEnableQueuedDMAs = VIRTUALREG_START+313, // If non-zero, enables queued DMAs on multi-engine devices (Mac only)
256 
257  // Linux platform custom section
258  kVRegBA0MemorySize = VIRTUALREG_START+320, // Memory-mapped register (BAR0) window size in bytes.
259  kVRegBA1MemorySize = VIRTUALREG_START+321, // Memory-mapped framebuffer window size in bytes.
261  kVRegNumDmaDriverBuffers = VIRTUALREG_START+323, // Number of bigphysarea frames available (Read only).
262  kVRegDMADriverBufferPhysicalAddress = VIRTUALREG_START+324, // Physical address of bigphysarea buffer
264  kVRegAcquireLinuxReferenceCount = VIRTUALREG_START+326, // Acquire the board with a reference count on acquire
266 
267  // IoHD virtual registers
268  kVRegAdvancedIndexing = VIRTUALREG_START+340, // OBSOLETE after 12.4
281 
284 
289 
291 
298 
299  kVRegResetCycleCount = VIRTUALREG_START+366, // counts the number of device resets caused by plug-and-play or sleep, increments each time
300  kVRegUseProgressive = VIRTUALREG_START+367, // when an option (e.g. Avid MC) choose P over PSF formats
301 
302  kVRegFlashSize = VIRTUALREG_START+368, // size of the flash partition for flash status
303  kVRegFlashStatus = VIRTUALREG_START+369, // progress of flash patition
304  kVRegFlashState = VIRTUALREG_START+370, // state status of flash
305 
306  kVRegPCIDeviceID = VIRTUALREG_START+371, // set by driver (read only)
307 
309 
310  kVRegEFTNeedsUpdating = VIRTUALREG_START+373, // set when any retail virtual register has been changed
311 
312  kVRegSuspendSystemAudio = VIRTUALREG_START+374, // set when app wants to use AC audio and disable host audio (e.g., CoreAudio on MacOS)
314 
316 
318  kVRegServicesInitialized = VIRTUALREG_START+378, // set true when device is initialized by services
319 
321 
323  // kVRegChannelCrosspointFirst+1
324  // kVRegChannelCrosspointFirst+2
325  // kVRegChannelCrosspointFirst+3
326  // kVRegChannelCrosspointFirst+4
327  // kVRegChannelCrosspointFirst+5
328  // kVRegChannelCrosspointFirst+6
329  kVRegChannelCrosspointLast = VIRTUALREG_START+387, // kVRegChannelCrosspointFirst+7
330 
331  // Starting in SDK 13.0, kVRegDriverVersionMajor, kVRegDriverVersionMinor and kVRegDriverVersionPoint
332  // were all replaced by a single virtual register kVRegDriverVersion.
336 
341 
347 
356 
357  // Sarek VOIP section
361 
365 
381 
397 
405 
413 
417  kVRegMailBoxTimeoutNS = VIRTUALREG_START+462, // Units are 100 ns, not nanoseconds!
418 
423 
428 
440 
452 
455 
463 
465 
484 
487 
490 
494 
495  kVRegServicesForceInit = VIRTUALREG_START+528, // set true when power state changes
497 
504 
508 
512 
516 
520 
524 
528 
532 
536 
553 
555 
559 
576 
585 
593 
629  kVRegDynFirmwareUpdateCounts = VIRTUALREG_START+643, // MS 16 bits: # attempts; LS 16 bits: # successful
632 
633  // These replace the hardware registers for hdmi output version >= 6
634  kVRegHDMIOutControl1 = VIRTUALREG_START+646, // kRegHDMIOutControl 125
635  kVRegHDMIInputStatus1 = VIRTUALREG_START+647, // kRegHDMIInputStatus 126
636  kVRegHDMIInputControl1 = VIRTUALREG_START+648, // kRegHDMIInputControl 127
637 // kVRegHDMIOutStatus1 = VIRTUALREG_START+641, // Already defined above...
645 
657 
669 
681 
686 
691 
696 
701 
706 
711 
716 
721 
722  // channel default key signal
731 
732  // sdi out key signal override
741 
745 
747 
748 typedef enum
749 {
753  kVRegMaskHDMIInEOTF = BIT(11)+BIT(10)+BIT(9)+BIT(8),
765 
766  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),
769 
770 typedef enum
771 {
787 
791 
792 #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:578
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, and aren't always associa...
enum VirtualRegisterNum NTV2VirtualRegisters
Packed driver version – use NTV2DriverVersionEncode, NTV2DriverVersionDecode* macros to encode/decod...