|
AJA NTV2 SDK
17.0.1.1246
NTV2 SDK 17.0.1.1246
|
Go to the documentation of this file.
12 #include <sys/ioctl.h>
19 #define HEX2(__x__) "0x" << hex << setw(2) << setfill('0') << (0xFF & uint8_t (__x__)) << dec
20 #define HEX4(__x__) "0x" << hex << setw(4) << setfill('0') << (0xFFFF & uint16_t(__x__)) << dec
21 #define HEX8(__x__) "0x" << hex << setw(8) << setfill('0') << (0xFFFFFFFF & uint32_t(__x__)) << dec
22 #define HEX16(__x__) "0x" << hex << setw(16) << setfill('0') << uint64_t(__x__) << dec
23 #define INSTP(_p_) HEX16(uint64_t(_p_))
25 #define LDIFAIL(__x__) AJA_sERROR (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
26 #define LDIWARN(__x__) AJA_sWARNING(AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
27 #define LDINOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
28 #define LDIINFO(__x__) AJA_sINFO (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
29 #define LDIDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__)
31 #define AsFrameStampStructPtr(_p_) reinterpret_cast<FRAME_STAMP_STRUCT*>(_p_)
32 #define AsStatusStructPtr(_p_) reinterpret_cast<AUTOCIRCULATE_STATUS_STRUCT*>(_p_)
33 #define AsTransferStatusStruct(_p_) reinterpret_cast<PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT>(_p_)
34 #define AsRoutingTablePtr(_p_) reinterpret_cast<NTV2RoutingTable*>(_p_)
35 #define AsPTaskStruct(_p_) reinterpret_cast<PAUTOCIRCULATE_TASK_STRUCT>(_p_)
36 #define AsPTransferStruct(_p_) reinterpret_cast<PAUTOCIRCULATE_TRANSFER_STRUCT>(_p_)
37 #define AsVoidPtr(_p_) reinterpret_cast<void*>(_p_)
41 : _bitfileDirectory (
"../xilinx")
43 #if !defined(NTV2_DEPRECATE_16_0)
60 #if !defined(NTV2_NULL_DEVICE)
66 static const string kAJANTV2(
"ajantv2");
70 ostringstream oss; oss <<
"/dev/" << kAJANTV2 <<
DEC(inDeviceIndex);
71 string boardStr(oss.str());
74 {
LDIFAIL(
"Failed to open '" << boardStr <<
"'");
return false;}
100 #if !defined(NTV2_DEPRECATE_16_0)
103 #endif // !defined(NTV2_DEPRECATE_16_0)
112 #endif // !defined(NTV2_NULL_DEVICE)
124 LDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
127 #if defined(NTV2_NUB_CLIENT_SUPPORT)
130 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
142 {
LDIFAIL(
"IOCTL_NTV2_READ_REGISTER failed");
return false;}
152 LDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
155 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
163 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
164 #if defined(NTV2_NUB_CLIENT_SUPPORT)
167 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
178 {
LDIFAIL(
"IOCTL_NTV2_WRITE_REGISTER failed");
return false;}
188 {
LDIFAIL(
"IOCTL_NTV2_RESTORE_HARDWARE_PROCAMP_REGISTERS failed");
return false;}
208 intrControlStruct.
enable = bEnable;
211 LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
244 LDIFAIL(
"Unsupported interrupt count request. Only vertical input interrupts counted.");
257 {
LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
return false;}
267 AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
300 {
LDIFAIL(
"IOCTL_NTV2_WAITFOR_INTERRUPT failed");
return false;}
302 return waitIntrStruct.
success != 0;
313 cddmStruct.
msgSet = msgSet;
314 cddmStruct.
enable = enable;
317 LDIFAIL(
"IOCTL_NTV2_CONTROL_DRIVER_DEBUG_MESSAGES failed");
320 return cddmStruct.
success != 0;
332 LDIFAIL(
"IOCTL_NTV2_SETUP_BOARD failed");
342 #if !defined(NTV2_DEPRECATE_16_0)
356 LDIFAIL (
"MapFrameBuffers failed - couldn't get BA1MemorySize");
360 if (BA1MemorySize == 0)
362 LDIFAIL (
"BA1MemorySize is 0 -- module loaded with MapFrameBuffers=0?");
363 LDIFAIL (
"PIO mode not available, only driverbuffer DMA.");
379 LDIFAIL (
"MapFrameBuffers failed in call to mmap()");
406 LDIFAIL (
"UnmapFrameBuffers failed - couldn't get BA1MemorySize");
427 LDIFAIL (
"MapRegisters failed - couldn't get BA0MemorySize");
434 LDIFAIL (
"BA0MemorySize is 0, registers not mapped.");
496 LDIFAIL (
"MapXena2Flash failed - couldn't get BA4MemorySize");
502 LDIFAIL (
"MapXena2Flash failed - BA4MemorySize == 0");
509 PROT_READ | PROT_WRITE, MAP_SHARED,
514 LDIFAIL (
"MapXena2Flash(): mmap of BAR4 for PCI Flash failed");
545 LDIFAIL (
"MapDNXRegisters failed - couldn't get BA2MemorySize");
550 LDIFAIL (
"MapDNXRegisters failed - BA2MemorySize == 0");
558 PROT_READ | PROT_WRITE, MAP_SHARED,
564 LDIFAIL (
"MapDNXRegisters failed - couldn't map BAR2");
585 #endif // !defined(NTV2_DEPRECATE_16_0)
595 const ULWord inFrameNumber,
597 const ULWord inOffsetBytes,
599 const bool inSynchronous)
603 inOffsetBytes, inByteCount, inSynchronous);
608 dmaControlBuf.
engine = inDMAEngine;
614 dmaControlBuf.
numBytes = inByteCount;
620 dmaControlBuf.
poll = 0;
621 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
622 ULWord numDmaDriverBuffers;
629 dmaControlBuf.
poll = 0;
631 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
635 #define ERRMSG(s) #s " failed"
640 if (inOffsetBytes == 0)
653 if (inOffsetBytes == 0)
667 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
679 const ULWord inFrameNumber,
681 const ULWord inOffsetBytes,
683 const ULWord inNumSegments,
686 const bool inIsSynchronous)
691 LDIDBG(
"FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" NB=" << inByteCount << (inIsRead?
" Rd":
" Wr"));
695 dmaControlBuf.
engine = inDMAEngine;
700 dmaControlBuf.
numBytes = inByteCount;
704 dmaControlBuf.
poll = 0;
705 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
706 ULWord numDmaDriverBuffers(0);
710 if (!inIsSynchronous)
713 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
717 #define ERRMSG(s) #s " failed"
749 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
762 const bool inIsTarget,
763 const ULWord inFrameNumber,
764 const ULWord inCardOffsetBytes,
766 const ULWord inNumSegments,
767 const ULWord inSegmentHostPitch,
768 const ULWord inSegmentCardPitch,
775 inNumSegments, inSegmentHostPitch, inSegmentCardPitch, inP2PData);
784 ::memset (
AsVoidPtr(&dmaP2PStruct), 0,
sizeof(dmaP2PStruct));
801 dmaP2PStruct.
bRead = inIsTarget;
818 {
LDIFAIL(
"IOCTL error");
return false;}
855 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CONTROL failed");
return false;}
866 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_STATUS, failed");
return false;}
876 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
883 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
895 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
900 acFrameStampCombo.
acTask = *pTask;
905 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
908 *pTask = acFrameStampCombo.
acTask;
919 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
920 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
921 ULWord numDmaDriverBuffers;
924 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
925 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
931 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
934 acXferCombo.channelSpec = autoCircData.
channelSpec;
935 acXferCombo.acTransfer = *acTransfer;
936 acXferCombo.acStatus = *acStatus;
937 if (!pXena2RoutingTable)
938 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
940 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
947 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
949 *acStatus = acXferCombo.acStatus;
960 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
961 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
962 ULWord numDmaDriverBuffers;
964 if ((
unsigned long)acTransfer->
audioBuffer >= numDmaDriverBuffers && (
unsigned long)acTransfer->
audioBuffer % 4)
965 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
966 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
972 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
975 acXferCombo.channelSpec = autoCircData.
channelSpec;
976 acXferCombo.acTransfer = *acTransfer;
977 acXferCombo.acStatus = *acStatus;
978 if (!pXena2RoutingTable)
979 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
981 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
988 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
990 *acStatus = acXferCombo.acStatus;
1001 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
1002 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
1003 ULWord numDmaDriverBuffers;
1006 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
1007 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
1013 ::memset(
AsVoidPtr(&acXferCombo), 0,
sizeof(acXferCombo));
1020 if (pXena2RoutingTable)
1023 acXferCombo.
acTask = *pTask;
1030 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
1039 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
1042 acFrameStampCombo.
acTask = *pTask;
1047 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CAPTURETASK failed");
return false;}
1052 LDIFAIL(
"Unsupported AC command type in AutoCirculate()");
1072 {
LDIFAIL(
"IOCTL_AJANTV2_MESSAGE failed");
return false;}
1088 {
LDIFAIL(
"IOCTL_AJANTV2_MESSAGE failed");
return false;}
1093 #if !defined(NTV2_DEPRECATE_16_0)
1111 ULWord numDmaDriverBuffers;
1114 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1118 if (!numDmaDriverBuffers)
1120 LDIFAIL(
"numDmaDriverBuffers == 0");
1128 PROT_READ | PROT_WRITE,MAP_SHARED,
1155 ULWord numDmaDriverBuffers;
1158 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1161 if (!numDmaDriverBuffers)
1164 LDIFAIL(
"numDmaDriverBuffers == 0");
1172 #endif // !defined(NTV2_DEPRECATE_16_0)
1184 #if !defined(NTV2_DEPRECATE_16_0)
1213 dmaControlBuf.
poll = poll;
1215 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1247 dmaControlBuf.
poll = poll;
1249 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1281 dmaControlBuf.
linePitch = linePitch == 0 ? 1 : linePitch;
1282 dmaControlBuf.
poll = poll;
1284 static bool bPrintedDownsampleDeprecatedMsg =
false;
1285 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1286 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1289 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1322 if( linePitch == 0 ) linePitch = 1;
1324 dmaControlBuf.
poll = poll;
1326 static bool bPrintedDownsampleDeprecatedMsg =
false;
1327 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1328 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1331 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1334 #endif // !defined(NTV2_DEPRECATE_16_0)
1359 dmaControlBuf.
poll = 0;
1363 #define ERRMSG(s) #s " failed"
1366 if (offsetSrc == 0 && offsetDest == 0)
1377 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1378 {
LDIFAIL(errMsg);
return false;}
1406 dmaControlBuf.
poll = 0;
1409 #define ERRMSG(s) #s " failed"
1412 if (offsetSrc == 0 && offsetDest == 0)
1423 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1424 {
LDIFAIL(errMsg);
return false;}
ULWord * _pDNXRegisterBaseAddress
@ AJA_DebugStat_GetInterruptCount
@ AJA_DebugStat_DMATransferEx
virtual bool MapRegisters(void)
static AJAStatus StatTimerStop(const uint32_t inKey)
NTV2Crosspoint channelSpec
bool mSkipRegWrites
True if actual register writes are skipped while recording.
NTV2Crosspoint channelSpec
INTERRUPT_ENUMS eInterruptType
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
INTERRUPT_ENUMS eInterruptType
NTV2_DriverDebugMessageSet
ULWord * _pXena2FlashBaseAddress
@ AJA_DebugStat_HEVCSendMessage
NTV2Channel
These enum values are mostly used to identify a specific Frame Store. They're also commonly used to i...
@ AJA_DebugStat_ReadRegister
bool _boardOpened
True if I'm open and connected to the device.
ULWord64 ullVideoBusAddress
@ AJA_DebugStat_NTV2Message
static AJAStatus StatTimerStart(const uint32_t inKey)
#define NTV2_ASSERT(_expr_)
@ AJA_DebugStat_AutoCirculate
@ AJA_DebugStat_WaitForInterruptOthers
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs=68)
@ AJA_DebugStat_WaitForInterruptIn2
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
virtual bool NTV2Message(NTV2_HEADER *pInOutMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
virtual bool CloseLocalPhysical(void)
Releases host resources associated with the local/physical device connection.
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the number of interrupts of the given type processed by the driver.
UWord _boardNumber
My device index number.
@ NTV2_CHANNEL1
Specifies channel or Frame Store 1 (or the first item).
@ kVRegGlobalAudioPlaybackMode
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
virtual bool MapXena2Flash(void)
NTV2DeviceID _boardID
My cached device ID.
@ AJA_DebugStat_WaitForInterruptIn8
Declares the CNTV2LinuxDriverInterface class.
virtual bool DmaReadWithOffsets(NTV2DMAEngine DMAEngine, ULWord frameNumber, ULWord *pFrameBuffer, ULWord offsetSrc, ULWord offsetDest, ULWord bytes)
virtual bool GetAudioOutputMode(NTV2_GlobalAudioPlaybackMode *mode)
NTV2_DriverDebugMessageSet msgSet
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device....
virtual bool ControlDriverDebugMessages(NTV2_DriverDebugMessageSet msgSet, bool enable)
ULWord videoSegmentHostPitch
NTV2RegisterWrites mRegWrites
Stores WriteRegister data.
@ AJA_DebugStat_DMATransferP2P
NTV2_GlobalAudioPlaybackMode
AUTOCIRCULATE_TASK_STRUCT acTask
#define AsPTaskStruct(_p_)
ULWord ulVidSegmentCardPitch
static const uint32_t sIntEnumToStatKeys[]
AUTO_CIRC_COMMAND eCommand
#define AsRoutingTablePtr(_p_)
struct AUTOCIRCULATE_P2P_STRUCT CHANNEL_P2P_STRUCT
#define AsStatusStructPtr(_p_)
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inTotalByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
@ AJA_DebugStat_WaitForInterruptUartTx1
ULWord64 messageBusAddress
virtual ~CNTV2LinuxDriverInterface()
ULWord ulVidSegmentHostPitch
@ AJA_DebugStat_AutoCirculateXfer
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
virtual bool UnmapDNXRegisters(void)
virtual bool UnmapFrameBuffers(void)
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
@ kVRegNumDmaDriverBuffers
@ AJA_DebugStat_WaitForInterruptUartTx2
virtual bool DmaWriteWithOffsets(NTV2DMAEngine DMAEngine, ULWord frameNumber, ULWord *pFrameBuffer, ULWord offsetSrc, ULWord offsetDest, ULWord bytes)
virtual bool GetDMADriverBufferPhysicalAddress(ULWord *physAddr)
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inTotalByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
All new NTV2 structs start with this common header.
#define AsFrameStampStructPtr(_p_)
ULWord videoSegmentCardPitch
Declares numerous NTV2 utility functions.
virtual bool ConfigureInterrupt(const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
virtual bool RestoreHardwareProcampRegisters(void)
virtual bool WaitForInterrupt(INTERRUPT_ENUMS eInterrupt, ULWord timeOutMs=68)
virtual bool MapDNXRegisters(void)
ULWord64 ullMessageBusAddress
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device....
@ eTransferAutoCirculateEx
bool NTV2DeviceIsDirectAddressable(const NTV2DeviceID inDeviceID)
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
virtual bool DmaWriteFrameDriverBuffer(NTV2DMAEngine DMAEngine, ULWord frameNumber, unsigned long dmaBufferFrame, ULWord bytes, ULWord poll)
virtual bool GetBA2MemorySize(ULWord *memSize)
Types and defines shared between NTV2 user application interface and Linux device driver.
CNTV2LinuxDriverInterface()
#define AsTransferStatusStruct(_p_)
struct NTV2RegInfo NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
@ AJA_DebugStat_WaitForInterruptUartRx2
virtual bool DmaReadFrameDriverBuffer(NTV2DMAEngine DMAEngine, ULWord frameNumber, unsigned long dmaBufferFrame, ULWord bytes, ULWord downSample, ULWord linePitch, ULWord poll)
virtual bool GetBA4MemorySize(ULWord *memSize)
@ AJA_DebugStat_WaitForInterruptIn7
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
@ AJA_DebugStat_WaitForInterruptIn6
virtual bool MapDMADriverBuffer()
@ AJA_DebugStat_WaitForInterruptUartRx1
virtual bool UnmapXena2Flash(void)
FRAME_STAMP_STRUCT acFrameStamp
@ kVRegDMADriverBufferPhysicalAddress
@ AJA_DebugStat_WaitForInterruptOut1
NTV2Crosspoint channelSpec
ULWord * _pCh1FrameBaseAddress
virtual bool UnmapRegisters(void)
virtual bool GetBA0MemorySize(ULWord *memSize)
virtual bool HevcSendMessage(HevcMessageHeader *pMessage)
Sends an HEVC message to the NTV2 driver.
#define AsPTransferStruct(_p_)
virtual ULWord GetFrameBufferSize(void) const
bool mRecordRegWrites
True if recording; otherwise false when not recording.
@ AJA_DebugStat_WriteRegister
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
@ AJA_DebugStat_DMATransfer
NTV2RoutingTable acXena2RoutingTable
virtual bool GetDMADriverBufferAddress(ULWord **pDMADriverBuffer)
virtual bool GetDMANumDriverBuffers(ULWord *pNumDmaDriverBuffers)
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &pAutoCircData)
Sends an AutoCirculate command to the NTV2 driver.
ULWord * _pRegisterBaseAddress
AJALock mRegWritesLock
Guard mutex for mRegWrites.
@ eTransferAutoCirculateEx2
virtual bool MapFrameBuffers(void)
ULWord * _pDMADriverBufferAddress
#define xHEX0N(__x__, __n__)
virtual void BumpEventCount(const INTERRUPT_ENUMS eInterruptType)
Atomically increments the event count tally for the given interrupt type.
@ AJA_DebugStat_WaitForInterruptIn1
virtual bool OpenLocalPhysical(const UWord inDeviceIndex)
Opens the local/physical device connection.
@ AJA_DebugStat_WaitForInterruptIn3
#define INVALID_HANDLE_VALUE
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
virtual bool GetBA1MemorySize(ULWord *memSize)
@ AJA_DebugStat_WaitForInterruptIn4
ULWord * _pFrameBaseAddress
virtual bool UnmapDMADriverBuffer()
AUTOCIRCULATE_TASK_STRUCT acTask
virtual bool Close(void)
Closes me, releasing host resources that may have been allocated in a previous Open call.
Declares the AJADebug class.
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
@ AJA_DebugStat_WaitForInterruptIn5
virtual bool SetupBoard(void)