MythTV
master
libs
libmythtv
cc608reader.h
Go to the documentation of this file.
1
#ifndef CC608READER_H
2
#define CC608READER_H
3
4
#include <cstdint>
5
6
#include <QMutex>
7
8
#include "
cc608decoder.h
"
9
10
#include "
mythtvexp.h
"
11
12
#define MAXTBUFFER 60
13
#define MAXOUTBUFFERS (16 + 1)
14
15
class
CC608Text
16
{
17
public
:
18
CC608Text
(
const
QString &T,
int
X,
int
Y) :
19
text
(T),
x
(X),
y
(Y) {}
20
CC608Text
(
const
CC608Text
&other) :
21
text
(other.
text
),
x
(other.
x
),
y
(other.
y
) {}
22
QString
text
;
23
int
x
;
24
int
y
;
25
};
26
27
struct
TextContainer
28
{
29
int
timecode
;
30
int
len
;
31
unsigned
char
*
buffer
;
32
char
type
;
33
};
34
35
class
CC608Buffer
36
{
37
public
:
38
~CC608Buffer
(
void
) {
Clear
(); }
39
void
Clear
(
void
)
40
{
41
lock
.lock();
42
vector<CC608Text*>::iterator i =
buffers
.begin();
43
for
(; i !=
buffers
.end(); ++i)
44
{
45
CC608Text
*
cc
= (*i);
46
if
(
cc
)
47
delete
cc
;
48
}
49
buffers
.
clear
();
50
lock
.unlock();
51
}
52
53
QMutex
lock
;
54
vector<CC608Text*>
buffers
;
55
};
56
57
class
CC608StateTracker
58
{
59
public
:
60
CC608StateTracker
() :
61
m_outputText
(
""
),
m_outputCol
(0),
m_outputRow
(0),
m_changed
(
true
)
62
{
63
}
64
65
void
Clear
(
void
)
66
{
67
m_outputText
=
""
;
68
m_outputCol
= 0;
69
m_outputRow
= 0;
70
m_changed
=
true
;
71
m_output
.
Clear
();
72
}
73
74
QString
m_outputText
;
75
int
m_outputCol
;
76
int
m_outputRow
;
77
bool
m_changed
;
78
CC608Buffer
m_output
;
79
};
80
81
class
MythPlayer
;
82
83
class
MTV_PUBLIC
CC608Reader
:
public
CC608Input
84
{
85
public
:
86
explicit
CC608Reader
(
MythPlayer
*parent);
87
~
CC608Reader
();
88
89
void
SetTTPageNum
(
int
page) { m_ccPageNum = page; }
90
void
SetEnabled
(
bool
enable) { m_enabled = enable; }
91
void
FlushTxtBuffers(
void
);
92
CC608Buffer
*GetOutputText(
bool
&changed,
int
&streamIdx);
93
CC608Buffer
* GetOutputText(
bool
&changed);
94
void
SetMode(
int
mode);
95
void
ClearBuffers(
bool
input,
bool
output
,
int
outputStreamIdx = -1);
96
void
AddTextData
(
unsigned
char
*buf,
int
len,
97
int64_t timecode,
char
type
)
override
;
// CC608Input
98
void
TranscodeWriteText(
void
(*func)
99
(
void
*,
unsigned
char
*,
int
,
int
,
int
),
100
void
* ptr);
101
102
private
:
103
int
Update(
unsigned
char
*inpos);
104
void
Update608Text(vector<CC608Text*> *ccbuf,
105
int
replace = 0,
int
scroll = 0,
106
bool
scroll_prsv =
false
,
107
int
scroll_yoff = 0,
int
scroll_ymax = 15,
108
int
streamIdx =
CC_CC1
);
109
int
NumInputBuffers(
bool
need_to_lock =
true
);
110
111
MythPlayer
*
m_parent
;
112
bool
m_enabled
;
113
// Input buffers
114
int
m_readPosition
;
115
int
m_writePosition
;
116
QMutex
m_inputBufLock
;
117
int
m_maxTextSize
;
118
TextContainer
m_inputBuffers[
MAXTBUFFER
+1];
119
int
m_ccMode
;
120
int
m_ccPageNum
;
121
// Output buffers
122
CC608StateTracker
m_state[
MAXOUTBUFFERS
];
123
};
124
125
#endif // CC608READER_H
MythPlayer
Definition:
mythplayer.h:122
TextContainer::len
int len
Definition:
cc608reader.h:30
cc
Definition:
cc.h:13
true
VERBOSE_PREAMBLE Most true
Definition:
verbosedefs.h:91
CC608Reader::m_inputBufLock
QMutex m_inputBufLock
Definition:
cc608reader.h:116
CC608Text::CC608Text
CC608Text(const QString &T, int X, int Y)
Definition:
cc608reader.h:18
CC608Text
Definition:
cc608reader.h:15
CC608Reader
Definition:
cc608reader.h:83
CC608Buffer::buffers
vector< CC608Text * > buffers
Definition:
cc608reader.h:54
CC608Input::AddTextData
virtual void AddTextData(unsigned char *buf, int len, int64_t timecode, char type)=0
TextContainer::type
char type
Definition:
cc608reader.h:32
CC608Reader::m_writePosition
int m_writePosition
Definition:
cc608reader.h:115
CC608Reader::SetTTPageNum
void SetTTPageNum(int page)
Definition:
cc608reader.h:89
cc608decoder.h
CC608Text::text
QString text
Definition:
cc608reader.h:22
CC608Buffer::lock
QMutex lock
Definition:
cc608reader.h:53
buffers::clear
void clear()
Definition:
freesurround.cpp:60
CC608StateTracker::m_output
CC608Buffer m_output
Definition:
cc608reader.h:78
CC608Text::y
int y
Definition:
cc608reader.h:24
MTV_PUBLIC
#define MTV_PUBLIC
Definition:
mythtvexp.h:15
CC608Buffer::Clear
void Clear(void)
Definition:
cc608reader.h:39
CC608Reader::m_readPosition
int m_readPosition
Definition:
cc608reader.h:114
CC608StateTracker::m_changed
bool m_changed
Definition:
cc608reader.h:77
MAXOUTBUFFERS
#define MAXOUTBUFFERS
Definition:
cc608reader.h:13
CC608Reader::m_maxTextSize
int m_maxTextSize
Definition:
cc608reader.h:117
hardwareprofile.getLink.type
type
Definition:
getLink.py:55
CC_CC1
#define CC_CC1
Definition:
format.h:198
CC608Text::CC608Text
CC608Text(const CC608Text &other)
Definition:
cc608reader.h:20
CC608Buffer::~CC608Buffer
~CC608Buffer(void)
Definition:
cc608reader.h:38
CC608StateTracker::Clear
void Clear(void)
Definition:
cc608reader.h:65
MAXTBUFFER
#define MAXTBUFFER
Definition:
cc608reader.h:12
CC608StateTracker::m_outputRow
int m_outputRow
Definition:
cc608reader.h:76
CC608StateTracker::CC608StateTracker
CC608StateTracker()
Definition:
cc608reader.h:60
TextContainer
Definition:
cc608reader.h:27
CC608Input
Definition:
cc608decoder.h:18
TextContainer::buffer
unsigned char * buffer
Definition:
cc608reader.h:31
CC608StateTracker::m_outputCol
int m_outputCol
Definition:
cc608reader.h:75
CC608Buffer
Definition:
cc608reader.h:35
CC608Reader::m_ccMode
int m_ccMode
Definition:
cc608reader.h:119
buffers
Definition:
freesurround.cpp:50
CC608Text::x
int x
Definition:
cc608reader.h:23
CC608Reader::m_ccPageNum
int m_ccPageNum
Definition:
cc608reader.h:120
CC608StateTracker::m_outputText
QString m_outputText
Definition:
cc608reader.h:74
CC608Reader::m_enabled
bool m_enabled
Definition:
cc608reader.h:112
CC608StateTracker
Definition:
cc608reader.h:57
mythtvexp.h
CC608Reader::SetEnabled
void SetEnabled(bool enable)
Definition:
cc608reader.h:90
CC608Reader::m_parent
MythPlayer * m_parent
Definition:
cc608reader.h:111
output
#define output
Definition:
synaesthesia.cpp:244
TextContainer::timecode
int timecode
Definition:
cc608reader.h:29
Generated on Sat Oct 5 2019 05:30:13 for MythTV by
1.8.15