 |
AJA NTV2 SDK
18.0.0.2717
NTV2 SDK 18.0.0.2717
|
Go to the documentation of this file.
24 #define PLFAIL(__x__) AJA_sERROR (AJA_DebugUnit_Plugins, AJAFUNC << ": " << __x__)
25 #define PLWARN(__x__) AJA_sWARNING(AJA_DebugUnit_Plugins, AJAFUNC << ": " << __x__)
26 #define PLNOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_Plugins, AJAFUNC << ": " << __x__)
27 #define PLINFO(__x__) AJA_sINFO (AJA_DebugUnit_Plugins, AJAFUNC << ": " << __x__)
28 #define PLDBUG(__x__) AJA_sDEBUG (AJA_DebugUnit_Plugins, AJAFUNC << ": " << __x__)
31 #if defined(NTV2_DEPRECATE_17_1)
37 string deviceIdentifier;
44 {
static const string sHexDigits(
"0123456789ABCDEFabcdef");
45 return sHexDigits.find(inChr) != string::npos;
49 {
static const string sDecDigits(
"0123456789");
50 return sDecDigits.find(inChr) != string::npos;
54 {
static const string sLegalChars(
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
55 return sLegalChars.find(inChr) != string::npos;
70 for (
size_t ndx(0); ndx < inStr.size(); ndx++)
75 #endif // !defined(NTV2_DEPRECATE_17_1)
79 if (inStr.length() != 8 && inStr.length() != 9)
93 #if defined(NTV2_DEPRECATE_17_1)
94 void ScanHardware (
void)
102 if (!tmpDev.IsOpen())
105 info.
deviceID = tmpDev.GetDeviceID();
112 #else // !defined(NTV2_DEPRECATE_17_1)
119 #if !defined(NTV2_DEPRECATE_16_3)
126 #endif // !defined(NTV2_DEPRECATE_16_3)
140 for (
UWord boardNum(0); ; boardNum++)
143 if (!tmpDev.IsOpen())
158 SetDeviceAttributes(info, tmpDev);
159 SetAudioAttributes(info, tmpDev);
176 if (iter->deviceID == inDeviceID)
190 if (iter->deviceIndex == inDeviceIndexNumber)
192 outDeviceInfo = *iter;
198 #endif // !defined(NTV2_DEPRECATE_17_1)
206 if (iter->deviceIndex == inDeviceIndexNumber)
208 if (iter->isVirtualDevice)
209 return outDevice.
Open(iter->vdevUrl);
211 return outDevice.
Open(
UWord(inDeviceIndexNumber));
241 string nameSubString(inNameSubString);
aja::lower(nameSubString);
245 if (deviceName.find(nameSubString) != string::npos)
253 if (nameSubString ==
"io4kplus")
255 nameSubString =
"avid dnxiv";
259 if (deviceName.find(nameSubString) != string::npos)
278 string nameString(inNameString);
aja::lower(nameString);
284 if (deviceName == nameString)
297 string searchSerialStr(inSerialStr);
aja::lower(searchSerialStr);
301 if (ser.find(searchSerialStr) != string::npos)
313 #if !defined(NTV2_DEPRECATE_17_5)
317 return GetDeviceWithSerial(serNumStr, outDevice);
319 #endif // !defined(NTV2_DEPRECATE_17_5)
327 if (
sDevInfoList.at(ndx).serialNumber == inSerialNumber)
341 if (inArgument.empty())
347 string upperArg(inArgument);
aja::upper(upperArg);
348 if (upperArg ==
"LIST" || upperArg ==
"?")
351 cout <<
"No devices detected" << endl;
358 cout <<
DECN(ndx, 2) <<
" | " << setw(8) <<
"virtual";
360 cout <<
" | " << setw(10) <<
sDevInfoList.at(ndx).vdevName;
365 cout <<
DECN(ndx, 2) <<
" | " << setw(8) <<
"local";
368 cout <<
" | " << setw(10) << serNum;
378 if (iter->isVirtualDevice)
380 if (
to_string(iter->deviceIndex) == inArgument
381 || iter->deviceIdentifier == inArgument
382 || iter->vdevName == inArgument
387 ok = outDevice.
Open(iter->vdevUrl);
392 else if (IsLegalSerialNumber(inArgument))
393 return outDevice.
Open(inArgument);
394 else if (inArgument.find(
"://") != string::npos)
395 return outDevice.
Open(inArgument);
399 if (
to_string(iter->deviceIndex) == inArgument)
400 return outDevice.
Open(inArgument);
401 else if (iter->deviceIdentifier == inArgument)
402 return outDevice.
Open(inArgument);
404 return outDevice.
Open(inArgument);
405 else if (IsLegalSerialNumber(inArgument))
406 return outDevice.
Open(inArgument);
407 else if (inArgument.find(
"://") != string::npos)
408 return outDevice.
Open(inArgument);
411 return outDevice.
Open(inArgument);
417 if (!inDevice.IsOpen())
420 if (!inDevice.GetHostName().empty() && inDevice.IsRemote())
421 return inDevice.GetHostName();
430 if (!str.empty() && str !=
"???")
434 ostringstream oss; oss <<
DEC(inDevice.GetIndexNumber());
439 #if !defined(NTV2_DEPRECATE_17_1)
443 inOutStr <<
" " << *iter;
470 return diffs ?
false :
true;
479 deviceSerialNumber = 0;
483 numAnlgVidInputs = 0;
484 numAnlgVidOutputs = 0;
485 numHDMIVidInputs = 0;
486 numHDMIVidOutputs = 0;
487 numInputConverters = 0;
488 numOutputConverters = 0;
490 numDownConverters = 0;
491 downConverterDelay = 0;
492 isoConvertSupport =
false;
493 rateConvertSupport =
false;
494 dvcproHDSupport =
false;
497 quarterExpandSupport =
false;
498 vidProcSupport =
false;
499 dualLinkSupport =
false;
500 colorCorrectionSupport =
false;
501 programmableCSCSupport =
false;
502 rgbAlphaOutputSupport =
false;
503 breakoutBoxSupport =
false;
504 procAmpSupport =
false;
505 has2KSupport =
false;
506 has4KSupport =
false;
507 has8KSupport =
false;
508 has3GLevelConversion =
false;
509 proResSupport =
false;
510 sdi3GSupport =
false;
511 sdi12GSupport =
false;
513 biDirectionalSDI =
false;
514 ltcInSupport =
false;
515 ltcOutSupport =
false;
516 ltcInOnRefPort =
false;
517 stereoOutSupport =
false;
518 stereoInSupport =
false;
521 numAnalogAudioInputChannels = 0;
522 numAESAudioInputChannels = 0;
523 numEmbeddedAudioInputChannels = 0;
524 numHDMIAudioInputChannels = 0;
525 numAnalogAudioOutputChannels = 0;
526 numAESAudioOutputChannels = 0;
527 numEmbeddedAudioOutputChannels = 0;
528 numHDMIAudioOutputChannels = 0;
532 deviceIdentifier.clear();
533 audioSampleRateList.clear();
534 audioNumChannelsList.clear();
535 audioBitsPerSampleList.clear();
536 audioInSourceList.clear();
537 audioOutSourceList.clear();
555 outBoardsAdded.clear ();
556 outBoardsRemoved.clear ();
560 if (oldIter == inOldList.end () && newIter == inNewList.end ())
563 if (oldIter != inOldList.end () && newIter != inNewList.end ())
567 if (oldInfo != newInfo)
570 outBoardsRemoved.push_back (oldInfo);
574 outBoardsAdded.push_back (newInfo);
583 if (oldIter != inOldList.end () && newIter == inNewList.end ())
585 outBoardsRemoved.push_back (*oldIter);
590 if (oldIter == inOldList.end () && newIter != inNewList.end ())
592 if (newIter->deviceID && newIter->deviceID !=
NTV2DeviceID(0xFFFFFFFF))
593 outBoardsAdded.push_back (*newIter);
603 return !outBoardsAdded.empty () || !outBoardsRemoved.empty ();
611 inOutStr <<
" " << *iter;
620 inOutStr <<
" " << *iter;
638 return inOutStr <<
" ???";
645 inOutStr <<
" " << *iter;
654 <<
" Device Index Number: " << inInfo.
deviceIndex << endl
655 <<
" Device ID: 0x" << hex << inInfo.
deviceID << dec << endl
657 <<
" PCI Slot: 0x" << hex << inInfo.
pciSlot << dec << endl
671 <<
" Qrez: " << (inInfo.
qrezSupport ?
"Y" :
"N") << endl
672 <<
" HDV: " << (inInfo.
hdvSupport ?
"Y" :
"N") << endl
688 <<
" SDI 3G: " << (inInfo.
sdi3GSupport ?
"Y" :
"N") << endl
689 <<
" SDI 12G: " << (inInfo.
sdi12GSupport ?
"Y" :
"N") << endl
690 <<
" IP: " << (inInfo.
ipSupport ?
"Y" :
"N") << endl
692 <<
" LTC In: " << (inInfo.
ltcInSupport ?
"Y" :
"N") << endl
693 <<
" LTC Out: " << (inInfo.
ltcOutSupport ?
"Y" :
"N") << endl
694 <<
" LTC In on Ref Port: " << (inInfo.
ltcInOnRefPort ?
"Y" :
"N") << endl
723 inOutStr <<
"AudioPhysicalFormat:" << endl
724 <<
" boardNumber: " << inFormat.
boardNumber << endl
725 <<
" sampleRate: " << inFormat.
sampleRate << endl
726 <<
" numChannels: " << inFormat.
numChannels << endl
728 #if defined (DEBUG) || defined (AJA_DEBUG)
729 <<
" sourceIn: 0x" << hex << inFormat.
sourceIn << dec << endl
730 <<
" sourceOut: 0x" << hex << inFormat.
sourceOut << dec << endl
731 #endif // DEBUG or AJA_DEBUG
824 if (audioControl &
BIT(21))
856 #if defined(NTV2_PREVENT_PLUGIN_LOAD)
858 #else // else NTV2_PREVENT_PLUGIN_LOAD
860 if (vdevPath.empty())
865 for (
const auto & vdevFile : vdevFiles)
869 std::ifstream vf(vdevFile);
871 {
PLFAIL(
"Unable to open '" << vdevFile <<
"'");
return false;}
878 PLFAIL(
"Invalid JSON at byte " << e.
byte <<
" in '" << vdevFile <<
"': " << e.
what() <<
", exceptionID " << e.
id);
894 auto pluginVal (vdevJson[
"plugin"]), nameVal (vdevJson[
"name"]), hostVal (vdevJson[
"host"]), urlspecVal (vdevJson[
"urlspec"]);
895 if (urlspecVal.is_null())
896 {
PLFAIL(
"File '" << vdevFile <<
"': missing required 'urlspec' parameter");
continue;}
897 newVDev.
vdevUrl = urlspecVal.get<std::string>();
898 if (!pluginVal.is_null())
899 PLWARN(
"File '" << vdevFile <<
"': 'plugin' parameter ignored");
900 if (!hostVal.is_null())
901 PLWARN(
"File '" << vdevFile <<
"': 'host' parameter ignored");
902 if (!nameVal.is_null())
903 newVDev.
vdevName = nameVal.get<std::string>();
906 string fName (vdevFile);
907 fName.erase(fName.find(vdevPath), vdevPath.length()+1);
909 fName.erase(fName.length()-5, 5);
921 outVDevList.push_back(newVDev);
924 #endif // else NTV2_PREVENT_PLUGIN_LOAD
929 #if defined(NTV2_PREVENT_PLUGIN_LOAD)
931 #else // else NTV2_PREVENT_PLUGIN_LOAD
937 vdevPath +=
"virtualdevices";
941 for (
const auto & vdevFile : vdevFiles)
945 std::ifstream vf(vdevFile);
947 {
PLFAIL(
"Unable to open '" << vdevFile <<
"'");
return false;}
954 PLFAIL(
"Invalid JSON at byte " << e.
byte <<
" in '" << vdevFile <<
"': " << e.
what() <<
", exceptionID " << e.
id);
971 auto pluginVal (vdevJson[
"plugin"]), nameVal (vdevJson[
"name"]), hostVal (vdevJson[
"host"]), urlspecVal (vdevJson[
"urlspec"]);
972 if (pluginVal.is_null())
973 {
PLFAIL(
"File: '" << vdevFile <<
"' missing required 'plugin' parameter");
continue;}
974 if (!urlspecVal.is_null())
975 PLWARN(
"File: '" << vdevFile <<
"' 'urlspec' parameter ignored");
977 newVDev.
vdevUrl = pluginVal.get<std::string>();
978 if (!nameVal.is_null())
981 oss << nameVal.get<std::string>() <<
" - " << newVDev.
deviceIndex;
983 newVDev.
vdevName = nameVal.get<std::string>();
986 if (!hostVal.is_null())
987 hostName = hostVal.get<std::string>();
988 if (hostName.empty())
989 hostName =
"localhost";
990 newVDev.
vdevUrl +=
"://" + hostName +
"/?";
993 for (
auto it (vdevJson.
begin()); it != vdevJson.
end(); ++it)
994 if (it.key() !=
"plugin" && it.key() !=
"name" && it.key() !=
"host")
996 auto paramValStr =
to_string(it.value());
998 params.push_back(it.key() +
"=" + ::
PercentEncode(paramValStr));
1003 const string queryStr(
aja::join(params,
"&"));
1004 if (!queryStr.empty())
1005 newVDev.
vdevUrl +=
"?" + queryStr;
1006 outVDevList.push_back(newVDev);
1009 #endif // else NTV2_PREVENT_PLUGIN_LOAD
1012 #endif // !defined(NTV2_DEPRECATE_17_1)
@ AJA_SystemInfoSection_Path
static uint64_t IsLegalHexSerialNumber(const std::string &inStr)
#define kQParamVDevIndex
Device index number for .vdev virtual device.
@ kDeviceGetNumVideoInputs
The number of SDI video inputs on the device.
@ kDeviceHasBiDirectionalSDI
True if device SDI connectors are bi-directional.
@ kDeviceCanDoAudio6Channels
True if audio system(s) support 6 or more audio channels.
Declares the AJASystemInfo class.
NTV2AudioSourceList audioOutSourceList
My supported audio output destinations (AES, etc.)
bool quarterExpandSupport
static bool DeviceIDPresent(const NTV2DeviceID inDeviceID, const bool inRescan=(0))
UWord numAnalogAudioInputChannels
Total number of analog audio input channels.
bool biDirectionalSDI
Supports Bi-directional SDI.
NTV2AudioBitsPerSampleList audioBitsPerSampleList
My supported audio bits-per-sample.
@ kDeviceCanDoIP
True if device has SFP connectors.
@ AJA_SystemInfoMemoryUnit_Megabytes
@ kDeviceCanDoVideoProcessing
True if device can do video processing.
const char * what() const noexcept override
returns the explanatory string
UWord numDownConverters
Total number of down-converters.
UWord numAnlgVidOutputs
Total number of analog video outputs.
Declares device capability functions.
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....
bool has3GLevelConversion
Supports 3G Level Conversion?
UWord numHDMIVidInputs
Total number of HDMI inputs.
std::string & strip(std::string &str, const std::string &ws)
@ kDeviceGetNumDownConverters
The number of down-converters on the device.
@ kDeviceCanDoHDV
True if device can squeeze/stretch between 1920x1080 and 1440x1080.
bool sdi12GSupport
Supports 12G?
std::string join(const std::vector< std::string > &parts, const std::string &delim)
@ kDeviceGetNumAnalogAudioInputChannels
The number of analog audio input channels on the device.
#define kQParamVDevFolderPath
Path to folder containing .vdev files.
#define NTV2_ASSERT(_expr_)
bool ltcInSupport
Accepts LTC input?
@ kDeviceGetNumEmbeddedAudioOutputChannels
The number of SDI-embedded output audio channels supported by the device.
NTV2DeviceInfoList GetDeviceInfoList(void)
NTV2AudioSourceList::const_iterator NTV2AudioSourceListConstIter
UWord numHDMIVidOutputs
Total number of HDMI outputs.
static AJALock sDevInfoListLock
static bool GetFirstDeviceFromArgument(const std::string &inArgument, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the AJA device that matches a command li...
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...
std::vector< NTV2DeviceInfo > NTV2DeviceInfoList
I am an ordered list of NTV2DeviceInfo structs.
@ kDeviceCanDo4KVideo
True if the device can handle 4K/UHD video.
UWord numSerialPorts
Total number of serial ports.
@ kDeviceCanDoAudio96K
True if Audio System(s) support a 96kHz sample rate.
@ kDeviceCanDo3GLevelConversion
True if device can do 3G level B to 3G level A conversion.
@ kDeviceCanDoQuarterExpand
True if device can handle quarter-sized frames (pixel-halving and line-halving during input,...
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
std::string NTV2GetVDevFolderPath(const bool inAddTrailingPathDelim=false)
@ kDeviceGetNumVideoOutputs
The number of SDI video outputs on the device.
CNTV2DeviceScanner(const bool inScanNow=(!(0)))
uint64_t is_legal_hex_serial_number(const std::string &inStr)
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...
int stoi(const std::string &str, std::size_t *idx, int base)
@ kDeviceGetNumAESAudioOutputChannels
The number of AES/EBU audio output channels on the device.
@ kDeviceCanDoColorCorrection
True if device has any LUTs.
@ kDeviceCanDoDualLink
True if device supports 10-bit RGB input/output over 2-wire SDI.
static size_t GetNumDevices(void)
static bool GetFirstDeviceWithSerial(const std::string &inSerialStr, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the first AJA device whose serial number...
a class to store JSON values
std::string PercentEncode(const std::string &inStr)
iterator begin() noexcept
returns an iterator to the first element
@ kDeviceGetNumAnalogAudioOutputChannels
The number of analog audio output channels on the device.
@ kDeviceGetNumDMAEngines
The number of DMA engines on the device.
UWord numHDMIAudioOutputChannels
Total number of HDMI audio output channels.
UWord numAnlgVidInputs
Total number of analog video inputs.
#define kQParamVDevName
Device name, if not specified in .vdev file, then base name of .vdev file.
NTV2AudioChannelsPerFrameList::const_iterator NTV2AudioChannelsPerFrameListConstIter
virtual bool IsSupported(const NTV2BoolParamID inParamID)
@ kDeviceCanDoDVCProHD
True if device can squeeze/stretch between 1920x1080/1280x1080 and 1280x720/960x720.
std::vector< AudioBitsPerSampleEnum > NTV2AudioBitsPerSampleList
std::vector< AudioSampleRateEnum > NTV2AudioSampleRateList
static bool CompareDeviceInfoLists(const NTV2DeviceInfoList &inOldList, const NTV2DeviceInfoList &inNewList, NTV2DeviceInfoList &outDevicesAdded, NTV2DeviceInfoList &outDevicesRemoved)
@ kDeviceCanDoAnalogAudio
True if device has any analog inputs or outputs.
UWord numVidOutputs
Total number of video outputs – analog, digital, whatever.
std::string & lower(std::string &str)
@ kDeviceGetNumAudioSystems
The number of independent Audio Systems on the device.
std::string deviceIdentifier
Device name as seen in Control Panel, Watcher, Cables, etc.
NTV2AudioSourceList audioInSourceList
My supported audio input sources (AES, ADAT, etc.)
std::set< ULWord > ULWordSet
A collection of unique ULWord (uint32_t) values.
Declares the AJALock class.
bool has4KSupport
Supports 4K formats?
@ kDeviceCanDoProRes
True if device can can accommodate Apple ProRes-compressed video in its frame buffers.
@ kDeviceGetNumAnalogVideoInputs
The number of analog video inputs on the device.
Declares the CNTV2DeviceScanner class.
UWord numOutputConverters
Total number of output converters.
@ kDeviceCanDoLTCInOnRefPort
True if device can read LTC (Linear TimeCode) from its reference input.
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
static void ScanHardware(void)
static bool GetDeviceInfo(const ULWord inDeviceIndexNumber, NTV2DeviceInfo &outDeviceInfo, const bool inRescan=(0))
virtual bool GetSerialNumberString(std::string &outSerialNumberString)
Answers with a string that contains my human-readable serial number.
@ kDeviceGetNumInputConverters
The number of input converter widgets on the device.
std::string & upper(std::string &str)
Declares numerous NTV2 utility functions.
UWord numDMAEngines
Total number of DMA engines.
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...
#define kQParamVDevFileName
.vdev file name (with extension)
I interrogate and control an AJA video/audio capture/playout device.
bool rgbAlphaOutputSupport
Supports RGB alpha channel?
@ AJA_SystemInfoTag_Path_PersistenceStoreUser
static NTV2DeviceInfoList sDevInfoList
@ kDeviceCanDoBreakoutBox
True if device supports an AJA breakout box.
@ kNTV2EnumsID_WidgetID
Identifies the NTV2AudioWidgetID enumerated type.
UWord numAESAudioOutputChannels
Total number of AES audio output channels.
static std::string GetDeviceRefName(CNTV2Card &inDevice)
@ kDeviceGetPingLED
The highest bit number of the LED bits in the Global Control Register on the device.
@ kDeviceCanDoStereoIn
True if device supports 3D video input over dual-stream SDI.
std::vector< std::string > NTV2StringList
virtual ULWord GetNumSupported(const NTV2NumericParamID inParamID)
bool has2KSupport
Supports 2K formats?
@ kDeviceGetDownConverterDelay
The down-converter delay on the device.
bool proResSupport
Supports ProRes?
bool stereoOutSupport
Supports stereo output?
@ kDeviceGetNumAESAudioInputChannels
The number of AES/EBU audio input channels on the device.
UWord numUpConverters
Total number of up-converters.
@ kDeviceGetNumHDMIVideoInputs
The number of HDMI video inputs on the device.
UWord numEmbeddedAudioInputChannels
Total number of embedded (SDI) audio input channels.
static bool IsHexDigit(const char inChr)
bool programmableCSCSupport
Programmable color space converter?
@ kDeviceCanDoRGBPlusAlphaOut
True if device has CSCs capable of splitting the key (alpha) and YCbCr (fill) from RGB frame buffers ...
NTV2DeviceInfoList::const_iterator NTV2DeviceInfoListConstIter
bool multiFormat
Supports multiple video formats?
Declares the AJAFileIO class.
ULWord deviceIndex
Device index number – this will be phased out someday.
UWord numAnalogAudioOutputChannels
Total number of analog audio output channels.
UWord numHDMIAudioInputChannels
Total number of HDMI audio input channels.
UWord numVidInputs
Total number of video inputs – analog, digital, whatever.
void setDeviceIndexNumber(const UWord num)
bool has8KSupport
Supports 8K formats?
std::vector< AudioSourceEnum > NTV2AudioSourceList
@ kDeviceGetNumHDMIVideoOutputs
The number of HDMI video outputs on the device.
Private include file for all ajabase sources.
static bool GetDeviceAtIndex(const ULWord inDeviceIndexNumber, CNTV2Card &outDevice)
Rescans the host, and returns an open CNTV2Card instance for the AJA device having the given zero-bas...
@ kDeviceGetNumHDMIAudioOutputChannels
The number of HDMI audio output channels on the device.
@ kDeviceGetNumHDMIAudioInputChannels
The number of HDMI audio input channels on the device.
bool is_alpha_numeric(const char inChr)
ostream & operator<<(ostream &inOutStr, const NTV2DeviceInfoList &inList)
bool is_legal_decimal_number(const std::string &inStr, const size_t inMaxLength)
NTV2AudioPhysicalFormatList::const_iterator NTV2AudioPhysicalFormatListConstIter
NTV2AudioSampleRateList audioSampleRateList
My supported audio sample rates.
@ kDeviceCanDo8KVideo
True if device supports 8K video formats.
@ kDeviceHasMicrophoneInput
True if device has a microphone input connector.
virtual NTV2DeviceID GetDeviceID(void)
bool operator==(const NTV2DeviceInfo &rhs) const
ULWord pciSlot
PCI slot (if applicable and/or known)
@ kDeviceCanDoAudio2Channels
True if audio system(s) support 2 or more audio channels.
@ kDeviceCanDo12GSDI
True if device has 12G SDI connectors.
NTV2AudioSampleRateList::const_iterator NTV2AudioSampleRateListConstIter
bool ltcOutSupport
Supports LTC output?
static basic_json parse(InputType &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)
deserialize from a compatible input
iterator end() noexcept
returns an iterator to one past the last element
UWord numInputConverters
Total number of input converters.
@ kDeviceCanDoRateConvert
True if device can do frame rate conversion.
bool ipSupport
Supports IP IO?
static bool GetVirtualDeviceWithName(const std::string &inNameString, CNTV2Card &outDevice, const bool inRescan=(!(0)))
Rescans the host, and returns an open CNTV2Card instance for the first virtual device with a matching...
bool colorCorrectionSupport
Supports color correction?
bool sdi3GSupport
Supports 3G?
@ kDeviceCanDoProgrammableCSC
True if device has at least one programmable color space converter widget.
const int id
the id of the exception
@ kDeviceCanDoAudio8Channels
True if audio system(s) support 8 or more audio channels.
std::string to_string(bool val)
bool breakoutBoxSupport
Can support a breakout box?
@ kDeviceCanDo2KVideo
True if device can handle 2Kx1556 (film) video.
static AJAStatus ReadDirectory(const std::string &directory, const std::string &filePattern, std::vector< std::string > &fileContainer)
struct NTV2DeviceInfo NTV2DeviceInfo
@ kDeviceGetNumUpConverters
The number of up-converters on the device.
std::vector< NTV2AudioPhysicalFormat > NTV2AudioPhysicalFormatList
I am an ordered list of NTV2AudioPhysicalFormat structs.
bool ltcInOnRefPort
Supports LTC on reference input?
NTV2AudioChannelsPerFrameList audioNumChannelsList
My supported number of audio channels per frame.
std::vector< AudioChannelsPerFrameEnum > NTV2AudioChannelsPerFrameList
@ kDeviceGetNumAnalogVideoOutputs
The number of analog video outputs on the device.
const std::size_t byte
byte index of the parse error
@ DEVICE_ID_SOFTWARE
Software device that doesn't emulate one of the above devices.
@ kDeviceGetNumOutputConverters
The number of output converter widgets on the device.
virtual bool Open(const UWord inDeviceIndex)
Opens a local/physical AJA device so it can be monitored/controlled.
@ kDeviceGetNumEmbeddedAudioInputChannels
The number of SDI-embedded input audio channels supported by the device.
@ kDeviceGetNumSerialPorts
The number of RS-422 serial ports on the device.
@ DEVICE_ID_NOTFOUND
Invalid or "not found".
bool stereoInSupport
Supports stereo input?
@ kDeviceCanDoQREZ
True if device can handle QRez.
static bool IsDecimalDigit(const char inChr)
UWord numAESAudioInputChannels
Total number of AES audio input channels.
std::string serialNumber
Unique device serial number (new in SDK 17.5)
@ kDeviceCanDoIsoConvert
True if device can do ISO conversion.
@ kDeviceCanDoMultiFormat
True if device can simultaneously handle different video formats on more than one SDI input or output...
NTV2DeviceID deviceID
Device ID/species (e.g., DEVICE_ID_KONA3G, DEVICE_ID_IOXT, etc.)
std::string SerialNum64ToString(const uint64_t &inSerNum)
virtual bool Close(void)
Closes me, releasing host resources that may have been allocated in a previous Open call.
static bool IsAlphaNumeric(const char inStr)
Declares the AJADebug class.
static bool IsLegalSerialNumber(const std::string &inStr)
@ kDeviceGetNumLTCOutputs
The number of analog LTC outputs on the device.
virtual ULWordSet GetSupportedItems(const NTV2EnumsID inEnumsID)
NTV2AudioBitsPerSampleList::const_iterator NTV2AudioBitsPerSampleListConstIter
static bool IsLegalDecimalNumber(const std::string &inStr, const size_t maxLen=2)
exception indicating a parse error
UWord numAudioStreams
Maximum number of independent audio streams.
@ kDeviceCanDoStereoOut
True if device supports 3D video output over dual-stream SDI.
bool dualLinkSupport
Supports dual-link?
@ kDeviceGetNumLTCInputs
The number of analog LTC inputs on the device.
#define DECN(__x__, __n__)
UWord numEmbeddedAudioOutputChannels
Total number of embedded (SDI) audio output channels.