AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
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  kNumberUserClientCommands // number of driver commands
75 
76 
77 // Memory types for IOConnectMapMemory
78 
79 typedef enum
80 {
84 
85  kNumberMemoryType // number of Memory types
86 } MemoryType;
87 
88 typedef enum
89 {
96 
101 } InterruptType;
102 
103 typedef enum
104 {
105  kDMANone = 0, // Use PIO
106  kDMA1 = 1,
107  kDMA2 = 2,
108  kDMA3 = 3,
109  kDMA4 = 4,
110  kDMAAuto = 99 // Auto DMA selection
111 } DMAEngine;
112 
113 
114 // Virtual registers
115 #include "ntv2virtualregisters.h"
116 
117 #define AUDIO_MAX_SAMPLING_RATE_PER_MS 48
118 
119 // Some IoHD specific registers
120 enum
121 {
122  // isoch global
125  kRegLocalRegBaseAddrHi = 2050, // our local base register used for delivery of interrupts
126  kRegLocalRegBaseAddrLo = 2051, // our local base register used for delivery of interrupts
127 
128  // ischo ch1 video
132 
133  // isoch ch1 audio
134  kRegIsochAudioCh1Status = 2056, // hardwired to be the audio playback channel
137 
138  // isoch ch2 audio
139  kRegIsochAudioCh2Status = 2060, // hardwired to be the audio capture channel
142 
143  // misc
144  kRegFireWireErrors = 2064, // Read - crc errors [0:15], runt packets [16:31]
145  kRegAudioBufferSize = 2065, // audio buffer size
146  kRegAudioPlaybackControl = 2066, // audio playuback control
147 
148  // AV bitfile select
149  kRegAVBitFileCSR = 2068, // AV bitfile control and status - currently loaded AV bitfile (read / write)
150  kRegBitFileBusy = 2069, // Set true when busy during bitfile loading (read only)
151  kRegGetBitFileInfoSelect = 2070, // which bitfile we want info (write only)
152  kRegUserState1 = 2071, // contains user state info (Primary/Secondary format, Input select)
153 
154  kRegVideoDelay = 2072, // video delay register
155 
156  // firmware updates
157  kRegUpdateControl = 2112, // Update control register
158  //kRegUpdateSoftwareVersion = 2113, // Software version
159  //kRegUpdateProductVersion = 2114, // Product version
160  kRegUpdateBitFileCommand = 2115, // Which bitfile will be updated (write only)
161  kRegUpdateCRC = 2116, // CRC register
162  kRegUpdateStatus = 2117, // Status register
163  kRegSerialNumber = 2118, // Serial register 2 quadlet, 8 bytes
164  kRegUpdateData = 2120, // data 128(0x80) quadlets, or 512(0x200) bytes, thru 0x8d0
165 
166  // NOTE: THIS VALUE HAS TO MATCH WHAT IS RETURNED BY NTV2DeviceGetMaxRegisterNumber
168 };
169 
170 
171 // isoch streams (channels)
173 {
178 };
179 
180 // update register values
181 enum
182 {
183  //kMaskStandBusyStatus
186 
187  // kMaskStandAloneMode
192 };
193 
194 #endif // NTV2MACPUBLICINTERFACE_H
kNTV2DriverNotReadyErr
const IOReturn kNTV2DriverNotReadyErr
Definition: ntv2macpublicinterface.h:21
kRegLocalRegBaseAddrHi
@ kRegLocalRegBaseAddrHi
Definition: ntv2macpublicinterface.h:125
kDriverReleaseStreamForApplicationWithReference
@ kDriverReleaseStreamForApplicationWithReference
Definition: ntv2macpublicinterface.h:69
kRegFireWireErrors
@ kRegFireWireErrors
Definition: ntv2macpublicinterface.h:144
kNTV2DriverBadDMA
const IOReturn kNTV2DriverBadDMA
Definition: ntv2macpublicinterface.h:17
kNTV2DriverUnmapperErr
const IOReturn kNTV2DriverUnmapperErr
Definition: ntv2macpublicinterface.h:31
kRegIsochAudioCh2Status
@ kRegIsochAudioCh2Status
Definition: ntv2macpublicinterface.h:139
kDMAAuto
@ kDMAAuto
Definition: ntv2macpublicinterface.h:110
kDriverSystemControl
@ kDriverSystemControl
Definition: ntv2macpublicinterface.h:65
kDriverDMATransfer
@ kDriverDMATransfer
Definition: ntv2macpublicinterface.h:53
kRegUpdateBitFileCommand
@ kRegUpdateBitFileCommand
Definition: ntv2macpublicinterface.h:160
kInterruptAudioInWrap
@ kInterruptAudioInWrap
Definition: ntv2macpublicinterface.h:95
kNTV2HeaderVersionErr
const IOReturn kNTV2HeaderVersionErr
Definition: ntv2macpublicinterface.h:28
kStandAloneUserBurn
@ kStandAloneUserBurn
Definition: ntv2macpublicinterface.h:190
kRegIsochAudioCh1Status
@ kRegIsochAudioCh1Status
Definition: ntv2macpublicinterface.h:134
kDriverWaitForInterrupt
@ kDriverWaitForInterrupt
Definition: ntv2macpublicinterface.h:49
kDriverAutoCirculateTransfer
@ kDriverAutoCirculateTransfer
Definition: ntv2macpublicinterface.h:61
kDriverGetTime
@ kDriverGetTime
Definition: ntv2macpublicinterface.h:52
kInterruptDMA4
@ kInterruptDMA4
Definition: ntv2macpublicinterface.h:100
kDriverKernelLog
@ kDriverKernelLog
Definition: ntv2macpublicinterface.h:70
kStandAloneFactoryBurn
@ kStandAloneFactoryBurn
Definition: ntv2macpublicinterface.h:189
kNTV2DriverParamErr
const IOReturn kNTV2DriverParamErr
Definition: ntv2macpublicinterface.h:19
kDriverGetBitFileInformation
@ kDriverGetBitFileInformation
Definition: ntv2macpublicinterface.h:56
kRegUpdateControl
@ kRegUpdateControl
Definition: ntv2macpublicinterface.h:157
kRegAudioPlaybackControl
@ kRegAudioPlaybackControl
Definition: ntv2macpublicinterface.h:146
kRegIsochAudioCh1Control
@ kRegIsochAudioCh1Control
Definition: ntv2macpublicinterface.h:135
kStandAloneBusyStatus
@ kStandAloneBusyStatus
Definition: ntv2macpublicinterface.h:185
kNTV2DriverDMABusy
const IOReturn kNTV2DriverDMABusy
Definition: ntv2macpublicinterface.h:18
kDMANone
@ kDMANone
Definition: ntv2macpublicinterface.h:105
kDriverSystemStatus
@ kDriverSystemStatus
Definition: ntv2macpublicinterface.h:66
kInterruptDMA1
@ kInterruptDMA1
Definition: ntv2macpublicinterface.h:97
ntv2virtualregisters.h
Declares enums for virtual registers used in all platform drivers and the SDK.
kInterruptDMA2
@ kInterruptDMA2
Definition: ntv2macpublicinterface.h:98
kRegIoHDGlobalStatus
@ kRegIoHDGlobalStatus
Definition: ntv2macpublicinterface.h:123
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:79
kDriverSetAVSyncPattern
@ kDriverSetAVSyncPattern
Definition: ntv2macpublicinterface.h:47
kRegIsochVideoCh1Control
@ kRegIsochVideoCh1Control
Definition: ntv2macpublicinterface.h:130
kRegIsochAudioCh2Control
@ kRegIsochAudioCh2Control
Definition: ntv2macpublicinterface.h:140
kDriverLockFormat
@ kDriverLockFormat
Definition: ntv2macpublicinterface.h:46
kRegIsochAudioCh2Packets
@ kRegIsochAudioCh2Packets
Definition: ntv2macpublicinterface.h:141
kDriverIsDefaultDeviceForPID
@ kDriverIsDefaultDeviceForPID
Definition: ntv2macpublicinterface.h:64
kRegAudioBufferSize
@ kRegAudioBufferSize
Definition: ntv2macpublicinterface.h:145
kInterruptInput2Vertical
@ kInterruptInput2Vertical
Definition: ntv2macpublicinterface.h:92
kDriverSetDebugFilterStrings
@ kDriverSetDebugFilterStrings
Definition: ntv2macpublicinterface.h:57
kInterruptInput1Vertical
@ kInterruptInput1Vertical
Definition: ntv2macpublicinterface.h:91
kRegUpdateData
@ kRegUpdateData
Definition: ntv2macpublicinterface.h:164
IsochStreamType
IsochStreamType
Definition: ntv2macpublicinterface.h:172
kRegisterMemory
@ kRegisterMemory
Definition: ntv2macpublicinterface.h:81
kRegUserState1
@ kRegUserState1
Definition: ntv2macpublicinterface.h:152
kDriverGetDebugFilterStrings
@ kDriverGetDebugFilterStrings
Definition: ntv2macpublicinterface.h:58
kRegLocalRegBaseAddrLo
@ kRegLocalRegBaseAddrLo
Definition: ntv2macpublicinterface.h:126
kRegIsochVideoCh1Status
@ kRegIsochVideoCh1Status
Definition: ntv2macpublicinterface.h:129
DMAEngine
DMAEngine
Definition: ntv2macpublicinterface.h:103
kNTV2DriverBadTrailerTag
const IOReturn kNTV2DriverBadTrailerTag
Definition: ntv2macpublicinterface.h:29
kDriverSetDefaultDeviceForPID
@ kDriverSetDefaultDeviceForPID
Definition: ntv2macpublicinterface.h:63
kIsochVideoStream
@ kIsochVideoStream
Definition: ntv2macpublicinterface.h:174
kStandAloneNormalStatus
@ kStandAloneNormalStatus
Definition: ntv2macpublicinterface.h:184
kDriverTriggerAVSync
@ kDriverTriggerAVSync
Definition: ntv2macpublicinterface.h:48
kRegBitFileBusy
@ kRegBitFileBusy
Definition: ntv2macpublicinterface.h:150
kDMA3
@ kDMA3
Definition: ntv2macpublicinterface.h:108
kDriverRestoreProcAmpRegisters
@ kDriverRestoreProcAmpRegisters
Definition: ntv2macpublicinterface.h:54
InterruptType
InterruptType
Definition: ntv2macpublicinterface.h:88
kInterruptOutputVertical
@ kInterruptOutputVertical
Definition: ntv2macpublicinterface.h:90
kDMA2
@ kDMA2
Definition: ntv2macpublicinterface.h:107
kNTV2DriverPgmXilinxErr
const IOReturn kNTV2DriverPgmXilinxErr
Definition: ntv2macpublicinterface.h:20
kDriverReadAudioBuffer
@ kDriverReadAudioBuffer
Definition: ntv2macpublicinterface.h:71
kRegVideoDelay
@ kRegVideoDelay
Definition: ntv2macpublicinterface.h:154
kXena2FlashMemory
@ kXena2FlashMemory
Definition: ntv2macpublicinterface.h:83
kRegGetBitFileInfoSelect
@ kRegGetBitFileInfoSelect
Definition: ntv2macpublicinterface.h:151
kRegIoHDGlobalControl
@ kRegIoHDGlobalControl
Definition: ntv2macpublicinterface.h:124
UserClientCommandCodes
UserClientCommandCodes
Definition: ntv2macpublicinterface.h:36
kInterruptAudio
@ kInterruptAudio
Definition: ntv2macpublicinterface.h:93
kNumberUserClientCommands
@ kNumberUserClientCommands
Definition: ntv2macpublicinterface.h:73
kDriverAutoCirculateControl
@ kDriverAutoCirculateControl
Definition: ntv2macpublicinterface.h:59
kDMA1
@ kDMA1
Definition: ntv2macpublicinterface.h:106
kRegAVBitFileCSR
@ kRegAVBitFileCSR
Definition: ntv2macpublicinterface.h:149
kRegSerialNumber
@ kRegSerialNumber
Definition: ntv2macpublicinterface.h:163
kIsochAudioCaptureStream
@ kIsochAudioCaptureStream
Definition: ntv2macpublicinterface.h:176
kStandAloneNoOp
@ kStandAloneNoOp
Definition: ntv2macpublicinterface.h:188
kRegUpdateCRC
@ kRegUpdateCRC
Definition: ntv2macpublicinterface.h:161
kIsochAudioPlaybackStream
@ kIsochAudioPlaybackStream
Definition: ntv2macpublicinterface.h:175
kRegIoHDLast
@ kRegIoHDLast
Definition: ntv2macpublicinterface.h:167
kStandAlonePatternBurn
@ kStandAlonePatternBurn
Definition: ntv2macpublicinterface.h:191
kDriverGetDrvrVersion
@ kDriverGetDrvrVersion
Definition: ntv2macpublicinterface.h:40
kDriverWaitForChangeEvent
@ kDriverWaitForChangeEvent
Definition: ntv2macpublicinterface.h:51
kRegUpdateStatus
@ kRegUpdateStatus
Definition: ntv2macpublicinterface.h:162
kRegIsochAudioCh1Packets
@ kRegIsochAudioCh1Packets
Definition: ntv2macpublicinterface.h:136
kDriverDMATransferEx
@ kDriverDMATransferEx
Definition: ntv2macpublicinterface.h:67
kRegIsochVideoCh1Packets
@ kRegIsochVideoCh1Packets
Definition: ntv2macpublicinterface.h:131
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:85
kDriverGetStreamForApplication
@ kDriverGetStreamForApplication
Definition: ntv2macpublicinterface.h:45
kIsochMaxStreams
@ kIsochMaxStreams
Definition: ntv2macpublicinterface.h:177
kNTV2DriverPgmPPCErr
const IOReturn kNTV2DriverPgmPPCErr
Definition: ntv2macpublicinterface.h:23
kDriverAutoCirculateFramestamp
@ kDriverAutoCirculateFramestamp
Definition: ntv2macpublicinterface.h:62
kDriverNTV2Message
@ kDriverNTV2Message
Definition: ntv2macpublicinterface.h:72
kDriverSetBitFileInformation
@ kDriverSetBitFileInformation
Definition: ntv2macpublicinterface.h:55
kNTV2DriverPrepMemErr
const IOReturn kNTV2DriverPrepMemErr
Definition: ntv2macpublicinterface.h:22
kNTV2DriverDMATooLarge
const IOReturn kNTV2DriverDMATooLarge
Definition: ntv2macpublicinterface.h:24
kDriverAcquireStreamForApplicationWithReference
@ kDriverAcquireStreamForApplicationWithReference
Definition: ntv2macpublicinterface.h:68
kNTV2UnknownStructType
const IOReturn kNTV2UnknownStructType
Definition: ntv2macpublicinterface.h:27
kInterruptAudioOutWrap
@ kInterruptAudioOutWrap
Definition: ntv2macpublicinterface.h:94
kDriverAcquireStreamForApplication
@ kDriverAcquireStreamForApplication
Definition: ntv2macpublicinterface.h:42
kFrameBufferMemory
@ kFrameBufferMemory
Definition: ntv2macpublicinterface.h:82
kDMA4
@ kDMA4
Definition: ntv2macpublicinterface.h:109
kInterruptDMA3
@ kInterruptDMA3
Definition: ntv2macpublicinterface.h:99