34 #define INSTP(_p_) HEX0N(uint64_t(_p_),16) 35 #define DIFAIL(__x__) AJA_sERROR (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 36 #define DIWARN(__x__) AJA_sWARNING(AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 37 #define DINOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 38 #define DIINFO(__x__) AJA_sINFO (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 39 #define DIDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 47 #if defined(_DEBUGSTATS_) 48 #define DIDBGX(__x__) AJA_sDEBUG (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 58 result.push_back(
"ntv2nub"); result.push_back(
"ntv2"); result.push_back(
"ntv2local");
77 ,mRecordRegWrites (
false)
78 ,mSkipRegWrites (
false)
82 ,mInterruptEventHandles ()
88 #
if !defined(NTV2_DEPRECATE_16_0)
91 ,_pRegisterBaseAddressLength (0)
96 #
if !defined(NTV2_DEPRECATE_17_2)
97 ,_ulNumFrameBuffers (0)
98 ,_ulFrameBufferSize (0)
100 #
if !defined(NTV2_DEPRECATE_16_0)
139 {
DIFAIL(
"Requested device index '" <<
DEC(inDeviceIndex) <<
"' at/past limit of '" <<
DEC(
MaxNumDevices()) <<
"'");
return false;}
143 static ULWord sRecursionCheck(0), RECURSION_LIMIT(32);
148 if (sRecursionCheck > RECURSION_LIMIT)
149 {
DIFAIL(
"Failed: " <<
DEC(RECURSION_LIMIT) <<
" '.vdev' bounces -- limit exceeded");
return false;}
151 {sRecursionCheck--;
return false;}
157 #if !defined(NTV2_ALLOW_OPEN_UNSUPPORTED) 160 if (legalDeviceIDs.find(
_boardID) == legalDeviceIDs.end())
162 DIFAIL(
"Device ID " <<
xHEX0N(
_boardID,8) <<
" (at device index " << inDeviceIndex <<
") is not in list of supported devices");
166 #endif // NTV2_ALLOW_OPEN_UNSUPPORTED 169 uint16_t drvrVersComps[4] = {0, 0, 0, 0};
170 ULWord driverVersionRaw (0);
172 {
DIFAIL(
"ReadRegister(kVRegDriverVersion) failed");
Close();
return false;}
181 DIWARN (
"Driver version v" <<
DEC(drvrVersComps[0]) <<
"." <<
DEC(drvrVersComps[1]) <<
"." <<
DEC(drvrVersComps[2]) <<
"." 182 <<
DEC(drvrVersComps[3]) <<
" ignored for client SDK v0.0.0.0 (dev mode), driverVersionRaw=" <<
xHEX0N(driverVersionRaw,8));
184 DIDBG (
"Driver v" <<
DEC(drvrVersComps[0]) <<
"." <<
DEC(drvrVersComps[1])
185 <<
"." <<
DEC(drvrVersComps[2]) <<
"." <<
DEC(drvrVersComps[3]) <<
" == client SDK v" 189 DIWARN (
"Driver v" <<
DEC(drvrVersComps[0]) <<
"." <<
DEC(drvrVersComps[1])
190 <<
"." <<
DEC(drvrVersComps[2]) <<
"." <<
DEC(drvrVersComps[3]) <<
" != client SDK v" 193 <<
", driverVersionRaw=" <<
xHEX0N(driverVersionRaw,8));
207 if (specParser.HasErrors())
208 {
DIFAIL(
"Bad device specification '" << inURLSpec <<
"': " << specParser.Error());
return false;}
211 if (specParser.IsLocalDevice())
227 Open(specParser.DeviceIndex());
229 {
DIFAIL(
"Failed to open " << specParser.InfoString());
return false;}
265 #if defined(NTV2_NULL_DEVICE) 266 DIFAIL(
"SDK built with 'NTV2_NULL_DEVICE' defined -- cannot OpenLocalPhysical '" <<
DEC(inDeviceIndex) <<
"'");
267 #else // else defined(NTV2_NULL_DEVICE) 268 (
void) inDeviceIndex;
269 NTV2_ASSERT(
false &&
"Requires platform-specific implementation");
270 #endif // else NTV2_NULL_DEVICE defined 276 NTV2_ASSERT(
false &&
"Requires platform-specific implementation");
280 #if defined(AJA_WINDOWS) 281 static bool winsock_inited =
false;
282 static WSADATA wsaData;
284 static void initWinsock(
void)
288 wret = WSAStartup(MAKEWORD(2,2), &wsaData);
289 winsock_inited =
true;
291 #endif // AJA_WINDOWS 296 #if defined(AJA_WINDOWS) 298 #endif // defined(AJA_WINDOWS) 302 #if defined(NTV2_NUB_CLIENT_SUPPORT) 304 {ostringstream errs; inParser.
PrintErrors(errs);
DIFAIL(
"Bad parser: " << errs.str());
return false;}
306 {
DIFAIL(
"Parser infers local device: " << inParser.
InfoString());
return false;}
325 if (!pClient->IsConnected())
326 if (!pClient->NTV2Connect())
342 #else // NTV2_NUB_CLIENT_SUPPORT 343 DIFAIL(
"SDK built without 'NTV2_NUB_CLIENT_SUPPORT' -- cannot OpenRemote '" << inParser.
DeviceSpec() <<
"'");
345 #endif // NTV2_NUB_CLIENT_SUPPORT 389 NTV2_ASSERT(
false &&
"Needs subclass implementation");
401 { (
void) bEnable; (
void) eInterruptType;
402 NTV2_ASSERT(
false &&
"Needs subclass implementation");
415 <<
"), event counter reset");
420 <<
mEventCounts[eInterruptType] <<
" event(s) received");
447 #if defined(NTV2_NUB_CLIENT_SUPPORT) 460 if (inOutValues.empty())
464 if (
NTV2Message(reinterpret_cast<NTV2_HEADER*>(&getRegsParams)))
472 if (!
ReadRegister (iter->registerNumber, iter->registerValue))
477 #if !defined(NTV2_DEPRECATE_16_0) 481 if (!pOutWhichRegFailed)
483 *pOutWhichRegFailed = 0xFFFFFFFF;
489 regReads.reserve(inNumRegs); result.reserve(inNumRegs);
490 for (
size_t ndx(0); ndx < size_t(inNumRegs); ndx++)
491 regReads.push_back(pOutRegInfos[ndx]);
495 if (result.size() < regReads.size())
496 *pOutWhichRegFailed = result.empty() ? regReads.front().registerNumber : result.back().registerNumber;
505 #endif // !defined(NTV2_DEPRECATE_16_0) 511 #if defined(NTV2_WRITEREG_PROFILING) 513 #endif // NTV2_WRITEREG_PROFILING 514 #if defined(NTV2_NUB_CLIENT_SUPPORT) 526 const ULWord inFrameNumber,
528 const ULWord inCardOffsetBytes,
529 const ULWord inTotalByteCount,
530 const bool inSynchronous)
532 #if defined(NTV2_NUB_CLIENT_SUPPORT) 534 NTV2Buffer buffer(pFrameBuffer, inTotalByteCount);
536 0, 0, 0, inSynchronous);
538 (
void) inDMAEngine; (
void) inIsRead; (
void) inFrameNumber; (
void) pFrameBuffer; (
void) inCardOffsetBytes;
539 (
void) inTotalByteCount; (
void) inSynchronous;
546 const ULWord inFrameNumber,
548 const ULWord inCardOffsetBytes,
549 const ULWord inTotalByteCount,
550 const ULWord inNumSegments,
551 const ULWord inHostPitchPerSeg,
552 const ULWord inCardPitchPerSeg,
553 const bool inSynchronous)
555 #if defined(NTV2_NUB_CLIENT_SUPPORT) 557 NTV2Buffer buffer(pFrameBuffer, inTotalByteCount);
559 inNumSegments, inHostPitchPerSeg, inCardPitchPerSeg, inSynchronous);
561 (
void) inDMAEngine; (
void) inIsRead; (
void) inFrameNumber; (
void) pFrameBuffer; (
void) inCardOffsetBytes;
562 (
void) inTotalByteCount; (
void) inNumSegments; (
void) inHostPitchPerSeg; (
void) inCardPitchPerSeg; (
void) inSynchronous;
569 const bool inIsTarget,
570 const ULWord inFrameNumber,
571 const ULWord inCardOffsetBytes,
573 const ULWord inNumSegments,
574 const ULWord inSegmentHostPitch,
575 const ULWord inSegmentCardPitch,
577 { (
void) inDMAEngine; (
void) inDMAChannel; (
void) inIsTarget; (
void) inFrameNumber; (
void) inCardOffsetBytes;
578 (
void) inByteCount; (
void) inNumSegments; (
void) inSegmentHostPitch; (
void) inSegmentCardPitch; (
void) inP2PData;
579 #if defined(NTV2_NUB_CLIENT_SUPPORT) 590 #if defined(NTV2_NUB_CLIENT_SUPPORT) 603 #if defined(NTV2_NUB_CLIENT_SUPPORT) 628 #if defined(NTV2_NUB_CLIENT_SUPPORT) 641 ::memset(&bitFileInfo, 0,
sizeof(bitFileInfo));
728 #if !defined (_DEBUG) 737 const string bitFileDesignNameString = string(bitFileInfo.
designNameStr) +
".bit";
756 vector<uint8_t> mcsInfoData;
757 if (spiFlash.
Read(offset, mcsInfoData, 256))
759 packInfo.assign(mcsInfoData.begin(), mcsInfoData.end());
762 size_t found = packInfo.find(
'\0');
763 if (found != string::npos)
765 packInfo.resize(found);
773 ULWord baseAddress = (16 * 1024 * 1024) - (3 * 256 * 1024);
774 const ULWord dwordSizeCount = 256/4;
779 ULWord timeoutCount = 1000;
784 if (regValue &
BIT(8))
791 }
while (busy ==
true && timeoutCount > 0);
792 if (timeoutCount == 0)
796 for (
ULWord count = 0; count < dwordSizeCount; count++, baseAddress += 4 )
806 if ( regValue &
BIT(8))
813 }
while(busy ==
true && timeoutCount > 0);
814 if (timeoutCount == 0)
816 delete [] bitFilePtr;
822 packInfo =
reinterpret_cast<char*
>(bitFilePtr);
823 delete [] bitFilePtr;
826 istringstream iss(packInfo);
827 vector<string> results;
829 while (getline(iss,token,
' '))
830 results.push_back(token);
832 if (results.size() < 8)
835 packageInfo.
date = results[1];
837 token.erase(
remove(token.begin(), token.end(),
'\n'), token.end());
838 packageInfo.
time = token;
848 ::memset(&buildInfo, 0,
sizeof(buildInfo));
860 ULWord attempts(counts >> 16), successes(counts & 0x0000FFFF);
862 const bool result (
NTV2Message (reinterpret_cast<NTV2_HEADER*>(&bsMsg)));
865 counts = (attempts << 16) | successes;
882 outRegValues.clear();
890 outRegValues.push_back(bsMsg.
mRegisters[ndx]);
957 #if !defined(NTV2_DEPRECATE_17_2) 962 ULWord returnVal1 =
false;
963 ULWord returnVal2 =
false;
969 #if !defined(NTV2_DEPRECATE_16_0) 976 #endif // !defined(NTV2_DEPRECATE_16_0) 999 ULWord timeoutCount = 1000;
1004 if (regValue &
BIT(8))
1011 }
while (busy && timeoutCount);
1017 static const ULWord dwordCount(256/4);
1019 if (!bitFileHdrBuffer)
1022 ULWord* pULWord(bitFileHdrBuffer), baseAddress(0);
1023 for (
ULWord count(0); count < dwordCount; count++, baseAddress += 4)
1028 std::string headerError;
1031 { fileInfo.
Open(
"/Users/demo/dev-svn/firmware/T3_Tap/t_tap_pro.bit");
1036 if (headerError.empty())
1044 return headerError.empty();
1054 ULWord timeoutCount(inRetryCount);
1059 if (regValue &
BIT(8))
1066 }
while (busy && timeoutCount);
1086 ULWord svcInitialized(0);
1088 if (!svcInitialized)
1091 <<
" uninitialized by AJAAgent, requesting app " <<
xHEX0N(inAppCode,8) <<
", pid=" <<
DEC(inProcessID));
1093 ULWord currentCode(0), currentPID(0);
1107 for (
int count(0); count < 20; count++)
1119 else if (currentCode == inAppCode && currentPID ==
ULWord(inProcessID))
1129 ULWord currentCode(0), currentPID(0), currentCount(0);
1135 if (currentCode == inAppCode && currentPID ==
ULWord(inProcessID))
1137 if (currentCount > 1)
1139 if (currentCount == 1)
1148 ULWord svcInitialized(0);
1150 if (!svcInitialized)
1153 <<
" uninitialized by AJAAgent, requesting app " <<
xHEX0N(inAppCode,8) <<
", pid=" <<
DEC(inProcessID));
1156 for (
int count(0); count < 20; count++)
1164 ULWord currentCode(0), currentPID(0);
1172 for (
int count(0); count < 20; count++)
1251 ULWord dbbReg(0), msReg(0), lsReg(0);
1288 uint32_t tcReceived = 0;
1301 if (pRP188Data->
DBB == 0x01 || pRP188Data->
DBB == 0x02)
1308 uint32_t ltcPresent = 0;
1310 if (ltcPresent != 1)
1320 if (pRP188Data->
DBB != 0x00)
1335 *pRP188Data = rp188;
1344 if (rp188.
DBB == pRP188Data->
DBB &&
1345 rp188.
Low == pRP188Data->
Low &&
1415 return (val < 2) ?
false :
true;
1430 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling 1485 #endif // NTV2_WRITEREG_PROFILING 1504 result.insert(
ULWord(*it));
1511 result.insert(
ULWord(*it));
1518 result.insert(
ULWord(*it));
1525 result.insert(
ULWord(*it));
1532 result.insert(
ULWord(*it));
1543 result.insert(
ULWord(*it));
1555 result.insert(
ULWord(*it));
1562 result.insert(
ULWord(*it));
1578 if (result.find(
ULWord(refSrc)) == result.end())
1579 result.insert(
ULWord(refSrc));
1600 if (result.find(
ULWord(audSrc)) == result.end())
1601 result.insert(
ULWord(audSrc));
1609 result.insert(
ULWord(*it));
1615 result.insert(
ULWord(cm));
1621 result.insert(
ULWord(ndx));
1627 result.insert(
ULWord(ndx));
1807 default:
return false;
1877 for (
size_t ndx(0); ndx <
sizeof(s425MuxerIDs)/
sizeof(
NTV2WidgetID); ndx++)
1878 if (wgtIDs.find(s425MuxerIDs[ndx]) != wgtIDs.end())
1891 default:
return false;
1901 outFlipSense =
false;
bool NTV2DeviceCanDoConversionMode(const NTV2DeviceID inDeviceID, const NTV2ConversionMode inConversionMode)
NTV2Channel mChannel
Stream channel.
UWord NTV2DeviceGetNumUpConverters(const NTV2DeviceID inDeviceID)
std::set< NTV2VideoFormat > NTV2VideoFormatSet
A set of distinct NTV2VideoFormat values.
#define NTV2_IS_VALID_NTV2ReferenceSource(__x__)
virtual bool GetNumericParam(const ULWord inParamID, ULWord &outValue)
Defines the KonaIP/IoIP registers.
virtual bool ControlDriverDebugMessages(NTV2_DriverDebugMessageSet msgSet, bool enable)
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
const char * NTV2InterruptEnumString(const unsigned inInterruptEnum)
#define BITSTREAM_READ_REGISTERS
Used in NTV2Bitstream to get status registers.
bool NTV2DeviceCanDoLTC(const NTV2DeviceID inDeviceID)
NTV2StandardSet::const_iterator NTV2StandardSetConstIter
A handy const iterator for iterating over an NTV2StandardSet.
ULWord mFlags
Action flags.
The number of cross-converters on the device.
std::set< NTV2FrameBufferFormat > NTV2FrameBufferFormatSet
A set of distinct NTV2FrameBufferFormat values.
enum _NTV2NumericParamID NTV2NumericParamID
Used with CNTV2DriverInterface::GetNumericParam to determine device capabilities. ...
virtual std::string ParseHeaderFromBuffer(const uint8_t *inBitfileBuffer, const size_t inBufferSize)
Parse a bitfile header that's stored in a buffer.
virtual bool GetRegInfoForBoolParam(const NTV2BoolParamID inParamID, NTV2RegInfo &outRegInfo, bool &outFlipSense)
Answers with the NTV2RegInfo of the register associated with the given boolean (i.e., "Can Do") device feature.
virtual bool AcquireStreamForApplicationWithReference(const ULWord inAppType, const int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::AcquireStreamForApplication useful for process g...
bool NTV2DeviceCanDoGPIO(const NTV2DeviceID inDeviceID)
virtual bool ResumeRecordRegisterWrites(void)
Resumes recording WriteRegister calls (after a prior call to PauseRecordRegisterWrites).
#define kNTV2PluginRegInfoKey_LongName
Plugin long name.
bool NTV2DeviceGetSupportedStandards(const NTV2DeviceID inDeviceID, NTV2StandardSet &outStandards)
Returns a set of distinct NTV2Standard values supported on the given device.
The number of input converter widgets on the device.
virtual bool IsSupported(const NTV2BoolParamID inParamID)
Identifies the NTV2ScanGeometry enumerated type.
The number of TSI muxers on the device. (New in SDK 17.0)
bool NTV2DeviceCanDoMultiLinkAudio(const NTV2DeviceID inDeviceID)
#define AJA_NTV2_SDK_BUILD_NUMBER
The SDK build number, an unsigned decimal integer.
True if device can handle 2Kx1556 (film) video.
static bool GetFirstDeviceWithID(const NTV2DeviceID inDeviceID, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the first AJA device found on the host t...
NTV2OutputDestinations::const_iterator NTV2OutputDestinationsConstIter
A handy const iterator for iterating over an NTV2OutputDestinations.
True if device supports 3D video output over dual-stream SDI.
bool NTV2DeviceCanDoJ2K(const NTV2DeviceID inDeviceID)
#define kConnectParamDevSerial
Device with this serial number.
The version number of the device's genlock hardware/firmware. (New in SDK 17.6)
The number of SDI-embedded input audio channels supported by the device.
True if device DMA hardware supports MSI (Message Signaled Interrupts).
UWord NTV2DeviceGetNumLTCInputs(const NTV2DeviceID inDeviceID)
True if device has version 3 genlock hardware and/or firmware. (Deprecate – use kDeviceGetGenlockVer...
True if device has SPI flash hardware.
ULWord * _pRegisterBaseAddress
ULWord mRegisters[16]
Register data.
True if audio system(s) support 2 or more audio channels.
UWord NTV2DeviceGetNum4kQuarterSizeConverters(const NTV2DeviceID inDeviceID)
The number of analog video outputs on the device.
bool NTV2DeviceCanDoRP188(const NTV2DeviceID inDeviceID)
static bool DeviceSupported(NTV2DeviceID deviceId)
ULWord * _pCh2FrameBaseAddress
UWord NTV2DeviceGetNumCrossConverters(const NTV2DeviceID inDeviceID)
std::set< NTV2FrameRate > NTV2FrameRateSet
A set of distinct NTV2FrameRate values. New in SDK 17.0.
True if device can do ISO conversion.
True if device has enhanced CSCs.
virtual bool ReadFlashULWord(const ULWord inAddress, ULWord &outValue, const ULWord inRetryCount=1000)
Specifies the device's internal clock.
UWord NTV2DeviceGetNumAnalogAudioOutputChannels(const NTV2DeviceID inDeviceID)
virtual bool NTV2GetNumericParamRemote(const ULWord inParamID, ULWord &outValue)
Declares the CNTV2DriverInterface base class.
ULWord registerMask
My register mask value to use in a ReadRegister or WriteRegister call.
The number of external reference video inputs on the device.
NTV2DeviceIDSet NTV2GetSupportedDevices(const NTV2DeviceKinds inKinds=NTV2_DEVICEKIND_ALL)
Returns an NTV2DeviceIDSet of devices supported by the SDK.
bool NTV2DeviceCanDo25GIP(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetNum2022ChannelsSFP1(const NTV2DeviceID inDeviceID)
True if the device supports SMPTE 425 mux control.
bool NTV2DeviceCanThermostat(const NTV2DeviceID inDeviceID)
virtual bool CloseRemote(void)
Releases host resources associated with the remote/special device connection.
static void SetShareMode(const bool inSharedMode)
Specifies if subsequent Open calls should open the device in shared mode or not.
virtual bool IsLPSystemReady(void)
static uint32_t gConstructCount(0)
bool NTV2DeviceCanDoPCMControl(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoDSKOpacity(const NTV2DeviceID inDeviceID)
The number of video channels supported on the device.
ULWord mFlags
Action flags.
I interrogate and control an AJA video/audio capture/playout device.
UWord _boardNumber
My device index number.
The number of mixer/keyer widgets on the device.
NTV2FrameBufferFormat
Identifies a particular video frame buffer pixel format. See Device Frame Buffer Formats for details...
True if device can squeeze/stretch between 1920x1080/1280x1080 and 1280x720/960x720.
True if device can do 3G level B to 3G level A conversion.
True if device supports an AJA breakout box.
Identifies the NTV2DeviceID enumerated type.
The number of analog LTC outputs on the device.
The number of AES/EBU audio output channels on the device.
#define BITSTREAM_SUSPEND
Used in peta to suspend board before bitstream load.
Declares the AJADebug class.
std::string valueForKey(const std::string &inKey) const
const std::string & DeviceSpec(void) const
True if HDMI in/out supports square-division (quad) raster conversion. (New in SDK 17...
UWord NTV2DeviceGetNumFrameSyncs(const NTV2DeviceID inDeviceID)
std::set< NTV2InputSource > NTV2InputSourceSet
A set of distinct NTV2InputSource values.
#define NEW_SELECT_RP188_RCVD
ULWord NTV2DeviceGetActiveMemorySize(const NTV2DeviceID inDeviceID)
enum _NTV2EnumsID NTV2EnumsID
Identifies NTV2 enumerated types, used in CNTV2DriverInterface::GetSupportedItems.
True if device can warm-boot to load updated firmware.
virtual UWord GetIndexNumber(void) const
virtual bool IsDeviceReady(const bool inCheckValid=(0))
bool NTV2DeviceCanDoHDMIOutStereo(const NTV2DeviceID inDeviceID)
bool NTV2DeviceHasNTV4FrameStores(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoAnalogAudio(const NTV2DeviceID inDeviceID)
#define kNTV2PluginRegInfoKey_Copyright
Plugin copyright notice.
True if device can display/output video from FrameStore 1.
The number of independent Audio Systems on the device.
void setDeviceIndexNumber(const UWord num)
Identifies the NTV2AudioRate enumerated type.
#define kNTV2PluginRegInfoKey_Vendor
Plugin vendor (manufacturer) name.
virtual bool DriverGetBuildInformation(BUILD_INFO_STRUCT &outBuildInfo)
Answers with the driver's build information.
True if device has version 2 genlock hardware and/or firmware. (Deprecate – use kDeviceGetGenlockVer...
ULWord NTV2DeviceGetLUTVersion(const NTV2DeviceID inDeviceID)
#define NTV2_IS_VALID_INTERRUPT_ENUM(__e__)
UWord NTV2DeviceGetNumEmbeddedAudioOutputChannels(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDo425Mux(const NTV2DeviceID inDeviceID)
Identifies the NTV2OutputDest enumerated type.
enum _NTV2BoolParamID NTV2BoolParamID
Used with CNTV2DriverInterface::GetBoolParam to determine device capabilities.
bool NTV2DeviceCanDoMultiFormat(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDo12GSDI(const NTV2DeviceID inDeviceID)
True if device can report if its "fail-safe" firmware is loaded/running.
bool NTV2DeviceHasSPIFlash(const NTV2DeviceID inDeviceID)
True if device connects to the host with a cable.
bool NTV2DeviceCanDoEnhancedCSC(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoStereoOut(const NTV2DeviceID inDeviceID)
ULWord GetByteCount(void) const
UWord NTV2DeviceGetNumDownConverters(const NTV2DeviceID inDeviceID)
#define kNTV2PluginRegInfoKey_ShortName
Plugin short name.
True if device can detect which audio channel pairs are not carrying PCM (Pulse Code Modulation) audi...
UWord NTV2DeviceGetNumSerialPorts(const NTV2DeviceID inDeviceID)
virtual bool Close(void)
Closes me, releasing host resources that may have been allocated in a previous Open call...
virtual bool ConfigureInterrupt(const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
virtual void FinishOpen(void)
Initializes my member variables after a successful Open.
virtual bool GetBoolParam(const ULWord inParamID, ULWord &outValue)
One-stop shop for parsing device specifications. (New in SDK 16.3) I do very little in the way of val...
bool NTV2DeviceCanDoProRes(const NTV2DeviceID inDeviceID)
Declares the AJATime class.
True if device has an HEVC M31 encoder.
virtual bool IsRecordingRegisterWrites(void) const
char designNameStr[(100)]
virtual bool Open(const UWord inDeviceIndex)
Opens a local/physical AJA device so it can be monitored/controlled.
True if device has LED audio meters.
virtual bool NTV2GetSupportedRemote(const ULWord inEnumsID, ULWordSet &outSupported)
#define NTV2_FOURCC(_a_, _b_, _c_, _d_)
UWord NTV2DeviceGetNumCSCs(const NTV2DeviceID inDeviceID)
if(!(riid==IID_IUnknown) &&!(riid==IID_IClassFactory))
The version number of the LUT(s) on the device.
Identifies the NTV2VideoFormat enumerated type.
Declares the CNTV2SpiFlash and CNTV2AxiSpiFlash classes.
True if device has SFP connectors.
#define BITSTREAM_RESUME
Used in peta to resume board after bitstream load.
The "default" timecode (mostly used by the AJA "Retail" service and Control Panel) ...
ULWord _ulFrameBufferSize
static bool GetShareMode(void)
Identifies the NTV2Channel enumerated type.
True if device widget routing can be queried or changed.
True if device can do video processing.
void MakeInvalid(void)
Invalidates me, setting my register number, value, mask and shift values to 0xFFFFFFFF.
Identifies the NTV2InputSource enumerated type.
ULWord mDelay
Trial delay (us)
virtual bool ReleaseStreamForApplication(const ULWord inAppType, const int32_t inProcessID)
Releases exclusive use of the AJA device for the given process, permitting other processes to acquire...
True if the device can do RGB over 3G Level A.
NTV2_DriverDebugMessageSet
std::set< NTV2OutputDestination > NTV2OutputDestinations
A set of distinct NTV2OutputDestination values.
static void SetOverlappedMode(const bool inOverlapMode)
Specifies if the next Open call should try to open the device in overlapped mode or not...
virtual uint32_t Offset(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)
The maximum number of 32-bit words that the DMA engine can move at a time on the device.
True if device can handle QRez.
UWord NTV2DeviceGetNumAnalogVideoInputs(const NTV2DeviceID inDeviceID)
const uint32_t kAgentAppFcc(((((uint32_t)( 'A'))<< 24)|(((uint32_t)( 'j'))<< 16)|(((uint32_t)( 'a'))<< 8)|(((uint32_t)( 'A'))<< 0)))
UWord NTV2DeviceGetGenlockVersion(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoIsoConvert(const NTV2DeviceID inDeviceID)
#define kRegSarekMBUptime
#define AJA_NTV2_SDK_VERSION_POINT
The SDK "point" release version, an unsigned decimal integer.
The number of DMA engines on the device.
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...
virtual bool StartRecordRegisterWrites(const bool inSkipActualWrites=(0))
Starts recording all WriteRegister calls.
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
#define BITSTREAM_FRAGMENT
Used in NTV2Bitstream to indicate bitstream is a fragment.
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 succ...
virtual NTV2Dictionary ConnectParams(void) const
True if Audio System(s) support an adjustable delay.
True if device supports an AJA breakout board. (New in SDK 17.0)
Declares NTV2 "nub" client functions.
bool NTV2DeviceCanDoMSI(const NTV2DeviceID inDeviceID)
static bool gSharedMode((0))
bool hasKey(const std::string &inKey) const
#define kConnectParamDevModel
First device of this model (e.g. 'kona4')
#define NTV2DriverVersionDecode_Major(__vers__)
NTV2FrameRateSet::const_iterator NTV2FrameRateSetConstIter
A handy const iterator for iterating over an NTV2FrameRateSet.
virtual bool BitstreamLoad(const bool inSuspend, const bool inResume)
std::set< NTV2Standard > NTV2StandardSet
A set of distinct NTV2Standard values.
True if device supports grouped audio system control.
#define NTV2DriverVersionDecode_Point(__vers__)
bool NTV2DeviceNeedsRoutingSetup(const NTV2DeviceID inDeviceID)
#define NTV2_ASSERT(_expr_)
The number of SDI video outputs on the device.
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)
#define kConnectParamDevID
First device having this ID (e.g. '0x10518400')
Output (playout, display) mode, which reads from device SDRAM.
True if device supports streaming DMA. (New in SDK 17.1)
bool NTV2DeviceSoftwareCanChangeFrameBufferSize(const NTV2DeviceID inDeviceID)
bool NTV2DeviceIs64Bit(const NTV2DeviceID inDeviceID)
bool IsLocalDevice(void) const
bool NTV2DeviceCanDoFrameStore1Display(const NTV2DeviceID inDeviceID)
NTV2GeometrySet::const_iterator NTV2GeometrySetConstIter
A handy const iterator for iterating over an NTV2GeometrySet.
NTV2FrameBufferFormat NTV2PixelFormat
An alias for NTV2FrameBufferFormat.
virtual size_t GetProgramStreamLength(void) const
virtual bool AcquireStreamForApplication(const ULWord inAppType, const int32_t inProcessID)
Reserves exclusive use of the AJA device for a given process, preventing other processes on the host ...
True if device has any audio output capability (SDI, HDMI or analog) (New in SDK 17.1)
The total number of audio systems on the device, including host audio and mixer audio systems...
bool NTV2DeviceHasSPIFlashSerial(const NTV2DeviceID inDeviceID)
virtual bool NTV2GetBoolParamRemote(const ULWord inParamID, ULWord &outValue)
virtual bool IsRemote(void) const
bool NTV2DeviceCanReportFailSafeLoaded(const NTV2DeviceID inDeviceID)
bool NTV2DeviceHasBiDirectionalAnalogAudio(const NTV2DeviceID inDeviceID)
True if device is 64-bit addressable.
True if device can read LTC (Linear TimeCode) from its reference input.
NTV2TCIndex
These enum values are indexes into the capture/playout AutoCirculate timecode arrays.
True if device can mark specific audio channel pairs as not carrying PCM (Pulse Code Modulation) audi...
Specifies the External Reference connector.
True if device SDI connectors are bi-directional.
static bool GetFirstDeviceWithName(const std::string &inNameSubString, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the first AJA device whose device identi...
bool GetRegisterValues(NTV2RegisterValueMap &outValues) const
Returns an NTV2RegisterValueMap built from my mOutGoodRegisters and mOutValues fields.
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 ...
Identifies the NTV2AudioSource enumerated type.
UWord NTV2DeviceGetNumHDMIVideoOutputs(const NTV2DeviceID inDeviceID)
I'm the base class that undergirds the platform-specific derived classes (from which CNTV2Card is ult...
An object that can connect to, and operate remote or fake devices. I have three general API groups: ...
True if device has CSCs capable of splitting the key (alpha) and YCbCr (fill) from RGB frame buffers ...
The version number of the UFC on the device.
True if device has at least one programmable color space converter widget.
True if device supports 3D video input over dual-stream SDI.
True if device supports Programmed I/O.
bool NTV2DeviceCanDoInputTCIndex(const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
True if device SPIFlash ROM is bank-selected. (New in SDK 17.1)
virtual std::string GetDesignName(void) const
The highest register number for the device.
Identifies the NTV2RefSource enumerated type.
ULWord registerValue
My register value to use in a ReadRegister or WriteRegister call.
Use kDeviceGetSPIVersion instead.
UWord NTV2DeviceGetNumInputConverters(const NTV2DeviceID inDeviceID)
static NTV2StringList GetLegalSchemeNames(void)
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
virtual bool SetStreamingApplication(const ULWord inAppType, const int32_t inProcessID)
Sets the four-CC type and process ID of the application that should "own" the AJA device (i...
ULWord registerNumber
My register number to use in a ReadRegister or WriteRegister call.
The highest bit number of the LED bits in the Global Control Register on the device.
bool NTV2DeviceCanDoDualLink(const NTV2DeviceID inDeviceID)
NTV2DeviceID _boardID
My cached device ID.
bool NTV2DeviceCanDoWidget(const NTV2DeviceID inDeviceID, const NTV2WidgetID inWidgetID)
Enumerations for controlling NTV2 devices.
virtual bool PauseRecordRegisterWrites(void)
Pauses recording WriteRegister calls.
void Set(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Sets me from the given parameters.
The number of FrameStores on the device.
virtual bool NTV2Disconnect(void)
Disconnects me from the remote/fake host, closing the connection.
True if device can handle quarter-sized frames (pixel-halving and line-halving during input...
virtual bool IsOpen(void) const
virtual bool OpenLocalPhysical(const UWord inDeviceIndex)
Opens the local/physical device connection.
True if device has bypass relays on its SDI connectors.
bool _boardOpened
True if I'm open and connected to the device.
#define AJA_NTV2_SDK_VERSION_MAJOR
The SDK major version number, an unsigned decimal integer.
NTV2DeviceIDSet::const_iterator NTV2DeviceIDSetConstIter
A convenient const iterator for NTV2DeviceIDSet.
std::string packageNumber
bool NTV2DeviceCanDoHDV(const NTV2DeviceID inDeviceID)
virtual const std::string & GetLastError(void) const
NTV2ReferenceSource
These enum values identify a specific source for the device's (output) reference clock.
#define kRegSarekIfVersion
virtual bool ReadRegisters(NTV2RegisterReads &inOutValues)
Reads the register(s) specified by the given NTV2RegInfo sequence.
virtual void BumpEventCount(const INTERRUPT_ENUMS eInterruptType)
Atomically increments the event count tally for the given interrupt type.
static bool GetDeviceWithSerial(const std::string &inSerialNumber, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the first AJA device whose serial number...
NTV2VideoFormatSet::const_iterator NTV2VideoFormatSetConstIter
A handy const iterator for iterating over an NTV2VideoFormatSet.
UWord NTV2DeviceGetNumFrameStores(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoAudio96K(const NTV2DeviceID inDeviceID)
virtual bool NTV2MessageRemote(NTV2_HEADER *pInMessage)
True if device can squeeze/stretch between 1920x1080 and 1440x1080.
virtual bool Open(const std::string &inBitfilePath)
Opens the bitfile at the given path, then parses its header.
True if device supports JPEG 2000 codec.
NTV2Channel mChannel
Stream channel.
#define BITSTREAM_RESET_CONFIG
Used in NTV2Bitstream to reset config.
virtual const std::string & GetTime(void) const
True if device has attached breakout board. (New in SDK 17.0)
True if device has LED(s) on the card bracket. (New in SDK 18.0)
bool NTV2DeviceCanDoHFRRGB(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetDownConverterDelay(const NTV2DeviceID inDeviceID)
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...
True if device has any SDI, HDMI or analog video outputs.
The number of up-converters on the device.
True if device has any audio input capability (SDI, HDMI or analog) (New in SDK 17.1)
True if device has a headphone jack.
bool NTV2DeviceHasPWMFanControl(const NTV2DeviceID inDeviceID)
Declares the most fundamental data types used by NTV2. Since Windows NT was the first principal devel...
std::set< NTV2WidgetID > NTV2WidgetIDSet
A collection of distinct NTV2WidgetID values.
virtual bool BitstreamReset(const bool inConfiguration, const bool inInterface)
std::vector< ULWord > NTV2ULWordVector
An ordered sequence of ULWords.
virtual bool CloseLocalPhysical(void)
Releases host resources associated with the local/physical device connection.
Defines for the NTV2 SDK version number, used by ajantv2/includes/ntv2enums.h. See the ajantv2/includ...
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
True if device has 25Gbps SFPs. (New in SDK 18.0)
static void Sleep(const int32_t inMilliseconds)
Suspends execution of the current thread for a given number of milliseconds.
bool NTV2DeviceIsSupported(const NTV2DeviceID inDeviceID)
True if device has at least one RS-422 serial port, and it (they) can be programmed (for baud rate...
True if device has a pair of unbalanced RCA audio monitor output connectors.
Identifies the NTV2Standard enumerated type.
ULWord NTV2DeviceGetMaxTransferCount(const NTV2DeviceID inDeviceID)
True if device uses a "stacked" arrangement of its audio buffers.
std::set< ULWord > ULWordSet
A collection of unique ULWord (uint32_t) values.
bool mRecordRegWrites
True if recording; otherwise false when not recording.
std::vector< std::string > NTV2StringList
#define BITSTREAM_MCAP_DATA
MCAP data register.
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.
Software device that doesn't emulate one of the above devices.
#define kNTV2PluginRegInfoKey_Description
Brief plugin description.
All new NTV2 structs start with this common header.
NTV2RegWrites NTV2RegisterReads
AJALock mRegWritesLock
Guard mutex for mRegWrites.
ULWord registerShift
My register shift value to use in a ReadRegister or WriteRegister call.
ULWord _pRegisterBaseAddressLength
UWord NTV2DeviceGetNumMixers(const NTV2DeviceID inDeviceID)
bool NTV2DeviceGetSupportedFrameRates(const NTV2DeviceID inDeviceID, NTV2FrameRateSet &outRates)
Returns a set of distinct NTV2FrameRate values supported on the given device.
bool NTV2DeviceCanDo3GLevelConversion(const NTV2DeviceID inDeviceID)
True if device has 12G SDI connectors.
std::set< NTV2FrameGeometry > NTV2GeometrySet
A set of distinct NTV2FrameGeometry values.
_EventHandles mInterruptEventHandles
For subscribing to each possible event, one for each interrupt type.
bool NTV2DeviceHasLEDAudioMeters(const NTV2DeviceID inDeviceID)
True if device is supported by AJA "retail" software (AJA ControlPanel & ControlRoom).
The maximum number of audio channels that a single Audio System can support on the device...
bool NTV2DeviceCanDoThunderbolt(const NTV2DeviceID inDeviceID)
bool NTV2DeviceHasBiDirectionalSDI(const NTV2DeviceID inDeviceID)
ULWord NTV2DeviceGetHDMIVersion(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoStereoIn(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoPCMDetection(const NTV2DeviceID inDeviceID)
static int32_t Increment(int32_t volatile *pTarget)
True if device can rasterize 4 HD signals into a single HDMI output.
virtual bool NTV2WaitForInterruptRemote(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs)
bool NTV2DeviceGetSupportedVideoFormats(const NTV2DeviceID inDeviceID, NTV2VideoFormatSet &outFormats)
Returns a set of distinct NTV2VideoFormat values supported on the given device.
ULWord NTV2DeviceGetUFCVersion(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetNumAnalogVideoOutputs(const NTV2DeviceID inDeviceID)
virtual bool ParseFlashHeader(BITFILE_INFO_STRUCT &outBitfileInfo)
ULWord NTV2DeviceGetPingLED(const NTV2DeviceID inDeviceID)
bool NTV2DeviceHasPCIeGen2(const NTV2DeviceID inDeviceID)
True if device supports 2nd-generation PCIe.
True if audio system(s) support 6 or more audio channels.
virtual bool GetRecordedRegisterWrites(NTV2RegisterWrites &outRegWrites) const
Answers with the recorded register writes.
static NTV2RPCClientAPI * CreateClient(NTV2ConnectParams &inParams)
Instantiates a new NTV2RPCClientAPI instance using the given NTV2ConnectParams.
virtual bool GetPackageInformation(PACKAGE_INFO_STRUCT &outPkgInfo)
Answers with the IP device's package information.
bool NTV2DeviceCanReportFrameSize(const NTV2DeviceID inDeviceID)
#define NTV2_WRITEREG_PROFILING
True if device is local-host-attached, and not remote, software or virtual (new in SDK 17...
virtual bool ReleaseStreamForApplicationWithReference(const ULWord inAppType, const int32_t inProcessID)
A reference-counted version of CNTV2DriverInterface::ReleaseStreamForApplication useful for process g...
Specifies channel or FrameStore 2 (or the 2nd item).
virtual NTV2DeviceID GetDeviceID(void)
bool NTV2DeviceHasSDIRelays(const NTV2DeviceID inDeviceID)
Identifies the NTV2FrameGeometry enumerated type.
virtual bool ReadRegisterMulti(const ULWord numRegs, ULWord *pOutWhichRegFailed, NTV2RegInfo aRegs[])
NTV2Buffer mBuffer
Virtual address of a mail buffer and its length.
NTV2Buffer mBuffer
Virtual address of a stream buffer and its length.
NTV2ConnectParams Results(void) const
True if device has GPIO interface. (New in SDK 18.0)
True if frame buffer sizes are not fixed.
bool NTV2DeviceCanDo2KVideo(const NTV2DeviceID inDeviceID)
The number of quarter-size 4K/UHD down-converters on the device.
This is used by the CNTV2Card::ReadRegisters function.
Identifies the NTV2TCIndex enumerated type for output.
ULWord NTV2DeviceGetNumDMAEngines(const NTV2DeviceID inDeviceID)
True if device is direct addressable.
True if device has any SDI, HDMI or analog video inputs.
UWord NTV2DeviceGetNumVideoInputs(const NTV2DeviceID inDeviceID)
True if device has serial SPI flash hardware.
ULWord NTV2DeviceGetNumberFrameBuffers(NTV2DeviceID id, NTV2FrameGeometry fg, NTV2FrameBufferFormat fbf)
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...
True if device can report its frame size.
bool NTV2DeviceCanDisableUFC(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDo4KVideo(const NTV2DeviceID inDeviceID)
Declares the CNTV2DeviceScanner class.
True if device has any AES audio output channels (New in SDK 17.1)
virtual bool NTV2ReadRegisterRemote(const ULWord regNum, ULWord &outRegValue, const ULWord regMask, const ULWord regShift)
bool NTV2DeviceCanReportRunningFirmwareDate(const NTV2DeviceID inDeviceID)
virtual std::string GetDescription(void) const
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
bool NTV2DeviceCanDoRateConvert(const NTV2DeviceID inDeviceID)
static bool GetOverlappedMode(void)
ULWord deviceIndex
Device index number – this will be phased out someday.
The number of HDMI video outputs on the device.
Use kDeviceGetSPIVersion instead.
bool NTV2DeviceGetSupportedPixelFormats(const NTV2DeviceID inDeviceID, NTV2PixelFormats &outFormats)
Returns a set of distinct NTV2FrameBufferFormat values supported on the given device.
#define BITSTREAM_SWAP
Used in NTV2Bitstream to byte swap bitstream data.
The number of SDI-embedded output audio channels supported by the device.
UWord NTV2DeviceGetNumAudioSystems(const NTV2DeviceID inDeviceID)
static uint32_t gCloseCount(0)
Declares the AJAProcess class.
This is used for bitstream maintainance. (New in SDK 16.0)
Describes a user-space buffer on the host computer. I have an address and a length, plus some optional attributes (allocated by SDK?, page-aligned? etc.).
The number of frame sync widgets on the device.
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitFileInfo, const NTV2BitFileType inBitFileType=NTV2_VideoProcBitFile)
defined(NTV2_DEPRECATE_17_2)
bool NTV2DeviceHasAudioMonitorRCAJacks(const NTV2DeviceID inDeviceID)
Use kDeviceGetSPIVersion instead.
bool NTV2DeviceGetSupportedOutputDests(const NTV2DeviceID inDeviceID, NTV2OutputDestinations &outOutputDests, const NTV2IOKinds inKinds=NTV2_IOKINDS_ALL)
Returns a set of distinct NTV2OutputDest values supported on the given device.
True if device can handle SD (Standard Definition) video.
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
ULWord * _pXena2FlashBaseAddress
Declares the AJAAtomic class.
bool NTV2DeviceCanDoIDSwitch(const NTV2DeviceID inDeviceID)
virtual ~CNTV2DriverInterface()
My destructor.
NTV2InputSourceSet::const_iterator NTV2InputSourceSetConstIter
A handy const iterator for iterating over an NTV2InputSourceSet.
bool NTV2DeviceCanDoSDIErrorChecks(const NTV2DeviceID inDeviceID)
True if device mixer/keyer supports adjustable opacity.
#define BITSTREAM_WRITE
Used in NTV2Bitstream to write a bitstream.
ULWord mTimeout
Timeout (us)
True if device has a crosspoint connection ROM (New in SDK 17.0)
True if device supports 10-bit RGB input/output over 2-wire SDI.
bool NTV2DeviceCanDo12gRouting(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetNumEmbeddedAudioInputChannels(const NTV2DeviceID inDeviceID)
NTV2WidgetIDSet::const_iterator NTV2WidgetIDSetConstIter
An iterator for iterating over a read-only NTV2WidgetIDSet.
#define kConnectParamDevIndex
Device having this index number.
True if device frame buffer size can be changed.
bool NTV2DeviceIsDirectAddressable(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoStackedAudio(const NTV2DeviceID inDeviceID)
static uint32_t gOpenCount(0)
virtual std::string Description(void) const
ULWord * _pFrameBaseAddress
The number of analog audio output channels on the device.
virtual bool Read(const uint32_t address, std::vector< uint8_t > &data, uint32_t maxBytes=1)
True if Audio System(s) support a 192kHz sample rate.
Use kDeviceGetSPIVersion instead.
True if device has one or more analog video outputs.
static bool GetDeviceInfo(const ULWord inDeviceIndexNumber, NTV2DeviceInfo &outDeviceInfo, const bool inRescan=(0))
virtual bool StreamBufferOps(const NTV2Channel inChannel, NTV2Buffer &inBuffer, ULWord64 bufferCookie, ULWord flags, NTV2StreamBuffer &status)
NTV2FrameGeometry
Identifies a particular video frame geometry.
UWord NTV2DeviceGetNumOutputConverters(const NTV2DeviceID inDeviceID)
std::ostream & PrintErrors(std::ostream &oss) const
The number of analog LTC inputs on the device.
bool NTV2DeviceCanDoWarmBootFPGA(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoRGBPlusAlphaOut(const NTV2DeviceID inDeviceID)
The number of analog video inputs on the device.
The total number of audio systems on the device that can read/write audio buffer memory. Includes host audio system, if present. (New in SDK 17.0)
UWord NTV2DeviceGetNumLUTs(const NTV2DeviceID inDeviceID)
True if device supports 1080p RGB at more than 50Hz frame rates.
Declares numerous NTV2 utility functions.
True if device supports 12G routing crosspoints.
virtual Word SleepMs(const LWord msec)
bool NTV2DeviceHasRetailSupport(const NTV2DeviceID inDeviceID)
The version number of the DAC on the device.
bool Set(const void *pInUserPointer, const size_t inByteCount)
Sets (or resets) me from a client-supplied address and size.
CNTV2DriverInterface()
My default constructor.
True if device can rasterize 4 HD signals into a single HDMI output.
UWord NTV2DeviceGetNum2022ChannelsSFP2(const NTV2DeviceID inDeviceID)
ULWord NTV2DeviceGetMaxRegisterNumber(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoHDVideo(const NTV2DeviceID inDeviceID)
virtual ULWord GetNumSupported(const NTV2NumericParamID inParamID)
virtual const std::string & GetDate(void) const
virtual bool StreamChannelOps(const NTV2Channel inChannel, ULWord flags, NTV2StreamChannel &status)
static bool GetWidgetIDs(const NTV2DeviceID inDeviceID, NTV2WidgetIDSet &outWidgets)
Returns the widget IDs supported by the given device.
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the number of interrupts of the given type processed by the driver.
True if device supports SMPTE ST2110.
True if device can perform SDI error checking.
ULWord * _pCh1FrameBaseAddress
virtual bool OpenRemote(const NTV2DeviceSpecParser &inSpec)
Peforms the housekeeping details of opening the remote/virtual device using the given specParser...
The number of output converter widgets on the device.
AUTO_CIRC_COMMAND eCommand
True if device has any analog inputs or outputs.
True if the device can handle 4K/UHD video.
bool NTV2DeviceCanDoAudioDelay(const NTV2DeviceID inDeviceID)
static bool gOverlappedMode((0))
The number of RS-422 serial ports on the device.
#define NTV2_BITFILE_PARTNAME_STRINGLENGTH
True if device has SDI ANC inserter/extractor firmware.
UWord NTV2DeviceGetNumHDMIAudioInputChannels(const NTV2DeviceID inDeviceID)
Declares the CNTV2Bitfile class.
ULWord _ulNumFrameBuffers
ULWord mFlags
Action flags.
bool NTV2DeviceCanDoVideoProcessing(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDo8KVideo(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanChangeEmbeddedAudioClock(const NTV2DeviceID inDeviceID)
#define NTV2DriverVersionDecode_Build(__vers__)
True if device supports HDMI HDR output.
True if device can measure its FPGA die temperature.
_EventCounts mEventCounts
My event tallies, one for each interrupt type. Note that these.
bool NTV2DeviceCanDoQuarterExpand(const NTV2DeviceID inDeviceID)
True if there's at least one UFC, and it can be disabled.
UWord NTV2DeviceGetNumLTCOutputs(const NTV2DeviceID inDeviceID)
Specifies channel or FrameStore 1 (or the first item).
True if device can report its running (and not necessarily installed) firmware date.
bool NTV2DeviceHasNWL(const NTV2DeviceID inDeviceID)
True if device supports Versal Adaptive SoC System Monitor.
Calculate based on if NTV2_WgtCSC2 is present.
True if device is supported by this SDK.
bool NTV2DeviceHasHEVCM31(const NTV2DeviceID inDeviceID)
bool NTV2DeviceGetSupportedInputSources(const NTV2DeviceID inDeviceID, NTV2InputSourceSet &outInputSources, const NTV2IOKinds inKinds=NTV2_IOKINDS_ALL)
Returns a set of distinct NTV2InputSource values supported on the given device.
bool NTV2DeviceCanDoRGBLevelAConversion(const NTV2DeviceID inDeviceID)
#define xHEX0N(__x__, __n__)
bool NTV2DeviceIsExternalToHost(const NTV2DeviceID inDeviceID)
A simple (not thread-safe) set of key/value pairs. (New in SDK 16.3)
The number of microphone inputs on the device.
The number of HDMI audio input channels on the device.
True if device supports frame pulse source independent of reference source.
bool NTV2DeviceCanDoSDVideo(const NTV2DeviceID inDeviceID)
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs=68)
virtual ULWordSet GetSupportedItems(const NTV2EnumsID inEnumsID)
The number of 2022 channels configured on SFP 2 on the device.
True if device has any LUTs.
bool NTV2DeviceHasRotaryEncoder(const NTV2DeviceID inDeviceID)
NTV2RegWritesIter NTV2RegisterReadsIter
True if device has HDMI AUX data extractor(s).
#define NTV2_IS_VALID_AUDIO_SOURCE(_x_)
bool NTV2DeviceCanDoAudio192K(const NTV2DeviceID inDeviceID)
True if device can read LTC (Linear TimeCode) from one of its inputs.
#define NTV2DriverVersionDecode_Minor(__vers__)
The SPI-flash version on the device. (New in SDK 17.1)
True if device supports 3D/stereo HDMI video output.
NTV2AudioSource
This enum value determines/states where an audio system will obtain its audio samples.
The down-converter delay on the device.
True if device has a PWM-controlled cooling fan. (New in SDK 17.1)
bool NTV2DeviceHasHeadphoneJack(const NTV2DeviceID inDeviceID)
virtual const std::string & GetPartName(void) const
bool NTV2DeviceCanDoHDMIHDROut(const NTV2DeviceID inDeviceID)
#define BITSTREAM_RESET_MODULE
Used in NTV2Bitstream to reset module.
Input (capture) mode, which writes into device SDRAM.
virtual bool StopRecordRegisterWrites(void)
Stops recording all WriteRegister calls.
bool NTV2DeviceGetSupportedGeometries(const NTV2DeviceID inDeviceID, NTV2GeometrySet &outGeometries)
Returns a set of distinct NTV2FrameGeometry values supported on the given device. ...
bool NTV2DeviceCanDoDVCProHD(const NTV2DeviceID inDeviceID)
virtual bool ConfigureSubscription(const bool bSubscribe, const INTERRUPT_ENUMS inInterruptType, PULWord &outSubcriptionHdl)
bool NTV2DeviceCanDoBreakoutBoard(const NTV2DeviceID inDeviceID)
virtual bool NTV2WriteRegisterRemote(const ULWord regNum, const ULWord regValue, const ULWord regMask, const ULWord regShift)
UWord NTV2DeviceGetNumVideoOutputs(const NTV2DeviceID inDeviceID)
True if device has NorthWest Logic DMA hardware.
ULWord NTV2DeviceGetFrameBufferSize(NTV2DeviceID id, NTV2FrameGeometry fg, NTV2FrameBufferFormat fbf)
Private include file for all ajabase sources.
The version number of the HDMI chipset on the device.
virtual bool GetInterruptEventCount(const INTERRUPT_ENUMS inEventCode, ULWord &outCount)
Answers with the number of interrupt events that I successfully waited for.
bool NTV2DeviceCanDoCustomAnc(const NTV2DeviceID inDeviceID)
True if device audio systems can wait for VBI before starting. (New in SDK 17.0)
The number of LUT widgets on the device.
virtual bool IsMBSystemValid(void)
bool NTV2DeviceCanDoLTCInOnRefPort(const NTV2DeviceID inDeviceID)
The number of analog audio input channels on the device.
True if audio system(s) support 8 or more audio channels.
True if device has a microphone input connector.
virtual bool BitstreamWrite(const NTV2Buffer &inBuffer, const bool inFragment, const bool inSwap)
bool NTV2DeviceCanDoVITC2(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetNumAESAudioOutputChannels(const NTV2DeviceID inDeviceID)
std::string join(const std::vector< std::string > &parts, const std::string &delim)
True if device can insert or extract RP-188/VITC2.
ULWord NTV2DeviceGetNumVideoChannels(const NTV2DeviceID inDeviceID)
UWord NTV2DeviceGetSPIFlashVersion(const NTV2DeviceID inDeviceID)
std::set< NTV2DeviceID > NTV2DeviceIDSet
A set of NTV2DeviceIDs.
True if device has an HEVC M30 encoder/decoder.
void * GetHostPointer(void) const
bool NTV2DeviceCanDoBreakoutBox(const NTV2DeviceID inDeviceID)
True if device has a firmware audio mixer.
Identifies the NTV2PixelFormat enumerated type.
NTV2AudioSource NTV2InputSourceToAudioSource(const NTV2InputSource inInputSource)
bool NTV2DeviceCanDoProgrammableRS422(const NTV2DeviceID inDeviceID)
virtual bool BitstreamStatus(NTV2ULWordVector &outRegValues)
Instances of me can parse a bitfile.
Identifies the NTV2TCIndex enumerated type for input.
bool NTV2DeviceHasXilinxDMA(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoOutputTCIndex(const NTV2DeviceID inDeviceID, const NTV2TCIndex inTCIndex)
bool NTV2DeviceCanDoIP(const NTV2DeviceID inDeviceID)
Identifies the NTV2Mode enumerated type.
NTV2RegisterWrites mRegWrites
Stores WriteRegister data.
UWord NTV2DeviceGetNumHDMIAudioOutputChannels(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoAnalogVideoIn(const NTV2DeviceID inDeviceID)
Identifies the NTV2ConversionMode enumerated type.
virtual bool IsMBSystemReady(void)
bool NTV2DeviceCanDo2110(const NTV2DeviceID inDeviceID)
True if device connects to the host using a Thunderbolt cable.
True if device has a bi-directional analog audio connector.
bool NTV2DeviceHasHEVCM30(const NTV2DeviceID inDeviceID)
std::vector< NTV2RegInfo > NTV2RegisterWrites
bool NTV2DeviceCanDoVersalSysMon(const NTV2DeviceID inDeviceID)
bool mSkipRegWrites
True if actual register writes are skipped while recording.
virtual NTV2ConnectParams ConnectParams(void) const
NTV2RPCAPI * _pRPCAPI
Points to remote or software device interface; otherwise NULL for local physical device.
bool NTV2DeviceCanDoHDMIMultiView(const NTV2DeviceID inDeviceID)
The number of 2022 channels configured on SFP 1 on the device.
NTV2RegWrites NTV2RegReads
An ordered sequence of zero or more NTV2RegInfo structs intended for ReadRegister.
std::string InfoString(void) const
bool NTV2DeviceHasBracketLED(const NTV2DeviceID inDeviceID)
virtual bool ReadRP188Registers(const NTV2Channel inChannel, RP188_STRUCT *pRP188Data)
True if device has a rotary encoder volume control.
bool NTV2DeviceCanChangeFrameBufferSize(const NTV2DeviceID inDeviceID)
NTV2Channel mChannel
Mail buffer channel.
UWord NTV2DeviceGetMaxAudioChannels(const NTV2DeviceID inDeviceID)
virtual bool NTV2AutoCirculateRemote(AUTOCIRCULATE_DATA &autoCircData)
UWord NTV2DeviceGetNumHDMIVideoInputs(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoAnalogVideoOut(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanMeasureTemperature(const NTV2DeviceID inDeviceID)
The number of colorspace converter widgets on the device.
Identifies the NTV2AudioWidgetID enumerated type.
UWord NTV2DeviceGetNumReferenceVideoInputs(const NTV2DeviceID inDeviceID)
#define NTV2_BITFILE_DESIGNNAME_STRINGLENGTH
True if device supports custom HANC packet insertion. (New in SDK 17.1)
UWord NTV2DeviceGetDACVersion(const NTV2DeviceID inDeviceID)
True if device can insert and/or extract RP-188/VITC.
True if device supports 8K video formats.
Identifies the NTV2FrameRate enumerated type.
UWord NTV2DeviceGetNumAnalogAudioInputChannels(const NTV2DeviceID inDeviceID)
True if device has NTV4 FrameStores. (New in SDK 17.0)
bool NTV2DeviceCanDoFramePulseSelect(const NTV2DeviceID inDeviceID)
bool NTV2DeviceCanDoQREZ(const NTV2DeviceID inDeviceID)
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &pAutoCircData)
Sends an AutoCirculate command to the NTV2 driver.
virtual bool MailBufferOps(const NTV2Channel inChannel, NTV2Buffer &inBuffer, ULWord dataSize, ULWord flags, ULWord delay, ULWord timeout, NTV2MailBuffer &status)
The number of HDMI audio output channels on the device.
ULWord mDataSize
Size of data in the buffer.
The number of SDI video inputs on the device.
True if device fan can be thermostatically controlled.
#define AJA_NTV2_SDK_VERSION_MINOR
The SDK minor version number, an unsigned decimal integer.
static UWord MaxNumDevices(void)
True if device can can accommodate Apple ProRes-compressed video in its frame buffers.
ULWord64 mBufferCookie
Buffer User cookie.
True if device can handle HD (High Definition) video.
Declares device capability functions.
True if device has HDMI AUX data inserter(s).
bool NTV2DeviceCanDoCustomAux(const NTV2DeviceID inDeviceID)
Packed driver version – use NTV2DriverVersionEncode, NTV2DriverVersionDecode* macros to encode/decod...
The size, in bytes, of the device's active RAM available for video and audio.
The number of AES/EBU audio input channels on the device.
bool NTV2DeviceCanDoPIO(const NTV2DeviceID inDeviceID)
static bool IsValid(uint64_t pid)
True if device has Xilinx DMA hardware.
The number of down-converters on the device.
NTV2ReferenceSource NTV2InputSourceToReferenceSource(const NTV2InputSource inInputSource)
Converts a given NTV2InputSource to its equivalent NTV2ReferenceSource value.
True if Audio System(s) support a 96kHz sample rate.
virtual ULWord GetNumRecordedRegisterWrites(void) const
True if device has any AES audio inputs or outputs.
True if device has one or more analog video inputs.
True if device can do frame rate conversion.
True if device has a mechanical identification switch. (New in SDK 17.1)
The number of HDMI video inputs on the device.
#define NTV2_BITFILE_DATETIME_STRINGLENGTH
NTV2FrameBufferFormatSet::const_iterator NTV2FrameBufferFormatSetConstIter
A handy const iterator for iterating over an NTV2FrameBufferFormatSet.
virtual HANDLE GetInterruptEvent(const INTERRUPT_ENUMS eInterruptType)
True if device can simultaneously handle different video formats on more than one SDI input or output...
UWord NTV2DeviceGetNumAESAudioInputChannels(const NTV2DeviceID inDeviceID)
static uint32_t gDestructCount(0)