AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
ancillarydata_framestatusinfo5251.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
9 #include <ios>
10 #include <iomanip>
11 
12 using namespace std;
13 
14 
15 #define AJAAncillaryData_FrameStatusInfo5251_PayloadSize 0x08
16 
17 
19  : AJAAncillaryData ()
20 {
21  Init();
22 }
23 
24 
26  : AJAAncillaryData ()
27 {
28  Init();
29  *this = inClone;
30 }
31 
32 
34  : AJAAncillaryData ()
35 {
36  Init();
37  if (pInClone)
38  *this = *pInClone;
39 }
40 
41 
43  : AJAAncillaryData (pInData)
44 {
45  Init();
46 }
47 
48 
50 {
51 }
52 
53 
55 {
60  m_IsRecording = false;
61  m_IsValidFrame = true;
62 }
63 
64 
66 {
68  Init();
69 }
70 
71 
73 {
74  // Ignore self-assignment
75  if (this != &rhs)
76  {
77  // Copy the base class members
79 
80  // Copy the local members
81  m_IsRecording = rhs.m_IsRecording;
82  m_IsValidFrame = rhs.m_IsValidFrame;
83  }
84  return *this;
85 }
86 
87 
89 {
90  // The size is specific to Canon
92  {
93  // Load default values
94  Init();
95  m_rcvDataValid = false;
96  return AJA_STATUS_FAIL;
97  }
98 
99  // This is valid for the Canon C500
100  m_IsRecording = (((m_payload[0] & 0x60) == 0x20) ? true : false);
101 
102  // This is in the Canon specification, but the Canon C500 doesn't set
103  // this, thus we're placing this here just for completion in order
104  // to follow the DID:52h SDID:51h packet format.
105  m_IsValidFrame = (((m_payload[0] & 0x80) == 0x00) ? true : false);
106 
107  m_rcvDataValid = true;
108  return AJA_STATUS_SUCCESS;
109 }
110 
111 
113 {
114  if (pInAncData->GetDataCoding() == AJAAncDataCoding_Digital)
115  if (pInAncData->GetDID() == AJAAncillaryData_FrameStatusInfo5251_DID)
116  if (pInAncData->GetSID() == AJAAncillaryData_FrameStatusInfo5251_SID)
117  if (pInAncData->GetDC() == AJAAncillaryData_FrameStatusInfo5251_PayloadSize)
119  return AJAAncDataType_Unknown;
120 }
121 
122 
123 ostream & AJAAncillaryData_FrameStatusInfo5251::Print (ostream & debugStream, const bool bShowDetail) const
124 {
125  AJAAncillaryData::Print (debugStream, bShowDetail);
126  debugStream << endl
127  << "Recording: " << (m_IsRecording ? "Active" : "Inactive");
128  return debugStream;
129 }
AJAAncillaryData_FrameStatusInfo5251_PayloadSize
#define AJAAncillaryData_FrameStatusInfo5251_PayloadSize
Definition: ancillarydata_framestatusinfo5251.cpp:15
AJAAncillaryData_FrameStatusInfo5251::operator=
virtual AJAAncillaryData_FrameStatusInfo5251 & operator=(const AJAAncillaryData_FrameStatusInfo5251 &inRHS)
Assignment operator – replaces my contents with the right-hand-side value.
Definition: ancillarydata_framestatusinfo5251.cpp:72
AJAAncillaryData::m_DID
uint8_t m_DID
Official SMPTE ancillary packet ID (w/o parity)
Definition: ancillarydata.h:1152
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:381
ancillarydata_framestatusinfo5251.h
Declares the AJAAncillaryData_FrameStatusInfo5251 class.
AJAAncillaryData_FrameStatusInfo5251::Clear
virtual void Clear(void)
Frees my allocated memory, if any, and resets my members to their default values.
Definition: ancillarydata_framestatusinfo5251.cpp:65
AJAAncDataType
AJAAncDataType
Identifies the ancillary data types that are known to this module.
Definition: ancillarydata.h:44
AJAAncillaryData_FrameStatusInfo5251::RecognizeThisAncillaryData
static AJAAncDataType RecognizeThisAncillaryData(const AJAAncillaryData *pInAncData)
Definition: ancillarydata_framestatusinfo5251.cpp:112
AJAAncillaryData_FrameStatusInfo5251::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_framestatusinfo5251.cpp:123
AJAStatus
AJAStatus
Definition: types.h:378
AJAAncillaryData_FrameStatusInfo5251
This class handles "5251" Frame Status Information packets.
Definition: ancillarydata_framestatusinfo5251.h:23
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:1409
AJAAncillaryData_FrameStatusInfo5251::Init
void Init(void)
Definition: ancillarydata_framestatusinfo5251.cpp:54
AJA_STATUS_FAIL
@ AJA_STATUS_FAIL
Definition: types.h:382
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_FrameStatusInfo5251::~AJAAncillaryData_FrameStatusInfo5251
virtual ~AJAAncillaryData_FrameStatusInfo5251()
My destructor.
Definition: ancillarydata_framestatusinfo5251.cpp:49
AJAAncillaryData_FrameStatusInfo5251_DID
const uint8_t AJAAncillaryData_FrameStatusInfo5251_DID
Definition: ancillarydata_framestatusinfo5251.h:16
AJAAncillaryData::m_coding
AJAAncDataCoding m_coding
Analog or digital data.
Definition: ancillarydata.h:1156
AJAAncillaryData::m_rcvDataValid
bool m_rcvDataValid
This is set true (or not) by ParsePayloadData()
Definition: ancillarydata.h:1158
AJAAncillaryData::m_SID
uint8_t m_SID
Official SMPTE secondary ID (or DBN - w/o parity)
Definition: ancillarydata.h:1153
AJAAncDataType_FrameStatusInfo5251
@ AJAAncDataType_FrameStatusInfo5251
Frame Status Information, such as Active Frame flag.
Definition: ancillarydata.h:56
AJAAncillaryData::m_payload
ByteVector m_payload
My payload data (DC = size)
Definition: ancillarydata.h:1157
AJAAncillaryData::Clear
virtual void Clear(void)
Frees my allocated memory, if any, and resets my members to their default values.
Definition: ancillarydata.cpp:159
AJAAncillaryData::operator=
AJAAncillaryData & operator=(const AJAAncillaryData &inRHS)
Definition: ancillarydata.cpp:1576
std
Definition: json.hpp:5362
true
#define true
Definition: ntv2devicefeatures.h:26
AJAAncDataCoding_Digital
@ AJAAncDataCoding_Digital
The ancillary data is in the form of a SMPTE-291 Ancillary Packet.
Definition: ancillarydata.h:476
AJAAncillaryData::m_ancType
AJAAncDataType m_ancType
One of a known set of ancillary data types (or "Custom" if not identified)
Definition: ancillarydata.h:1159
AJAAncillaryData_FrameStatusInfo5251::AJAAncillaryData_FrameStatusInfo5251
AJAAncillaryData_FrameStatusInfo5251()
My default constructor.
Definition: ancillarydata_framestatusinfo5251.cpp:18
AJAAncillaryData_FrameStatusInfo5251_SID
const uint8_t AJAAncillaryData_FrameStatusInfo5251_SID
Definition: ancillarydata_framestatusinfo5251.h:17
AJAAncillaryData_FrameStatusInfo5251::ParsePayloadData
virtual AJAStatus ParsePayloadData(void)
Parses out (interprets) the "local" ancillary data from my payload data.
Definition: ancillarydata_framestatusinfo5251.cpp:88