7 #ifndef __NTV2_CEA708_ENCODER_ 8 #define __NTV2_CEA708_ENCODER_ 27 #define ServiceBlockHeaderSize(svcNum) (svcNum <= 6 ? 1 : 2) 555 inline bool IsValid (
void)
const {
return row >= 0 && row <= 14 && column >= 0 &&
column <= 41;}
604 virtual void Reset (
void);
607 virtual void InitCaptionChannelPacket ();
608 virtual bool SetCaptionChannelPacket (
const UBytePtr pInData,
const size_t numBytes);
612 virtual bool SetCaptionChannelPacketSize (
size_t packetSize);
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);
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);
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);
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);
644 virtual bool Clear608CaptionData (
void);
652 virtual bool Set608CaptionData (
const CaptionData & inCC608Data);
661 virtual bool Set608CaptionData (
const NTV2Line21Field inField,
const UByte inChar1,
const UByte inChar2,
const bool inGotData);
697 virtual bool MakeSMPTE334AncPacketFromCDP (
const UBytePtr pInCDP,
const size_t inCDPLength,
UWordPtr & outAncPacketData,
size_t & outSize);
706 virtual bool MakeSMPTE334AncPacketFromCDP (
const UBytePtr pInCDP,
const size_t inCDPLength);
708 virtual bool SetServiceInfoActive (
int svcIndex,
bool bActive);
724 virtual bool InsertSMPTE334AncPacketInVideoFrame (
void * pFrameBuffer,
727 const ULWord inVancLineNumber,
728 const ULWord inWordOffset = 1)
const;
732 virtual inline void Set608TestIDMode (
const bool inEnableTestIDMode) { mFlip608Characters = inEnableTestIDMode; }
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);
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);
756 static bool ConvertFrameRate (
const NTV2FrameRate inNTV2FrameRate,
size_t & outConverted,
size_t & outNumCCPackets,
size_t & outNum608Triplets);
764 size_t mPacketDataSize;
765 int mPacketSequenceNum;
768 UWord mCDPSequenceNum;
770 int mNumServiceInfoPerCDP;
771 bool mFlip608Characters;
775 #endif // __NTV2_CEA708_ENCODER_
struct NTV2_CC708CDPDataSection NTV2_CC708CDPDataSection
NTV2_CC708ServiceInfo svc_info[16]
struct NTV2_CC708CDPDataTriplet NTV2_CC708CDPDataTripletPtr
const bool NTV2_CC708RelativePos
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)
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...
struct NTV2_CC708CDPDataSection * NTV2_CC708CDPDataSectionPtr
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
const bool NTV2_CC708NoUnderline(false)
NTV2_CC708CDPTimecodeSection timecode_section
int colCount
number of rows - 1 (e.g. '0' = 1 row)
int anchorV
NTV2_CC708AbsolutePos/NTV2_CC708RelativePos.
struct NTV2_CC708CDPServiceInfoSection NTV2_CC708CDPServiceInfoSection
struct NTV2_CC708CDP * NTV2_CC708CDPPtr
Defines the AJARefPtr template class.
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
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.
bool colLock
NTV2_CC708NoLock/NTV2_CC708Lock.
const bool NTV2_CC708AbsolutePos
struct NTV2_CC708CDPFooter NTV2_CC708CDPFooter
const bool NTV2_CC708WordWrap
const size_t NTV2_CC708MaxAncSize
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. '0' = 1 column)
CC708PenAttr()
Default constructor.
const bool NTV2_CC708Italics(true)
const bool NTV2_CC708NoLock
struct NTV2_CC708CDPHeader * NTV2_CC708CDPHeaderPtr
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)
UByte time_code_section_id
struct NTV2_CC708CDPTimecodeSection * NTV2_CC708CDPTimecodeSectionPtr
int penStyleID
NTV2_CC708WindowStyleID enums.
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...
const CC708Color NTV2_CC708WhiteColor
struct NTV2_CC708CDPDataTriplet NTV2_CC708CDPDataTriplet
const bool NTV2_CC708Underline(true)
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.
NTV2_CC708CDPDataTriplet cc_data[32]
const CC708Color NTV2_CC708YellowColor(NTV2_CC708ColorMax, NTV2_CC708ColorMax, NTV2_CC708ColorMin)