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)
{
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
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)
void eDVBSubtitleParser::subtitle_reset()
{
- while (subtitle_page *page = this->pages)
+ while (subtitle_page *page = m_pages)
{
/* free page regions */
while (page->page_regions)
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);
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);
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))
{
DEFINE_REF(eDVBSubtitleParser);
eDVBSubtitleParser::eDVBSubtitleParser(iDVBDemux *demux)
- :pages(0)
+ :m_pages(0)
{
setStreamID(0xBD);
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;