AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ntv2winpublicinterface.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
7 #ifndef NTV2WINPUBLICINTERFACE_H
8 #define NTV2WINPUBLICINTERFACE_H
9 
10 
11 //This file includes all the necessary defines, enums etc... to access the
12 //AJA Video custom kernel streaming property set(s)
13 
14 #include "ntv2publicinterface.h"
15 #include "ks.h"
16 
17 #ifdef KSD
18 //{3280A641-5159-4f43-B55D-E05ABB47C350}
19 #define STATIC_AJAVIDEO_PROPSET\
20  0x3280A641L, 0x5159, 0x4f43, 0xB5, 0x5D, 0xE0, 0x5A, 0xBB, 0x47, 0xC3, 0x50
21 DEFINE_GUIDSTRUCT("3280A641-5159-4f43-B55D-E05ABB47C350", AJAVIDEO_PROPSET);
22 #define AJAVIDEO_PROPSET DEFINE_GUIDNAMED(AJAVIDEO_PROPSET)
23 
24 
25 
26 #elif defined KHD
27 
28 //{84963F56-67FC-461c-8040-CC891B87195B}
29 #define STATIC_AJAVIDEO_PROPSET\
30  0x84963f56, 0x67fc, 0x461c, 0x80, 0x40, 0xcc, 0x89, 0x1b, 0x87, 0x19, 0x5b
31 DEFINE_GUIDSTRUCT("84963F56-67FC-461c-8040-CC891B87195B", AJAVIDEO_PROPSET);
32 #define AJAVIDEO_PROPSET DEFINE_GUIDNAMED(AJAVIDEO_PROPSET)
33 
34 #elif defined XENA2
35 
36 // {2BFA1669-17F7-4cf9-8E05-500B8CB81497}
37 #define STATIC_AJAVIDEO_PROPSET\
38  0x2bfa1669, 0x17f7, 0x4cf9, 0x8e, 0x5, 0x50, 0xb, 0x8c, 0xb8, 0x14, 0x97
39 DEFINE_GUIDSTRUCT("2BFA1669-17F7-4cf9-8E05-500B8CB81497", AJAVIDEO_PROPSET);
40 #define AJAVIDEO_PROPSET DEFINE_GUIDNAMED(AJAVIDEO_PROPSET)
41 
42 #endif
43 
44 #define IOCTL_AJAPROPS_GETSETREGISTER CTL_CODE(FILE_DEVICE_UNKNOWN, 0x600, METHOD_BUFFERED, FILE_ANY_ACCESS)
45 #define IOCTL_AJAPROPS_GETSETLOGLEVEL CTL_CODE(FILE_DEVICE_UNKNOWN, 0x601, METHOD_BUFFERED, FILE_ANY_ACCESS)
46 #define IOCTL_AJAPROPS_MAPMEMORY CTL_CODE(FILE_DEVICE_UNKNOWN, 0x602, METHOD_BUFFERED, FILE_ANY_ACCESS)
47 #define IOCTL_AJAPROPS_INTERRUPTS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x603, METHOD_BUFFERED, FILE_ANY_ACCESS)
48 #define IOCTL_AJAPROPS_SUBSCRIPTIONS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x604, METHOD_BUFFERED, FILE_ANY_ACCESS)
49 #define IOCTL_AJAPROPS_DMA CTL_CODE(FILE_DEVICE_UNKNOWN, 0x605, METHOD_BUFFERED, FILE_ANY_ACCESS)
50 #define IOCTL_AJAPROPS_AUTOCIRC_CONTROL CTL_CODE(FILE_DEVICE_UNKNOWN, 0x606, METHOD_BUFFERED, FILE_ANY_ACCESS)
51 #define IOCTL_AJAPROPS_AUTOCIRC_STATUS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x607, METHOD_BUFFERED, FILE_ANY_ACCESS)
52 #define IOCTL_AJAPROPS_AUTOCIRC_FRAME CTL_CODE(FILE_DEVICE_UNKNOWN, 0x608, METHOD_BUFFERED, FILE_ANY_ACCESS)
53 #define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER CTL_CODE(FILE_DEVICE_UNKNOWN, 0x609, METHOD_BUFFERED, FILE_ANY_ACCESS)
54 #define IOCTL_AJAPROPS_DT_CONFIGURE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x60A, METHOD_BUFFERED, FILE_ANY_ACCESS)
55 #define IOCTL_AJAPROPS_NEWSUBSCRIPTIONS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x60B, METHOD_BUFFERED, FILE_ANY_ACCESS)
56 #define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX CTL_CODE(FILE_DEVICE_UNKNOWN, 0x60C, METHOD_BUFFERED, FILE_ANY_ACCESS)
57 #define IOCTL_AJAPROPS_DMA_EX CTL_CODE(FILE_DEVICE_UNKNOWN, 0x60D, METHOD_BUFFERED, FILE_ANY_ACCESS)
58 #define IOCTL_AJAPROPS_AUTOCIRC_TRANSFER_EX2 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x60E, METHOD_BUFFERED, FILE_ANY_ACCESS)
59 #define IOCTL_AJAPROPS_AUTOCIRC_FRAME_EX2 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x60F, METHOD_BUFFERED, FILE_ANY_ACCESS)
60 #define IOCTL_AJAPROPS_AUTOCIRC_CAPTURE_TASK CTL_CODE(FILE_DEVICE_UNKNOWN, 0x610, METHOD_BUFFERED, FILE_ANY_ACCESS)
61 #define IOCTL_AJAPROPS_GETSETBITFILEINFO CTL_CODE(FILE_DEVICE_UNKNOWN, 0x611, METHOD_BUFFERED, FILE_ANY_ACCESS)
62 #define IOCTL_AJAPROPS_AUTOCIRC_CONTROL_EX CTL_CODE(FILE_DEVICE_UNKNOWN, 0x612, METHOD_BUFFERED, FILE_ANY_ACCESS)
63 #define IOCTL_AJAPROPS_DMA_P2P CTL_CODE(FILE_DEVICE_UNKNOWN, 0x613, METHOD_BUFFERED, FILE_ANY_ACCESS)
64 #define IOCTL_AJANTV2_MESSAGE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x614, METHOD_BUFFERED, FILE_ANY_ACCESS)
65 #define IOCTL_AJAHEVC_MESSAGE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x615, METHOD_BUFFERED, FILE_ANY_ACCESS)
66 
67 
68 
69  // Explicit values are attached to these values,
70  // to try to prevent anyone inadvertently changing old members (risking incompatibility with older apps)
71  // when adding new members!
72 typedef enum {
84  KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS = 0x0B, // needed for 64 bit windows.
90  KSPROPERTY_AJAPROPS_GETSETBITFILEINFO = 0x011, // attempt to maintain compatibility between application and driver versions.
93 
94  // DURIAN
101 
102 
104 
105 typedef struct { //this is the structure used for the KSPROPERTY_AJAPROPS_GETSETREGISTER property.
106  KSPROPERTY Property;
107  ULONG RegisterID; // ID of the targeted register.
108  ULONG ulRegisterValue; // For Read, set by the driver on the way out, for Write set by the requestor on the way in!
109  ULONG ulRegisterMask; // For post AND
110  ULONG ulRegisterShift; // For pre OR
112 
113 //add any other required structures for other properties here!
114 
115 // Structure used to request an address range for memory mapping
116 typedef enum _MAP_MEMORY_TYPE {
121 
122 typedef struct {
123  void* Address;
126 
127 typedef struct {
131 
132 // Memory map property structure - includes MAP_MEMORY structure
133 typedef struct {
134  KSPROPERTY Property; // boilerplate Properties stuff
135  MAP_MEMORY mapMemory; // set by kernel if mapping, set by user if unmapping
136  UByte bMapType; // true if un/map registers (BA0), false if un/map framebuffer (BA1)
138 
139 // Memory map property structure - includes MAP_MEMORY structure
140 typedef struct {
141  KSPROPERTY Property; // boilerplate Properties stuff
142  MAP_MEMORY_32 mapMemory; // set by kernel if mapping, set by user if unmapping
143  UByte bMapType; // true if un/map registers (BA0), false if un/map framebuffer (BA1)
145 
146 // Interrupt property structure - includes INTERRUPT_ENUMS
147 typedef struct {
148  KSPROPERTY Property; // boilerplate Properties stuff
149  ULONG ulMask; // used only by GetCurrentInterruptMask()
150  INTERRUPT_ENUMS eInterrupt; // specifies the interrupt type
152 
153 
155 // Subscription property structure - includes INTERRUPT_ENUMS
156 typedef struct {
157  KSPROPERTY Property; // boilerplate Properties stuff
158  HANDLE * pHandle; // address of userspace created notification event
159  INTERRUPT_ENUMS eInterrupt; // specifies subscription type
160  ULONG ulIntCount; // set by kernel in method getInterruptCount()
162 
163 typedef struct {
164  KSPROPERTY Property; // boilerplate Properties stuff
165  HANDLE * POINTER_32 pHandle; // address of userspace created notification event
166  INTERRUPT_ENUMS eInterrupt; // specifies subscription type
167  ULONG ulIntCount; // set by kernel in method getInterruptCount()
169 
171 // New Subscription property structure - includes INTERRUPT_ENUMS
173 typedef struct {
174  KSPROPERTY Property; // boilerplate Properties stuff
175  HANDLE Handle; // address of userspace created notification event
176  INTERRUPT_ENUMS eInterrupt; // specifies subscription type
177  ULONG ulIntCount; // set by kernel in method getInterruptCount()
179 
180 typedef struct {
181  KSPROPERTY Property; // boilerplate Properties stuff
182  VOID * POINTER_32 Handle; // address of userspace created notification event
183  INTERRUPT_ENUMS eInterrupt; // specifies subscription type
184  ULONG ulIntCount; // set by kernel in method getInterruptCount()
186 
188 // DMA
189 
190 typedef struct {
191  KSPROPERTY Property; // boilerplate Properties stuff
193  PVOID pvVidUserVa; // void pointer to user virtual address
195  ULWord ulVidNumBytes; // transfer size in bytes
196  ULWord ulFrameOffset; // offset into frame to start transfer
200  bool bSync; // if true, block in kernel until DMA complete
202 
203 typedef struct {
204  KSPROPERTY Property; // boilerplate Properties stuff
206  void* POINTER_32 pvVidUserVa; // void pointer to user virtual address
208  ULWord ulVidNumBytes; // transfer size in bytes
209  ULWord ulFrameOffset; // offset into frame to start transfer
213  bool bSync; // if true, block in kernel until DMA complete
215 
216 typedef struct {
217  KSPROPERTY Property; // boilerplate Properties stuff
219  PVOID pvVidUserVa; // void pointer to user virtual address
221  ULWord ulVidNumBytes; // transfer size in bytes
222  ULWord ulFrameOffset; // offset into frame to start transfer
229  bool bSync; // if true, block in kernel until DMA complete
231 
232 typedef struct {
233  KSPROPERTY Property; // boilerplate Properties stuff
235  void* POINTER_32 pvVidUserVa; // void pointer to user virtual address
237  ULWord ulVidNumBytes; // transfer size in bytes
238  ULWord ulFrameOffset; // offset into frame to start transfer
245  bool bSync; // if true, block in kernel until DMA complete
247 
248 typedef struct {
249  KSPROPERTY Property; // boilerplate Properties stuff
250  NTV2DMAEngine dmaEngine; // engine for transfer
251  NTV2Channel dmaChannel; // frame buffer channel for message
252  ULWord ulFrameNumber; // frame number for target/transfer
253  ULWord ulFrameOffset; // offset into frame to start transfer
254  ULWord ulVidNumBytes; // transfer size in bytes
255  ULWord ulVidNumSegments; // number of video segments to transfer
256  ULWord ulVidSegmentHostPitch; // segment host pitch
257  ULWord ulVidSegmentCardPitch; // segment card pitch
258  ULWord64 ullVideoBusAddress; // frame buffer bus address
259  ULWord64 ullMessageBusAddress; // message register bus address (0 if not required)
260  ULWord ulVideoBusSize; // size of the video aperture (bytes)
261  ULWord ulMessageData; // message data (write to message bus address to complete video transfer)
263 
265 // AutoCirculate
267 
269 // Control
270 typedef struct {
271  KSPROPERTY Property;
277  bool bVal1;
278  bool bVal2;
279  bool bVal3;
280  bool bVal4;
281  bool bVal5;
282  bool bVal6;
283  bool bVal7;
284  bool bVal8;
286 
287 typedef struct {
288  KSPROPERTY Property;
301  bool bVal1;
302  bool bVal2;
303  bool bVal3;
304  bool bVal4;
305  bool bVal5;
306  bool bVal6;
307  bool bVal7;
308  bool bVal8;
309  bool bVal9;
310  bool bVal10;
311  bool bVal11;
312  bool bVal12;
313  bool bVal13;
314  bool bVal14;
316 
318 // GetAutoCirculate
319 typedef struct {
320  KSPROPERTY Property;
325 
327 // GetFrameStamp
328 typedef struct {
329  KSPROPERTY Property;
335 
336 typedef struct {
337  KSPROPERTY Property;
344 
345 typedef struct {
346  KSPROPERTY Property;
353 
355 // Transfer
356 typedef struct {
357  KSPROPERTY Property;
362 
363 typedef struct {
364  KSPROPERTY Property;
369 
371 // TransferEx - Extended version for Xena2....
372 typedef struct {
373  KSPROPERTY Property;
379 
380 typedef struct {
381  KSPROPERTY Property;
387 
389 // TransferEx2 - Extended version for autocirculate tasks....
390 typedef struct {
391  KSPROPERTY Property;
398 
399 typedef struct {
400  KSPROPERTY Property;
407 
408 // Get/SetBitFileInformation
409 typedef struct {
410  KSPROPERTY Property;
413 
414 typedef enum {
418 
419 #endif
struct KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S
struct KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_S
struct KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S_32 * PKSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S_32
NTV2Crosspoint
Logically, these are an NTV2Channel combined with an NTV2Mode.
Definition: ntv2enums.h:1700
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
uint32_t * PULWord
Definition: ajatypes.h:224
struct KSPROPERTY_AJAPROPS_INTERRUPTS_S * PKSPROPERTY_AJAPROPS_INTERRUPTS_S
struct KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_EX_S
struct KSPROPERTY_AJAPROPS_MAPMEMORY_S_32 * PKSPROPERTY_AJAPROPS_MAPMEMORY_S_32
int32_t LWord
Definition: ajatypes.h:222
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
struct KSPROPERTY_AJAPROPS_SUBSCRIPTIONS_S * PKSPROPERTY_AJAPROPS_SUBSCRIPTIONS_S
struct KSPROPERTY_AJAPROPS_MAPMEMORY_S * PKSPROPERTY_AJAPROPS_MAPMEMORY_S
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
ULONG(__stdcall *_RegisterTraceGuids)(__in IN WMIDPREQUEST RequestAddress
struct KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S
struct KSPROPERTY_AJAPROPS_DMA_EX_S_32 * PKSPROPERTY_AJAPROPS_DMA_EX_S_32
struct KSPROPERTY_AJAPROPS_DMA_S * PKSPROPERTY_AJAPROPS_DMA_S
uint32_t ULWord
Definition: ajatypes.h:223
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
Definition: ntv2enums.h:1357
short HANDLE
Definition: ajatypes.h:285
AUTOCIRCULATE_TRANSFER_STRUCT_32 acTransfer
void * PVOID
Definition: ajatypes.h:286
struct KSPROPERTY_AJAPROPS_GETSETREGISTER_S * PKSPROPERTY_AJAPROPS_GETSETREGISTER_S
struct KSPROPERTY_AJAPROPS_DMA_P2P_S * PKSPROPERTY_AJAPROPS_DMA_P2P_S
AUTOCIRCULATE_STATUS_STRUCT autoCircStatus
NTV2DMAEngine
Definition: ntv2enums.h:1856
struct KSPROPERTY_AJAPROPS_SUBSCRIPTIONS_S_32 * PKSPROPERTY_AJAPROPS_SUBSCRIPTIONS_S_32
#define POINTER_32
Definition: ajatypes.h:308
struct KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S_32 * PKSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S_32
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
PerfCounterTimestampMode
struct MAP_MEMORY_32 * PMAP_MEMORY_32
struct KSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S * PKSPROPERTY_AJAPROPS_GETSETBITFILEINFO_S
uint64_t ULWord64
Definition: ajatypes.h:226
uint8_t UByte
Definition: ajatypes.h:218
struct KSPROPERTY_AJAPROPS_DMA_EX_S * PKSPROPERTY_AJAPROPS_DMA_EX_S
struct MAP_MEMORY * PMAP_MEMORY
struct KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S * PKSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S
Added to support 64 bit driver.
struct KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S_32 * PKSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX_S_32
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
struct KSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S_32 * PKSPROPERTY_AJAPROPS_AUTOCIRC_FRAME_EX2_S_32
enum _AutoCircCommand_ AUTO_CIRC_COMMAND
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
struct _MAP_MEMORY MAP_MEMORY
struct KSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_STATUS_S
enum _MAP_MEMORY_TYPE * PMAP_MEMORY_TYPE
struct KSPROPERTY_AJAPROPS_DMA_S_32 * PKSPROPERTY_AJAPROPS_DMA_S_32
enum _MAP_MEMORY_TYPE MAP_MEMORY_TYPE
struct KSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S_32 * PKSPROPERTY_AJAPROPS_NEWSUBSCRIPTIONS_S_32
struct KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_S
struct KSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_TRANSFER_EX2_S
Declares enums and structs used by all platform drivers and the SDK.
struct KSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S * PKSPROPERTY_AJAPROPS_AUTOCIRC_CONTROL_S
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
KSPROPERTY_AJAPROPS