AJA NTV2 SDK
17.1.3.1410
NTV2 SDK 17.1.3.1410
|
I am the principal class that stores a single SMPTE-291 SDI ancillary data packet OR the digitized contents of one "analog" raster line (e.g. line 21 captions or VITC). Since I'm payload-agnostic, I serve as the generic base class for more specific objects that know how to decode/parse specific types of ancillary data. More...
#include <ancillarydata.h>
Public Types | |
typedef UWordSequence | U16Packet |
An ordered sequence of 10-bit packet words stored in uint16_t values. More... | |
typedef std::vector< U16Packet > | U16Packets |
An ordered sequence of zero or more U16Packet values. More... | |
Public Member Functions | |
Construction, Destruction, Copying | |
AJAAncillaryData () | |
My default constructor. More... | |
AJAAncillaryData (const AJAAncillaryData &inClone) | |
My copy constructor (from reference). More... | |
AJAAncillaryData (const AJAAncillaryData *pInClone) | |
My copy constructor (from pointer). More... | |
virtual | ~AJAAncillaryData () |
My destructor. More... | |
virtual void | Clear (void) |
Frees my allocated memory, if any, and resets my members to their default values. More... | |
virtual AJAAncillaryData * | Clone (void) const |
Inquiry | |
virtual uint16_t | GetStreamInfo (void) const |
virtual bool | HasStreamInfo (void) const |
virtual bool | isHDMIAuxInfoFrame (void) const |
Returns whether or not this is an HDMI Aux Info Frame Packet. More... | |
virtual uint8_t | Calculate8BitChecksum (void) const |
Generates an 8-bit checksum from the DID + SID + DC + payload data. More... | |
virtual uint16_t | Calculate9BitChecksum (void) const |
Generates the official SMPTE 291 9-bit checksum from the DID + SID + DC + payload data. More... | |
virtual bool | ChecksumOK (void) const |
Compares the received 8-bit checksum with a newly calculated 8-bit checksum. Returns 'true' if they match. More... | |
AJAAncillaryData & | operator= (const AJAAncillaryData &inRHS) |
virtual bool | operator== (const AJAAncillaryData &inRHS) const |
virtual bool | operator!= (const AJAAncillaryData &inRHS) const |
virtual AJAStatus | Compare (const AJAAncillaryData &inRHS, const bool inIgnoreLocation=true, const bool inIgnoreChecksum=true) const |
Compares me with another packet. More... | |
Modification | |
virtual AJAStatus | SetDID (const uint8_t inDataID) |
Sets my Data ID (DID). More... | |
virtual AJAStatus | SetSID (const uint8_t inSID) |
Sets my Secondary Data ID (SID) - (aka the Data Block Number (DBN) for "Type 1" SMPTE-291 packets). More... | |
virtual AJAStatus | SetDIDSID (const AJAAncDIDSIDPair &inDIDSID) |
Sets both my Data ID (DID) and Secondary Data ID (SID). More... | |
virtual AJAStatus | SetChecksum (const uint8_t inChecksum8, const bool inValidate=false) |
Sets my 8-bit checksum. Note that it is not usually necessary to generate an 8-bit checksum, since the ANC Insertion hardware ignores this field and (for SMPTE-291 Anc packets) generates and inserts its own "proper" 9-bit SMPTE-291 checksum. More... | |
virtual AJAStatus | SetDataLocation (const AJAAncDataLoc &inLoc) |
Sets my ancillary data "location" within the video stream. More... | |
virtual AJAStatus | SetLocationVideoLink (const AJAAncDataLink inLink) |
Sets my ancillary data "location" within the video stream. More... | |
virtual AJAStatus | SetLocationDataStream (const AJAAncDataStream inStream) |
Sets my ancillary data "location" data stream value (DS1,DS2...). More... | |
virtual AJAStatus | SetLocationDataChannel (const AJAAncDataChannel inChannel) |
Sets my ancillary data "location" data channel value (Y or C). More... | |
virtual AJAStatus | SetLocationLineNumber (const uint16_t inLineNum) |
Sets my ancillary data "location" frame line number. More... | |
virtual AJAStatus | SetLocationHorizOffset (const uint16_t inOffset) |
Sets my ancillary data "location" horizontal offset. More... | |
virtual AJAStatus | SetDataCoding (const AJAAncDataCoding inCodingType) |
Sets my ancillary data coding type (e.g. digital or analog/raw waveform). More... | |
virtual AJAAncillaryData & | SetFrameID (const uint32_t inFrameID) |
Sets my originating frame identifier. More... | |
virtual AJAAncillaryData & | SetBufferFormat (const AJAAncBufferFormat inFmt) |
Sets my originating buffer format. More... | |
Payload Data Access | |
virtual uint8_t | GetPayloadByteAtIndex (const uint32_t inIndex0) const |
virtual const uint8_t * | GetPayloadData (void) const |
virtual AJAStatus | GetPayloadData (uint8_t *pBuffer, const uint32_t inByteCapacity) const |
Copies my payload data into an external buffer. More... | |
virtual AJAStatus | GetPayloadData (UWordSequence &outUDWs, const bool inAddParity=true) const |
Appends my payload data onto the given UDW vector as 10-bit User Data Words (UDWs), adding parity as needed. More... | |
Payload Data Modification | |
virtual AJAStatus | SetPayloadByteAtIndex (const uint8_t inDataByte, const uint32_t inIndex0) |
virtual AJAStatus | SetPayloadData (const uint8_t *pInData, const uint32_t inByteCount) |
Copy data from external memory into my local payload memory. More... | |
virtual AJAStatus | AppendPayloadData (const uint8_t *pInBuffer, const uint32_t inByteCount) |
Appends data from an external buffer onto the end of my existing payload. More... | |
virtual AJAStatus | AppendPayload (const AJAAncillaryData &inAncData) |
Appends payload data from another AJAAncillaryData object to my existing payload. More... | |
virtual AJAStatus | AppendPayload (const AJAAncillaryData *pInAncData) |
virtual AJAStatus | SetFromSMPTE334 (const uint16_t *pInData, const uint32_t inNumWords, const AJAAncDataLoc &inLocInfo) |
Copies payload data from an external 16-bit source into local payload memory. More... | |
virtual AJAStatus | ParsePayloadData (void) |
Parses (interprets) the "local" ancillary data from my payload data. More... | |
virtual bool | GotValidReceiveData (void) const |
virtual AJAStatus | GeneratePayloadData (void) |
Generates the payload data from the "local" ancillary data. More... | |
Receive From AJA Hardware | |
virtual AJAStatus | InitWithReceivedData (const uint8_t *pInData, const size_t inMaxBytes, const AJAAncDataLoc &inLocationInfo, uint32_t &outPacketByteCount) |
Initializes me from "raw" ancillary data received from hardware (ingest) – see SDI Anc Buffer Data Format. More... | |
virtual AJAStatus | InitAuxWithReceivedData (const uint8_t *pInData, const size_t inMaxBytes, uint32_t &outPacketByteCount) |
Initializes me from "raw" ancillary data received from hardware (ingest) – see SDI Anc Buffer Data Format. More... | |
virtual AJAStatus | InitWithReceivedData (const std::vector< uint8_t > &inData, const AJAAncDataLoc &inLocationInfo) |
Initializes me from "raw" ancillary data received from hardware (ingest) – see SDI Anc Buffer Data Format. More... | |
virtual AJAStatus | InitWithReceivedData (const ULWordSequence &inData, uint16_t &inOutStartIndex, const bool inIgnoreChecksum=false) |
Initializes me from the given 32-bit IP packet words received from hardware (ingest). More... | |
Transmit To AJA Hardware | |
virtual AJAStatus | GetRawPacketSize (uint32_t &outPacketSize) const |
Returns the number of "raw" ancillary data bytes that will be generated by AJAAncillaryData::GenerateTransmitData (for playback mode). More... | |
virtual AJAStatus | GenerateTransmitData (uint8_t *pBuffer, const size_t inMaxBytes, uint32_t &outPacketSize) |
Generates "raw" ancillary data from my internal ancillary data (playback) – see SDI Anc Buffer Data Format. More... | |
virtual AJAStatus | GenerateTransmitData (UWordSequence &outData) |
Generates "raw" 10-bit ancillary packet component data from my internal ancillary data (playback). More... | |
virtual AJAStatus | GenerateTransmitData (ULWordSequence &outData) |
Generates the 32-bit IP packet words necessary for constructing an outgoing IP/RTP stream. More... | |
Static Public Member Functions | |
static uint16_t | AddEvenParity (const uint8_t inDataByte) |
static bool | GetAncPacketsFromVANCLine (const UWordSequence &inYUV16Line, const AncChannelSearchSelect inChanSelect, U16Packets &outRawPackets, U16Packet &outWordOffsets) |
Extracts whatever VANC packets are found inside the given 16-bit YUV line buffer. More... | |
static bool | Unpack8BitYCbCrToU16sVANCLine (const void *pInYUV8Line, U16Packet &outU16YUVLine, const uint32_t inNumPixels) |
Converts a single line of NTV2_FBF_8BIT_YCBCR data from the given source buffer into an ordered sequence of uint16_t values that contain the resulting 10-bit even-parity data. More... | |
static bool | Unpack8BitYCbCrToU16sVANCLineSD (const void *pInYUV8Line, UWordSequence &outU16YUVLine, const uint32_t inNumPixels) |
SD version of Unpack8BitYCbCrToU16sVANCLine. More... | |
static void | GetInstanceCounts (uint32_t &outConstructed, uint32_t &outDestructed) |
static uint32_t | GetNumActiveInstances (void) |
static uint32_t | GetNumConstructed (void) |
static uint32_t | GetNumDestructed (void) |
static void | ResetInstanceCounts (void) |
Protected Types | |
typedef std::vector< uint8_t > | ByteVector |
typedef ByteVector::size_type | ByteVectorIndex |
typedef ByteVector::const_iterator | ByteVectorConstIter |
Protected Member Functions | |
void | Init (void) |
AJAStatus | AllocDataMemory (const uint32_t inNumBytes) |
AJAStatus | FreeDataMemory (void) |
virtual uint8_t | GetGUMPHeaderByte2 (void) const |
virtual uint8_t | GetGUMPHeaderByte3 (void) const |
Static Protected Member Functions | |
static uint8_t | GetGUMPHeaderByte1 (void) |
Protected Attributes | |
uint8_t | m_DID |
Official SMPTE ancillary packet ID (w/o parity) More... | |
uint8_t | m_SID |
Official SMPTE secondary ID (or DBN - w/o parity) More... | |
uint8_t | m_checksum |
My 8-bit checksum: DID + SID + DC + payload (w/o parity) [note: NOT the same as the 9-bit checksum in a SMPTE-291 packet!]. More... | |
AJAAncDataLoc | m_location |
Location of the ancillary data in the video stream (Y or C, HANC or VANC, etc.) More... | |
AJAAncDataCoding | m_coding |
Analog or digital data. More... | |
ByteVector | m_payload |
My payload data (DC = size) More... | |
bool | m_rcvDataValid |
This is set true (or not) by ParsePayloadData() More... | |
AJAAncDataType | m_ancType |
One of a known set of ancillary data types (or "Custom" if not identified) More... | |
AJAAncBufferFormat | m_bufferFmt |
My originating buffer format, if known. More... | |
uint32_t | m_frameID |
ID of my originating frame, if known. More... | |
uint64_t | m_userData |
User data (for client use) More... | |
uint8_t | m_auxType |
HDMI Aux Header Byte 0 (Packet Type) More... | |
uint8_t | m_auxHB1 |
HDMI Aux Header Byte 1 (Header Data) More... | |
uint8_t | m_auxHB2 |
HDMI Aux Header Byte 2 (Header Data) More... | |
Printing & Debugging | |
virtual std::ostream & | Print (std::ostream &inOutStream, const bool inDetailed=false) const |
Streams a human-readable representation of me to the given output stream. More... | |
virtual std::ostream & | DumpPayload (std::ostream &inOutStream) const |
Dumps a human-readable representation of my payload bytes into the given output stream. More... | |
virtual std::string | CompareWithInfo (const AJAAncillaryData &inRHS, const bool inIgnoreLocation=true, const bool inIgnoreChecksum=true) const |
Compares me with another packet and returns a string that describes what's different. More... | |
virtual std::string | IDAsString (void) const |
virtual std::string | AsString (const uint16_t inDumpMaxBytes=0) const |
static std::string | DIDSIDToString (const uint8_t inDID, const uint8_t inSDID) |
static std::string | AuxPacketTypeToString (const uint8_t inAuxPktType) |
static bool | AuxPacketTypeIsValid (const uint8_t inAuxPktType) |
I am the principal class that stores a single SMPTE-291 SDI ancillary data packet OR the digitized contents of one "analog" raster line (e.g. line 21 captions or VITC). Since I'm payload-agnostic, I serve as the generic base class for more specific objects that know how to decode/parse specific types of ancillary data.
My AJAAncillaryData::m_payload member stores the User Data Words (UDWs) as an ordered collection of 8-bit data bytes. Because it's an STL vector, it knows how many UDW elements it contains. Thus, it stores the SMPTE "DC" (data count) value.
I also have several member variables for metadata – i.e., information about the packet – including my data ID (DID), secondary data ID (SDID), checksum (CS), location in the video stream, etc.
Transmit – Packet Creation
Receive – Packet Detection
Definition at line 552 of file ancillarydata.h.
|
protected |
Definition at line 1137 of file ancillarydata.h.
|
protected |
Definition at line 1139 of file ancillarydata.h.
|
protected |
Definition at line 1138 of file ancillarydata.h.
An ordered sequence of 10-bit packet words stored in uint16_t values.
Definition at line 1061 of file ancillarydata.h.
typedef std::vector<U16Packet> AJAAncillaryData::U16Packets |
An ordered sequence of zero or more U16Packet values.
Definition at line 1062 of file ancillarydata.h.
AJAAncillaryData::AJAAncillaryData | ( | ) |
My default constructor.
Definition at line 92 of file ancillarydata.cpp.
AJAAncillaryData::AJAAncillaryData | ( | const AJAAncillaryData & | inClone | ) |
My copy constructor (from reference).
[in] | inClone | The AJAAncillaryData object to be cloned. |
Definition at line 101 of file ancillarydata.cpp.
AJAAncillaryData::AJAAncillaryData | ( | const AJAAncillaryData * | pInClone | ) |
My copy constructor (from pointer).
[in] | pInClone | A valid pointer to the AJAAncillaryData object to be cloned. |
Definition at line 111 of file ancillarydata.cpp.
|
virtual |
My destructor.
Definition at line 122 of file ancillarydata.cpp.
|
static |
[in] | inDataByte | The given data byte to have parity added to it. |
Definition at line 1607 of file ancillarydata.cpp.
|
protected |
Definition at line 171 of file ancillarydata.cpp.
|
virtual |
Appends payload data from another AJAAncillaryData object to my existing payload.
[in] | inAncData | The AJAAncillaryData object whose payload data is to be appended to my own. |
Definition at line 426 of file ancillarydata.cpp.
|
inlinevirtual |
Definition at line 859 of file ancillarydata.h.
|
virtual |
Appends data from an external buffer onto the end of my existing payload.
[in] | pInBuffer | Specifies a valid, non-NULL starting address of the external buffer from which the payload data will be copied. |
[in] | inByteCount | Specifies the number of bytes to append. |
Definition at line 404 of file ancillarydata.cpp.
|
virtual |
[in] | inDumpMaxBytes | Number of payload bytes to dump into the returned string. Defaults to zero (none). |
Definition at line 1440 of file ancillarydata.cpp.
|
static |
[in] | inAuxPktType | Specifies the packet type of interest. |
Definition at line 2163 of file ancillarydata.cpp.
|
static |
[in] | inAuxPktType | Specifies the packet type of interest. |
Definition at line 2139 of file ancillarydata.cpp.
|
virtual |
Generates an 8-bit checksum from the DID + SID + DC + payload data.
Definition at line 233 of file ancillarydata.cpp.
|
virtual |
Generates the official SMPTE 291 9-bit checksum from the DID + SID + DC + payload data.
Definition at line 249 of file ancillarydata.cpp.
|
inlinevirtual |
Compares the received 8-bit checksum with a newly calculated 8-bit checksum. Returns 'true' if they match.
Definition at line 656 of file ancillarydata.h.
|
virtual |
Frees my allocated memory, if any, and resets my members to their default values.
Reimplemented in AJAAncillaryData_Timecode_ATC, AJAAncillaryData_Cea608_Line21, AJAAncillaryData_Cea608_Vanc, AJAAncillaryData_Timecode_VITC, AJAAncillaryData_FrameStatusInfo524D, AJAAncillaryData_Cea708, AJAAncillaryData_FrameStatusInfo5251, AJAAncillaryData_HDR_HDR10, AJAAncillaryData_HDR_HLG, AJAAncillaryData_HDR_SDR, AJAAncillaryData_Timecode, AJAAncillaryData_Cea608, and AJAAncillaryData_HDMI_Aux.
Definition at line 159 of file ancillarydata.cpp.
|
virtual |
Definition at line 165 of file ancillarydata.cpp.
|
virtual |
Compares me with another packet.
[in] | inRHS | The packet I am to be compared with. |
[in] | inIgnoreLocation | If true, don't compare each packet's AJAAncDataLoc info. Defaults to true. |
[in] | inIgnoreChecksum | If true, don't compare each packet's checksums. Defaults to true. |
Definition at line 1510 of file ancillarydata.cpp.
|
virtual |
Compares me with another packet and returns a string that describes what's different.
[in] | inRHS | The packet I am to be compared with. |
[in] | inIgnoreLocation | If true, don't compare each packet's AJAAncDataLoc info. Defaults to true. |
[in] | inIgnoreChecksum | If true, don't compare each packet's checksums. Defaults to true. |
Definition at line 1537 of file ancillarydata.cpp.
|
static |
[in] | inDID | Specifies the Data ID value. |
[in] | inSDID | Specifies the Secondary Data ID value. |
Definition at line 2028 of file ancillarydata.cpp.
|
virtual |
Dumps a human-readable representation of my payload bytes into the given output stream.
inOutStream | Specifies the output stream. |
Definition at line 1481 of file ancillarydata.cpp.
|
protected |
Definition at line 193 of file ancillarydata.cpp.
|
inlinevirtual |
Generates the payload data from the "local" ancillary data.
Reimplemented in AJAAncillaryData_Timecode_ATC, AJAAncillaryData_Cea608_Vanc, AJAAncillaryData_Cea608_Line21, AJAAncillaryData_Timecode_VITC, AJAAncillaryData_Cea708, and AJAAncillaryData_Timecode.
Definition at line 894 of file ancillarydata.h.
|
virtual |
Generates "raw" ancillary data from my internal ancillary data (playback) – see SDI Anc Buffer Data Format.
pBuffer | Pointer to "raw" packet data buffer to be filled. | |
[in] | inMaxBytes | Maximum number of bytes left in the given data buffer. |
[out] | outPacketSize | Receives the size, in bytes, of the generated packet. |
Definition at line 767 of file ancillarydata.cpp.
|
virtual |
Generates the 32-bit IP packet words necessary for constructing an outgoing IP/RTP stream.
outData | Specifies the vector into which data will be appended. The data will be in network byte order (big-endian). |
Definition at line 933 of file ancillarydata.cpp.
|
virtual |
Generates "raw" 10-bit ancillary packet component data from my internal ancillary data (playback).
outData | Specifies the vector to which data will be appended. |
Definition at line 883 of file ancillarydata.cpp.
|
static |
Extracts whatever VANC packets are found inside the given 16-bit YUV line buffer.
[in] | inYUV16Line | Specifies the uint16_t sequence containing the 10-bit YUV VANC line data components. (Use UnpackLine_10BitYUVtoUWordSequence to convert a VANC line from an NTV2_FBF_10BIT_YCBCR frame buffer into this format. Use UnpackLine_8BitYUVtoU16s to convert a VANC line from an NTV2_FBF_8BIT_YCBCR frame buffer into this format.) |
[in] | inChanSelect | Specifies the ancillary data channel to search. Use AncChannelSearch_Y for luma, AncChannelSearch_C for chroma, or AncChannelSearch_Both for both (SD only). |
[out] | outRawPackets | Receives the packet vector, which will contain one vector of uint16_t values per extracted packet. Each packet in the returned list will start with the 0x000/0x3FF/0x3FF/DID/SDID/DC sequence, followed by each 10-bit packet data word, and ending with the checksum word. |
[out] | outWordOffsets | Receives the horizontal word offsets into the line, one for each packet found. This should have the same number of elements as "outRawPackets". These offsets can also be used to discern which channel each packet originated in (Y or C). |
Definition at line 1710 of file ancillarydata.cpp.
|
inlinestaticprotected |
Definition at line 1146 of file ancillarydata.h.
|
protectedvirtual |
Definition at line 863 of file ancillarydata.cpp.
|
inlineprotectedvirtual |
Definition at line 1148 of file ancillarydata.h.
|
static |
Definition at line 1974 of file ancillarydata.cpp.
|
static |
Definition at line 1991 of file ancillarydata.cpp.
|
static |
Definition at line 2000 of file ancillarydata.cpp.
|
static |
Definition at line 2009 of file ancillarydata.cpp.
|
virtual |
[in] | inIndex0 | Specifies the zero-based index value. This should be less than GetDC's result. |
Definition at line 482 of file ancillarydata.cpp.
|
virtual |
Copies my payload data into an external buffer.
[in] | pBuffer | Specifies a valid, non-null starting address to where the payload data is to be copied. |
[in] | inByteCapacity | Specifies the maximum number of bytes that can be safely copied into the external buffer. |
Definition at line 447 of file ancillarydata.cpp.
|
virtual |
Appends my payload data onto the given UDW vector as 10-bit User Data Words (UDWs), adding parity as needed.
[out] | outUDWs | The 10-bit UDW vector to be appended to. |
[in] | inAddParity | If true, each UDW will have even parity added. |
Definition at line 460 of file ancillarydata.cpp.
|
inlinevirtual |
Definition at line 801 of file ancillarydata.h.
|
virtual |
Returns the number of "raw" ancillary data bytes that will be generated by AJAAncillaryData::GenerateTransmitData (for playback mode).
[out] | outPacketSize | Receives the size (in bytes) of the packet I will generate. |
Definition at line 726 of file ancillarydata.cpp.
|
virtual |
Definition at line 223 of file ancillarydata.cpp.
|
inlinevirtual |
This result will only be trustworthy if I'm an AJAAncillaryData subclass (e.g. AJAAncillaryData_Cea708), and my ParsePayloadData method was previously called, to determine whether or not my packet data is legit or not. Typically, AJAAncillaryDataFactory::GuessAncillaryDataType is called to ascertain a packet's AJAAncDataType, then AJAAncillaryDataFactory::Create is used to instantiate the specific AJAAncillaryData subclass instance. This is done automatically by AJAAncillaryList::AddReceivedAncillaryData.
Definition at line 887 of file ancillarydata.h.
|
inlinevirtual |
Definition at line 616 of file ancillarydata.h.
|
virtual |
Definition at line 1428 of file ancillarydata.cpp.
|
protected |
Definition at line 131 of file ancillarydata.cpp.
|
virtual |
Initializes me from "raw" ancillary data received from hardware (ingest) – see SDI Anc Buffer Data Format.
[in] | pInData | Specifies the starting address of the "raw" packet data that was received from the AJA device. |
[in] | inMaxBytes | Specifies the maximum number of bytes left in the source buffer. |
[in] | inLocationInfo | Specifies the default location info. |
[out] | outPacketByteCount | Receives the size (in bytes) of the parsed packet. |
Definition at line 624 of file ancillarydata.cpp.
|
virtual |
Initializes me from "raw" ancillary data received from hardware (ingest) – see SDI Anc Buffer Data Format.
[in] | inData | Specifies the "raw" packet data. |
[in] | inLocationInfo | Specifies the default location info. |
Definition at line 713 of file ancillarydata.cpp.
|
virtual |
Initializes me from "raw" ancillary data received from hardware (ingest) – see SDI Anc Buffer Data Format.
[in] | pInData | Specifies the starting address of the "raw" packet data that was received from the AJA device. |
[in] | inMaxBytes | Specifies the maximum number of bytes left in the source buffer. |
[in] | inLocationInfo | Specifies the default location info. |
[out] | outPacketByteCount | Receives the size (in bytes) of the parsed packet. |
Definition at line 512 of file ancillarydata.cpp.
|
virtual |
Initializes me from the given 32-bit IP packet words received from hardware (ingest).
[in] | inData | Specifies the "raw" packet data (in network byte order). |
inOutStartIndex | On entry, specifies the zero-based starting index number of the first 32-bit word associated with this Ancillary data packet. On exit, if successful, receives the zero-based starting index number of the first 32-bit word associated with the NEXT packet that may be in the vector. | |
[in] | inIgnoreChecksum | If true, ignores checksum failures. Defaults to false (don't ignore). |
Definition at line 1048 of file ancillarydata.cpp.
|
inlinevirtual |
Returns whether or not this is an HDMI Aux Info Frame Packet.
Reimplemented in AJAAncillaryData_HDMI_Aux.
Definition at line 634 of file ancillarydata.h.
|
inlinevirtual |
[in] | inRHS | The packet I am to be compared with. |
Definition at line 670 of file ancillarydata.h.
AJAAncillaryData & AJAAncillaryData::operator= | ( | const AJAAncillaryData & | inRHS | ) |
Definition at line 1576 of file ancillarydata.cpp.
|
virtual |
[in] | inRHS | The packet I am to be compared with. |
Definition at line 1600 of file ancillarydata.cpp.
|
virtual |
Parses (interprets) the "local" ancillary data from my payload data.
Reimplemented in AJAAncillaryData_Timecode_ATC, AJAAncillaryData_Cea608_Vanc, AJAAncillaryData_Cea608_Line21, AJAAncillaryData_Timecode_VITC, AJAAncillaryData_FrameStatusInfo524D, AJAAncillaryData_FrameStatusInfo5251, AJAAncillaryData_Cea708, AJAAncillaryData_HDR_HDR10, AJAAncillaryData_HDR_HLG, AJAAncillaryData_HDR_SDR, AJAAncillaryData_Timecode, and AJAAncillaryData_HDMI_Aux.
Definition at line 501 of file ancillarydata.cpp.
|
virtual |
Streams a human-readable representation of me to the given output stream.
inOutStream | Specifies the output stream. | |
[in] | inDetailed | Specify 'true' for a detailed representation; otherwise use 'false' for a brief one. |
Reimplemented in AJAAncillaryData_Timecode, AJAAncillaryData_Timecode_ATC, AJAAncillaryData_Cea608, AJAAncillaryData_Cea608_Vanc, AJAAncillaryData_Timecode_VITC, AJAAncillaryData_Cea708, AJAAncillaryData_FrameStatusInfo524D, AJAAncillaryData_FrameStatusInfo5251, AJAAncillaryData_HDR_HDR10, AJAAncillaryData_HDR_HLG, AJAAncillaryData_HDR_SDR, and AJAAncillaryData_HDMI_Aux.
Definition at line 1409 of file ancillarydata.cpp.
|
static |
Definition at line 1984 of file ancillarydata.cpp.
|
inlinevirtual |
Sets my originating buffer format.
[in] | inFmt | Specifies my new buffer format. |
Definition at line 781 of file ancillarydata.h.
|
virtual |
Sets my 8-bit checksum. Note that it is not usually necessary to generate an 8-bit checksum, since the ANC Insertion hardware ignores this field and (for SMPTE-291 Anc packets) generates and inserts its own "proper" 9-bit SMPTE-291 checksum.
[in] | inChecksum8 | Specifies the new 8-bit checksum. |
[in] | inValidate | If 'true', fails the function if the given checksum doesn't match the result of the AJAAncillaryData::Calculate8BitChecksum function. If 'false', does not validate the given checksum. Defaults to 'false'. |
Definition at line 213 of file ancillarydata.cpp.
|
virtual |
Sets my ancillary data coding type (e.g. digital or analog/raw waveform).
[in] | inCodingType | AJAAncDataCoding |
Definition at line 340 of file ancillarydata.cpp.
|
virtual |
Sets my ancillary data "location" within the video stream.
[in] | inLoc | Specifies the new AJAAncDataLoc value. |
Definition at line 268 of file ancillarydata.cpp.
|
virtual |
Sets my Data ID (DID).
[in] | inDataID | Specifies my new Data ID (for digital ancillary data, usually the "official" SMPTE packet ID). |
Definition at line 200 of file ancillarydata.cpp.
|
inlinevirtual |
Sets both my Data ID (DID) and Secondary Data ID (SID).
[in] | inDIDSID | The AJAAncDIDSIDPair that specifies both a DID and SID value. |
Definition at line 707 of file ancillarydata.h.
|
inlinevirtual |
Sets my originating frame identifier.
[in] | inFrameID | Specifies my new frame identifier. |
Definition at line 774 of file ancillarydata.h.
|
virtual |
Copies payload data from an external 16-bit source into local payload memory.
[in] | pInData | A valid, non-NULL pointer to the external payload data to be copied (source). The upper 8 bits of each 16-bit word will be skipped and ignored. |
[in] | inNumWords | Specifies the number of 16-bit words of payload data to copy. |
[in] | inLocInfo | Specifies the anc data location information. |
Definition at line 370 of file ancillarydata.cpp.
|
virtual |
Sets my ancillary data "location" data channel value (Y or C).
[in] | inChannel | Specifies my new data channel (Y or C) value. |
Definition at line 309 of file ancillarydata.cpp.
|
virtual |
Sets my ancillary data "location" data stream value (DS1,DS2...).
[in] | inStream | Specifies my new data stream (DS1,DS2...) value. |
Definition at line 297 of file ancillarydata.cpp.
|
virtual |
Sets my ancillary data "location" horizontal offset.
[in] | inOffset | Specifies the new horizontal offset value. |
Definition at line 331 of file ancillarydata.cpp.
|
virtual |
Sets my ancillary data "location" frame line number.
[in] | inLineNum | Specifies the new frame line number value (SMPTE line numbering). |
Definition at line 321 of file ancillarydata.cpp.
|
virtual |
Sets my ancillary data "location" within the video stream.
[in] | inLink | Specifies the new video link value (A or B). |
Definition at line 285 of file ancillarydata.cpp.
|
virtual |
[in] | inDataByte | Specifies the data byte to be stored in my payload buffer. |
[in] | inIndex0 | Specifies the zero-based index value. This should be less than GetDC's result. |
Definition at line 491 of file ancillarydata.cpp.
|
virtual |
Copy data from external memory into my local payload memory.
[in] | pInData | Specifies the address of the first byte of the external payload data to be copied (source). |
[in] | inByteCount | Specifies the number of bytes of payload data to be copied. |
Definition at line 354 of file ancillarydata.cpp.
|
virtual |
Sets my Secondary Data ID (SID) - (aka the Data Block Number (DBN) for "Type 1" SMPTE-291 packets).
[in] | inSID | Specifies my new secondary Data ID. |
Definition at line 207 of file ancillarydata.cpp.
|
static |
Converts a single line of NTV2_FBF_8BIT_YCBCR data from the given source buffer into an ordered sequence of uint16_t values that contain the resulting 10-bit even-parity data.
[in] | pInYUV8Line | A valid, non-NULL pointer to the start of the VANC line in an NTV2_FBF_8BIT_YCBCR video buffer. |
[out] | outU16YUVLine | Receives the converted 10-bit-per-component values as an ordered sequence of uint16_t values, which will include even parity and valid checksums. |
[in] | inNumPixels | Specifies the length of the line to be converted, in pixels. |
Definition at line 1782 of file ancillarydata.cpp.
|
static |
SD version of Unpack8BitYCbCrToU16sVANCLine.
[in] | pInYUV8Line | A valid, non-NULL pointer to the start of the VANC line in an NTV2_FBF_8BIT_YCBCR video buffer. |
[out] | outU16YUVLine | Receives the converted 10-bit-per-component values as an ordered sequence of uint16_t values. Anc packets begin with a 0x000/0xFFF/0xFFF sequence. Packet data includes even parity and valid checksums. |
[in] | inNumPixels | Specifies the length of the line to be converted, in pixels. |
Definition at line 1884 of file ancillarydata.cpp.
|
protected |
One of a known set of ancillary data types (or "Custom" if not identified)
Definition at line 1159 of file ancillarydata.h.
|
protected |
HDMI Aux Header Byte 1 (Header Data)
Definition at line 1165 of file ancillarydata.h.
|
protected |
HDMI Aux Header Byte 2 (Header Data)
Definition at line 1166 of file ancillarydata.h.
|
protected |
HDMI Aux Header Byte 0 (Packet Type)
Definition at line 1164 of file ancillarydata.h.
|
protected |
My originating buffer format, if known.
Definition at line 1160 of file ancillarydata.h.
|
protected |
My 8-bit checksum: DID + SID + DC + payload (w/o parity) [note: NOT the same as the 9-bit checksum in a SMPTE-291 packet!].
Definition at line 1154 of file ancillarydata.h.
|
protected |
Analog or digital data.
Definition at line 1156 of file ancillarydata.h.
|
protected |
Official SMPTE ancillary packet ID (w/o parity)
Definition at line 1152 of file ancillarydata.h.
|
protected |
ID of my originating frame, if known.
Definition at line 1161 of file ancillarydata.h.
|
protected |
Location of the ancillary data in the video stream (Y or C, HANC or VANC, etc.)
Definition at line 1155 of file ancillarydata.h.
|
protected |
My payload data (DC = size)
Definition at line 1157 of file ancillarydata.h.
|
protected |
This is set true (or not) by ParsePayloadData()
Definition at line 1158 of file ancillarydata.h.
|
protected |
Official SMPTE secondary ID (or DBN - w/o parity)
Definition at line 1153 of file ancillarydata.h.
|
protected |
User data (for client use)
Definition at line 1162 of file ancillarydata.h.