AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
CNTV2MacDriverInterface Class Reference

A Mac-specific implementation of CNTV2DriverInterface. More...

#include <ntv2macdriverinterface.h>

Inheritance diagram for CNTV2MacDriverInterface:
[legend]
Collaboration diagram for CNTV2MacDriverInterface:
[legend]

Public Member Functions

virtual bool SystemControl (void *dataPtr, SystemControlCode systemControlCode)
 
virtual bool MapFrameBuffers (void)
 
virtual bool UnmapFrameBuffers (void)
 
virtual bool MapRegisters (void)
 
virtual bool UnmapRegisters (void)
 
virtual bool MapXena2Flash (void)
 
virtual bool UnmapXena2Flash (void)
 
virtual ULWord GetPCISlotNumber (void) const
 
virtual bool MapMemory (const MemoryType memType, void **memPtr)
 
virtual bool SetAudioOutputMode (NTV2_GlobalAudioPlaybackMode mode)
 
virtual bool GetAudioOutputMode (NTV2_GlobalAudioPlaybackMode *mode)
 
virtual bool KernelLog (void *dataPtr, UInt32 dataSize)
 
virtual bool ConfigureInterrupt (bool, INTERRUPT_ENUMS)
 
virtual std::string GetConnectionType (void) const
 
Construction, destruction, assignment
 CNTV2MacDriverInterface ()
 My default constructor. More...
 
virtual ~CNTV2MacDriverInterface ()
 My destructor. More...
 
Overloaded Methods
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 the AJA device. Using the optional mask and shift parameters, it's possible to set or clear any number of specific bits in a real register without altering any of the register's other bits. More...
 
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. Using the optional mask and shift parameters, it's possible to read any number of specific bits in a register while ignoring the register's other bits. More...
 
virtual bool AcquireStreamForApplication (ULWord inApplicationType, int32_t inProcessID)
 Reserves exclusive use of the AJA device for a given process, preventing other processes on the host from acquiring it until subsequently released. More...
 
virtual bool ReleaseStreamForApplication (ULWord inApplicationType, int32_t inProcessID)
 Releases exclusive use of the AJA device for the given process, permitting other processes to acquire it. More...
 
virtual bool AcquireStreamForApplicationWithReference (ULWord inApplicationType, int32_t inProcessID)
 A reference-counted version of CNTV2DriverInterface::AcquireStreamForApplication useful for process groups. More...
 
virtual bool ReleaseStreamForApplicationWithReference (ULWord inApplicationType, int32_t inProcessID)
 A reference-counted version of CNTV2DriverInterface::ReleaseStreamForApplication useful for process groups. More...
 
virtual bool SetStreamingApplication (const ULWord appType, const int32_t pid)
 Sets the four-CC type and process ID of the application that should "own" the AJA device (i.e. reserve it for exclusive use). More...
 
virtual bool GetStreamingApplication (ULWord &outAppType, int32_t &outProcessID)
 Answers with the four-CC type and process ID of the application that currently "owns" the AJA device (i.e. reserved it for exclusive use). More...
 
virtual bool WaitForInterrupt (const INTERRUPT_ENUMS type, const ULWord timeout=50)
 
