1/******************************************************************************
2/
3/	File:			CC.h
4/
5/	Description:	Closed caption module.
6/
7/	Copyright 2001, Carlos Hasan
8/
9*******************************************************************************/
10
11#ifndef __CC_H__
12#define __CC_H__
13
14#include "Capture.h"
15
16enum cc_mode {
17	C_RADEON_CC1	= 0,
18	C_RADEON_CC2	= 1,
19	C_RADEON_CC3	= 2,
20	C_RADEON_CC4	= 3
21};
22
23enum cc_window {
24	C_RADEON_CC_VBI_LINE_WIDTH	= 2048,
25	C_RADEON_CC_BLANK_START		= 4*112,
26	C_RADEON_CC_VBI_LINE_NUMBER	= 19,
27	C_RADEON_CC_BIT_DURATION 	= 56,
28	C_RADEON_CC_BITS_PER_FIELD	= 16,
29	C_RADEON_CC_LEVEL_THRESHOLD = 32,
30
31	C_RADEON_CC_LINE			= 21,
32
33	C_RADEON_CC_CHANNELS		= 4,
34	C_RADEON_CC_ROWS			= 15,
35	C_RADEON_CC_COLUMNS			= 32
36};
37
38class CCaption {
39public:
40	CCaption(CCapture & capture);
41
42	~CCaption();
43
44	status_t InitCheck() const;
45
46	void SetMode(cc_mode mode);
47
48	bool Decode(const unsigned char * buffer0,
49				const unsigned char * buffer1);
50
51private:
52	bool DecodeBits(const unsigned char * buffer, int & data);
53
54	void DisplayCaptions() const;
55
56private:
57	CCapture & fCapture;
58	cc_mode fChannel;
59	int fRow;
60	int fColumn;
61	int fColor;
62	int fLastControlCode;
63	short fText[C_RADEON_CC_ROWS][C_RADEON_CC_COLUMNS];
64	short fDisplayText[C_RADEON_CC_ROWS][C_RADEON_CC_COLUMNS];
65};
66
67#endif
68