X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/894e18128f153afdf0b6ab1785a98b32efa6d798..4d7f4836f07bb037bc1c840983e5ef1c99606005:/lib/dvb/teletext.cpp diff --git a/lib/dvb/teletext.cpp b/lib/dvb/teletext.cpp index 7cef7b28..40650c01 100644 --- a/lib/dvb/teletext.cpp +++ b/lib/dvb/teletext.cpp @@ -287,7 +287,7 @@ void eDVBTeletextParser::processPESPacket(__u8 *pkt, int len) if ((serial_mode || M == m_page_M) && m_page_open) { eDebug("Page End %d %lld", !have_pts, pts); - handlePageEnd(have_pts, pts); + handlePageEnd(!have_pts, pts); m_page_open = 0; } @@ -486,6 +486,7 @@ void eDVBTeletextParser::handlePageStart() } // else // eDebug("no erase flag set!"); + m_current_source_line = -1; } void eDVBTeletextParser::handleLine(unsigned char *data, int len) @@ -494,6 +495,9 @@ void eDVBTeletextParser::handleLine(unsigned char *data, int len) for (int i=0; i> 7) & 0xF]; + nat_subset = NationalOptionSubsetsLookup[(m_X28_t1 >> 7) & 0x7F]; nat_subset_2 = NationalOptionSubsetsLookup[((m_X28_t1 >> 14) & 0xF) | ((m_X28_t2 & 7) << 4)]; // eDebug("X/28/0 nat_subset %d, nat_subset2 %d", nat_subset, nat_subset_2); } else if (m_M29_0_valid) { - nat_subset = NationalOptionSubsetsLookup[(m_M29_t1 >> 7) & 0xF]; + nat_subset = NationalOptionSubsetsLookup[(m_M29_t1 >> 7) & 0x7F]; nat_subset_2 = NationalOptionSubsetsLookup[((m_M29_t1 >> 14) & 0xF) | ((m_M29_t2 & 7) << 4)]; // eDebug("M/29/0 nat_subset %d, nat_subset2 %d", nat_subset, nat_subset_2); } @@ -574,7 +578,7 @@ void eDVBTeletextParser::handleLine(unsigned char *data, int len) { if (b != color) /* new color is split into a new string */ { - addSubtitleString(color, std::string((const char*)out, outidx)); + addSubtitleString(color, std::string((const char*)out, outidx), m_Y); outidx = 0; color = b; } @@ -618,13 +622,13 @@ void eDVBTeletextParser::handleLine(unsigned char *data, int len) } } // eDebug(""); - addSubtitleString(color, std::string((const char*)out, outidx)); + addSubtitleString(color, std::string((const char*)out, outidx), m_Y); } void eDVBTeletextParser::handlePageEnd(int have_pts, const pts_t &pts) { // eDebug("handle page end"); - addSubtitleString(-2, ""); /* end last line */ + addSubtitleString(-2, "", -1); /* end last line */ m_subtitle_page.m_have_pts = have_pts; m_subtitle_page.m_pts = pts; @@ -653,7 +657,7 @@ void eDVBTeletextParser::connectNewPage(const Slot1= 0) + m_subtitle_color = color; m_subtitle_text += string; } } @@ -685,11 +694,10 @@ void eDVBTeletextParser::addSubtitleString(int color, std::string string) void eDVBTeletextParser::sendSubtitlePage() { // eDebug("subtitle page:"); - bool empty=true; - if (empty) - for (unsigned int i = 0; i < m_subtitle_page.m_elements.size(); ++i) - if (!m_subtitle_page.m_elements[i].m_text.empty()) - empty=false; - if (!empty) + bool send=m_C & (1<<4); + for (unsigned int i = 0; i < m_subtitle_page.m_elements.size(); ++i) + if (!m_subtitle_page.m_elements[i].m_text.empty()) + send=true; + if (send) m_new_subtitle_page(m_subtitle_page); }