virtual bool GetInterruptCount (const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
 Answers with the number of interrupts of the given type processed by the driver. More...
 
virtual bool WaitForChangeEvent (UInt32 timeout=0)
 
virtual bool DmaTransfer (const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inByteCount, const bool inSynchronous=(!(0)))
 Transfers data between the AJA device and the host. This function will block and not return to the caller until the transfer has finished or failed. More...
 
virtual bool DmaTransfer (const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inByteCount, const ULWord inNumSegments, const ULWord inSegmentHostPitch, const ULWord inSegmentCardPitch, const bool inSynchronous=(!(0)))
 Transfers data in segments between the AJA device and the host. This function will block and not return to the caller until the transfer has finished or failed. More...
 
virtual bool DmaTransfer (const NTV2DMAEngine inDMAEngine, const NTV2Channel inDMAChannel, const bool inIsTarget, const ULWord inFrameNumber, const ULWord inCardOffsetBytes, const ULWord inByteCount, const ULWord inNumSegments, const ULWord inSegmentHostPitch, const ULWord inSegmentCardPitch, const PCHANNEL_P2P_STRUCT &inP2PData)
 
virtual bool AutoCirculate (AUTOCIRCULATE_DATA &autoCircData)
 Sends an AutoCirculate command to the NTV2 driver. More...
 
virtual bool NTV2Message (NTV2_HEADER *pInMessage)
 Sends a message to the NTV2 driver (the new, improved, preferred way). More...
 
virtual bool ControlDriverDebugMessages (NTV2_DriverDebugMessageSet, bool)
 
- Public Member Functions inherited from CNTV2DriverInterface
virtual ULWord GetNumFrameBuffers (void) const
 
virtual ULWord GetFrameBufferSize (void) const
 
virtual bool DriverGetBitFileInformation (BITFILE_INFO_STRUCT &outBitFileInfo, const NTV2BitFileType inBitFileType=NTV2_VideoProcBitFile)
 Answers with the currently-installed bitfile information. More...
 
virtual bool DriverGetBuildInformation (BUILD_INFO_STRUCT &outBuildInfo)
 Answers with the driver's build information. More...
 
virtual bool GetPackageInformation (PACKAGE_INFO_STRUCT &outPkgInfo)
 Answers with the IP device's package information. More...
 
virtual bool BitstreamWrite (const NTV2Buffer &inBuffer, const bool inFragment, const bool inSwap)
 
virtual bool BitstreamReset (const bool inConfiguration, const bool inInterface)
 
virtual bool BitstreamStatus (NTV2ULWordVector &outRegValues)
 
virtual bool BitstreamLoad (const bool inSuspend, const bool inResume)
 
virtual bool StreamChannelOps (const NTV2Channel inChannel, ULWord flags, NTV2StreamChannel &status)
 
virtual bool StreamBufferOps (const NTV2Channel inChannel, NTV2Buffer &inBuffer, ULWord64 bufferCookie, ULWord flags, NTV2StreamBuffer &status)
 
virtual bool ReadRP188Registers (const NTV2Channel inChannel, RP188_STRUCT *pRP188Data)
 
virtual std::string GetDescription (void) const
 
virtual NTV2Dictionary ConnectParams (void) const
 
virtual bool SuspendAudio (void)
 
virtual bool ResumeAudio (const ULWord inFBSize)
 
virtual bool ReadRegisterMulti (const ULWord numRegs, ULWord *pOutWhichRegFailed, NTV2RegInfo aRegs[])
 
virtual Word SleepMs (const LWord msec)
 
virtual NTV2DeviceID GetDeviceID (void)
 
virtual bool IsDeviceReady (const bool inCheckValid=(0))
 
virtual bool IsMBSystemValid (void)
 
virtual bool IsMBSystemReady (void)
 
virtual bool Open (const UWord inDeviceIndex)
 Opens a local/physical AJA device so it can be monitored/controlled. More...
 
virtual bool Open (const std::string &inURLSpec)
 Opens the specified local, remote or software device. More...
 
virtual bool Close (void)
 Closes me, releasing host resources that may have been allocated in a previous Open call. More...
 
template<typename T >
bool ReadRegister (const ULWord inRegNum, T &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
 This template function reads all or part of the 32-bit contents of a specific register (real or virtual) from the AJA device, and if successful, returns its value automatically casted to the scalar type of the "outValue" parameter. More...
 
virtual bool ReadRegisters (NTV2RegisterReads &inOutValues)
 Reads the register(s) specified by the given NTV2RegInfo sequence. More...
 
virtual bool ConfigureSubscription (const bool bSubscribe, const INTERRUPT_ENUMS inInterruptType, PULWord &outSubcriptionHdl)
 
virtual HANDLE GetInterruptEvent (const INTERRUPT_ENUMS eInterruptType)
 
virtual bool GetInterruptEventCount (const INTERRUPT_ENUMS inEventCode, ULWord &outCount)
 Answers with the number of interrupt events that I successfully waited for. More...
 
virtual bool SetInterruptEventCount (const INTERRUPT_ENUMS inEventCode, const ULWord inCount)
 Resets my interrupt event tally for the given interrupt type. (This is my count of the number of successful event waits.) More...
 
virtual bool HevcSendMessage (HevcMessageHeader *pMessage)
 Sends an HEVC message to the NTV2 driver. More...
 
virtual bool IsSupported (const NTV2BoolParamID inParamID)
 
virtual ULWord GetNumSupported (const NTV2NumericParamID inParamID)
 
virtual ULWordSet GetSupportedItems (const NTV2EnumsID inEnumsID)
 
virtual bool GetRecordedRegisterWrites (NTV2RegisterWrites &outRegWrites) const
 Answers with the recorded register writes. More...
 
virtual bool StartRecordRegisterWrites (const bool inSkipActualWrites=(0))
 Starts recording all WriteRegister calls. More...
 
virtual bool IsRecordingRegisterWrites (void) const
 
virtual bool StopRecordRegisterWrites (void)
 Stops recording all WriteRegister calls. More...
 
virtual bool PauseRecordRegisterWrites (void)
 Pauses recording WriteRegister calls. More...
 
virtual bool ResumeRecordRegisterWrites (void)
 Resumes recording WriteRegister calls (after a prior call to PauseRecordRegisterWrites). More...
 
virtual ULWord GetNumRecordedRegisterWrites (void) const
 
 CNTV2DriverInterface ()
 My default constructor. More...
 
virtual ~CNTV2DriverInterface ()
 My destructor. More...
 

Protected Member Functions

virtual bool OpenLocalPhysical (const UWord inDeviceIndex)
 Opens the local/physical device connection. More...
 
virtual bool CloseLocalPhysical (void)
 Releases host resources associated with the local/physical device connection. More...
 
- Protected Member Functions inherited from CNTV2DriverInterface
virtual bool OpenRemote (const NTV2DeviceSpecParser &inSpec)
 Peforms the housekeeping details of opening the remote/virtual device using the given specParser. More...
 
virtual bool CloseRemote (void)
 Releases host resources associated with the remote/special device connection. More...
 
virtual bool ParseFlashHeader (BITFILE_INFO_STRUCT &outBitfileInfo)
 
virtual bool GetBoolParam (const ULWord inParamID, ULWord &outValue)
 
virtual bool GetNumericParam (const ULWord inParamID, ULWord &outValue)
 
virtual bool GetRegInfoForBoolParam (const NTV2BoolParamID inParamID, NTV2RegInfo &outRegInfo)
 Answers with the NTV2RegInfo of the register associated with the given boolean (i.e., "Can Do") device feature. More...
 
virtual bool GetRegInfoForNumericParam (const NTV2NumericParamID inParamID, NTV2RegInfo &outRegInfo)
 Answers with the NTV2RegInfo of the register associated with the given numeric (i.e., "Get Num") device feature. More...
 
virtual void BumpEventCount (const INTERRUPT_ENUMS eInterruptType)
 Atomically increments the event count tally for the given interrupt type. More...
 
virtual void FinishOpen (void)
 Initializes my member variables after a successful Open. More...
 
virtual bool ReadFlashULWord (const ULWord inAddress, ULWord &outValue, const ULWord inRetryCount=1000)
 

Additional Inherited Members

- Static Public Member Functions inherited from CNTV2DriverInterface
static NTV2StringList GetLegalSchemeNames (void)
 
static void SetShareMode (const bool inSharedMode)
 Specifies if subsequent Open calls should open the device in shared mode or not. More...
 
static bool GetShareMode (void)
 
static void SetOverlappedMode (const bool inOverlapMode)
 Specifies if the next Open call should try to open the device in overlapped mode or not. More...
 
static bool GetOverlappedMode (void)
 
- Protected Types inherited from CNTV2DriverInterface
typedef std::vector< ULWord_EventCounts
 
typedef std::vector< PULWord_EventHandles
 
- Protected Attributes inherited from CNTV2DriverInterface
UWord _boardNumber
 My device index number. More...
 
NTV2DeviceID _boardID
 My cached device ID. More...
 
bool _boardOpened
 True if I'm open and connected to the device. More...
 
bool mRecordRegWrites
 True if recording; otherwise false when not recording. More...
 
bool mSkipRegWrites
 True if actual register writes are skipped while recording. More...
 
ULWord _programStatus
 
NTV2RPCAPI_pRPCAPI
 Points to remote or software device interface; otherwise NULL for local physical device. More...
 
_EventHandles mInterruptEventHandles
 For subscribing to each possible event, one for each interrupt type. More...
 
_EventCounts mEventCounts
 My event tallies, one for each interrupt type. Note that these. More...
 
NTV2RegisterWrites mRegWrites
 Stores WriteRegister data. More...
 
AJALock mRegWritesLock
 Guard mutex for mRegWrites. More...
 
ULWord_pFrameBaseAddress
 
ULWord_pRegisterBaseAddress
 
ULWord _pRegisterBaseAddressLength
 
ULWord_pXena2FlashBaseAddress
 
ULWord_pCh1FrameBaseAddress
 
ULWord_pCh2FrameBaseAddress
 
ULWord _ulNumFrameBuffers
 
ULWord _ulFrameBufferSize
 
ULWord _pciSlot
 

Detailed Description

A Mac-specific implementation of CNTV2DriverInterface.

Definition at line 22 of file ntv2macdriverinterface.h.

Constructor & Destructor Documentation

◆ CNTV2MacDriverInterface()

CNTV2MacDriverInterface::CNTV2MacDriverInterface ( )

My default constructor.

Definition at line 156 of file ntv2macdriverinterface.cpp.

◆ ~CNTV2MacDriverInterface()

CNTV2MacDriverInterface::~CNTV2MacDriverInterface ( )
virtual

My destructor.

Definition at line 166 of file ntv2macdriverinterface.cpp.

Member Function Documentation

◆ AcquireStreamForApplication()

bool CNTV2MacDriverInterface::AcquireStreamForApplication ( ULWord  inAppType,
int32_t  inProcessID 
)
virtual

Reserves exclusive use of the AJA device for a given process, preventing other processes on the host from acquiring it until subsequently released.

Returns
True if successful; otherwise false.
Parameters
[in]inAppTypeA 32-bit "four CC" value that helps identify the calling application that is requesting exclusive use of the device.
[in]inProcessIDSpecifies the OS-specific process identifier that uniquely identifies the running process on the host machine that is requesting exclusive use of the device (see AJAProcess::GetPid).

This method reserves exclusive use of the AJA device by the given running host process. The AJA device records both the "process ID" and "four CC". If another host process has already reserved the device, this function will fail.

Note
AJA recommends saving the device's NTV2EveryFrameTaskMode when this function is called, and restoring it after CNTV2DriverInterface::ReleaseStreamForApplication is called.
A call to CNTV2DriverInterface::AcquireStreamForApplication should always be balanced by a call to CNTV2DriverInterface::ReleaseStreamForApplication.
See also
CNTV2DriverInterface::ReleaseStreamForApplication, Sharing AJA Devices With Other Applications

Reimplemented from CNTV2DriverInterface.

Definition at line 481 of file ntv2macdriverinterface.cpp.

◆ AcquireStreamForApplicationWithReference()

bool CNTV2MacDriverInterface::AcquireStreamForApplicationWithReference ( ULWord  inAppType,
int32_t  inProcessID 
)
virtual

A reference-counted version of CNTV2DriverInterface::AcquireStreamForApplication useful for process groups.

Returns
True if successful; otherwise false.
Parameters
[in]inAppTypeA 32-bit "four CC" value that helps identify the calling application that is requesting exclusive use of the device.
[in]inProcessIDSpecifies the OS-specific process identifier that uniquely identifies the running process on the host machine that is requesting exclusive use of the device (see AJAProcess::GetPid).

This method reserves exclusive use of the AJA device by the given running host process, recording both the "process ID" and 4-byte "application type" specified by the caller, and if already reserved for the given application, increments a reference counter. If a different host process has already reserved the device, the function will fail.

Note
Each call to CNTV2DriverInterface::AcquireStreamForApplicationWithReference should be balanced by the same number of calls to CNTV2DriverInterface::ReleaseStreamForApplicationWithReference.
See also
CNTV2DriverInterface::ReleaseStreamForApplicationWithReference, Sharing AJA Devices With Other Applications

Reimplemented from CNTV2DriverInterface.

Definition at line 551 of file ntv2macdriverinterface.cpp.

◆ AutoCirculate()

bool CNTV2MacDriverInterface::AutoCirculate ( AUTOCIRCULATE_DATA pAutoCircData)
virtual

Sends an AutoCirculate command to the NTV2 driver.

Parameters
pAutoCircDataPoints to the AUTOCIRCULATE_DATA that contains the AutoCirculate API command and parameters.
Returns
True if successful; otherwise false.

Reimplemented from CNTV2DriverInterface.

Definition at line 989 of file ntv2macdriverinterface.cpp.

◆ CloseLocalPhysical()

bool CNTV2MacDriverInterface::CloseLocalPhysical ( void  )
protectedvirtual

Releases host resources associated with the local/physical device connection.

Reimplemented from CNTV2DriverInterface.

Definition at line 243 of file ntv2macdriverinterface.cpp.

◆ ConfigureInterrupt()

virtual bool CNTV2MacDriverInterface::ConfigureInterrupt ( bool  ,
INTERRUPT_ENUMS   
)
inlinevirtual

Reimplemented from CNTV2DriverInterface.

Definition at line 105 of file ntv2macdriverinterface.h.

◆ ControlDriverDebugMessages()

virtual bool CNTV2MacDriverInterface::ControlDriverDebugMessages ( NTV2_DriverDebugMessageSet  ,
bool   
)
inlinevirtual

Reimplemented from CNTV2DriverInterface.

Definition at line 82 of file ntv2macdriverinterface.h.

◆ DmaTransfer() [1/3]

bool CNTV2MacDriverInterface::DmaTransfer ( const NTV2DMAEngine  inDMAEngine,
const bool  inIsRead,
const ULWord  inFrameNumber,
ULWord pFrameBuffer,
const ULWord  inCardOffsetBytes,
const ULWord  inTotalByteCount,
const bool  inSynchronous = (! (0) ) 
)
virtual

Transfers data between the AJA device and the host. This function will block and not return to the caller until the transfer has finished or failed.

Parameters
[in]inDMAEngineSpecifies the device DMA engine to use. Use NTV2_DMA_FIRST_AVAILABLE for most applications. (Use the NTV2DeviceGetNumDMAEngines function to determine how many are available.)
[in]inIsReadSpecifies the transfer direction. Use 'true' for reading (device-to-host). Use 'false' for writing (host-to-device).
[in]inFrameNumberSpecifies the zero-based frame number of the starting frame to be transferred to/from the device.
pFrameBufferSpecifies a valid, non-NULL address of the host buffer. If reading (device-to-host), this memory will be written into. If writing (host-to-device), this memory will be read from.
[in]inCardOffsetBytesSpecifies the byte offset into the device frame buffer where the data transfer will start.
[in]inTotalByteCountSpecifies the total number of bytes to be transferred.
[in]inSynchronousThis parameter is obsolete, and ignored.
Returns
True if successful; otherwise false.
Note
The host buffer must be at least inByteCount + inOffsetBytes in size; otherwise, host memory will be corrupted, or a bus error or other runtime exception may occur.

Reimplemented from CNTV2DriverInterface.

Definition at line 824 of file ntv2macdriverinterface.cpp.

◆ DmaTransfer() [2/3]

bool CNTV2MacDriverInterface::DmaTransfer ( const NTV2DMAEngine  inDMAEngine,
const bool  inIsRead,
const ULWord  inFrameNumber,
ULWord pFrameBuffer,
const ULWord  inCardOffsetBytes,
const ULWord  inTotalByteCount,
const ULWord  inNumSegments,
const ULWord  inHostPitchPerSeg,
const ULWord  inCardPitchPerSeg,
const bool  inSynchronous = (! (0) ) 
)
virtual

Transfers data in segments between the AJA device and the host. This function will block and not return to the caller until the transfer has finished or failed.

Parameters
[in]inDMAEngineSpecifies the device DMA engine to use. Use NTV2_DMA_FIRST_AVAILABLE for most applications. (Use the NTV2DeviceGetNumDMAEngines function to determine how many are available.)
[in]inIsReadSpecifies the transfer direction. Use 'true' for reading (device-to-host). Use 'false' for writing (host-to-device).
[in]inFrameNumberSpecifies the zero-based frame number of the starting frame to be transferred to/from the device.
pFrameBufferSpecifies a valid, non-NULL address of the host buffer. If reading (device-to-host), this memory will be written into. If writing (host-to-device), this memory will be read from.
[in]inCardOffsetBytesSpecifies the byte offset into the device frame buffer where the data transfer will start.
[in]inTotalByteCountSpecifies the total number of bytes to be transferred.
[in]inNumSegmentsSpecifies the number of segments to transfer. Note that this determines the number of bytes per segment (by dividing into inTotalByteCount).
[in]inHostPitchPerSegSpecifies the number of bytes to increment the host memory pointer after each segment is transferred.
[in]inCardPitchPerSegSpecifies the number of bytes to increment the on-device memory pointer after each segment is transferred.
[in]inSynchronousThis parameter is obsolete, and ignored.
Returns
True if successful; otherwise false.
Note
The host buffer must be at least inByteCount + inOffsetBytes in size; otherwise, host memory will be corrupted, or a bus error or other runtime exception may occur.

Reimplemented from CNTV2DriverInterface.

Definition at line 869 of file ntv2macdriverinterface.cpp.

◆ DmaTransfer() [3/3]

bool CNTV2MacDriverInterface::DmaTransfer ( const NTV2DMAEngine  inDMAEngine,
const NTV2Channel  inDMAChannel,
const bool  inIsTarget,
const ULWord  inFrameNumber,
const ULWord  inCardOffsetBytes,
const ULWord  inByteCount,
const ULWord  inNumSegments,
const ULWord  inSegmentHostPitch,
const ULWord  inSegmentCardPitch,
const PCHANNEL_P2P_STRUCT inP2PData 
)
virtual

Reimplemented from CNTV2DriverInterface.

Definition at line 920 of file ntv2macdriverinterface.cpp.

◆ GetAudioOutputMode()

bool CNTV2MacDriverInterface::GetAudioOutputMode ( NTV2_GlobalAudioPlaybackMode mode)
virtual

Definition at line 1178 of file ntv2macdriverinterface.cpp.

◆ GetConnectionType()

virtual std::string CNTV2MacDriverInterface::GetConnectionType ( void  ) const
inlinevirtual

Definition at line 106 of file ntv2macdriverinterface.h.

◆ GetInterruptCount()

bool CNTV2MacDriverInterface::GetInterruptCount ( const INTERRUPT_ENUMS  eInterrupt,
ULWord outCount 
)
virtual

Answers with the number of interrupts of the given type processed by the driver.

Parameters
[in]eInterruptThe interrupt type of interest.
[out]outCountReceives the count value.
Returns
True if successful; otherwise false.

Reimplemented from CNTV2DriverInterface.

Definition at line 764 of file ntv2macdriverinterface.cpp.

◆ GetPCISlotNumber()

ULWord CNTV2MacDriverInterface::GetPCISlotNumber ( void  ) const
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 265 of file ntv2macdriverinterface.cpp.

◆ GetStreamingApplication()

bool CNTV2MacDriverInterface::GetStreamingApplication ( ULWord outAppType,
int32_t &  outProcessID 
)
virtual

Answers with the four-CC type and process ID of the application that currently "owns" the AJA device (i.e. reserved it for exclusive use).

Returns
True if successful; otherwise false.
Parameters
[out]outAppTypeReceives the 32-bit "four CC" value of the application that currently "owns" the device.
[out]outProcessIDReceives the OS-specific process identifier that uniquely identifies the running application process on the host machine that currently "owns" the device (see AJAProcess::GetPid).

If the AJA retail agent (service) is controlling the device, the returned process ID will be zero, and the returned app type will be NTV2_FOURCC('A','j','a','A').

See also
CNTV2DriverInterface::SetStreamingApplication, Sharing AJA Devices With Other Applications

Reimplemented from CNTV2DriverInterface.

Definition at line 651 of file ntv2macdriverinterface.cpp.

◆ KernelLog()

bool CNTV2MacDriverInterface::KernelLog ( void *  dataPtr,
UInt32  dataSize 
)
virtual

Definition at line 681 of file ntv2macdriverinterface.cpp.

◆ MapFrameBuffers()

bool CNTV2MacDriverInterface::MapFrameBuffers ( void  )
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 277 of file ntv2macdriverinterface.cpp.

◆ MapMemory()

bool CNTV2MacDriverInterface::MapMemory ( const MemoryType  memType,
void **  memPtr 
)
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 342 of file ntv2macdriverinterface.cpp.

◆ MapRegisters()

bool CNTV2MacDriverInterface::MapRegisters ( void  )
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 300 of file ntv2macdriverinterface.cpp.

◆ MapXena2Flash()

bool CNTV2MacDriverInterface::MapXena2Flash ( void  )
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 321 of file ntv2macdriverinterface.cpp.

◆ NTV2Message()

bool CNTV2MacDriverInterface::NTV2Message ( NTV2_HEADER pInMessage)
virtual

Sends a message to the NTV2 driver (the new, improved, preferred way).

Parameters
pInMessagePoints to the message to pass to the driver. Valid messages start with an NTV2_HEADER and end with an NTV2_TRAILER.
Returns
True if successful; otherwise false.

Reimplemented from CNTV2DriverInterface.

Definition at line 1134 of file ntv2macdriverinterface.cpp.

◆ OpenLocalPhysical()

bool CNTV2MacDriverInterface::OpenLocalPhysical ( const UWord  inDeviceIndex)
protectedvirtual

Opens the local/physical device connection.

Reimplemented from CNTV2DriverInterface.

Definition at line 176 of file ntv2macdriverinterface.cpp.

◆ ReadRegister()

bool CNTV2MacDriverInterface::ReadRegister ( const ULWord  inRegNum,
ULWord outValue,
const ULWord  inMask = 0xFFFFFFFF,
const ULWord  inShift = 0 
)
virtual

Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device. Using the optional mask and shift parameters, it's possible to read any number of specific bits in a register while ignoring the register's other bits.

Returns
True if successful; otherwise false.
Parameters
[in]inRegNumSpecifies the register number of interest.
[out]outValueReceives the register value obtained from the device.
[in]inMaskOptionally specifies a bit mask to be applied after reading the device register. Zero and 0xFFFFFFFF masks are ignored. Defaults to 0xFFFFFFFF (no masking).
[in]inShiftOptionally specifies the number of bits to right-shift the value obtained from the device register after the mask has been applied. Defaults to zero (no shift).
Note
This function should be used only when there is no higher-level function available to accomplish the desired task.
The mask and shift parameters are ignored when reading a virtual register.

Reimplemented from CNTV2DriverInterface.

Definition at line 389 of file ntv2macdriverinterface.cpp.

◆ ReleaseStreamForApplication()

bool CNTV2MacDriverInterface::ReleaseStreamForApplication ( ULWord  inAppType,
int32_t  inProcessID 
)
virtual

Releases exclusive use of the AJA device for the given process, permitting other processes to acquire it.

Returns
True if successful; otherwise false.
Parameters
[in]inAppTypeA 32-bit "four CC" value that helps identify the application that is releasing its exclusive use of the device.
[in]inProcessIDSpecifies the OS-specific process identifier that uniquely identifies the running process on the host machine that is releasing its exclusive use of the device (see AJAProcess::GetPid).

This method will fail if the specified application type or process ID values don't match those used in the previous call to CNTV2DriverInterface::AcquireStreamForApplication.

Note
AJA recommends saving the device's NTV2EveryFrameTaskMode at the time CNTV2DriverInterface::AcquireStreamForApplication is called, and restoring it after releasing the device.
See also
CNTV2DriverInterface::AcquireStreamForApplication, Sharing AJA Devices With Other Applications

Reimplemented from CNTV2DriverInterface.

Definition at line 516 of file ntv2macdriverinterface.cpp.

◆ ReleaseStreamForApplicationWithReference()

bool CNTV2MacDriverInterface::ReleaseStreamForApplicationWithReference ( ULWord  inAppType,
int32_t  inProcessID 
)
virtual

A reference-counted version of CNTV2DriverInterface::ReleaseStreamForApplication useful for process groups.

Returns
True if successful; otherwise false.
Parameters
[in]inAppTypeA 32-bit "four CC" value that helps identify the calling application that is releasing exclusive use of the device.
[in]inProcessIDSpecifies the OS-specific process identifier that uniquely identifies the running process on the host machine that is releasing exclusive use of the device (see AJAProcess::GetPid).

This method releases exclusive use of the AJA device by the given host process once the reference count goes to zero. This method will fail if the specified application type or process ID values don't match those used in the prior call to CNTV2DriverInterface::AcquireStreamForApplication.

Note
Each call to CNTV2DriverInterface::AcquireStreamForApplicationWithReference should be balanced by the same number of calls to CNTV2DriverInterface::ReleaseStreamForApplicationWithReference.
See also
CNTV2DriverInterface::AcquireStreamForApplicationWithReference, Sharing AJA Devices With Other Applications

Reimplemented from CNTV2DriverInterface.

Definition at line 589 of file ntv2macdriverinterface.cpp.

◆ SetAudioOutputMode()

bool CNTV2MacDriverInterface::SetAudioOutputMode ( NTV2_GlobalAudioPlaybackMode  mode)
virtual

Definition at line 1173 of file ntv2macdriverinterface.cpp.

◆ SetStreamingApplication()

bool CNTV2MacDriverInterface::SetStreamingApplication ( const ULWord  inAppType,
const int32_t  inProcessID 
)
virtual

Sets the four-CC type and process ID of the application that should "own" the AJA device (i.e. reserve it for exclusive use).

Returns
True if successful; otherwise false.
Parameters
[in]inAppTypeSpecifies the 32-bit "four CC" value that helps identify the application that will "own" the device.
[in]inProcessIDSpecifies the OS-specific process identifier of the host application process that will "own" the device (see AJAProcess::GetPid).
Note
This function should only be used to forcibly set (or reset) the owning application after a crash or other abnormal termination. In normal use, AJA recommends calling CNTV2DriverInterface::AcquireStreamForApplication and CNTV2DriverInterface::ReleaseStreamForApplication (or their reference-counted equivalents).
See also
CNTV2DriverInterface::GetStreamingApplication, Sharing AJA Devices With Other Applications

Reimplemented from CNTV2DriverInterface.

Definition at line 623 of file ntv2macdriverinterface.cpp.

◆ SystemControl()

bool CNTV2MacDriverInterface::SystemControl ( void *  dataPtr,
SystemControlCode  systemControlCode 
)
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 361 of file ntv2macdriverinterface.cpp.

◆ UnmapFrameBuffers()

bool CNTV2MacDriverInterface::UnmapFrameBuffers ( void  )
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 290 of file ntv2macdriverinterface.cpp.

◆ UnmapRegisters()

bool CNTV2MacDriverInterface::UnmapRegisters ( void  )
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 312 of file ntv2macdriverinterface.cpp.

◆ UnmapXena2Flash()

bool CNTV2MacDriverInterface::UnmapXena2Flash ( void  )
virtual
Deprecated:
Obsolete starting in SDK 16.0.

Definition at line 333 of file ntv2macdriverinterface.cpp.

◆ WaitForChangeEvent()

bool CNTV2MacDriverInterface::WaitForChangeEvent ( UInt32  timeout = 0)
virtual

Definition at line 795 of file ntv2macdriverinterface.cpp.

◆ WaitForInterrupt()

bool CNTV2MacDriverInterface::WaitForInterrupt ( const INTERRUPT_ENUMS  type,
const ULWord  timeout = 50 
)
virtual

Reimplemented from CNTV2DriverInterface.

Definition at line 726 of file ntv2macdriverinterface.cpp.

◆ WriteRegister()

bool CNTV2MacDriverInterface::WriteRegister ( const ULWord  inRegNum,
const ULWord  inValue,
const ULWord  inMask = 0xFFFFFFFF,
const ULWord  inShift = 0 
)
virtual

Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device. Using the optional mask and shift parameters, it's possible to set or clear any number of specific bits in a real register without altering any of the register's other bits.

Returns
True if successful; otherwise false.
Parameters
[in]inRegNumSpecifies the register number of interest.
[in]inValueSpecifies the desired new register value. If the "inShift" parameter is non-zero, this value is shifted left by the designated number of bit positions before being masked and applied to the real register contents.
[in]inMaskOptionally specifies a bit mask to be applied to the new (shifted) value before updating the register. Defaults to 0xFFFFFFFF, which does not perform any masking. On Windows and MacOS, a zero mask is treated the same as 0xFFFFFFFF.
[in]inShiftOptionally specifies the number of bits to left-shift the specified value before applying it to the register. Defaults to zero, which does not perform any shifting. On MacOS, this parameter is ignored. On Windows, a shift value of 0xFFFFFFFF is treated the same as a zero shift value.
Note
This function should be used only when there is no higher-level function available to accomplish the desired task.
The mask and shift parameters are ignored when setting a virtual register.
Bug:
On MacOS, "holes" in the mask (i.e., one or more runs of 0-bits lying between more-significant and less-significant 1-bits) were not handled correctly.

Reimplemented from CNTV2DriverInterface.

Definition at line 430 of file ntv2macdriverinterface.cpp.


The documentation for this class was generated from the following files: