|
AJA NTV2 SDK
17.1.3.1410
NTV2 SDK 17.1.3.1410
|
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");
74 ostringstream oss; oss <<
"/dev/" << kAJANTV2 <<
DEC(index);
79 if (count == inDeviceIndex)
88 {
LDIFAIL(
"Failed to open device index '" << inDeviceIndex <<
"'");
return false;}
110 #if !defined(NTV2_DEPRECATE_16_0)
113 #endif // !defined(NTV2_DEPRECATE_16_0)
124 #endif // !defined(NTV2_NULL_DEVICE)
136 LDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
139 #if defined(NTV2_NUB_CLIENT_SUPPORT)
142 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
155 {
LDIFAIL(
"IOCTL_NTV2_READ_REGISTER failed");
return false;}
165 LDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
168 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
176 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
177 #if defined(NTV2_NUB_CLIENT_SUPPORT)
180 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
182 {
LDIFAIL(
"_hDevice is invalid (0 or -1)");
return false;}
192 {
LDIFAIL(
"IOCTL_NTV2_WRITE_REGISTER failed");
return false;}
202 {
LDIFAIL(
"IOCTL_NTV2_RESTORE_HARDWARE_PROCAMP_REGISTERS failed");
return false;}
222 intrControlStruct.
enable = bEnable;
225 LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
258 LDIFAIL(
"Unsupported interrupt count request. Only vertical input interrupts counted.");
271 {
LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
return false;}
281 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,
314 {
LDIFAIL(
"IOCTL_NTV2_WAITFOR_INTERRUPT failed");
return false;}
316 return waitIntrStruct.
success != 0;
327 cddmStruct.
msgSet = msgSet;
328 cddmStruct.
enable = enable;
331 LDIFAIL(
"IOCTL_NTV2_CONTROL_DRIVER_DEBUG_MESSAGES failed");
334 return cddmStruct.
success != 0;
346 LDIFAIL(
"IOCTL_NTV2_SETUP_BOARD failed");
356 #if !defined(NTV2_DEPRECATE_16_0)
370 LDIFAIL (
"MapFrameBuffers failed - couldn't get BA1MemorySize");
374 if (BA1MemorySize == 0)
376 LDIFAIL (
"BA1MemorySize is 0 -- module loaded with MapFrameBuffers=0?");
377 LDIFAIL (
"PIO mode not available, only driverbuffer DMA.");
393 LDIFAIL (
"MapFrameBuffers failed in call to mmap()");
420 LDIFAIL (
"UnmapFrameBuffers failed - couldn't get BA1MemorySize");
441 LDIFAIL (
"MapRegisters failed - couldn't get BA0MemorySize");
448 LDIFAIL (
"BA0MemorySize is 0, registers not mapped.");
510 LDIFAIL (
"MapXena2Flash failed - couldn't get BA4MemorySize");
516 LDIFAIL (
"MapXena2Flash failed - BA4MemorySize == 0");
523 PROT_READ | PROT_WRITE, MAP_SHARED,
528 LDIFAIL (
"MapXena2Flash(): mmap of BAR4 for PCI Flash failed");
559 LDIFAIL (
"MapDNXRegisters failed - couldn't get BA2MemorySize");
564 LDIFAIL (
"MapDNXRegisters failed - BA2MemorySize == 0");
572 PROT_READ | PROT_WRITE, MAP_SHARED,
578 LDIFAIL (
"MapDNXRegisters failed - couldn't map BAR2");
599 #endif // !defined(NTV2_DEPRECATE_16_0)
609 const ULWord inFrameNumber,
611 const ULWord inOffsetBytes,
613 const bool inSynchronous)
621 buffer, inOffsetBytes, 0,
626 dmaControlBuf.
engine = inDMAEngine;
632 dmaControlBuf.
numBytes = inByteCount;
638 dmaControlBuf.
poll = 0;
639 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
640 ULWord numDmaDriverBuffers;
647 dmaControlBuf.
poll = 0;
649 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
653 #define ERRMSG(s) #s " failed"
658 if (inOffsetBytes == 0)
671 if (inOffsetBytes == 0)
685 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
689 LDIFAIL(errMsg <<
" FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" CNT=" << inByteCount);
697 const ULWord inFrameNumber,
699 const ULWord inOffsetBytes,
701 const ULWord inNumSegments,
704 const bool inIsSynchronous)
712 inNumSegments, inHostPitch, inCardPitch, inIsSynchronous);
714 LDIDBG(
"FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" NB=" << inByteCount << (inIsRead?
" Rd":
" Wr"));
718 dmaControlBuf.
engine = inDMAEngine;
724 dmaControlBuf.
numBytes = inByteCount;
728 dmaControlBuf.
poll = 0;
729 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
730 ULWord numDmaDriverBuffers(0);
734 if (!inIsSynchronous)
739 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
743 #define ERRMSG(s) #s " failed"
775 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
779 LDIFAIL(errMsg <<
" FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" CNT=" << inByteCount);
788 const bool inIsTarget,
789 const ULWord inFrameNumber,
790 const ULWord inCardOffsetBytes,
792 const ULWord inNumSegments,
793 const ULWord inSegmentHostPitch,
794 const ULWord inSegmentCardPitch,
801 inNumSegments, inSegmentHostPitch, inSegmentCardPitch, inP2PData);
810 ::memset (
AsVoidPtr(&dmaP2PStruct), 0,
sizeof(dmaP2PStruct));
827 dmaP2PStruct.
bRead = inIsTarget;
844 {
LDIFAIL(
"IOCTL error");
return false;}
881 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CONTROL failed");
return false;}
892 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_STATUS, failed");
return false;}
902 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
909 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
921 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
926 acFrameStampCombo.
acTask = *pTask;
931 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
934 *pTask = acFrameStampCombo.
acTask;
945 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
946 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
947 ULWord numDmaDriverBuffers;
950 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
951 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
957 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
960 acXferCombo.channelSpec = autoCircData.
channelSpec;
961 acXferCombo.acTransfer = *acTransfer;
962 acXferCombo.acStatus = *acStatus;
963 if (!pXena2RoutingTable)
964 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
966 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
973 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
975 *acStatus = acXferCombo.acStatus;
986 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
987 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
988 ULWord numDmaDriverBuffers;
990 if ((
unsigned long)acTransfer->
audioBuffer >= numDmaDriverBuffers && (
unsigned long)acTransfer->
audioBuffer % 4)
991 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
992 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
998 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
1001 acXferCombo.channelSpec = autoCircData.
channelSpec;
1002 acXferCombo.acTransfer = *acTransfer;
1003 acXferCombo.acStatus = *acStatus;
1004 if (!pXena2RoutingTable)
1005 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
1007 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
1014 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
1016 *acStatus = acXferCombo.acStatus;
1027 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
1028 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
1029 ULWord numDmaDriverBuffers;
1032 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
1033 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
1039 ::memset(
AsVoidPtr(&acXferCombo), 0,
sizeof(acXferCombo));
1046 if (pXena2RoutingTable)
1049 acXferCombo.
acTask = *pTask;
1056 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
1065 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
1068 acFrameStampCombo.
acTask = *pTask;
1073 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CAPTURETASK failed");
return false;}
1078 LDIFAIL(
"Unsupported AC command type in AutoCirculate()");
1098 {
LDIFAIL(
"IOCTL_AJANTV2_MESSAGE failed");
return false;}
1114 {
LDIFAIL(
"IOCTL_AJANTV2_MESSAGE failed");
return false;}
1119 #if !defined(NTV2_DEPRECATE_16_0)
1137 ULWord numDmaDriverBuffers;
1140 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1144 if (!numDmaDriverBuffers)
1146 LDIFAIL(
"numDmaDriverBuffers == 0");
1154 PROT_READ | PROT_WRITE,MAP_SHARED,
1181 ULWord numDmaDriverBuffers;
1184 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1187 if (!numDmaDriverBuffers)
1190 LDIFAIL(
"numDmaDriverBuffers == 0");
1198 #endif // !defined(NTV2_DEPRECATE_16_0)
1210 #if !defined(NTV2_DEPRECATE_16_0)
1239 dmaControlBuf.
poll = poll;
1241 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1273 dmaControlBuf.
poll = poll;
1275 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1307 dmaControlBuf.
linePitch = linePitch == 0 ? 1 : linePitch;
1308 dmaControlBuf.
poll = poll;
1310 static bool bPrintedDownsampleDeprecatedMsg =
false;
1311 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1312 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1315 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1348 if( linePitch == 0 ) linePitch = 1;
1350 dmaControlBuf.
poll = poll;
1352 static bool bPrintedDownsampleDeprecatedMsg =
false;
1353 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1354 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1357 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1360 #endif // !defined(NTV2_DEPRECATE_16_0)
1385 dmaControlBuf.
poll = 0;
1389 #define ERRMSG(s) #s " failed"
1392 if (offsetSrc == 0 && offsetDest == 0)
1403 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1404 {
LDIFAIL(errMsg);
return false;}
1432 dmaControlBuf.
poll = 0;
1435 #define ERRMSG(s) #s " failed"
1438 if (offsetSrc == 0 && offsetDest == 0)
1449 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1450 {
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 widget_framestore. They're also commonly use...
@ AJA_DebugStat_ReadRegister
bool _boardOpened
True if I'm open and connected to the device.
A generic user-space buffer object that has an address and a length. Used most often to share an arbi...
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
virtual bool NTV2DMATransferRemote(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, NTV2Buffer &inOutBuffer, const ULWord inCardOffsetBytes, const ULWord inNumSegments, const ULWord inSegmentHostPitch, const ULWord inSegmentCardPitch, const bool inSynchronous)
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)
#define NTV2_UNUSED(__p__)
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
@ DEVICE_ID_NOTFOUND
Invalid or "not found".
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.
NTV2RPCAPI * _pRPCAPI
Points to remote or software device interface; otherwise NULL for local physical device.
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
@ AJA_DebugStat_WaitForInterruptIn5
virtual bool SetupBoard(void)