AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ntv2captionencoder708.h
Go to the documentation of this file.
1 
7 #ifndef __NTV2_CEA708_ENCODER_
8 #define __NTV2_CEA708_ENCODER_
9 
10 #include "ntv2caption608types.h"
13 
14 #ifdef MSWindows
15  #include "windows.h"
16  #include "stdio.h"
17 #endif
18 
19 typedef UByte * UBytePtr;
20 typedef UWord * UWordPtr;
21 
22 
24 
25 
26 // returns size of Service Block Header (1 byte for standard services, 2 bytes for extended)
27 #define ServiceBlockHeaderSize(svcNum) (svcNum <= 6 ? 1 : 2)
28 
29 
30 // Caption Channel Packets cannot be longer than 256 bytes (and still fit into a SMPTE-334 ANC packet payload)
31 const size_t NTV2_CC708MaxPktSize = 256;
32 const size_t NTV2_CC708MaxAncSize = 512;
33 
34 
35 // CEA-708 constants
36 const size_t NTV2_CC708_MaxCaptionChannelPacketSize = 128; // including Caption Channel Packet Header byte!
37 const size_t NTV2_CC708_MaxServiceBlockSize = 31; // NOT including Service Block Header byte(s)!
38 
39 
40 // CEA-708B Caption Data Packet section IDs
41 enum
42 {
43  NTV2_CC708_CDPHeaderId1 = 0x96, // cdp_identifier (2 bytes)
45  NTV2_CC708_CDPTimecodeId = 0x71, // time_code_section_id
46  NTV2_CC708_CDPDataId = 0x72, // ccdata_id
47  NTV2_CC708_CDPServiceInfoId = 0x73, // ccsvcinfo_id
48  NTV2_CC708_CDPFooterId = 0x74 // cdp_footer
49 };
50 
51 
52 // CEA-708B cdp_frame_rate enums (see CEA-708B, pg 72)
53 enum
54 {
63 };
64 
65 
66 // CEA-708B CDP Header flags (see CEA-708B, pp 72-73)
67 enum
68 {
69  NTV2_CC708CDPHeader_TimeCodePresent = (1 << 7), // set if CDP contains time_code_section
70  NTV2_CC708CDPHeader_CCDataPresent = (1 << 6), // set if CDP contains cc_data section
71  NTV2_CC708CDPHeader_SvcInfoPresent = (1 << 5), // set if CDP contains ccsvcinfo_section
75  NTV2_CC708CDPHeader_CaptionServiceActive = (1 << 1), // set if CDP contains an active caption service
76  NTV2_CC708CDPHeader_Reserved = (1 << 0) // this should always be "on"
77 
78 };
79 
80 
81 // CEA-708 CDP "cc_type" enums
82 enum
83 {
84  NTV2_CC708CCTypeNTSCField1 = 0, // 608 Field 1
85  NTV2_CC708CCTypeNTSCField2 = 1, // 608 Field 2
86  NTV2_CC708CCTypeDTVCCData = 2, // 708 (2nd, 3rd, 4th, etc.)
87  NTV2_CC708CCTypeDTVCCStart = 3 // 708 (1st)
88 };
89 
90 
91 typedef struct NTV2_CC708CDPHeader
92 {
93  UWord cdp_identifier; // 0x9669
94  UByte cdp_length; // length (in words) of entire packet
95  int cdp_frame_rate; // see NTV2_CC708CDPFrameRateXXX enums
96  int cdp_flags; // see NTV2_CC708CDPHeader_xxx enums
97  UWord cdp_hdr_sequence_cntr; // sequence count (must match footer sequence count)
98 
101 
102 
104 {
106  int tc_10hrs;
107  int tc_1hrs;
108  int tc_10min;
109  int tc_1min;
110  int tc_10sec;
111  int tc_1sec;
112  int tc_10fr;
113  int tc_1fr;
116 
117  inline void Zero (void) {time_code_section_id = 0;
119  tc_field_flag = drop_frame_flag = false;}
121 
122 
124 {
125  bool cc_valid;
126  int cc_type;
129 
130  inline void Zero (void) {cc_valid = false; cc_type = 0; cc_data_1 = cc_data_2 = 0;}
132 
133 
135 {
136  UByte ccdata_id; // 0x72
137  int cc_count;
139 
140  void Zero (void);
142 
143 
145 {
152 
153  void Zero (void);
155 
156 
157 typedef struct NTV2_CC708CDPFooter
158 {
159  UWord cdp_ftr_sequence_cntr; // sequence count (must match header sequence count)
161 
162  inline void Zero (void) {cdp_ftr_sequence_cntr = 0; packet_checksum = 0;}
164 
165 
166 
167 typedef struct NTV2_CC708CDP
168 {
174 
177 
178 
179 
180 // CEA-708B Screen Coordinates
181 const int NTV2_CC708ScreenCellWidth4x3 = 160; // max number of "cells" wide in a 4x3 screen format
182 const int NTV2_CC708ScreenCellWidth16x9 = 210; // max number of "cells" wide in a 16x9 screen format
183 const int NTV2_CC708ScreenCellHeight = 75; // max number of "cells" in either screen format
184 
185 
186 enum
187 {
188  NTV2_CC708WindowIDMin = 0, // note: this MUST be zero or a whole lot of loops will break!
191 };
192 
193 
194 
195 // enums/constants for CC708Color struct
196 enum
197 {
200 };
201 
202 
203 typedef enum
204 {
213 
214 
216 
217 
218 AJAExport std::string NTV2_CC708OpacityToString (const NTV2_CC708Opacity inOpacity, const bool inCompact = false);
219 
220 
221 typedef struct AJAExport CC708Color
222 {
223  int red; // NTV2_CC708Color___ (0 - 3)
224  int green; //
225  int blue; //
226  int opacity; // NTV2_CC708Opacity___
227 
228  explicit CC708Color (const int inRed = NTV2_CC708ColorMax,
229  const int inGreen = NTV2_CC708ColorMax,
230  const int inBlue = NTV2_CC708ColorMax,
231  const int inOpacity = NTV2_CC708DefaultOpacity);
232 
233  inline bool IsValid (void) const {return red >= NTV2_CC708ColorMin && red <= NTV2_CC708ColorMax
234  && green >= NTV2_CC708ColorMin && green <= NTV2_CC708ColorMax
235  && blue >= NTV2_CC708ColorMin && blue <= NTV2_CC708ColorMax
236  && opacity >= NTV2_CC708OpacityMin && opacity <= NTV2_CC708OpacityMax;}
237 } CC708Color;
238 
239 AJAExport std::ostream & operator << (std::ostream & inOutStream, const CC708Color & inData);
240 
241 // Commonly used opaque colors: red green blue
250 
251 
252 
253 // 708 Window Parameters - see CEA-708B, pg 41-42
254 //
255 enum
256 {
259 };
260 
261 const bool NTV2_CC708Visible = true;
262 const bool NTV2_CC708NotVisible = false;
263 
264 
265 enum
266 {
278 };
279 
280 
281 const bool NTV2_CC708AbsolutePos = false;
282 const bool NTV2_CC708RelativePos = true;
283 
284 const bool NTV2_CC708Lock = true;
285 const bool NTV2_CC708NoLock = false;
286 
287 
288 enum
289 {
292 };
293 
294 
295 enum
296 {
299 };
300 
301 
302 typedef struct CC708WindowParms
303 {
304  int priority;
305  int anchorPt;
306  bool relativePos;
307  int anchorV;
308  int anchorH;
309  int rowCount;
310  int colCount;
311  bool rowLock;
312  bool colLock;
313  bool visible;
316 
317  explicit CC708WindowParms ();
318  explicit CC708WindowParms (const UByte inParam1, const UByte inParam2, const UByte inParam3, const UByte inParam4, const UByte inParam5, const UByte inParam6);
319  bool IsValid (void) const;
320  void Clear (void);
321 
323 
324 
325 AJAExport std::ostream & operator << (std::ostream & inOutStream, const CC708WindowParms & inData);
326 
327 
328 
329 // 708 Window Attributes - see CEA-708B, pg 48-49
330 //
331 enum
332 {
339 };
340 
341 
342 enum
343 {
348 };
349 
350 
351 enum
352 {
359 };
360 
361 
362 const bool NTV2_CC708WordWrap = true;
363 const bool NTV2_CC708NoWordWrap = false;
364 
365 
366 enum
367 {
373 };
374 
375 
376 enum
377 {
384 };
385 
386 
387 enum
388 {
397 };
398 
399 
400 typedef struct CC708WindowAttr
401 {
402  int justify; // NTV2_CC708Justify___
403  int printDir; // NTV2_CC708PrintDir___
404  int scrollDir; // NTV2_CC708ScrollDir___
405  bool wordWrap; // NTV2_CC708NoWordWrap/NTV2_CC708WordWrap
406  int displayEffect; // NTV2_CC708DispEffect___
407  int effectDir; // NTV2_CC708EffectDir___
409  int borderType; // NTV2_CC708BorderType___
412 
413  explicit CC708WindowAttr ();
414  explicit CC708WindowAttr (const UByte inParam1, const UByte inParam2, const UByte inParam3, const UByte inParam4);
415  bool IsValid (void) const;
416  void Clear (void);
417 
419 
420 
421 AJAExport std::ostream & operator << (std::ostream & inOutStream, const CC708WindowAttr & inData);
422 
423 
424 // 708 Pen Attributes - see CEA-708B, pg 50-51
425 //
426 enum
427 {
433 };
434 
435 
436 enum
437 {
448 };
449 
450 
451 enum
452 {
471 };
472 
473 
474 enum
475 {
481 };
482 
483 
484 const bool NTV2_CC708Italics (true);
485 const bool NTV2_CC708NoItalics (false);
486 
487 const bool NTV2_CC708Underline (true);
488 const bool NTV2_CC708NoUnderline (false);
489 
490 
491 enum
492 {
501 };
502 
503 
504 typedef struct CC708PenAttr
505 {
506  int penSize; // NTV2_CC708PenSize___
507  int fontStyle; // NTV2_CC708FontStyle___
508  int textTag; // NTV2_CC708TextTag___
509  int offset; // NTV2_CC708PenOffset___
510  bool italics; // NTV2_CC708NoItalics/NTV2_CC708Italics
511  bool underline; // NTV2_CC708NoUnderline/NTV2_CC708Underline
512  int edgeType; // NTV2_CC708PenEdgeType___
513 
514  explicit CC708PenAttr ();
515  explicit CC708PenAttr (const UByte inParam1, const UByte inParam2);
516  inline bool IsValid (void) const {return penSize >= NTV2_CC708PenSizeMin && penSize <= NTV2_CC708PenSizeMax
521  void Clear (void);
522 } CC708PenAttr;
523 
524 
525 AJAExport std::ostream & operator << (std::ostream & inOutStream, const CC708PenAttr & inData);
526 
527 
528 // 708 Pen Color - see CEA-708B, pg 52
529 //
530 typedef struct CC708PenColor
531 {
532  CC708Color fg; // pen foreground color/opacity
533  CC708Color bg; // pen background color/opacity
534  CC708Color edge; // pen edge color (opacity ignored)
535 
536  explicit CC708PenColor ();
537  explicit CC708PenColor (const UByte inParam1, const UByte inParam2, const UByte inParam3);
538  inline bool IsValid (void) const {return fg.IsValid () && bg.IsValid () && edge.IsValid ();}
539  void Clear (void);
540 
541 } CC708PenColor;
542 
543 
544 AJAExport std::ostream & operator << (std::ostream & inOutStream, const CC708PenColor & inData);
545 
546 
547 // 708 Pen Location - see CEA-708B pg 53
548 //
549 typedef struct CC708PenLocation
550 {
551  int row;
552  int column;
553 
554  explicit CC708PenLocation (const int inRow = 0, const int inColumn = 0);
555  inline bool IsValid (void) const {return row >= 0 && row <= 14 && column >= 0 && column <= 41;}
556  inline void Reset (void) {row = column = 0;}
557 
559 
560 
561 AJAExport std::ostream & operator << (std::ostream & inOutStream, const CC708PenLocation & inData);
562 
563 
584 
585 
587 {
588  // CLASS METHODS
589  public:
597  static bool Create (CNTV2CaptionEncoder708Ptr & outEncoder);
598 
599 
600  // INSTANCE METHODS
601  public:
602  virtual ~CNTV2CaptionEncoder708 ();
603 
604  virtual void Reset (void);
605 
606  // These methods build 708 messages in my mPacketData private buffer...
607  virtual void InitCaptionChannelPacket ();
608  virtual bool SetCaptionChannelPacket (const UBytePtr pInData, const size_t numBytes);
609  virtual inline UBytePtr GetCaptionChannelPacket (void) {return mPacketData;}
610  virtual inline const UByte * GetCaptionChannelPacket (void) const {return mPacketData;}
611  virtual inline size_t GetCaptionChannelPacketSize (void) const {return mPacketDataSize;}
612  virtual bool SetCaptionChannelPacketSize (size_t packetSize);
613 
614  virtual bool MakeCaptionChannelPacketHeader (const size_t index, size_t packetSize, size_t & outNewIndex);
615  virtual bool MakeNullServiceBlockHeader (size_t index, size_t & outNewIndex);
616  virtual bool MakeServiceBlockHeader (const size_t index, int serviceNum, const size_t blockSize, size_t & outNewIndex);
617  virtual bool MakeServiceBlockHeader (const size_t index, int serviceNum, const size_t blockSize);
618  virtual bool MakeServiceBlockCharData (const size_t index, UByte data, size_t & outNewIndex);
619 
620  virtual bool MakeDefineWindowCommand (const size_t index, int windowID, const CC708WindowParms & inParms, size_t & outNewIndex);
621  virtual bool MakeClearWindowsCommand (const size_t index, UByte windowMap, size_t & outNewIndex);
622  virtual bool MakeDeleteWindowsCommand (const size_t index, UByte windowMap, size_t & outNewIndex);
623  virtual bool MakeDisplayWindowsCommand (const size_t index, UByte windowMap, size_t & outNewIndex);
624  virtual bool MakeHideWindowsCommand (const size_t index, UByte windowMap, size_t & outNewIndex);
625  virtual bool MakeToggleWindowsCommand (const size_t index, UByte windowMap, size_t & outNewIndex);
626  virtual bool MakeSetCurrentWindowCommand (const size_t index, const int windowID, size_t & outNewIndex);
627  virtual bool MakeSetWindowAttributesCommand (const size_t index, const CC708WindowAttr & inAttr, size_t & outNewIndex);
628 
629  virtual bool MakeSetPenAttributesCommand (const size_t index, const CC708PenAttr & inAttr, size_t & outNewIndex);
630  virtual bool MakeSetPenColorCommand (const size_t index, const CC708PenColor & inColor, size_t & outNewIndex);
631  virtual bool MakeSetPenLocationCommand (const size_t index, const CC708PenLocation & inLoc, size_t & outNewIndex);
632 
633  virtual bool MakeDelayCommand (const size_t index, const UByte delay, size_t & outNewIndex);
634  virtual bool MakeDelayCancelCommand (const size_t index, size_t & outNewIndex);
635  virtual bool MakeResetCommand (const size_t index, size_t & outNewIndex);
636 
637 
638  // These methods build SMPTE 334 messages in my mAnc334Data private buffer...
639 
644  virtual bool Clear608CaptionData (void);
645 
652  virtual bool Set608CaptionData (const CaptionData & inCC608Data);
661  virtual bool Set608CaptionData (const NTV2Line21Field inField, const UByte inChar1, const UByte inChar2, const bool inGotData);
662 
673  virtual bool MakeSMPTE334AncPacket (const NTV2FrameRate inFrameRate, const NTV2Line21Field inVideoField);
674 
686  virtual bool MakeSMPTE334AncPacket (const NTV2FrameRate inFrameRate, const NTV2Line21Field inVideoField, UWordPtr & outAncPacketData, size_t & outSize);
687 
697  virtual bool MakeSMPTE334AncPacketFromCDP (const UBytePtr pInCDP, const size_t inCDPLength, UWordPtr & outAncPacketData, size_t & outSize);
698 
706  virtual bool MakeSMPTE334AncPacketFromCDP (const UBytePtr pInCDP, const size_t inCDPLength);
707 
708  virtual bool SetServiceInfoActive (int svcIndex, bool bActive);
709  virtual bool CopyAllServiceInfo (const NTV2_CC708ServiceData & inSrcSvcData);
710 
724  virtual bool InsertSMPTE334AncPacketInVideoFrame (void * pFrameBuffer,
725  const NTV2VideoFormat inVideoFormat,
726  const NTV2FrameBufferFormat inPixelFormat,
727  const ULWord inVancLineNumber,
728  const ULWord inWordOffset = 1) const;
729 
730  // DEBUG methods
731  virtual NTV2CaptionLogMask SetLogMask (const NTV2CaptionLogMask inLogMask);
732  virtual inline void Set608TestIDMode (const bool inEnableTestIDMode) { mFlip608Characters = inEnableTestIDMode; }
733 
734  virtual UWordSequence GetSMPTE334DataVector (void) const;
735  virtual const UWord * GetSMPTE334Data (void) const {return mAnc334Data;}
736  virtual size_t GetSMPTE334Size (void) const {return mAnc334Size;}
737 
738 
739  // Private Instance Methods
740  private:
741  virtual bool InsertSMPTE334AncHeader (size_t & inOutAncIndex, const UByte inDataCount);
742  virtual bool InsertSMPTE334AncFooter (size_t & inOutAncIndex, const size_t inAncStartIndex);
743  virtual bool InsertCDPHeader (size_t & inOutAncIndex, const NTV2FrameRate inFrameRate, const int cdpSeqNum);
744  virtual bool InsertCDPFooter (size_t & inOutAncIndex, const size_t cdpStartIndex, const int cdpSeqNum);
745  virtual bool InsertCDPData (size_t & inOutAncIndex, const NTV2FrameRate inFrameRate, const NTV2Line21Field inVideoField);
746  virtual bool InsertCDPDataTriplet (size_t & inOutAncIndex, const bool ccValid, const int ccType, const UByte data1, const UByte data2);
747  virtual bool InsertCDPServiceInfo (size_t & inOutAncIndex);
748 
749  explicit CNTV2CaptionEncoder708 ();
750  explicit CNTV2CaptionEncoder708 (const CNTV2CaptionEncoder708 & inEncoderToCopy);
751  virtual inline CNTV2CaptionEncoder708 & operator = (const CNTV2CaptionEncoder708 & inEncoderToCopy) {(void) inEncoderToCopy; return *this;}
752 
753 
754  // Private Class Methods
755  private:
756  static bool ConvertFrameRate (const NTV2FrameRate inNTV2FrameRate, size_t & outConverted, size_t & outNumCCPackets, size_t & outNum608Triplets);
757  static UByte CC608OddParity (UByte c);
758 
759 
760  // Instance Data
761  private:
762  CaptionData m608CaptionData;
763  UByte mPacketData [NTV2_CC708MaxPktSize];
764  size_t mPacketDataSize;
765  int mPacketSequenceNum;
766  UWord mAnc334Data [NTV2_CC708MaxAncSize];
767  size_t mAnc334Size;
768  UWord mCDPSequenceNum;
769  CNTV2Caption708ServiceInfo mServiceInfo;
770  int mNumServiceInfoPerCDP;
771  bool mFlip608Characters;
772 
773 }; // CNTV2CaptionEncoder708
774 
775 #endif // __NTV2_CEA708_ENCODER_
bool IsValid(void) const
struct NTV2_CC708CDPDataSection NTV2_CC708CDPDataSection
NTV2_CC708ServiceInfo svc_info[16]
struct NTV2_CC708CDPDataTriplet NTV2_CC708CDPDataTripletPtr
const bool NTV2_CC708RelativePos
bool IsValid(void) const
const bool NTV2_CC708NotVisible
int anchorH
0 - 127 (absolute position) or 0 - 99 (relative position)
const CC708Color NTV2_CC708BlueColor(NTV2_CC708ColorMin, NTV2_CC708ColorMin, NTV2_CC708ColorMax)
struct CC708Color CC708Color
const CC708Color NTV2_CC708CyanColor(NTV2_CC708ColorMin, NTV2_CC708ColorMax, NTV2_CC708ColorMax)
bool IsValid(void) const
const int NTV2_CC708ScreenCellWidth16x9
bool visible
NTV2_CC708NoLock/NTV2_CC708Lock.
const CC708Color NTV2_CC708GreenColor(NTV2_CC708ColorMin, NTV2_CC708ColorMax, NTV2_CC708ColorMin)
int windowStyleID
NTV2_CC708Visible/NTV2_CC708NotVisible.
const bool NTV2_CC708Lock
NTV2FrameBufferFormat
Identifies a particular video frame buffer pixel format. See Device Frame Buffer Formats for details...
Definition: ntv2enums.h:219
struct NTV2_CC708CDPDataSection * NTV2_CC708CDPDataSectionPtr
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
bool IsValid(void) const
const bool NTV2_CC708NoUnderline(false)
NTV2_CC708CDPTimecodeSection timecode_section
int colCount
number of rows - 1 (e.g. &#39;0&#39; = 1 row)
int anchorV
NTV2_CC708AbsolutePos/NTV2_CC708RelativePos.
bool IsValid(void) const
struct NTV2_CC708CDPServiceInfoSection NTV2_CC708CDPServiceInfoSection
struct NTV2_CC708CDP * NTV2_CC708CDPPtr
Defines the AJARefPtr template class.
void Clear(void)
virtual void Set608TestIDMode(const bool inEnableTestIDMode)
I am a container for all of the CEA-708 "Service Information" that a decoder or encoder needs to keep...
const size_t NTV2_CC708MaxPktSize
uint32_t ULWord
Definition: ajatypes.h:223
bool IsValid(void) const
const bool NTV2_CC708NoWordWrap
NTV2_CC708CDPDataSection ccdata_section
CC708PenLocation(const int inRow=0, const int inColumn=0)
virtual size_t GetSMPTE334Size(void) const
struct CC708WindowParms CC708WindowParms
const int NTV2_CC708ScreenCellHeight
const size_t NTV2_CC708_MaxCaptionChannelPacketSize
uint64_t NTV2CaptionLogMask
Selectors to control what information is logged.
virtual const UWord * GetSMPTE334Data(void) const
struct CC708PenLocation CC708PenLocation
NTV2FrameRate
Identifies a particular video frame rate.
Definition: ntv2enums.h:412
bool colLock
NTV2_CC708NoLock/NTV2_CC708Lock.
const bool NTV2_CC708AbsolutePos
void Clear(void)
struct NTV2_CC708CDPFooter NTV2_CC708CDPFooter
const bool NTV2_CC708WordWrap
const size_t NTV2_CC708MaxAncSize
void Clear(void)
int rowCount
0 - 255 (absolute position) or 0 - 99 (relative position)
struct NTV2_CC708CDPTimecodeSection NTV2_CC708CDPTimecodeSection
const CC708Color NTV2_CC708RedColor(NTV2_CC708ColorMax, NTV2_CC708ColorMin, NTV2_CC708ColorMin)
std::vector< uint16_t > UWordSequence
An ordered sequence of UWord (uint16_t) values.
bool rowLock
number of columns - 1 (e.g. &#39;0&#39; = 1 column)
CC708PenAttr()
Default constructor.
const bool NTV2_CC708Italics(true)
const bool NTV2_CC708NoLock
struct NTV2_CC708CDPHeader * NTV2_CC708CDPHeaderPtr
uint8_t UByte
Definition: ajatypes.h:218
std::ostream & operator<<(std::ostream &inOutStream, const CC708Color &inData)
struct NTV2_CC708CDPFooter * NTV2_CC708CDPFooterPtr
const bool NTV2_CC708NoItalics(false)
NTV2_CC708CDPServiceInfoSection ccsvcinfo_section
int anchorPt
NTV2_CC708WindowPriority enums.
AJARefPtr< CNTV2CaptionEncoder708 > CNTV2CaptionEncoder708Ptr
struct CC708PenColor CC708PenColor
struct NTV2_CC708CDPHeader NTV2_CC708CDPHeader
struct NTV2_CC708CDPServiceInfoSection * NTV2_CC708CDPServiceInfoSectionPtr
virtual UBytePtr GetCaptionChannelPacket(void)
struct NTV2_CC708CDPTimecodeSection * NTV2_CC708CDPTimecodeSectionPtr
int penStyleID
NTV2_CC708WindowStyleID enums.
#define AJAExport
Definition: export.h:33
virtual size_t GetCaptionChannelPacketSize(void) const
struct CC708WindowAttr CC708WindowAttr
This structure encapsulates all possible CEA-608 caption data bytes that may be associated with a giv...
void Clear(void)
const CC708Color NTV2_CC708WhiteColor
struct NTV2_CC708CDPDataTriplet NTV2_CC708CDPDataTriplet
const bool NTV2_CC708Underline(true)
uint16_t UWord
Definition: ajatypes.h:221
std::string NTV2_CC708OpacityToString(const NTV2_CC708Opacity inOpacity, const bool inCompact=false)
const int NTV2_CC708ScreenCellWidth4x3
struct NTV2_CC708CDP NTV2_CC708CDP
const CC708Color NTV2_CC708BlackColor(NTV2_CC708ColorMin, NTV2_CC708ColorMin, NTV2_CC708ColorMin)
const CC708Color NTV2_CC708MagentaColor(NTV2_CC708ColorMax, NTV2_CC708ColorMin, NTV2_CC708ColorMax)
CC708WindowParms()
NTV2_CC708PenStyleID enums.
NTV2_CC708CDPFooter cdp_footer
NTV2_CC708CDPHeader cdp_header
const bool NTV2_CC708Visible
virtual NTV2CaptionLogMask SetLogMask(const NTV2CaptionLogMask inLogMask)
Specifies what, if any, debug information I will write to my log stream.
const size_t NTV2_CC708_MaxServiceBlockSize
bool relativePos
NTV2_CC708WindowAnchorPoint enums.
struct CC708PenAttr CC708PenAttr
virtual const UByte * GetCaptionChannelPacket(void) const
Declares the CNTV2Caption708ServiceInfo class.
Declares several data types used with 608/SD captioning.
const int NTV2_CC708DefaultOpacity(NTV2_CC708OpacitySolid)
NTV2Line21Field
The two CEA-608 interlace fields.
UWord * UWordPtr
UByte * UBytePtr
NTV2_CC708CDPDataTriplet cc_data[32]
const CC708Color NTV2_CC708YellowColor(NTV2_CC708ColorMax, NTV2_CC708ColorMax, NTV2_CC708ColorMin)