AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ntv2captiontranslatorchannel608to708.h
Go to the documentation of this file.
1 
7 #ifndef __NTV2_CEA608to708_TRANSLATORCHANNEL_
8 #define __NTV2_CEA608to708_TRANSLATORCHANNEL_
9 
11 #include "ntv2captionencoder708.h"
13 
14 
15 #ifdef MSWindows
16  #include "windows.h"
17  #include "stdio.h"
18 #endif
19 
20 
21 // Number of 708 screen coordinate "cells" per 608 text row (i.e. 5)
23 
24 
25 const int NTV2_CC708DefaultPopOnWindowID = 0; // The first of NTV2_CC708NumPopOnWindows consecutive indices alternately used for PopOn mode
27 
31 
32 
33 // Default 608 Window Parms
37 
38 const int NTV2_CC708Default608PopOnWindowStyleID = 2; // Window Styles depend on mode
41 
42 const int NTV2_CC708Default608PopOnPenStyleID = 4; // Pen Styles depend on mode
45 
46 
47 // Default 608 Window Attributes
57 
58 
59 // Default 608 Pen Attributes
67 
68 
70 
71 
72 
73 // composite struct to hold status for each window
74 //
75 typedef struct CC708WindowStatus
76 {
77  bool bDefined;
78  bool bDirty;
84 
85 } CC708WindowStatus; // , *CC708WindowStatusPtr;
86 
87 
88 
123 
125 {
126  // CLASS METHODS
127  public:
128  static bool Create (CNTV2CaptionTranslatorChannel608to708Ptr & outInstance);
129 
130 
131  // INSTANCE METHODS
132  public:
134 
135  virtual void Reset (void);
136 
137  virtual void Set708ServiceNumber (int serviceNum);
138  virtual inline int Get708ServiceNumber (void) const {return m_708ServiceNum;}
139 
140  virtual void Set708TranslateEnable (bool enable);
141  virtual inline bool Get708TranslateEnable (void) const {return m_708TranslateEnable;}
142 
143  virtual bool SetChannel (const NTV2Line21Channel inChannel); // Override
144 
145 
146  virtual bool Init608CCWindowStatus (int winID, NTV2Line21Mode mode = NTV2_CC608_CapModePopOn);
147  virtual bool Init608CCWindowParms (CC708WindowParms & outParms, const NTV2Line21Mode inMode = NTV2_CC608_CapModePopOn) const;
148  virtual bool Init608CCWindowAttributes (CC708WindowAttr & outAttr, const NTV2Line21Mode inMode = NTV2_CC608_CapModePopOn) const;
149  virtual bool Init608CCPenAttributes (CC708PenAttr & outAttr, const NTV2Line21Mode inMode = NTV2_CC608_CapModePopOn) const;
150  virtual bool Init608CCPenColor (CC708PenColor & outColor, const NTV2Line21Mode inMode = NTV2_CC608_CapModePopOn) const;
151  virtual bool Init608CCPenLocation (CC708PenLocation & outLoc, const NTV2Line21Mode inMode = NTV2_CC608_CapModePopOn) const;
152 
153  virtual bool DeleteWindow (int winID);
154  virtual bool IsWindowDefined (const int winID) const;
155  virtual bool IsWindowDirty (const int winID) const;
156 
157  virtual bool GetCurrentEditWindowID (int * pWindowID = NULL, NTV2Line21Mode mode = NTV2_CC608_CapModeUnknown, bool * pbNewWindow = NULL);
158  virtual int GetCurrentModeWindowID (void);
159 
160  virtual bool GetNextServiceBlockInfoFromQueue (size_t & outBlockSize, size_t & outDataSize, int & outServiceNum, bool & outIsExtended);
161  virtual size_t GetNextServiceBlockFromQueue (UByte * pOutDataBuffer);
162  virtual size_t GetNextServiceBlockDataFromQueue (UByte * pOutDataBuffer);
163 
164 
165  // PROTECTED METHODS
166  protected:
167 
168  virtual bool Parse608CharacterData (UByte char608_1, UByte char608_2, std::string & outDebugStr);
169  virtual bool Parse608TabOffsetCommand (UByte char608_1, UByte char608_2, std::string & outDebugStr);
170  virtual bool Parse608CharacterSetCommand (UByte char608_1, UByte char608_2, std::string & outDebugStr);
171  virtual bool Parse608AttributeCommand (UByte char608_1, UByte char608_2, std::string & outDebugStr);
172  virtual bool Parse608PACCommand (UByte char608_1, UByte char608_2, std::string & outDebugStr);
173  virtual bool Parse608MidRowCommand (UByte char608_1, UByte char608_2, std::string & outDebugStr);
174  virtual bool Parse608SpecialCharacter (UByte char608_1, UByte char608_2, std::string & outDebugStr);
175 
176  virtual bool DoBackspace (void);
177  virtual bool DoDeleteToEndOfRow (void);
178  virtual bool DoRollUpCaption (const UWord inRowCount);
179  virtual bool DoFlashOn (void);
180  virtual bool DoTextRestart (void);
181  virtual bool DoResumeTextDisplay (void);
182  virtual bool DoEraseDisplayedMemory (void);
183  virtual bool DoCarriageReturn (void);
184  virtual bool DoEraseNonDisplayedMemory (void);
185  virtual bool DoEndOfCaption (void);
186 
187  virtual bool GetCurrentPenLocation (CC708PenLocation & outLoc, int inWindowID = NTV2_CC708WindowIDMin - 1) const;
188  virtual UWord GetWindowRowOffset (int windowID) const;
189  virtual bool GetCurrentPenColor (CC708PenColor & outColor) const;
190  virtual bool GetCurrentPenAttributes (CC708PenAttr & outAttr) const;
191 
192  static bool Convert608CharacterTo708 (const UByte inChar608, UByte & outChar708_1, UByte & outChar708_2);
193 
194  virtual bool QueueServiceBlock_CharacterData (int serviceNum, UByte ccChar);
195  virtual bool QueueServiceBlock_TwoByteData (int serviceNum, UByte ccChar1, UByte ccChar2);
196  virtual bool QueueServiceBlock_SetCurrentWindow (int serviceNum, int windowID);
197  virtual bool QueueServiceBlock_DefineWindow (const int inServiceNum, const int inWindowID, const CC708WindowParms & inParms);
198  virtual bool QueueServiceBlock_ClearWindows (int serviceNum, UByte windowMap);
199  virtual bool QueueServiceBlock_DeleteWindows (int serviceNum, UByte windowEnables);
200  virtual bool QueueServiceBlock_DisplayWindows (int serviceNum, UByte windowMap);
201  virtual bool QueueServiceBlock_HideWindows (int serviceNum, UByte windowMap);
202  virtual bool QueueServiceBlock_ToggleWindows (int serviceNum, UByte windowMap);
203  virtual bool QueueServiceBlock_SetWindowAttributes (const int inServiceNum, const CC708WindowAttr & inAttr);
204  virtual bool QueueServiceBlock_SetPenAttributes (const int inServiceNum, const CC708PenAttr & inAttr);
205  virtual bool QueueServiceBlock_SetPenColor (const int inServiceNum, const CC708PenColor & inColor);
206  virtual bool QueueServiceBlock_SetPenLocation (const int inServiceNum, const CC708PenLocation & pLoc);
207  virtual bool QueueServiceBlock_Delay (int serviceNum, const UByte delay);
208  virtual bool QueueServiceBlock_DelayCancel (int serviceNum);
209  virtual bool QueueServiceBlock_Reset (int serviceNum);
210 
211 
212  // PRIVATE METHODS
213  private:
214  // Hidden constructor, copy constructor, and assignment operator
218 
219 
220  // INSTANCE DATA
221  private:
222  int m_708ServiceNum;
223  int m_608PopOn_OnScreenWindowID;
224  int m_608PopOn_OffScreenWindowID;
225  int m_608RollUp_WindowID;
226  int m_608PaintOn_WindowID;
227  int m_608Text_WindowID;
228  int m_lastUsedWindowID;
229  bool m_708TranslateEnable;
230 
231  CC708WindowStatus m_windowStatus [NTV2_CC708NumWindows];
232  CNTV2CaptionEncoder708Ptr m_708Encoder;
233  CNTV2Caption708ServiceBlockQueue m_SvcBlockQueue;
234 
235 }; // CNTV2CaptionTranslatorChannel608to708
236 
237 #endif // __NTV2_CEA608to708_TRANSLATORCHANNEL_
virtual bool IsWindowDirty(const int winID) const
virtual bool Parse608MidRowCommand(UByte char608_1, UByte char608_2, std::string &outDebugStr)
const int NTV2_CC708Default608PrintDir
virtual bool QueueServiceBlock_DefineWindow(const int inServiceNum, const int inWindowID, const CC708WindowParms &inParms)
virtual bool Parse608PACCommand(UByte char608_1, UByte char608_2, std::string &outDebugStr)
AJARefPtr< CNTV2CaptionTranslatorChannel608to708 > CNTV2CaptionTranslatorChannel608to708Ptr
virtual bool IsWindowDefined(const int winID) const
Declares the CNTV2CaptionEncoder708 class.
#define NULL
virtual bool Parse608CharacterSetCommand(UByte char608_1, UByte char608_2, std::string &outDebugStr)
virtual size_t GetNextServiceBlockFromQueue(UByte *pOutDataBuffer)
const int NTV2_CC708Default608DisplayEffect
const int NTV2_CC708Default608PenSize
const bool NTV2_CC708NoUnderline(false)
virtual bool GetCurrentEditWindowID(int *pWindowID=0, NTV2Line21Mode mode=NTV2_CC608_CapModeUnknown, bool *pbNewWindow=0)
virtual bool QueueServiceBlock_TwoByteData(int serviceNum, UByte ccChar1, UByte ccChar2)
virtual bool Init608CCPenColor(CC708PenColor &outColor, const NTV2Line21Mode inMode=NTV2_CC608_CapModePopOn) const
Pop-on caption mode.
const int NTV2_CC708Default608PopOnPenStyleID
virtual size_t GetNextServiceBlockDataFromQueue(UByte *pOutDataBuffer)
I am a reference-counted pointer template class. I am intended to be a proxy for an underlying object...
Definition: ajarefptr.h:89
virtual bool QueueServiceBlock_SetPenLocation(const int inServiceNum, const CC708PenLocation &pLoc)
const int NTV2_CC708Default608PopOnWindowStyleID
const int NTV2_CC708DefaultRollUpAnchorV
const int NTV2_CC708Default608ScrollDir
virtual bool QueueServiceBlock_SetWindowAttributes(const int inServiceNum, const CC708WindowAttr &inAttr)
virtual UWord GetWindowRowOffset(int windowID) const
const bool NTV2_CC708NoWordWrap
const int NTV2_CC708DefaultPopOnWindowID
const int NTV2_CC708Default608WordWrap
Unknown or invalid caption mode.
virtual bool Parse608CharacterData(UByte char608_1, UByte char608_2, std::string &outDebugStr)
Declares the CNTV2Caption708ServiceBlockQueue class.
const int NTV2_CC708Default608TextPenStyleID
const int NTV2_CC708Default608FontStyle
virtual bool Init608CCWindowStatus(int winID, NTV2Line21Mode mode=NTV2_CC608_CapModePopOn)
const int NTV2_CC708Default608TextEffectSpeed
virtual bool DeleteWindow(int winID)
virtual bool Parse608SpecialCharacter(UByte char608_1, UByte char608_2, std::string &outDebugStr)
const int NTV2_CC708ScreenCellHeight
virtual bool QueueServiceBlock_Reset(int serviceNum)
virtual bool QueueServiceBlock_SetCurrentWindow(int serviceNum, int windowID)
const int NTV2_CC708Default608TextTag
virtual bool GetCurrentPenColor(CC708PenColor &outColor) const
virtual void Set708ServiceNumber(int serviceNum)
virtual bool DoEraseNonDisplayedMemory(void)
const int NTV2_CC608_TextRowHeight
const int NTV2_CC708Default608Justify
const int NTV2_CC708Default608Opacity
virtual bool Parse608AttributeCommand(UByte char608_1, UByte char608_2, std::string &outDebugStr)
virtual bool Init608CCWindowAttributes(CC708WindowAttr &outAttr, const NTV2Line21Mode inMode=NTV2_CC608_CapModePopOn) const
virtual bool Init608CCPenAttributes(CC708PenAttr &outAttr, const NTV2Line21Mode inMode=NTV2_CC608_CapModePopOn) const
virtual bool QueueServiceBlock_SetPenColor(const int inServiceNum, const CC708PenColor &inColor)
virtual bool QueueServiceBlock_HideWindows(int serviceNum, UByte windowMap)
virtual bool Init608CCWindowParms(CC708WindowParms &outParms, const NTV2Line21Mode inMode=NTV2_CC608_CapModePopOn) const
uint8_t UByte
Definition: ajatypes.h:218
static bool Create(CNTV2CaptionTranslatorChannel608to708Ptr &outInstance)
virtual bool QueueServiceBlock_DisplayWindows(int serviceNum, UByte windowMap)
const int NTV2_CC708DefaultPaintOnWindowID
const bool NTV2_CC708NoItalics(false)
virtual bool QueueServiceBlock_SetPenAttributes(const int inServiceNum, const CC708PenAttr &inAttr)
virtual bool QueueServiceBlock_DeleteWindows(int serviceNum, UByte windowEnables)
const int NTV2_CC708Default608WindowPriority
virtual void Set708TranslateEnable(bool enable)
const int NTV2_CC708Default608Italics
virtual bool GetCurrentPenLocation(CC708PenLocation &outLoc, int inWindowID=NTV2_CC708WindowIDMin - 1) const
virtual bool QueueServiceBlock_DelayCancel(int serviceNum)
static bool Convert608CharacterTo708(const UByte inChar608, UByte &outChar708_1, UByte &outChar708_2)
const int NTV2_CC708Default608PenEdgeType
virtual bool QueueServiceBlock_ToggleWindows(int serviceNum, UByte windowMap)
uint16_t UWord
Definition: ajatypes.h:221
Declares the CNTV2CaptionDecodeChannel608 class.
virtual bool Parse608TabOffsetCommand(UByte char608_1, UByte char608_2, std::string &outDebugStr)
virtual bool DoRollUpCaption(const UWord inRowCount)
const int NTV2_CC708Default608RollUpWindowStyleID
const int NTV2_CC708DefaultRollUpAnchorH
virtual bool GetCurrentPenAttributes(CC708PenAttr &outAttr) const
const int NTV2_CC708Default608EffectSpeed
virtual bool SetChannel(const NTV2Line21Channel inChannel)
Changes the caption channel that I handle.
const int NTV2_CC708Default608BorderType
const int NTV2_CC708Default608TextWindowStyleID
virtual bool GetNextServiceBlockInfoFromQueue(size_t &outBlockSize, size_t &outDataSize, int &outServiceNum, bool &outIsExtended)
bool bDirty
True if this window has been "defined" with a DefineWindow command.
virtual bool Init608CCPenLocation(CC708PenLocation &outLoc, const NTV2Line21Mode inMode=NTV2_CC608_CapModePopOn) const
NTV2Line21Mode
The CEA-608 modes: pop-on, roll-up (2, 3 and 4-line), and paint-on.
virtual bool QueueServiceBlock_CharacterData(int serviceNum, UByte ccChar)
const int NTV2_CC708DefaultRollUpWindowID
const UWord NTV2_CC608_MaxRow(15)
The maximum permissible row index number (located at the bottom of the screen).
const int NTV2_CC708DefaultTextWindowID
virtual bool DoEraseDisplayedMemory(void)
virtual bool QueueServiceBlock_Delay(int serviceNum, const UByte delay)
const int NTV2_CC708NumPopOnWindows
NTV2Line21Channel
The CEA-608 caption channels: CC1 thru CC4, TX1 thru TX4, plus XDS.
const int NTV2_CC708Default608Underline
const int NTV2_CC708Default608RollUpPenStyleID
virtual void Reset(void)
Restores my state – caption channel CC1, screen 0, cursor at row 15 column 1, pop-on mode...
I am a simple, thread-safe queue of CEA-708 caption service blocks.
CC708WindowParms windowParms
True if window has any content (i.e. characters) written to it.
virtual bool QueueServiceBlock_ClearWindows(int serviceNum, UByte windowMap)
const int NTV2_CC708Default608PenOffset
const int NTV2_CC708Default608EffectDir
struct CC708WindowStatus CC708WindowStatus