diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2009-07-26 15:34:59 +0200 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2009-07-26 15:34:59 +0200 |
| commit | 5f86d0acf1899cc89ae37ae4c906b4a2d3f9cff5 (patch) | |
| tree | 53edea26b0d176d9e18c3ccb04de9a051e679bb4 /lib/dvb/subtitle.cpp | |
| parent | 5c098e9eadf42ec0e333c5d5c954ee408d9127e4 (diff) | |
| download | enigma2-5f86d0acf1899cc89ae37ae4c906b4a2d3f9cff5.tar.gz enigma2-5f86d0acf1899cc89ae37ae4c906b4a2d3f9cff5.zip | |
subtitle.cpp/h: small fixes
Diffstat (limited to 'lib/dvb/subtitle.cpp')
| -rw-r--r-- | lib/dvb/subtitle.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/dvb/subtitle.cpp b/lib/dvb/subtitle.cpp index 3787ab1b..2fe093eb 100644 --- a/lib/dvb/subtitle.cpp +++ b/lib/dvb/subtitle.cpp @@ -747,6 +747,7 @@ int eDVBSubtitleParser::subtitle_process_segment(__u8 *segment) { //eDebug("end of display set segment"); subtitle_redraw_all(); + m_seen_eod = true; } case 0xFF: // stuffing break; @@ -786,6 +787,8 @@ void eDVBSubtitleParser::subtitle_process_pes(__u8 *pkt, int len) return; } + m_seen_eod = false; + while (len && *pkt == 0x0F) { int l = subtitle_process_segment(pkt); @@ -794,11 +797,15 @@ void eDVBSubtitleParser::subtitle_process_pes(__u8 *pkt, int len) pkt += l; len -= l; } + if (len && *pkt != 0xFF) eDebug("strange data at the end"); + + if (!m_seen_eod) + subtitle_redraw_all(); } else - eDebug("\ndvb subtitle packet without PTS.. ignore!!"); + eDebug(""); } void eDVBSubtitleParser::subtitle_redraw_all() @@ -972,7 +979,8 @@ void eDVBSubtitleParser::subtitle_redraw(int page_id) { case subtitle_region::bpp2: // eDebug("2BPP"); - entries = clut->entries_2bit; + if (clut) + entries = clut->entries_2bit; memset(palette, 0, 4*sizeof(gRGB)); palette[0].a = 0xFF; palette[2].r = palette[2].g = palette[2].b = 0xFF; @@ -980,7 +988,8 @@ void eDVBSubtitleParser::subtitle_redraw(int page_id) break; case subtitle_region::bpp4: // eDebug("4BPP"); - entries = clut->entries_4bit; + if (clut) + entries = clut->entries_4bit; memset(palette, 0, 16*sizeof(gRGB)); for (int i=0; i < 16; ++i) { @@ -1008,8 +1017,9 @@ void eDVBSubtitleParser::subtitle_redraw(int page_id) break; case subtitle_region::bpp8: // eDebug("8BPP"); - entries = clut->entries_8bit; - memset(palette, 0, 16*sizeof(gRGB)); + if (clut) + entries = clut->entries_8bit; + memset(palette, 0, 256*sizeof(gRGB)); for (int i=0; i < 256; ++i) { switch (i & 17) @@ -1072,7 +1082,7 @@ void eDVBSubtitleParser::subtitle_redraw(int page_id) break; } - if (clut) + if (entries) { for (int i=0; i<clut_size; ++i) { |
