X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/37bac1d63115720ca83f064e0e4f5426271fc364..aabe98bebb2aa90435f5124c6151d718d18dfcd5:/lib/dvb/pmt.cpp diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index e1aa096d..fb81fa4c 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -214,7 +214,7 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) ElementaryStreamInfoConstIterator es; for (es = pmt.getEsInfo()->begin(); es != pmt.getEsInfo()->end(); ++es) { - int isaudio = 0, isvideo = 0, issubtitle = 0, forced_video = 0, forced_audio = 0; + int isaudio = 0, isvideo = 0, issubtitle = 0, forced_video = 0, forced_audio = 0, isteletext = 0; videoStream video; audioStream audio; audio.component_tag=video.component_tag=-1; @@ -342,6 +342,7 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) s.subtitling_type = 0x01; // EBU TELETEXT SUBTITLES s.pid = program.textPid = (*es)->getPid(); TeletextDescriptor *d = (TeletextDescriptor*)(*desc); + isteletext = 1; const VbiTeletextList *list = d->getVbiTeletexts(); for (VbiTeletextConstIterator it(list->begin()); it != list->end(); ++it) { @@ -399,9 +400,9 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) case 0x56432d31: // == 'VC-1' { const AdditionalIdentificationInfoVector *vec = d->getAdditionalIdentificationInfo(); - if (vec->size() > 1 && (*vec)[1] == 0x01) // subdescriptor tag + if (vec->size() > 1 && (*vec)[0] == 0x01) // subdescriptor tag { - if ((*vec)[2] >= 0x90) // profile_level + if ((*vec)[1] >= 0x90) // profile_level video.type = videoStream::vtVC1; // advanced profile else video.type = videoStream::vtVC1_SM; // simple main @@ -460,11 +461,16 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) default: break; } - if (issubtitle && (isaudio || isvideo)) + if (isteletext && (isaudio || isvideo)) + { + eDebug("ambiguous streamtype for PID %04x detected.. forced as teletext!", (*es)->getPid()); + continue; // continue with next PID + } + else if (issubtitle && (isaudio || isvideo)) eDebug("ambiguous streamtype for PID %04x detected.. forced as subtitle!", (*es)->getPid()); else if (isaudio && isvideo) eDebug("ambiguous streamtype for PID %04x detected.. forced as video!", (*es)->getPid()); - if (issubtitle) + if (issubtitle) // continue with next PID continue; else if (isvideo) {