 |
AJA NTV2 SDK
17.5.0.1658
NTV2 SDK 17.5.0.1658
|
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;}
157 #if 0 // Fake KONAIP25G from C4412G (see also NTV2GetRegisters::GetRegisterValues):
161 outValue = 0x0A03FAD9;
171 LDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
174 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
182 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
183 #if defined(NTV2_NUB_CLIENT_SUPPORT)
186 #endif // defined(NTV2_NUB_CLIENT_SUPPORT)
188 {
LDIFAIL(
"_hDevice is invalid (0 or -1)");
return false;}
198 {
LDIFAIL(
"IOCTL_NTV2_WRITE_REGISTER failed");
return false;}
208 {
LDIFAIL(
"IOCTL_NTV2_RESTORE_HARDWARE_PROCAMP_REGISTERS failed");
return false;}
228 intrControlStruct.
enable = bEnable;
231 LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
264 LDIFAIL(
"Unsupported interrupt count request. Only vertical input interrupts counted.");
277 {
LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
return false;}
287 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,
320 {
LDIFAIL(
"IOCTL_NTV2_WAITFOR_INTERRUPT failed");
return false;}
322 return waitIntrStruct.
success != 0;
333 cddmStruct.
msgSet = msgSet;
334 cddmStruct.
enable = enable;
337 LDIFAIL(
"IOCTL_NTV2_CONTROL_DRIVER_DEBUG_MESSAGES failed");
340 return cddmStruct.
success != 0;
352 LDIFAIL(
"IOCTL_NTV2_SETUP_BOARD failed");
362 #if !defined(NTV2_DEPRECATE_16_0)
376 LDIFAIL (
"MapFrameBuffers failed - couldn't get BA1MemorySize");
380 if (BA1MemorySize == 0)
382 LDIFAIL (
"BA1MemorySize is 0 -- module loaded with MapFrameBuffers=0?");
383 LDIFAIL (
"PIO mode not available, only driverbuffer DMA.");
399 LDIFAIL (
"MapFrameBuffers failed in call to mmap()");
426 LDIFAIL (
"UnmapFrameBuffers failed - couldn't get BA1MemorySize");
447 LDIFAIL (
"MapRegisters failed - couldn't get BA0MemorySize");
454 LDIFAIL (
"BA0MemorySize is 0, registers not mapped.");
516 LDIFAIL (
"MapXena2Flash failed - couldn't get BA4MemorySize");
522 LDIFAIL (
"MapXena2Flash failed - BA4MemorySize == 0");
529 PROT_READ | PROT_WRITE, MAP_SHARED,
534 LDIFAIL (
"MapXena2Flash(): mmap of BAR4 for PCI Flash failed");
565 LDIFAIL (
"MapDNXRegisters failed - couldn't get BA2MemorySize");
570 LDIFAIL (
"MapDNXRegisters failed - BA2MemorySize == 0");
578 PROT_READ | PROT_WRITE, MAP_SHARED,
584 LDIFAIL (
"MapDNXRegisters failed - couldn't map BAR2");
605 #endif // !defined(NTV2_DEPRECATE_16_0)
615 const ULWord inFrameNumber,
617 const ULWord inOffsetBytes,
619 const bool inSynchronous)
627 buffer, inOffsetBytes, 0,
632 dmaControlBuf.
engine = inDMAEngine;
638 dmaControlBuf.
numBytes = inByteCount;
644 dmaControlBuf.
poll = 0;
645 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
646 ULWord numDmaDriverBuffers;
653 dmaControlBuf.
poll = 0;
655 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
659 #define ERRMSG(s) #s " failed"
664 if (inOffsetBytes == 0)
677 if (inOffsetBytes == 0)
691 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
695 LDIFAIL(errMsg <<
" FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" CNT=" << inByteCount);
703 const ULWord inFrameNumber,
705 const ULWord inOffsetBytes,
707 const ULWord inNumSegments,
710 const bool inIsSynchronous)
718 inNumSegments, inHostPitch, inCardPitch, inIsSynchronous);
720 LDIDBG(
"FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" NB=" << inByteCount << (inIsRead?
" Rd":
" Wr"));
724 dmaControlBuf.
engine = inDMAEngine;
730 dmaControlBuf.
numBytes = inByteCount;
734 dmaControlBuf.
poll = 0;
735 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
736 ULWord numDmaDriverBuffers(0);
740 if (!inIsSynchronous)
745 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
749 #define ERRMSG(s) #s " failed"
781 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
785 LDIFAIL(errMsg <<
" FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" CNT=" << inByteCount);
794 const bool inIsTarget,
795 const ULWord inFrameNumber,
796 const ULWord inCardOffsetBytes,
798 const ULWord inNumSegments,
799 const ULWord inSegmentHostPitch,
800 const ULWord inSegmentCardPitch,
807 inNumSegments, inSegmentHostPitch, inSegmentCardPitch, inP2PData);
816 ::memset (
AsVoidPtr(&dmaP2PStruct), 0,
sizeof(dmaP2PStruct));
833 dmaP2PStruct.
bRead = inIsTarget;
850 {
LDIFAIL(
"IOCTL error");
return false;}
887 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CONTROL failed");
return false;}
898 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_STATUS, failed");
return false;}
908 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
915 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
927 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
932 acFrameStampCombo.
acTask = *pTask;
937 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
940 *pTask = acFrameStampCombo.
acTask;
951 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
952 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
953 ULWord numDmaDriverBuffers;
956 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
957 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
963 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
966 acXferCombo.channelSpec = autoCircData.
channelSpec;
967 acXferCombo.acTransfer = *acTransfer;
968 acXferCombo.acStatus = *acStatus;
969 if (!pXena2RoutingTable)
970 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
972 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
979 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
981 *acStatus = acXferCombo.acStatus;
992 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
993 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
994 ULWord numDmaDriverBuffers;
996 if ((
unsigned long)acTransfer->
audioBuffer >= numDmaDriverBuffers && (
unsigned long)acTransfer->
audioBuffer % 4)
997 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
998 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
1004 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
1007 acXferCombo.channelSpec = autoCircData.
channelSpec;
1008 acXferCombo.acTransfer = *acTransfer;
1009 acXferCombo.acStatus = *acStatus;
1010 if (!pXena2RoutingTable)
1011 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
1013 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
1020 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
1022 *acStatus = acXferCombo.acStatus;
1033 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
1034 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
1035 ULWord numDmaDriverBuffers;
1038 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
1039 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS)
1045 ::memset(
AsVoidPtr(&acXferCombo), 0,
sizeof(acXferCombo));
1052 if (pXena2RoutingTable)
1055 acXferCombo.
acTask = *pTask;
1062 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
1071 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
1074 acFrameStampCombo.
acTask = *pTask;
1079 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CAPTURETASK failed");
return false;}
1084 LDIFAIL(
"Unsupported AC command type in AutoCirculate()");
1104 {
LDIFAIL(
"IOCTL_AJANTV2_MESSAGE failed");
return false;}
1120 {
LDIFAIL(
"IOCTL_AJANTV2_MESSAGE failed");
return false;}
1125 #if !defined(NTV2_DEPRECATE_16_0)
1143 ULWord numDmaDriverBuffers;
1146 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1150 if (!numDmaDriverBuffers)
1152 LDIFAIL(
"numDmaDriverBuffers == 0");
1160 PROT_READ | PROT_WRITE,MAP_SHARED,
1187 ULWord numDmaDriverBuffers;
1190 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1193 if (!numDmaDriverBuffers)
1196 LDIFAIL(
"numDmaDriverBuffers == 0");
1204 #endif // !defined(NTV2_DEPRECATE_16_0)
1216 #if !defined(NTV2_DEPRECATE_16_0)
1245 dmaControlBuf.
poll = poll;
1247 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1279 dmaControlBuf.
poll = poll;
1281 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1313 dmaControlBuf.
linePitch = linePitch == 0 ? 1 : linePitch;
1314 dmaControlBuf.
poll = poll;
1316 static bool bPrintedDownsampleDeprecatedMsg =
false;
1317 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1318 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1321 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1354 if( linePitch == 0 ) linePitch = 1;
1356 dmaControlBuf.
poll = poll;
1358 static bool bPrintedDownsampleDeprecatedMsg =
false;
1359 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1360 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1363 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1366 #endif // !defined(NTV2_DEPRECATE_16_0)
1391 dmaControlBuf.
poll = 0;
1395 #define ERRMSG(s) #s " failed"
1398 if (offsetSrc == 0 && offsetDest == 0)
1409 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1410 {
LDIFAIL(errMsg);
return false;}
1438 dmaControlBuf.
poll = 0;
1441 #define ERRMSG(s) #s " failed"
1444 if (offsetSrc == 0 && offsetDest == 0)
1455 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1456 {
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.
Describes a user-space buffer on the host computer. I have an address and a length,...
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 FrameStore 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
@ DEVICE_ID_CORVID44_8K
See Corvid 44 12G.
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
@ DEVICE_ID_KONAIP_25G
See KONA IP25.
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_)
@ 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
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
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)