AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
ancillarydata_cea708.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #include "ancillarydata_cea708.h"
9 #include "ajabase/system/debug.h"
10 #include <ios>
11 #include <iomanip>
12 
13 using namespace std;
14 
15 
18 {
19  Init();
20 }
21 
22 
25 {
26  Init();
27  *this = clone;
28 }
29 
30 
33 {
34  Init();
35  if (pClone != NULL_PTR)
36  *this = *pClone;
37 }
38 
39 
41  : AJAAncillaryData (pData)
42 {
43  Init();
44 }
45 
46 
48 {
49 }
50 
51 
53 {
55 }
56 
57 
59 {
60  if (this != &rhs) // ignore self-assignment
61  AJAAncillaryData::operator= (rhs); // copy the base class stuff
62  return *this;
63 }
64 
65 
67 {
69  Init();
70 }
71 
72 
74 {
75  if (IsEmpty())
76  {
77  Init(); // load default values
78  m_rcvDataValid = false;
79  return AJA_STATUS_FAIL;
80  }
81 
82  // we have some kind of payload data - try to parse it
83  m_rcvDataValid = true;
84  return AJA_STATUS_SUCCESS;
85 }
86 
87 
89 {
91 
94 
95 // status = AllocDataMemory(AJAAncillaryData_SMPTE2016_3_PayloadSize);
96 
97  if (AJA_SUCCESS(status))
98  {
99  }
100 
102  return status;
103 }
104 
105 #define LOGMYWARN(__x__) AJA_sWARNING(AJA_DebugUnit_AJAAncList, AJAFUNC << ": " << __x__)
106 
108 {
109  if (pInAncData->GetLocationVideoSpace() == AJAAncDataSpace_VANC) // Must be VANC (per SMPTE 334-2)
110  if (pInAncData->GetDID() == AJAAncillaryData_CEA708_DID) // DID == 0x61
111  if (pInAncData->GetSID() == AJAAncillaryData_CEA708_SID) // SDID == 0x01
112  if (IS_VALID_AJAAncDataChannel(pInAncData->GetLocationDataChannel())) // Valid channel?
113  {
114  if (pInAncData->GetLocationDataChannel() == AJAAncDataChannel_C) // Y OK, Y+C OK
115  LOGMYWARN("CEA708 packet on C-channel"); // Violates SMPTE 334-1 sec 4 -- bad praxis, but will allow
116  return AJAAncDataType_Cea708;
117  }
118  return AJAAncDataType_Unknown;
119 }
120 
121 
122 ostream & AJAAncillaryData_Cea708::Print (ostream & debugStream, const bool bShowDetail) const
123 {
124  debugStream << IDAsString() << "(" << ::AJAAncDataCodingToString (m_coding) << ")" << endl;
125  return AJAAncillaryData::Print (debugStream, bShowDetail);
126 }
NULL_PTR
#define NULL_PTR
Definition: types.h:312
AJAAncillaryData::m_DID
uint8_t m_DID
Official SMPTE ancillary packet ID (w/o parity)
Definition: ancillarydata.h:1084
AJAAncillaryData_Cea708::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_cea708.cpp:107
AJAAncDataType_Unknown
@ AJAAncDataType_Unknown
Includes data that is valid, but we don't recognize.
Definition: ancillarydata.h:46
AJA_STATUS_SUCCESS
@ AJA_STATUS_SUCCESS
Definition: types.h:368
AJAAncillaryData_Cea708::AJAAncillaryData_Cea708
AJAAncillaryData_Cea708()
My default constructor.
Definition: ancillarydata_cea708.cpp:16
AJAAncillaryData_Cea708::Init
void Init(void)
Definition: ancillarydata_cea708.cpp:52
AJAAncDataType
AJAAncDataType
Identifies the ancillary data types that are known to this module.
Definition: ancillarydata.h:44
AJAAncillaryData_Cea708::GeneratePayloadData
virtual AJAStatus GeneratePayloadData(void)
Generate the payload data from the "local" ancillary data.
Definition: ancillarydata_cea708.cpp:88
AJAStatus
AJAStatus
Definition: types.h:365
AJAAncillaryData::Print
virtual std::ostream & Print(std::ostream &inOutStream, const bool inDetailed=false) const
Streams a human-readable representation of me to the given output stream.
Definition: ancillarydata.cpp:1306
AJA_STATUS_FAIL
@ AJA_STATUS_FAIL
Definition: types.h:369
AJAAncillaryData_Cea708
This class handles CEA-708 SMPTE 334 packets.
Definition: ancillarydata_cea708.h:23
AJAAncillaryData
I am the principal class that stores a single SMPTE-291 SDI ancillary data packet OR the digitized co...
Definition: ancillarydata.h:550
AJAAncillaryData::m_coding
AJAAncDataCoding m_coding
Analog or digital data.
Definition: ancillarydata.h:1088
AJAAncillaryData_Cea708::ParsePayloadData
virtual AJAStatus ParsePayloadData(void)
Parses out (interprets) the "local" ancillary data from my payload data.
Definition: ancillarydata_cea708.cpp:73
AJA_SUCCESS
#define AJA_SUCCESS(_status_)
Definition: types.h:357
AJAAncillaryData_CEA708_DID
const uint8_t AJAAncillaryData_CEA708_DID
Definition: ancillarydata_cea708.h:16
AJAAncillaryData_CEA708_SID
const uint8_t AJAAncillaryData_CEA708_SID
Definition: ancillarydata_cea708.h:17
AJAAncillaryData_Cea708::operator=
virtual AJAAncillaryData_Cea708 & operator=(const AJAAncillaryData_Cea708 &inRHS)
Assignment operator – replaces my contents with the right-hand-side value.
Definition: ancillarydata_cea708.cpp:58
IS_VALID_AJAAncDataChannel
#define IS_VALID_AJAAncDataChannel(_x_)
Definition: ancillarydata.h:137
AJAAncillaryData::m_rcvDataValid
bool m_rcvDataValid
This is set true (or not) by ParsePayloadData()
Definition: ancillarydata.h:1090
AJAAncillaryData::m_SID
uint8_t m_SID
Official SMPTE secondary ID (or DBN - w/o parity)
Definition: ancillarydata.h:1085
AJAAncillaryData::Calculate8BitChecksum
virtual uint8_t Calculate8BitChecksum(void) const
Generates an 8-bit checksum from the DID + SID + DC + payload data.
Definition: ancillarydata.cpp:221
AJAAncillaryData::IDAsString
virtual std::string IDAsString(void) const
Definition: ancillarydata.cpp:1323
AJAAncillaryData::Clear
virtual void Clear(void)
Frees my allocated memory, if any, and resets my members to their default values.
Definition: ancillarydata.cpp:147
AJAAncDataChannel_C
@ AJAAncDataChannel_C
The ancillary data is associated with the chrominance (C) channel of the video stream.
Definition: ancillarydata.h:130
AJAAncillaryData::operator=
virtual AJAAncillaryData & operator=(const AJAAncillaryData &inRHS)
Definition: ancillarydata.cpp:1465
AJAAncDataType_Cea708
@ AJAAncDataType_Cea708
CEA708 (SMPTE 334) HD Closed Captioning.
Definition: ancillarydata.h:50
AJAAncDataCodingToString
const std::string & AJAAncDataCodingToString(const AJAAncDataCoding inValue, const bool inCompact=true)
Definition: ancillarydata.cpp:1270
LOGMYWARN
#define LOGMYWARN(__x__)
Definition: ancillarydata_cea708.cpp:105
AJAAncillaryData_Cea708::Clear
virtual void Clear(void)
Frees my allocated memory, if any, and resets my members to their default values.
Definition: ancillarydata_cea708.cpp:66
ancillarydata_cea708.h
Declares the AJAAncillaryData_Cea708 class.
AJAAncillaryData_Cea708::~AJAAncillaryData_Cea708
virtual ~AJAAncillaryData_Cea708()
My destructor.
Definition: ancillarydata_cea708.cpp:47
AJAAncDataSpace_VANC
@ AJAAncDataSpace_VANC
Ancillary data found between SAV and EAV (.
Definition: ancillarydata.h:176
AJAAncillaryData::m_ancType
AJAAncDataType m_ancType
One of a known set of ancillary data types (or "Custom" if not identified)
Definition: ancillarydata.h:1091
debug.h
Declares the AJADebug class.
AJAAncillaryData_Cea708::Print
virtual std::ostream & Print(std::ostream &inOutStream, const bool inDetailed=false) const
Streams a human-readable representation of me to the given output stream.
Definition: ancillarydata_cea708.cpp:122
AJAAncillaryData::m_checksum
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...
Definition: ancillarydata.h:1086