diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-10-30 16:04:21 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-10-30 16:04:21 +0000 |
| commit | 0e3e7773e5d8e7ff159316db3de7fcfad57bb9e8 (patch) | |
| tree | 5c63acbc6e8d531d01b0ab8bf016f7b5ce08f4eb /lib/dvb/subtitle.cpp | |
| parent | 59567589c05c2756dcf779cc24aa86becd63a68c (diff) | |
| download | enigma2-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.cpp | 29 |
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; |
