AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
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_smpte352.h"
18 //#include "ancillarydata_smpte2016-3.h"
19 //#include "ancillarydata_smpte2051.h"
20 
21 
23 {
24  return Create (inAncType, &inAncData);
25 }
26 
27 
29 {
30  AJAAncillaryData * pResult (NULL);
31  switch (inAncType)
32  {
33  case AJAAncDataType_Unknown: pResult = new AJAAncillaryData(pAncData); break; // Use base type for 'Unknown'
34  case AJAAncDataType_Timecode_ATC: pResult = new AJAAncillaryData_Timecode_ATC(pAncData); break;
35  case AJAAncDataType_Timecode_VITC: pResult = new AJAAncillaryData_Timecode_VITC(pAncData); break;
36  case AJAAncDataType_Cea708: pResult = new AJAAncillaryData_Cea708(pAncData); break;
37  case AJAAncDataType_Cea608_Vanc: pResult = new AJAAncillaryData_Cea608_Vanc(pAncData); break;
38  case AJAAncDataType_Cea608_Line21: pResult = new AJAAncillaryData_Cea608_Line21(pAncData); break;
41 
42  case AJAAncDataType_Smpte2016_3: break; // pResult = new AJAAncillaryData_Smpte2016_3(pAncData); break;
43  case AJAAncDataType_Smpte352: break; // pResult = new AJAAncillaryData_Smpte352(pAncData); break;
44  case AJAAncDataType_Smpte2051: break; // pResult = new AJAAncillaryData_Smpte2051(pAncData); break;
45  case AJAAncDataType_HDR_SDR: break;
46  case AJAAncDataType_HDR_HDR10: break;
47  case AJAAncDataType_HDR_HLG: break;
48 #if !defined(_DEBUG)
49  default: break;
50 #else
51  case AJAAncDataType_Size: break;
52 #endif
53  }
54  if (pResult)
55  // Populate the specialized AJAAncillaryData object's member variables from the packet data...
56  pResult->ParsePayloadData();
57  return pResult;
58 }
59 
60 
61 
63 {
64  return GuessAncillaryDataType (&inAncData);
65 }
66 
67 //---------------------------------
68 // Given a "raw" (unparsed) AJAAncillaryData object, see if we can identify it based on its contents (e.g. DID, SID, location, etc.)
69 // (Architectural note: while this isn't a "factory" method, per se, it's convenient to be here because the factory is the one thing
70 // that knows about ALL classes, and you're often calling this as a prelude to creating a new object of the appropriate type using
71 // the factory.)
72 //
73 
75 {
77 
78  // walk through each of the known derived AncillaryData derived classes
79  // and ask them if they recognize this data
80 
81 // if ( (result = AJAAncillaryData_Smpte2016_3::RecognizeThisAncillaryData(pAncData)) != AJAAncDataType_Unknown)
82 // return result;
83 //
85  return result;
86 
88  return result;
89 
91  return result;
92 
94  return result;
95 
97  return result;
98 
99 // if ( (result = AJAAncillaryData_Smpte352::RecognizeThisAncillaryData(pAncData)) != AJAAncDataType_Unknown)
100 // return result;
101 
102 // if ( (result = AJAAncillaryData_Smpte2051::RecognizeThisAncillaryData(pAncData)) != AJAAncDataType_Unknown)
103 // return result;
104 //
106  return result;
107 
109  return result;
110 
111  return result;
112 }
113 
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.
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_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:22
AJAAncDataType_Size
@ AJAAncDataType_Size
Definition: ancillarydata.h:60
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:550
AJAAncillaryData_Timecode_VITC
This is the VITC-specific subclass of the AJAAncillaryData_Timecode class.
Definition: ancillarydata_timecode_vitc.h:41
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:489
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:62
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