AJA NTV2 SDK  17.1.1.1245
NTV2 SDK 17.1.1.1245
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 
AJAAncillaryData_Cea608_Vanc::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_cea608_vanc.cpp:161
ancillarydata.h
Declares the AJAAncillaryData class.
AJAAncillaryData_Timecode_ATC::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_timecode_atc.cpp:277
AJAAncDataType_Cea608_Vanc
@ AJAAncDataType_Cea608_Vanc
CEA608 SD Closed Captioning (SMPTE 334 VANC packet)
Definition: ancillarydata.h:51
AJAAncillaryData_Cea708::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_cea708.cpp:107
ancillarydata_cea608_line21.h
Declares the AJAAncillaryData_Cea608_line21 class.
AJAAncDataType_Unknown
@ AJAAncDataType_Unknown
Includes data that is valid, but we don't recognize.
Definition: ancillarydata.h:46
NULL
#define NULL
Definition: ntv2caption608types.h:19
AJAAncillaryData_Cea608_Line21
This class handles "analog" (Line 21) based CEA-608 caption data packets.
Definition: ancillarydata_cea608_line21.h:27
ancillarydata_timecode_vitc.h
Declares the AJAAncillaryData_Timecode_VITC class.
ancillarydata_framestatusinfo5251.h
Declares the AJAAncillaryData_FrameStatusInfo5251 class.
AJAAncillaryData_HDMI_Aux
This class handles HDMI Auxillary packets.
Definition: ancillarydata_hdmi_aux.h:18
ancillarydata_timecode_atc.h
Declares the AJAAncillaryData_Timecode_ATC class.
AJAAncillaryData_FrameStatusInfo524D::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_framestatusinfo524D.cpp:104
AJAAncDataType_Smpte352
@ AJAAncDataType_Smpte352
SMPTE 352 "Payload ID".
Definition: ancillarydata.h:53
AJAAncDataType
AJAAncDataType
Identifies the ancillary data types that are known to this module.
Definition: ancillarydata.h:44
AJAAncDataType_Timecode_VITC
@ AJAAncDataType_Timecode_VITC
SMPTE 12-M Vertical Interval Timecode (aka "VITC")
Definition: ancillarydata.h:49
ancillarydatafactory.h
Declaration of the AJAAncillaryDataFactory class.
AJAAncillaryData_FrameStatusInfo5251::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_framestatusinfo5251.cpp:112
AJAAncillaryData_Timecode_VITC::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_timecode_vitc.cpp:128
ancillarydata_hdmi_aux.h
ancillarydata_framestatusinfo524D.h
Declares the AJAAncillaryData_FrameStatusInfo524D class.
AJAAncillaryDataFactory::Create
static AJAAncillaryData * Create(const AJAAncDataType inAncType, const AJAAncillaryData &inAncData)
Creates a new particular subtype of AJAAncillaryData object.
Definition: ancillarydatafactory.cpp:23
AJAAncDataType_Size
@ AJAAncDataType_Size
Definition: ancillarydata.h:61
AJAAncillaryData_FrameStatusInfo5251
This class handles "5251" Frame Status Information packets.
Definition: ancillarydata_framestatusinfo5251.h:23
AJAAncillaryData_Cea608_Line21::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_cea608_line21.cpp:144
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:552
AJAAncillaryData_Timecode_VITC
This is the VITC-specific subclass of the AJAAncillaryData_Timecode class.
Definition: ancillarydata_timecode_vitc.h:41
AJAAncDataType_HDMI_Aux
@ AJAAncDataType_HDMI_Aux
HDMI Auxiliary data.
Definition: ancillarydata.h:60
AJAAncDataType_Smpte2016_3
@ AJAAncDataType_Smpte2016_3
SMPTE 2016-3 VANC Aspect Format Description (AFD) metadata.
Definition: ancillarydata.h:47
AJAAncillaryData_Timecode_ATC
I am the ATC-specific (analog) subclass of the AJAAncillaryData_Timecode class.
Definition: ancillarydata_timecode_atc.h:43
AJAAncDataType_HDR_SDR
@ AJAAncDataType_HDR_SDR
Definition: ancillarydata.h:57
AJAAncillaryData_FrameStatusInfo524D
This class handles "524D" Frame Status Information packets.
Definition: ancillarydata_framestatusinfo524D.h:24
AJAAncDataType_FrameStatusInfo5251
@ AJAAncDataType_FrameStatusInfo5251
Frame Status Information, such as Active Frame flag.
Definition: ancillarydata.h:56
AJAAncDataType_Smpte2051
@ AJAAncDataType_Smpte2051
SMPTE 2051 "Two Frame Marker".
Definition: ancillarydata.h:54
ancillarydata_cea608_vanc.h
Declares the AJAAncillaryData_Cea608_Vanc class.
AJAAncillaryData::ParsePayloadData
virtual AJAStatus ParsePayloadData(void)
Parses (interprets) the "local" ancillary data from my payload data.
Definition: ancillarydata.cpp:501
AJAAncDataType_Cea708
@ AJAAncDataType_Cea708
CEA708 (SMPTE 334) HD Closed Captioning.
Definition: ancillarydata.h:50
AJAAncillaryDataFactory::GuessAncillaryDataType
static AJAAncDataType GuessAncillaryDataType(const AJAAncillaryData &inAncData)
Given a generic AJAAncillaryData object, attempts to guess what kind of specific AJAAncillaryData obj...
Definition: ancillarydatafactory.cpp:65
AJAAncDataType_FrameStatusInfo524D
@ AJAAncDataType_FrameStatusInfo524D
Frame Status Information, such as Active Frame flag.
Definition: ancillarydata.h:55
AJAAncDataType_HDR_HLG
@ AJAAncDataType_HDR_HLG
Definition: ancillarydata.h:59
AJAAncillaryData_Cea608_Vanc
This class handles VANC-based CEA-608 caption data packets (not "analog" Line 21).
Definition: ancillarydata_cea608_vanc.h:26
ancillarydata_cea708.h
Declares the AJAAncillaryData_Cea708 class.
AJAAncDataType_Cea608_Line21
@ AJAAncDataType_Cea608_Line21
CEA608 SD Closed Captioning ("Line 21" waveform)
Definition: ancillarydata.h:52
AJAAncDataType_Timecode_ATC
@ AJAAncDataType_Timecode_ATC
SMPTE 12-M Ancillary Timecode (formerly known as "RP-188")
Definition: ancillarydata.h:48
AJAAncDataType_HDR_HDR10
@ AJAAncDataType_HDR_HDR10
Definition: ancillarydata.h:58