60 { 21, 564, 1920, 2200, 1125, 1125, 563, 7, 569, 8, },
61 { 26, 0, 1280, 1280, 750, 0, 0, 7, 0, 8, },
62 { 21, 283, 720, 720, 525, 3, 265, 10, 273, 8, },
63 { 23, 336, 720, 864, 625, 625, 312, 6, 319, 8, },
64 { 42, 0, 1920, 2640, 1125, 0, 0, 7, 0, 8, },
65 { 42, 0, 2048, 2640, 1125, 0, 0, 7, 0, 8, },
66 { 42, 0, 2048, 2640, 1125, 0, 0, 7, 0, 8, },
67 { 21, 564, 2048, 2200, 1125, 1125, 563, 7, 569, 8, },
68 { 42, 0, 1920, 2640, 1125, 0, 0, 7, 0, 8, },
69 { 42, 0, 2048, 2640, 1125, 0, 0, 7, 0, 8, },
70 { 42, 0, 1920, 2640, 1125, 0, 0, 7, 0, 8, },
71 { 42, 0, 2048, 2640, 1125, 0, 0, 7, 0, 8, }
104 { 561, 26, 1124, 588, 1125, 1125, 563, 7, 569, 0, 0, 0, 0, 0, 0, 0x07800000 },
105 { 746, 745, 0, 0, 750, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x05000000 },
106 { 264, 30, 1, 293, 525, 3, 265, 10, 273, 4, 266, 0x20000, 0x40000, 0, 0, 0x02D00000 },
107 { 311, 33, 1, 346, 625, 625, 312, 6, 319, 5, 318, 0x10000, 0x10000, 0, 0, 0x02D00000 },
108 { 1122, 1125, 0, 0, 1125, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x07800000 },
109 { 1122, 1125, 0, 0, 1125, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x07800000 },
110 { 1122, 1125, 0, 0, 1125, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x07800000 },
111 { 561, 26, 1124, 588, 1125, 1125, 563, 7, 569, 0, 0, 0, 0, 0, 0, 0x07800000 },
112 { 1122, 1125, 0, 0, 1125, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x07800000 },
113 { 1122, 1125, 0, 0, 1125, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x07800000 },
114 { 1122, 1125, 0, 0, 1125, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x07800000 },
115 { 1122, 1125, 0, 0, 1125, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0x07800000 },
136 outF1Offset = outF2Offset = 0;
144 ULWord ancF1Offset(0), ancF2Offset(0);
147 outFieldBytes = ancF1Offset - ancF2Offset;
154 ULWord ancF1Offset(0), ancF2Offset(0);
157 outFieldBytes = ancF2Offset;
214 uint32_t startAddrF1(0), startAddrF2(0);
217 outStartAddrF1 = ok ? uint64_t(startAddrF1) : 0;
218 outStartAddrF2 = ok ? uint64_t(startAddrF2) : 0;
295 uint32_t regValue(0);
296 extendedMode =
false;
299 if (ok) extendedMode = (regValue == 1);
326 bool extendedMode(
false);
358 const bool inVancY,
const bool inVancC,
359 const bool inHancY,
const bool inHancC)
362 bool extendedMode(
false);
399 outIsRunning =
false;
410 outIsRunning = (value &
BIT(28)) ?
false :
true;
438 const ULWord frameNumber (inFrameNumber + 1);
440 bool quadEnabled(
false), quadQuadEnabled(
false);
450 const ULWord ANCStartMemory (frameLocation - F1Offset);
480 const ULWord frameNumber (inFrameNumber + 1);
482 bool quadEnabled(
false), quadQuadEnabled(
false);
492 const ULWord ANCStartMemory (frameLocation - F2Offset);
513 outF1StartAddr = outF2StartAddr = 0;
698 uint32_t regValue(0);
699 extendedMode =
false;
702 if (ok) extendedMode = (regValue == 1);
729 bool extendedMode(
false);
761 const bool inVancY,
const bool inVancC,
762 const bool inHancY,
const bool inHancC)
795 outIsRunning =
false;
806 outIsRunning = (value &
BIT(28)) ?
false :
true;
836 const ULWord frameNumber (inFrameNumber + 1);
838 bool quadEnabled(
false), quadQuadEnabled(
false);
846 ULWord F1Offset(0), F2Offset(0);
849 const ULWord ANCStartMemory (frameLocation - F1Offset);
850 const ULWord ANCStopMemory (frameLocation - F2Offset - 1);
882 const ULWord frameNumber (inFrameNumber + 1);
884 bool quadEnabled(
false), quadQuadEnabled(
false);
895 const ULWord ANCStartMemory (frameLocation - F2Offset);
896 const ULWord ANCStopMemory (frameLocation - 1);
903 uint64_t & outF1StartAddr, uint64_t & outF1EndAddr,
904 uint64_t & outF2StartAddr, uint64_t & outF2EndAddr)
906 outF1StartAddr = outF1EndAddr = outF2StartAddr = outF2EndAddr = 0;
914 ULWord startAddr(0), endAddr(0);
916 outF1StartAddr = uint64_t(startAddr);
917 outF1EndAddr = uint64_t(endAddr);
919 outF2StartAddr = uint64_t(startAddr);
920 outF2EndAddr = uint64_t(endAddr);
939 for (
unsigned regByte(0); regByte < 4; regByte++)
941 const NTV2DID theDID ((regValue >> (regByte*8)) & 0x000000FF);
943 outDIDs.insert(theDID);
964 for (
unsigned regByte(0); regByte < 4; regByte++)
966 const NTV2DID theDID (iter != inDIDs.end() ? *iter++ : 0);
967 regValue |= (
ULWord(theDID) << (regByte*8));
1018 outIsOverrun =
false;
1063 static const ULWord kNumDIDsPerRegister (4);
1071 static const NTV2DID sDefaultHDDIDs[] = { 0xE7,0xE6,0xE5,0xE4, 0xE3,0xE2,0xE1,0xE0,
1073 0xA7,0xA6,0xA5,0xA4, 0xA3,0xA2,0xA1,0xA0, 0x00};
1076 static const NTV2DID sDefaultSDDIDs[] = { 0xFF,0xFD,0xFB,0xF9, 0xFE,0xFC,0xFA,0xF8,
1078 0xEF,0xEE,0xED,0xEC, 0x00};
1080 const NTV2DID * pDIDArray (inHDAudio ? sDefaultHDDIDs : sDefaultSDDIDs);
1081 for (
unsigned ndx(0); pDIDArray[ndx]; ndx++)
1082 result.insert(pDIDArray[ndx]);
static bool GetAncField1Size(CNTV2Card &inDevice, ULWord &outFieldBytes)
Anc Field2 byte offset from end of frame buffer (GUMP on all boards except RTP for SMPTE2022/IP) ...
static bool SetAncExtProgressive(CNTV2Card &inDevice, const UWord inSDIInput, bool bEnable)
static NTV2DIDSet AncExtractGetDefaultDIDs(const bool inHDAudio=(!(0)))
static bool EnableAncExtVancC(CNTV2Card &inDevice, const UWord inSDIInput, bool bEnable)
static bool SetAncExtField2EndAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t addr)
virtual bool IsSupported(const NTV2BoolParamID inParamID)
virtual bool IS_OUTPUT_SPIGOT_INVALID(const UWord inOutputSpigot)
virtual bool AncInsertGetReadInfo(const UWord inSDIOutput, uint64_t &outF1StartAddr, uint64_t &outF2StartAddr)
Answers where, in device SDRAM, the given SDI connector's Anc inserter is currently reading Anc data ...
static bool GetAncExtField1StartAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t &outAddr)
virtual bool AncInsertInit(const UWord inSDIOutput, const NTV2Channel inChannel=NTV2_CHANNEL_INVALID, const NTV2Standard inStandard=NTV2_STANDARD_INVALID)
Initializes the given SDI output's Anc inserter for custom Anc packet insertion. (Call NTV2DeviceCanD...
virtual bool AncExtractGetWriteInfo(const UWord inSDIInput, uint64_t &outF1StartAddr, uint64_t &outF1EndAddr, uint64_t &outF2StartAddr, uint64_t &outF2EndAddr)
Answers with the given SDI input's current Anc extractor info. (Call NTV2DeviceCanDoCustomAnc to dete...
virtual bool AncSetFrameBufferSize(const ULWord inF1Size, const ULWord inF2Size)
Sets the capacity of the SDI ANC or HDMI AUX buffers in device frame memory. (Call NTV2DeviceCanDoCus...
I interrogate and control an AJA video/audio capture/playout device.
static bool SetAncExtField2CutoffLine(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
UByte NTV2DID
An ancillary Data IDentifier.
static bool SetAncInsFidHi(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t lineNumber)
virtual bool AncExtractGetField1Size(const UWord inSDIInput, ULWord &outF1Size)
Answers with the number of bytes of field 1 ANC extracted. (Call NTV2DeviceCanDoCustomAnc to determin...
static bool SetAncExtField2AnalogCFilter(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineFilter)
virtual bool AncExtractSetEnable(const UWord inSDIInput, const bool inIsEnabled)
Enables or disables the given SDI input's Anc extractor. (Call NTV2DeviceCanDoCustomAnc to determine ...
static bool SetAncExtField2StartLine(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
static bool SetAncInsTotalLines(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t numberOfLines)
static bool SetAncInsIPChannel(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t channel)
virtual bool IS_INPUT_SPIGOT_INVALID(const UWord inInputSpigot)
static bool SetAncExtField2StartAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t addr)
True if device has SFP connectors.
static bool SetAncExtField1CutoffLine(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
static bool GetAncField2Size(CNTV2Card &inDevice, ULWord &outFieldBytes)
static bool SetAncExtField1StartAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t addr)
uint32_t field1SwitchLine
static ULWord AncInsRegNum(const UWord inSDIOutput, const ANCInsRegisters inReg)
struct ANCInserterInitParams ANCInserterInitParams
static bool GetAncExtField2Status(CNTV2DriverInterface &inDevice, const UWord inSDIInput, ULWord &outF2Status)
virtual ULWord GetFrameBufferSize(void) const
static bool SetAncInsRtpSSRC(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t ssrc)
static bool SetAncExtFidLow(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
static bool SetAncExtTotalFrameLines(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t totalFrameLines)
virtual bool AncInsertSetField2ReadParams(const UWord inSDIOutput, const ULWord inFrameNumber, const ULWord inF2Size, const NTV2Channel inChannel=NTV2_CHANNEL_INVALID, const NTV2Framesize inFrameSize=NTV2_FRAMESIZE_INVALID)
Configures the Anc inserter for the next frame's F2 Anc data to embed/transmit. (Call NTV2DeviceCanDo...
static bool SetAncExtField1AnalogStartLine(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
static bool SetAncInsRtpPayloadID(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t payloadID)
static bool GetAncExtField1EndAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t &outAddr)
virtual bool AncExtractGetField2Size(const UWord inSDIInput, ULWord &outF2Size)
Answers with the number of bytes of field 2 ANC extracted. (Call NTV2DeviceCanDoCustomAnc to determin...
Anc Field1 byte offset from end of frame buffer (GUMP on all boards except RTP for SMPTE2022/IP) ...
static bool SetAncInsFidLow(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t lineNumber)
static bool SetAncInsField2StartAddr(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t startAddr)
static const ULWord sAncExtBaseRegNum[]
I'm the base class that undergirds the platform-specific derived classes (from which CNTV2Card is ult...
virtual bool AncExtractSetFilterDIDs(const UWord inSDIInput, const NTV2DIDSet &inDIDs)
Replaces the DIDs to be excluded (filtered) by the given SDI input's Anc extractor. (Call NTV2DeviceCanDoCustomAnc to determine if the device supports Anc extractor firmware.)
NTV2Standard
Identifies a particular video standard.
static bool SetAncExtSynchro(CNTV2Card &inDevice, const UWord inSDIInput)
static const ULWord kNumDIDRegisters(regAncExtIgnorePktsReg_Last - regAncExtIgnorePktsReg_First+1)
virtual bool AncExtractGetFilterDIDs(const UWord inSDIInput, NTV2DIDSet &outDIDs)
Answers with the DIDs currently being excluded (filtered) by the SDI input's Anc extractor. (Call NTV2DeviceCanDoCustomAnc to determine if the device supports Anc extractor firmware.)
static bool IsAncExtProgressive(CNTV2DriverInterface &inDevice, const UWord inSDIInput, bool &outIsProgressive)
static bool EnableAncInsHancC(CNTV2Card &inDevice, const UWord inSDIOutput, bool bEnable)
virtual bool GetQuadFrameEnable(bool &outValue, const NTV2Channel inChannel=NTV2_CHANNEL1)
Returns the device's current quad-frame mode, whether it's enabled or not.
static bool EnableAncExtHancC(CNTV2Card &inDevice, const UWord inSDIInput, bool bEnable)
static bool GetAncExtField2EndAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t &outAddr)
static bool SetAncInsHTotalPixels(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t numberOfLinePixels)
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...
static bool GetAncInsExtendedMode(CNTV2Card &inDevice, const UWord inSDIOutput, bool &extendedMode)
static bool GetAncExtField1Status(CNTV2DriverInterface &inDevice, const UWord inSDIInput, ULWord &outF1Status)
True if device has any SDI, HDMI or analog video outputs.
static const ANCInserterInitParams inserterInitParamsTable[NTV2_NUM_STANDARDS]
ULWord NTV2FramesizeToByteCount(const NTV2Framesize inFrameSize)
Converts the given NTV2Framesize value into an exact byte count.
virtual bool AncExtractSetField2WriteParams(const UWord inSDIInput, const ULWord inFrameNumber, const NTV2Channel inChannel=NTV2_CHANNEL_INVALID, const NTV2Framesize inFrameSize=NTV2_FRAMESIZE_INVALID)
Configures the given SDI input's Anc extractor to receive the next frame's F2 Anc data...
#define NTV2_IS_VALID_8MB_FRAMESIZE(__x__)
static bool SetAncInsProgressive(CNTV2Card &inDevice, const UWord inSDIOutput, bool isProgressive)
static bool SetAncInsHActivePixels(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t numberOfActiveLinePixels)
static bool EnableAncExtVancY(CNTV2Card &inDevice, const UWord inSDIInput, bool bEnable)
#define NTV2_IS_VALID_STANDARD(__s__)
virtual bool AncExtractSetWriteParams(const UWord inSDIInput, const ULWord inFrameNumber, const NTV2Channel inChannel=NTV2_CHANNEL_INVALID, const NTV2Framesize inFrameSize=NTV2_FRAMESIZE_INVALID)
Configures the given SDI input's Anc extractor to receive the next frame's F1 Anc data...
static bool EnableAncExtHancY(CNTV2Card &inDevice, const UWord inSDIInput, bool bEnable)
static bool SetAncExtField1AnalogYFilter(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineFilter)
NTV2DIDSet::const_iterator NTV2DIDSetConstIter
Handy const iterator to iterate over an NTV2DIDSet.
virtual bool GetQuadQuadFrameEnable(bool &outValue, const NTV2Channel inChannel=NTV2_CHANNEL1)
Returns the device's current "quad-quad" frame mode, whether it's enabled or not. ...
True if device has any SDI, HDMI or analog video inputs.
virtual bool AncInsertIsEnabled(const UWord inSDIOutput, bool &outIsEnabled)
Answers with the run state of the given Anc inserter – i.e. if its "memory reader" is enabled or not...
virtual bool AncInsertSetComponents(const UWord inSDIOutput, const bool inVancY, const bool inVancC, const bool inHancY, const bool inHancC)
Enables or disables individual Anc insertion components for the given SDI output. (Call NTV2DeviceCan...
uint32_t field2ActiveLine
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...
NTV2Framesize
Kona2/Xena2 specific enums.
#define NTV2_IS_VALID_CHANNEL(__x__)
static const ULWord sAncInsBaseRegNum[]
static bool SetAncExtField1StartLine(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
virtual bool AncInsertSetReadParams(const UWord inSDIOutput, const ULWord inFrameNumber, const ULWord inF1Size, const NTV2Channel inChannel=NTV2_CHANNEL_INVALID, const NTV2Framesize inFrameSize=NTV2_FRAMESIZE_INVALID)
Configures the Anc inserter for the next frame's F1 Anc data to embed/transmit. (Call NTV2DeviceCanDo...
virtual bool AncInsertSetIPParams(const UWord inSDIOutput, const UWord ancChannel, const ULWord payloadID, const ULWord ssrc)
Configures the Anc inserter IP specific params.
static bool GetAncExtField2StartAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t &outAddr)
static bool SetAncInsVancPixelDelay(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t numberOfPixels)
static bool SetAncInsField1Bytes(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t numberOfBytes)
static bool SetAncInsField1ActiveLine(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t activeLineNumber)
#define NTV2_IS_SD_STANDARD(__s__)
static bool IsAncExtOverrun(CNTV2DriverInterface &inDevice, const UWord inSDIInput, bool &outIsOverrun)
Declares numerous NTV2 utility functions.
static ULWord AncExtRegNum(const UWord inSDIInput, const ANCExtRegisters inReg)
True if device has SDI ANC inserter/extractor firmware.
static bool SetAncExtField1EndAddr(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t addr)
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...
static bool SetAncInsField1StartAddr(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t startAddr)
virtual bool AncExtractGetBufferOverrun(const UWord inSDIInput, bool &outIsOverrun, const UWord inField=0)
Answers whether or not the given SDI input's Anc extractor reached its buffer limits. (Call NTV2DeviceCanDoCustomAnc to determine if the device supports Anc extractor firmware.)
static bool SetAncExtField2AnalogStartLine(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
static bool SetAncInsField2Bytes(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t numberOfBytes)
static bool GetAncInsStartAddrs(CNTV2Card &inDevice, const UWord inSDIOutput, uint64_t &outStartAddrF1, uint64_t &outStartAddrF2)
uint32_t field2SwitchLine
static bool EnableAncInsVancC(CNTV2Card &inDevice, const UWord inSDIOutput, bool bEnable)
static bool SetAncExtField1AnalogCFilter(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineFilter)
virtual bool IS_CHANNEL_INVALID(const NTV2Channel inChannel) const
Declares the CNTV2Card class.
uint32_t field1ActiveLine
static bool EnableAncInsVancY(CNTV2Card &inDevice, const UWord inSDIOutput, bool bEnable)
virtual bool AncExtractIsEnabled(const UWord inSDIInput, bool &outIsEnabled)
Answers whether the given SDI input's Anc extractor is enabled/active or not. (Call NTV2DeviceCanDoCu...
static bool SetAncExtField2AnalogYFilter(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineFilter)
static bool SetAncInsField2ActiveLine(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t activeLineNumber)
static bool GetAncExtExtendedMode(CNTV2Card &inDevice, const UWord inSDIInput, bool &extendedMode)
virtual bool AncExtractIsProgressive(const UWord inSDIInput, bool &outIsProgressive)
Answers whether or not the given SDI input's Anc extractor was configured with a progressive video fo...
static const ANCExtractorInitParams extractorInitParamsTable[NTV2_NUM_STANDARDS]
virtual bool AncExtractSetComponents(const UWord inSDIInput, const bool inVancY, const bool inVancC, const bool inHancY, const bool inHancC)
Enables or disables the Anc extraction components for the given SDI input. (Call NTV2DeviceCanDoCusto...
static bool GetAncOffsets(CNTV2Card &inDevice, ULWord &outF1Offset, ULWord &outF2Offset)
virtual bool AncInsertSetEnable(const UWord inSDIOutput, const bool inIsEnabled)
Enables or disables the given SDI output's Anc inserter frame buffer reads. (Call NTV2DeviceCanDoCust...
static bool SetAncExtFidHi(CNTV2Card &inDevice, const UWord inSDIInput, uint32_t lineNumber)
static bool EnableAncInsHancY(CNTV2Card &inDevice, const UWord inSDIOutput, bool bEnable)
static bool SetAncExtSDDemux(CNTV2Card &inDevice, const UWord inSDIInput, bool bEnable)
struct ANCExtractorInitParams ANCExtractorInitParams
virtual bool GetStandard(NTV2Standard &outValue, NTV2Channel inChannel=NTV2_CHANNEL1)
#define NTV2_IS_PROGRESSIVE_STANDARD(__s__)
static bool SetAncInsHancPixelDelay(CNTV2Card &inDevice, const UWord inSDIOutput, uint32_t numberOfPixels)
virtual bool AncExtractInit(const UWord inSDIInput, const NTV2Channel inChannel=NTV2_CHANNEL_INVALID, const NTV2Standard inStandard=NTV2_STANDARD_INVALID)
Initializes the given SDI input's Anc extractor for custom Anc packet detection and de-embedding...
static UWord AncExtractGetMaxNumFilterDIDs(void)
static bool SetAncInsSDPacketSplit(CNTV2Card &inDevice, const UWord inSDIOutput, bool inEnable)
Declares device capability functions.
std::set< UByte > NTV2DIDSet
A set of distinct NTV2DID values.