aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/subtitle.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-10-30 16:04:21 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-10-30 16:04:21 +0000
commit0e3e7773e5d8e7ff159316db3de7fcfad57bb9e8 (patch)
tree5c63acbc6e8d531d01b0ab8bf016f7b5ce08f4eb /lib/dvb/subtitle.cpp
parent59567589c05c2756dcf779cc24aa86becd63a68c (diff)
downloadenigma2-0e3e7773e5d8e7ff159316db3de7fcfad57bb9e8.tar.gz
enigma2-0e3e7773e5d8e7ff159316db3de7fcfad57bb9e8.zip
move subtitles selection to mainmenu, some subtitle fixes
Diffstat (limited to 'lib/dvb/subtitle.cpp')
-rw-r--r--lib/dvb/subtitle.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/lib/dvb/subtitle.cpp b/lib/dvb/subtitle.cpp
index 0058a51c..f9666bc0 100644
--- a/lib/dvb/subtitle.cpp
+++ b/lib/dvb/subtitle.cpp
@@ -287,13 +287,15 @@ int eDVBSubtitleParser::subtitle_process_segment(__u8 *segment)
segment_length |= *segment++;
if (segment_type == 0xFF)
return segment_length + 6;
+ if (page_id != m_composition_page_id && page_id != m_ancillary_page_id)
+ return segment_length + 6;
// //eDebug("have %d bytes of segment data", segment_length);
// //eDebug("page_id %d, segtype %02x", page_id, segment_type);
subtitle_page *page, **ppage;
- page = this->pages; ppage = &this->pages;
+ page = m_pages; ppage = &m_pages;
while (page)
{
@@ -727,7 +729,7 @@ int eDVBSubtitleParser::subtitle_process_segment(__u8 *segment)
void eDVBSubtitleParser::subtitle_process_pes(__u8 *pkt, int len)
{
// eDebug("subtitle_process_pes");
- if (!extract_pts(show_time, pkt))
+ if (!extract_pts(m_show_time, pkt))
{
pkt += 6; len -= 6;
// skip PES header
@@ -770,14 +772,14 @@ void eDVBSubtitleParser::subtitle_process_pes(__u8 *pkt, int len)
void eDVBSubtitleParser::subtitle_redraw_all()
{
#if 1
- subtitle_page *page = this->pages;
+ subtitle_page *page = m_pages;
while(page)
{
subtitle_redraw(page->page_id);
page = page->next;
}
#else
- subtitle_page *page = this->pages;
+ subtitle_page *page = m_pages;
//eDebug("----------- end of display set");
//eDebug("active pages:");
while (page)
@@ -819,7 +821,7 @@ void eDVBSubtitleParser::subtitle_redraw_all()
void eDVBSubtitleParser::subtitle_reset()
{
- while (subtitle_page *page = this->pages)
+ while (subtitle_page *page = m_pages)
{
/* free page regions */
while (page->page_regions)
@@ -859,14 +861,14 @@ void eDVBSubtitleParser::subtitle_reset()
delete clut;
}
- this->pages = page->next;
+ m_pages = page->next;
delete page;
}
}
void eDVBSubtitleParser::subtitle_redraw(int page_id)
{
- subtitle_page *page = this->pages;
+ subtitle_page *page = m_pages;
//eDebug("displaying page id %d", page_id);
@@ -887,7 +889,7 @@ void eDVBSubtitleParser::subtitle_redraw(int page_id)
subtitle_page_region *region = page->page_regions;
eDVBSubtitlePage Page;
- Page.m_show_time = show_time;
+ Page.m_show_time = m_show_time;
for (; region; region=region->next)
{
// eDebug("region %d", region->region_id);
@@ -905,8 +907,6 @@ void eDVBSubtitleParser::subtitle_redraw(int page_id)
int x0 = region->region_horizontal_address;
int y0 = region->region_vertical_address;
- int x1 = x0 + reg->region_width;
- int y1 = y0 + reg->region_height;
if ((x0 < 0) || (y0 < 0))
{
@@ -1098,7 +1098,7 @@ void eDVBSubtitleParser::subtitle_redraw(int page_id)
DEFINE_REF(eDVBSubtitleParser);
eDVBSubtitleParser::eDVBSubtitleParser(iDVBDemux *demux)
- :pages(0)
+ :m_pages(0)
{
setStreamID(0xBD);
@@ -1123,11 +1123,14 @@ int eDVBSubtitleParser::stop()
return -1;
}
-int eDVBSubtitleParser::start(int pid)
+int eDVBSubtitleParser::start(int pid, int composition_page_id, int ancillary_page_id)
{
if (m_pes_reader)
{
- eDebug("start dvb subtitles on pid 0x%04x", pid);
+ eDebug("start dvb subtitles on pid 0x%04x with composition_page_id %d and ancillary_page_id %d",
+ pid, composition_page_id, ancillary_page_id);
+ m_composition_page_id = composition_page_id;
+ m_ancillary_page_id = ancillary_page_id;
return m_pes_reader->start(pid);
}
return -1;