AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ancillarydatafactory.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #include "ancillarydatafactory.h"
9 #include "ancillarydata.h"
12 #include "ancillarydata_cea708.h"
17 #include "ancillarydata_hdmi_aux.h"
18 //#include "ancillarydata_smpte352.h"
19 //#include "ancillarydata_smpte2016-3.h"
20 //#include "ancillarydata_smpte2051.h"
21 
22 
24 {
25  return Create (inAncType, &inAncData);
26 }
27 
28 
30 {
31  AJAAncillaryData * pResult (NULL);
32  switch (inAncType)
33  {
34  case AJAAncDataType_Unknown: pResult = new AJAAncillaryData(pAncData); break; // Use base type for 'Unknown'
35  case AJAAncDataType_Timecode_ATC: pResult = new AJAAncillaryData_Timecode_ATC(pAncData); break;
36  case AJAAncDataType_Timecode_VITC: pResult = new AJAAncillaryData_Timecode_VITC(pAncData); break;
37  case AJAAncDataType_Cea708: pResult = new AJAAncillaryData_Cea708(pAncData); break;
38  case AJAAncDataType_Cea608_Vanc: pResult = new AJAAncillaryData_Cea608_Vanc(pAncData); break;
39  case AJAAncDataType_Cea608_Line21: pResult = new AJAAncillaryData_Cea608_Line21(pAncData); break;
42 
43  case AJAAncDataType_Smpte2016_3: break; // pResult = new AJAAncillaryData_Smpte2016_3(pAncData); break;
44  case AJAAncDataType_Smpte352: break; // pResult = new AJAAncillaryData_Smpte352(pAncData); break;
45  case AJAAncDataType_Smpte2051: break; // pResult = new AJAAncillaryData_Smpte2051(pAncData); break;
46  case AJAAncDataType_HDR_SDR: break;
47  case AJAAncDataType_HDR_HDR10: break;
48  case AJAAncDataType_HDR_HLG: break;
49 
50  case AJAAncDataType_HDMI_Aux: pResult = new AJAAncillaryData_HDMI_Aux(pAncData); break;
51 #if !defined(_DEBUG)
52  default: break;
53 #else
54  case AJAAncDataType_Size: break;
55 #endif
56  }
57  if (pResult)
58  // Populate the specialized AJAAncillaryData object's member variables from the packet data...
59  pResult->ParsePayloadData();
60  return pResult;
61 }
62 
63 
64 
66 {
67  return GuessAncillaryDataType (&inAncData);
68 }
69 
70 //---------------------------------
71 // Given a "raw" (unparsed) AJAAncillaryData object, see if we can identify it based on its contents (e.g. DID, SID, location, etc.)
72 // (Architectural note: while this isn't a "factory" method, per se, it's convenient to be here because the factory is the one thing
73 // that knows about ALL classes, and you're often calling this as a prelude to creating a new object of the appropriate type using
74 // the factory.)
75 //
76 
78 {
80 
81  // walk through each of the known derived AncillaryData derived classes
82  // and ask them if they recognize this data
83 
84 // if ( (result = AJAAncillaryData_Smpte2016_3::RecognizeThisAncillaryData(pAncData)) != AJAAncDataType_Unknown)
85 // return result;
86 //
88  return result;
89 
91  return result;
92 
94  return result;
95 
97  return result;
98 
100  return result;
101 
102 // if ( (result = AJAAncillaryData_Smpte352::RecognizeThisAncillaryData(pAncData)) != AJAAncDataType_Unknown)
103 // return result;
104 
105 // if ( (result = AJAAncillaryData_Smpte2051::RecognizeThisAncillaryData(pAncData)) != AJAAncDataType_Unknown)
106 // return result;
107 //
109  return result;
110 
112  return result;
113 
114  return result;
115 }
116 
This class handles "analog" (Line 21) based CEA-608 caption data packets.
CEA708 (SMPTE 334) HD Closed Captioning.
Definition: ancillarydata.h:50
SMPTE 12-M Vertical Interval Timecode (aka "VITC")
Definition: ancillarydata.h:49
#define NULL
SMPTE 12-M Ancillary Timecode (formerly known as "RP-188")
Definition: ancillarydata.h:48
This class handles "5251" Frame Status Information packets.
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Declares the AJAAncillaryData_Cea608_line21 class.
AJAAncDataType
Identifies the ancillary data types that are known to this module.
Definition: ancillarydata.h:44
static AJAAncDataType GuessAncillaryDataType(const AJAAncillaryData &inAncData)
Given a generic AJAAncillaryData object, attempts to guess what kind of specific AJAAncillaryData obj...
Declares the AJAAncillaryData_Cea608_Vanc class.
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
This class handles HDMI Auxillary packets.
This is the VITC-specific subclass of the AJAAncillaryData_Timecode class.
Includes data that is valid, but we don't recognize.
Definition: ancillarydata.h:46
Declares the AJAAncillaryData_FrameStatusInfo524D class.
This class handles CEA-708 SMPTE 334 packets.
virtual AJAStatus ParsePayloadData(void)
Parses (interprets) the "local" ancillary data from my payload data.
This class handles VANC-based CEA-608 caption data packets (not "analog" Line 21).
HDMI Auxiliary data.
Definition: ancillarydata.h:60
SMPTE 2016-3 VANC Aspect Format Description (AFD) metadata.
Definition: ancillarydata.h:47
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Declares the AJAAncillaryData_Timecode_VITC class.
Declares the AJAAncillaryData_FrameStatusInfo5251 class.
Declaration of the AJAAncillaryDataFactory class.
Frame Status Information, such as Active Frame flag.
Definition: ancillarydata.h:56
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Declares the AJAAncillaryData_Timecode_ATC class.
SMPTE 2051 "Two Frame Marker".
Definition: ancillarydata.h:54
Declares the AJAAncillaryData class.
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
I am the ATC-specific (analog) subclass of the AJAAncillaryData_Timecode class.
CEA608 SD Closed Captioning (SMPTE 334 VANC packet)
Definition: ancillarydata.h:51
This class handles "524D" Frame Status Information packets.
I am the principal class that stores a single SMPTE-291 SDI ancillary data packet OR the digitized co...
static AJAAncillaryData * Create(const AJAAncDataType inAncType, const AJAAncillaryData &inAncData)
Creates a new particular subtype of AJAAncillaryData object.
Declares the AJAAncillaryData_Cea708 class.
CEA608 SD Closed Captioning ("Line 21" waveform)
Definition: ancillarydata.h:52
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
SMPTE 352 "Payload ID".
Definition: ancillarydata.h:53
Frame Status Information, such as Active Frame flag.
Definition: ancillarydata.h:55
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)