AJA NTV2 SDK  17.1.1.1245
NTV2 SDK 17.1.1.1245
ntv2macpublicinterface.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef NTV2MACPUBLICINTERFACE_H
9 #define NTV2MACPUBLICINTERFACE_H
10 
11 #if !defined (NTV2_BUILDING_DRIVER)
12  #include <IOKit/IOKitLib.h> // Defines IOReturn
13 #endif
14 
15 
16 // Our custom driver IOReturn codes:
17 const IOReturn kNTV2DriverBadDMA = 0x04430011; // Bad dmaEngine number
18 const IOReturn kNTV2DriverDMABusy = 0x04430012; // Selected DMA busy or none available
19 const IOReturn kNTV2DriverParamErr = 0x04430013; // Bad parameter (out of range)
20 const IOReturn kNTV2DriverPgmXilinxErr = 0x04430014; // Xilinx programming error - see system log for details
21 const IOReturn kNTV2DriverNotReadyErr = 0x04430015; // Xilinx not programmed yet
22 const IOReturn kNTV2DriverPrepMemErr = 0x04430016; // Error preparing memory (no room),
23 const IOReturn kNTV2DriverPgmPPCErr = 0x04430017; // PPC programming error - see system log for details
24 const IOReturn kNTV2DriverDMATooLarge = 0x04430018; // DMA transfer is too large, or completing (dataPtr not found),
25  // or attempt to use outside of range
26 const IOReturn kNTV2DriverBadHeaderTag = 0x04430019; // Bad header tag
27 const IOReturn kNTV2UnknownStructType = 0x0443001A; // Unknown struct type
28 const IOReturn kNTV2HeaderVersionErr = 0x0443001B; // Bad or unsupported header version
29 const IOReturn kNTV2DriverBadTrailerTag= 0x0443001C; // Bad trailer tag
30 const IOReturn kNTV2DriverMapperErr = 0x0443001D; // Failure while mapping NTV2_POINTERs
31 const IOReturn kNTV2DriverUnmapperErr = 0x0443001E; // Failure while unmapping NTV2_POINTERs
32 const IOReturn kNTV2DriverMsgConvErr = 0x0443001F; // NTV2Message conversion failure
33 
34 
35 // Driver command function codes
36 typedef enum
37 {
40  kDriverGetDrvrVersion = 2, // Unsupported starting in 15.0
47  kDriverSetAVSyncPattern = 9, // Unsupported starting in 15.2
48  kDriverTriggerAVSync = 10, // Unsupported starting in 15.2
55  kDriverSetBitFileInformation = 17, // Unsupported starting in 12.4
56  kDriverGetBitFileInformation = 18, // Unsupported starting in 12.4
63  kDriverSetDefaultDeviceForPID = 25, // Unsupported when classic QuickTime dropped after SDK 14
64  kDriverIsDefaultDeviceForPID = 26, // Unsupported when classic QuickTime dropped after SDK 14
71  kDriverReadAudioBuffer = 33, // Unsupported starting in 15.2
72  kDriverNTV2Message = 34, // Added in 12.0 -- all new driver functionality goes thru this NTV2Message call
73  kDriverWaitForInterruptDQ = 35, // Added in 17.1
74  kNumberUserClientCommands // number of driver commands
76 
77 
78 // Memory types for IOConnectMapMemory
79 
80 typedef enum
81 {
85 
86  kNumberMemoryType // number of Memory types
87 } MemoryType;
88 
89 typedef enum
90 {
97 
102 } InterruptType;
103 
104 typedef enum
105 {
106  kDMANone = 0, // Use PIO
107  kDMA1 = 1,
108  kDMA2 = 2,
109  kDMA3 = 3,
110  kDMA4 = 4,
111  kDMAAuto = 99 // Auto DMA selection
112 } DMAEngine;
113 
114 
115 // Virtual registers
116 #include "ntv2virtualregisters.h"
117 
118 #define AUDIO_MAX_SAMPLING_RATE_PER_MS 48
119 
120 // Some IoHD specific registers
121 enum
122 {
123  // isoch global
126  kRegLocalRegBaseAddrHi = 2050, // our local base register used for delivery of interrupts
127  kRegLocalRegBaseAddrLo = 2051, // our local base register used for delivery of interrupts
128 
129  // ischo ch1 video
133 
134  // isoch ch1 audio
135  kRegIsochAudioCh1Status = 2056, // hardwired to be the audio playback channel
138 
139  // isoch ch2 audio
140  kRegIsochAudioCh2Status = 2060, // hardwired to be the audio capture channel
143 
144  // misc
145  kRegFireWireErrors = 2064, // Read - crc errors [0:15], runt packets [16:31]
146  kRegAudioBufferSize = 2065, // audio buffer size
147  kRegAudioPlaybackControl = 2066, // audio playuback control
148 
149  // AV bitfile select
150  kRegAVBitFileCSR = 2068, // AV bitfile control and status - currently loaded AV bitfile (read / write)
151  kRegBitFileBusy = 2069, // Set true when busy during bitfile loading (read only)
152  kRegGetBitFileInfoSelect = 2070, // which bitfile we want info (write only)
153  kRegUserState1 = 2071, // contains user state info (Primary/Secondary format, Input select)
154 
155  kRegVideoDelay = 2072, // video delay register
156 
157  // firmware updates
158  kRegUpdateControl = 2112, // Update control register
159  //kRegUpdateSoftwareVersion = 2113, // Software version
160  //kRegUpdateProductVersion = 2114, // Product version
161  kRegUpdateBitFileCommand = 2115, // Which bitfile will be updated (write only)
162  kRegUpdateCRC = 2116, // CRC register
163  kRegUpdateStatus = 2117, // Status register
164  kRegSerialNumber = 2118, // Serial register 2 quadlet, 8 bytes
165  kRegUpdateData = 2120, // data 128(0x80) quadlets, or 512(0x200) bytes, thru 0x8d0
166 
167  // NOTE: THIS VALUE HAS TO MATCH WHAT IS RETURNED BY NTV2DeviceGetMaxRegisterNumber
169 };
170 
171 
172 // isoch streams (channels)
174 {
179 };
180 
181 // update register values
182 enum
183 {
184  //kMaskStandBusyStatus
187 
188  // kMaskStandAloneMode
193 };
194 
195 #endif // NTV2MACPUBLICINTERFACE_H
kNTV2DriverNotReadyErr
const IOReturn kNTV2DriverNotReadyErr
Definition: ntv2macpublicinterface.h:21
kDriverReleaseStreamForApplicationWithReference
@ kDriverReleaseStreamForApplicationWithReference
Definition: ntv2macpublicinterface.h:69
kNTV2DriverBadDMA
const IOReturn kNTV2DriverBadDMA
Definition: ntv2macpublicinterface.h:17
kNTV2DriverUnmapperErr
const IOReturn kNTV2DriverUnmapperErr
Definition: ntv2macpublicinterface.h:31
kDMAAuto
@ kDMAAuto
Definition: ntv2macpublicinterface.h:111
kDriverSystemControl
@ kDriverSystemControl
Definition: ntv2macpublicinterface.h:65
kDriverDMATransfer
@ kDriverDMATransfer
Definition: ntv2macpublicinterface.h:53
kRegAudioBufferSize
@ kRegAudioBufferSize
Definition: ntv2macpublicinterface.h:146
kInterruptAudioInWrap
@ kInterruptAudioInWrap
Definition: ntv2macpublicinterface.h:96
kNTV2HeaderVersionErr
const IOReturn kNTV2HeaderVersionErr
Definition: ntv2macpublicinterface.h:28
kDriverWaitForInterrupt
@ kDriverWaitForInterrupt
Definition: ntv2macpublicinterface.h:49
kRegAVBitFileCSR
@ kRegAVBitFileCSR
Definition: ntv2macpublicinterface.h:150
kDriverAutoCirculateTransfer
@ kDriverAutoCirculateTransfer
Definition: ntv2macpublicinterface.h:61
kDriverGetTime
@ kDriverGetTime
Definition: ntv2macpublicinterface.h:52
kRegIsochAudioCh2Status
@ kRegIsochAudioCh2Status
Definition: ntv2macpublicinterface.h:140
kInterruptDMA4
@ kInterruptDMA4
Definition: ntv2macpublicinterface.h:101
kDriverKernelLog
@ kDriverKernelLog
Definition: ntv2macpublicinterface.h:70
kRegLocalRegBaseAddrHi
@ kRegLocalRegBaseAddrHi
Definition: ntv2macpublicinterface.h:126
kRegVideoDelay
@ kRegVideoDelay
Definition: ntv2macpublicinterface.h:155
kNTV2DriverParamErr
const IOReturn kNTV2DriverParamErr
Definition: ntv2macpublicinterface.h:19
kRegGetBitFileInfoSelect
@ kRegGetBitFileInfoSelect
Definition: ntv2macpublicinterface.h:152
kDriverGetBitFileInformation
@ kDriverGetBitFileInformation
Definition: ntv2macpublicinterface.h:56
kRegIoHDGlobalStatus
@ kRegIoHDGlobalStatus
Definition: ntv2macpublicinterface.h:124
kRegIsochAudioCh1Status
@ kRegIsochAudioCh1Status
Definition: ntv2macpublicinterface.h:135
kNTV2DriverDMABusy
const IOReturn kNTV2DriverDMABusy
Definition: ntv2macpublicinterface.h:18
kDMANone
@ kDMANone
Definition: ntv2macpublicinterface.h:106
kDriverSystemStatus
@ kDriverSystemStatus
Definition: ntv2macpublicinterface.h:66
kInterruptDMA1
@ kInterruptDMA1
Definition: ntv2macpublicinterface.h:98
ntv2virtualregisters.h
Declares enums for virtual registers used in all platform drivers and the SDK.
kStandAlonePatternBurn
@ kStandAlonePatternBurn
Definition: ntv2macpublicinterface.h:192
kInterruptDMA2
@ kInterruptDMA2
Definition: ntv2macpublicinterface.h:99
kNTV2DriverBadHeaderTag
const IOReturn kNTV2DriverBadHeaderTag
Definition: ntv2macpublicinterface.h:26
kDriverStartDriver
@ kDriverStartDriver
Definition: ntv2macpublicinterface.h:41
kDriverReadRegister
@ kDriverReadRegister
Definition: ntv2macpublicinterface.h:38
kDriverAutoCirculateStatus
@ kDriverAutoCirculateStatus
Definition: ntv2macpublicinterface.h:60
kDriverReleaseStreamForApplication
@ kDriverReleaseStreamForApplication
Definition: ntv2macpublicinterface.h:43
kNTV2DriverMapperErr
const IOReturn kNTV2DriverMapperErr
Definition: ntv2macpublicinterface.h:30
MemoryType
MemoryType
Definition: ntv2macpublicinterface.h:80
kDriverSetAVSyncPattern
@ kDriverSetAVSyncPattern
Definition: ntv2macpublicinterface.h:47
kDriverLockFormat
@ kDriverLockFormat
Definition: ntv2macpublicinterface.h:46
kDriverIsDefaultDeviceForPID
@ kDriverIsDefaultDeviceForPID
Definition: ntv2macpublicinterface.h:64
kInterruptInput2Vertical
@ kInterruptInput2Vertical
Definition: ntv2macpublicinterface.h:93
kDriverSetDebugFilterStrings
@ kDriverSetDebugFilterStrings
Definition: ntv2macpublicinterface.h:57
kInterruptInput1Vertical
@ kInterruptInput1Vertical
Definition: ntv2macpublicinterface.h:92
IsochStreamType
IsochStreamType
Definition: ntv2macpublicinterface.h:173
kRegisterMemory
@ kRegisterMemory
Definition: ntv2macpublicinterface.h:82
kDriverGetDebugFilterStrings
@ kDriverGetDebugFilterStrings
Definition: ntv2macpublicinterface.h:58
kRegIsochVideoCh1Status
@ kRegIsochVideoCh1Status
Definition: ntv2macpublicinterface.h:130
DMAEngine
DMAEngine
Definition: ntv2macpublicinterface.h:104
kNTV2DriverBadTrailerTag
const IOReturn kNTV2DriverBadTrailerTag
Definition: ntv2macpublicinterface.h:29
kRegIsochAudioCh1Packets
@ kRegIsochAudioCh1Packets
Definition: ntv2macpublicinterface.h:137
kStandAloneNormalStatus
@ kStandAloneNormalStatus
Definition: ntv2macpublicinterface.h:185
kStandAloneBusyStatus
@ kStandAloneBusyStatus
Definition: ntv2macpublicinterface.h:186
kDriverSetDefaultDeviceForPID
@ kDriverSetDefaultDeviceForPID
Definition: ntv2macpublicinterface.h:63
kIsochVideoStream
@ kIsochVideoStream
Definition: ntv2macpublicinterface.h:175
kRegUserState1
@ kRegUserState1
Definition: ntv2macpublicinterface.h:153
kDriverTriggerAVSync
@ kDriverTriggerAVSync
Definition: ntv2macpublicinterface.h:48
kRegSerialNumber
@ kRegSerialNumber
Definition: ntv2macpublicinterface.h:164
kRegFireWireErrors
@ kRegFireWireErrors
Definition: ntv2macpublicinterface.h:145
kStandAloneUserBurn
@ kStandAloneUserBurn
Definition: ntv2macpublicinterface.h:191
kDMA3
@ kDMA3
Definition: ntv2macpublicinterface.h:109
kDriverRestoreProcAmpRegisters
@ kDriverRestoreProcAmpRegisters
Definition: ntv2macpublicinterface.h:54
InterruptType
InterruptType
Definition: ntv2macpublicinterface.h:89
kInterruptOutputVertical
@ kInterruptOutputVertical
Definition: ntv2macpublicinterface.h:91
kDMA2
@ kDMA2
Definition: ntv2macpublicinterface.h:108
kRegAudioPlaybackControl
@ kRegAudioPlaybackControl
Definition: ntv2macpublicinterface.h:147
kRegIoHDLast
@ kRegIoHDLast
Definition: ntv2macpublicinterface.h:168
kNTV2DriverPgmXilinxErr
const IOReturn kNTV2DriverPgmXilinxErr
Definition: ntv2macpublicinterface.h:20
kDriverReadAudioBuffer
@ kDriverReadAudioBuffer
Definition: ntv2macpublicinterface.h:71
kRegIsochAudioCh2Packets
@ kRegIsochAudioCh2Packets
Definition: ntv2macpublicinterface.h:142
kRegUpdateControl
@ kRegUpdateControl
Definition: ntv2macpublicinterface.h:158
kXena2FlashMemory
@ kXena2FlashMemory
Definition: ntv2macpublicinterface.h:84
kRegUpdateBitFileCommand
@ kRegUpdateBitFileCommand
Definition: ntv2macpublicinterface.h:161
UserClientCommandCodes
UserClientCommandCodes
Definition: ntv2macpublicinterface.h:36
kInterruptAudio
@ kInterruptAudio
Definition: ntv2macpublicinterface.h:94
kNumberUserClientCommands
@ kNumberUserClientCommands
Definition: ntv2macpublicinterface.h:74
kDriverAutoCirculateControl
@ kDriverAutoCirculateControl
Definition: ntv2macpublicinterface.h:59
kDMA1
@ kDMA1
Definition: ntv2macpublicinterface.h:107
kIsochAudioCaptureStream
@ kIsochAudioCaptureStream
Definition: ntv2macpublicinterface.h:177
kRegUpdateCRC
@ kRegUpdateCRC
Definition: ntv2macpublicinterface.h:162
kIsochAudioPlaybackStream
@ kIsochAudioPlaybackStream
Definition: ntv2macpublicinterface.h:176
kRegUpdateStatus
@ kRegUpdateStatus
Definition: ntv2macpublicinterface.h:163
kDriverGetDrvrVersion
@ kDriverGetDrvrVersion
Definition: ntv2macpublicinterface.h:40
kRegIoHDGlobalControl
@ kRegIoHDGlobalControl
Definition: ntv2macpublicinterface.h:125
kStandAloneNoOp
@ kStandAloneNoOp
Definition: ntv2macpublicinterface.h:189
kRegLocalRegBaseAddrLo
@ kRegLocalRegBaseAddrLo
Definition: ntv2macpublicinterface.h:127
kRegUpdateData
@ kRegUpdateData
Definition: ntv2macpublicinterface.h:165
kDriverWaitForChangeEvent
@ kDriverWaitForChangeEvent
Definition: ntv2macpublicinterface.h:51
kDriverDMATransferEx
@ kDriverDMATransferEx
Definition: ntv2macpublicinterface.h:67
kNTV2DriverMsgConvErr
const IOReturn kNTV2DriverMsgConvErr
Definition: ntv2macpublicinterface.h:32
kDriverSetStreamForApplication
@ kDriverSetStreamForApplication
Definition: ntv2macpublicinterface.h:44
kDriverWriteRegister
@ kDriverWriteRegister
Definition: ntv2macpublicinterface.h:39
kDriverGetInterruptCount
@ kDriverGetInterruptCount
Definition: ntv2macpublicinterface.h:50
kNumberMemoryType
@ kNumberMemoryType
Definition: ntv2macpublicinterface.h:86
kDriverGetStreamForApplication
@ kDriverGetStreamForApplication
Definition: ntv2macpublicinterface.h:45
kDriverWaitForInterruptDQ
@ kDriverWaitForInterruptDQ
Definition: ntv2macpublicinterface.h:73
kRegIsochVideoCh1Packets
@ kRegIsochVideoCh1Packets
Definition: ntv2macpublicinterface.h:132
kIsochMaxStreams
@ kIsochMaxStreams
Definition: ntv2macpublicinterface.h:178
kNTV2DriverPgmPPCErr
const IOReturn kNTV2DriverPgmPPCErr
Definition: ntv2macpublicinterface.h:23
kDriverAutoCirculateFramestamp
@ kDriverAutoCirculateFramestamp
Definition: ntv2macpublicinterface.h:62
kRegIsochVideoCh1Control
@ kRegIsochVideoCh1Control
Definition: ntv2macpublicinterface.h:131
kStandAloneFactoryBurn
@ kStandAloneFactoryBurn
Definition: ntv2macpublicinterface.h:190
kDriverNTV2Message
@ kDriverNTV2Message
Definition: ntv2macpublicinterface.h:72
kDriverSetBitFileInformation
@ kDriverSetBitFileInformation
Definition: ntv2macpublicinterface.h:55
kNTV2DriverPrepMemErr
const IOReturn kNTV2DriverPrepMemErr
Definition: ntv2macpublicinterface.h:22
kRegIsochAudioCh2Control
@ kRegIsochAudioCh2Control
Definition: ntv2macpublicinterface.h:141
kNTV2DriverDMATooLarge
const IOReturn kNTV2DriverDMATooLarge
Definition: ntv2macpublicinterface.h:24
kRegIsochAudioCh1Control
@ kRegIsochAudioCh1Control
Definition: ntv2macpublicinterface.h:136
kDriverAcquireStreamForApplicationWithReference
@ kDriverAcquireStreamForApplicationWithReference
Definition: ntv2macpublicinterface.h:68
kNTV2UnknownStructType
const IOReturn kNTV2UnknownStructType
Definition: ntv2macpublicinterface.h:27
kInterruptAudioOutWrap
@ kInterruptAudioOutWrap
Definition: ntv2macpublicinterface.h:95
kDriverAcquireStreamForApplication
@ kDriverAcquireStreamForApplication
Definition: ntv2macpublicinterface.h:42
kFrameBufferMemory
@ kFrameBufferMemory
Definition: ntv2macpublicinterface.h:83
kDMA4
@ kDMA4
Definition: ntv2macpublicinterface.h:110
kInterruptDMA3
@ kInterruptDMA3
Definition: ntv2macpublicinterface.h:100
kRegBitFileBusy
@ kRegBitFileBusy
Definition: ntv2macpublicinterface.h:151