AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
ancillarydata_cea608_line21.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef AJA_ANCILLARYDATA_CEA608_LINE21_H
9 #define AJA_ANCILLARYDATA_CEA608_LINE21_H
10 
11 #include "ancillarydatafactory.h"
12 #include "ancillarydata.h"
13 #include "ancillarydata_cea608.h"
14 
15 
16 // Line 21 ("Analog") Packet IDs
19 
20 const uint32_t AJAAncillaryData_Cea608_Line21_PayloadSize = 720; // note: assumes we're only using this for SD (720 pixels/line)
21 
22 
23 
28 {
29 public:
31 
37 
43 
49 
50  virtual ~AJAAncillaryData_Cea608_Line21 ();
51 
52  virtual void Clear (void);
53 
60 
61  virtual inline AJAAncillaryData_Cea608_Line21 * Clone (void) const {return new AJAAncillaryData_Cea608_Line21 (this);}
62 
67  virtual AJAStatus ParsePayloadData (void);
68 
74  virtual AJAStatus GeneratePayloadData (void);
75 
81 
82 
83 protected:
84  void Init (void); // NOT virtual - called by constructors
85  virtual AJAStatus AllocEncodeBuffer (void);
86 
87  // Encode methods ported/stolen from ntv2closedcaptioning.cpp
88 
96  virtual AJAStatus InitEncodeBuffer (const uint32_t inLineStartOffset, uint32_t & outDataStartOffset);
97 
98 
106  virtual AJAStatus EncodeLine (const uint8_t inChar1, const uint8_t inChar2, const uint32_t inDataStartOffset);
107 
114  virtual uint8_t * EncodeCharacter (uint8_t * ptr, const uint8_t inChar);
115 
116 
124  virtual uint8_t * EncodeTransition (uint8_t * ptr, const uint8_t inStartLevel, const uint8_t inEndLevel);
125 
126 
127  // Decode methods ported/stolen from ntv2closedcaptioning.cpp
128 
138  virtual AJAStatus DecodeLine (uint8_t & outChar1, uint8_t & outChar2, bool & outGotClock) const;
139 
140 
148  static const uint8_t * CheckDecodeClock (const uint8_t * pInLine, bool & outGotClock);
149 
150 
161  static AJAStatus DecodeCharacters (const uint8_t * ptr, uint8_t & outChar1, uint8_t & outChar2);
162 
163 
164 protected:
165  // Note: if you make a change to the local member data, be sure to ALSO make the appropriate
166  // changes in the Init() and operator= methods!
168  uint32_t m_dataStartOffset;
169 
170 }; // AJAAncillaryData_Cea608_Line21
171 
172 #endif // AJA_ANCILLARYDATA_CEA608_LINE21_H
173 
AJAAncillaryData_Cea608_Line21_PayloadSize
const uint32_t AJAAncillaryData_Cea608_Line21_PayloadSize
Definition: ancillarydata_cea608_line21.h:20
ancillarydata.h
Declares the AJAAncillaryData class.
AJAAncillaryData_Cea608::Clear
virtual void Clear(void)
Frees my allocated memory, if any, and resets my members to their default values.
Definition: ancillarydata_cea608.cpp:71
AJAAncillaryData_Cea608_Line21
This class handles "analog" (Line 21) based CEA-608 caption data packets.
Definition: ancillarydata_cea608_line21.h:27
AJAAncillaryData_Cea608_Line21_SID
const uint8_t AJAAncillaryData_Cea608_Line21_SID
Definition: ancillarydata_cea608_line21.h:18
AJAAncDataType
AJAAncDataType
Identifies the ancillary data types that are known to this module.
Definition: ancillarydata.h:44
AJAAncillaryData::GeneratePayloadData
virtual AJAStatus GeneratePayloadData(void)
Generates the payload data from the "local" ancillary data.
Definition: ancillarydata.h:881
ancillarydatafactory.h
Declaration of the AJAAncillaryDataFactory class.
AJAAncillaryData_Cea608_Line21::m_dataStartOffset
uint32_t m_dataStartOffset
Offset into the encode buffer where data starts.
Definition: ancillarydata_cea608_line21.h:168
AJAStatus
AJAStatus
Definition: types.h:365
AJAAncillaryData_Cea608::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_cea608.cpp:141
AJAAncillaryData_Cea608
This is the base class for handling CEA-608 caption data packets.
Definition: ancillarydata_cea608.h:18
AJAAncillaryData_Cea608_Line21::m_bEncodeBufferInitialized
bool m_bEncodeBufferInitialized
Set 'true' after successfully allocating and initializing the m_payload buffer for encoding.
Definition: ancillarydata_cea608_line21.h:167
AJAAncillaryData
I am the principal class that stores a single SMPTE-291 SDI ancillary data packet OR the digitized co...
Definition: ancillarydata.h:550
ancillarydata_cea608.h
Declares the AJAAncillaryData_Cea608 class.
AJAAncillaryData_Cea608::Init
void Init(void)
Definition: ancillarydata_cea608.cpp:50
AJAAncillaryData::ParsePayloadData
virtual AJAStatus ParsePayloadData(void)
Parses (interprets) the "local" ancillary data from my payload data.
Definition: ancillarydata.cpp:489
AJAExport
#define AJAExport
Definition: export.h:33
AJAAncData_AnalogSID
const uint8_t AJAAncData_AnalogSID
Definition: ancillarydata.h:25
AJAAncillaryData::Clone
virtual AJAAncillaryData * Clone(void) const
Definition: ancillarydata.cpp:153
AJAAncData_AnalogDID
const uint8_t AJAAncData_AnalogDID
Definition: ancillarydata.h:24
AJAAncillaryData_Cea608_Line21_DID
const uint8_t AJAAncillaryData_Cea608_Line21_DID
Definition: ancillarydata_cea608_line21.h:17
AJAAncillaryData_Cea608::operator=
virtual AJAAncillaryData_Cea608 & operator=(const AJAAncillaryData_Cea608 &inRHS)
Assignment operator – replaces my contents with the right-hand-side value.
Definition: ancillarydata_cea608.cpp:57