00001
00002
00003
00004 #ifndef CC708DECODER_H_
00005 #define CC708DECODER_H_
00006
00007 #include <stdint.h>
00008
00009 #include <qstringlist.h>
00010
00011 #include "format.h"
00012 #include "compat.h"
00013
00014 #ifndef __CC_CALLBACKS_H__
00015
00016 typedef struct CaptionPacket
00017 {
00018 unsigned char data[128+16];
00019 int size;
00020 } CaptionPacket;
00021 #endif
00022
00023 class CC708Reader
00024 {
00025 public:
00026 CC708Reader();
00027 virtual ~CC708Reader();
00028
00029
00030 virtual void SetCurrentWindow(uint service_num, int window_id) = 0;
00031 virtual void DefineWindow(uint service_num, int window_id,
00032 int priority, int visible,
00033 int anchor_point, int relative_pos,
00034 int anchor_vertical, int anchor_horizontal,
00035 int row_count, int column_count,
00036 int row_lock, int column_lock,
00037 int pen_style, int window_style) = 0;
00038 virtual void DeleteWindows( uint service_num, int window_map) = 0;
00039 virtual void DisplayWindows(uint service_num, int window_map) = 0;
00040 virtual void HideWindows( uint service_num, int window_map) = 0;
00041 virtual void ClearWindows( uint service_num, int window_map) = 0;
00042 virtual void ToggleWindows( uint service_num, int window_map) = 0;
00043 virtual void SetWindowAttributes(uint service_num,
00044 int fill_color, int fill_opacity,
00045 int border_color, int border_type,
00046 int scroll_dir, int print_dir,
00047 int effect_dir,
00048 int display_effect, int effect_speed,
00049 int justify, int word_wrap) = 0;
00050
00051
00052 virtual void SetPenAttributes(uint service_num,
00053 int pen_size, int offset,
00054 int text_tag, int font_tag,
00055 int edge_type,
00056 int underline, int italics) = 0;
00057 virtual void SetPenColor(uint service_num,
00058 int fg_color, int fg_opacity,
00059 int bg_color, int bg_opacity,
00060 int edge_color) = 0;
00061 virtual void SetPenLocation(uint service_num, int row, int column) = 0;
00062
00063
00064 virtual void Delay(uint service_num, int tenths_of_seconds) = 0;
00065 virtual void DelayCancel(uint service_num) = 0;
00066 virtual void Reset(uint service_num) = 0;
00067
00068
00069 virtual void TextWrite(uint service_num,
00070 short* unicode_string, short len) = 0;
00071
00072
00073 unsigned char* buf[64];
00074 uint buf_alloc[64];
00075 uint buf_size[64];
00076 bool delayed[64];
00077
00078 short* temp_str[64];
00079 int temp_str_alloc[64];
00080 int temp_str_size[64];
00081 };
00082
00083 class CC708Decoder
00084 {
00085 public:
00086 CC708Decoder(CC708Reader *ccr) : reader(ccr)
00087 { bzero(&partialPacket, sizeof(CaptionPacket)); }
00088 ~CC708Decoder() {}
00089
00090 void decode_cc_data(uint cc_type, uint data1, uint data2);
00091
00092 private:
00093 CaptionPacket partialPacket;
00094 CC708Reader *reader;
00095 };
00096
00097 #endif // CC708DECODER_H_