From ff161a699c7894e548cd5d893b1f03485b24a1bd Mon Sep 17 00:00:00 2001 From: svenhoefer Date: Fri, 9 Aug 2013 11:04:26 +0200 Subject: [PATCH] - yweb: add PCR PID handling to live streaming ... ... and add PCR PID and PMT PID to streaminfo based on patches by Christian Schuett in Tuxbox Git --- src/nhttpd/tuxboxapi/coolstream/controlapi.cpp | 13 ++++++++++++- src/nhttpd/tuxboxapi/coolstream/neutrinoyparser.cpp | 7 ++++++- src/nhttpd/web/Y_StreamInfo.yhtm | 10 ++++++++++ src/nhttpd/web/Y_Version.txt | 4 ++-- src/nhttpd/web/languages/Deutsch | 2 ++ src/nhttpd/web/languages/English | 2 ++ 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp index c1a8ed2d2..e407d85bb 100644 --- a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp +++ b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp @@ -1737,7 +1737,8 @@ void CControlAPI::SendAllCurrentVAPid(CyhookHandler *hh) hh->printf("%05u vtxt\n",pids.PIDs.vtxtpid); if (pids.PIDs.pmtpid) hh->printf("%05u pmt\n",pids.PIDs.pmtpid); - + if (pids.PIDs.pcrpid) + hh->printf("%05u pcr\n",pids.PIDs.pcrpid); } //----------------------------------------------------------------------------- void CControlAPI::SendTimers(CyhookHandler *hh) @@ -2067,9 +2068,17 @@ void CControlAPI::YWeb_SendVideoStreamingPids(CyhookHandler *hh, int apid_no) if(!pids.APIDs.empty()) apid = pids.APIDs[apid_idx].pid; if(hh->ParamList["no_commas"] != "") + { hh->printf("0x%04x 0x%04x 0x%04x",pids.PIDs.pmtpid,pids.PIDs.vpid,apid); + if (pids.PIDs.pcrpid != pids.PIDs.vpid) + hh->printf(" 0x%04x", pids.PIDs.pcrpid); + } else + { hh->printf("0x%04x,0x%04x,0x%04x",pids.PIDs.pmtpid,pids.PIDs.vpid,apid); + if (pids.PIDs.pcrpid != pids.PIDs.vpid) + hh->printf(",0x%04x", pids.PIDs.pcrpid); + } } //----------------------------------------------------------------------------- @@ -2543,6 +2552,8 @@ void CControlAPI::build_live_url(CyhookHandler *hh) if(!pids.APIDs.empty()) apid = pids.APIDs[apid_idx].pid; xpids = string_printf("0x%04x,0x%04x,0x%04x",pids.PIDs.pmtpid,pids.PIDs.vpid,apid); + if (pids.PIDs.pcrpid != pids.PIDs.vpid) + xpids += string_printf(",0x%04x", pids.PIDs.pcrpid); } else if ( mode == CZapitClient::MODE_RADIO) { diff --git a/src/nhttpd/tuxboxapi/coolstream/neutrinoyparser.cpp b/src/nhttpd/tuxboxapi/coolstream/neutrinoyparser.cpp index a3489f34a..fa62bb6ad 100644 --- a/src/nhttpd/tuxboxapi/coolstream/neutrinoyparser.cpp +++ b/src/nhttpd/tuxboxapi/coolstream/neutrinoyparser.cpp @@ -520,6 +520,7 @@ std::string CNeutrinoYParser::func_get_mode(CyhookHandler *, std::string) //------------------------------------------------------------------------- std::string CNeutrinoYParser::func_get_video_pids(CyhookHandler *, std::string para) { + std::string yresult; CZapitClient::responseGetPIDs pids; int apid=0,apid_no=0,apid_idx=0; pids.PIDs.vpid=0; @@ -532,7 +533,10 @@ std::string CNeutrinoYParser::func_get_video_pids(CyhookHandler *, std::string apid_idx=apid_no; if(!pids.APIDs.empty()) apid = pids.APIDs[apid_idx].pid; - return string_printf("0x%04x,0x%04x,0x%04x",pids.PIDs.pmtpid,pids.PIDs.vpid,apid); + yresult = string_printf("0x%04x,0x%04x,0x%04x", pids.PIDs.pmtpid, pids.PIDs.vpid, apid); + if (pids.PIDs.pcrpid != pids.PIDs.vpid) + yresult += string_printf(",0x%04x", pids.PIDs.pcrpid); + return yresult; } //------------------------------------------------------------------------- // y-func : get_radio_pids (returns: 0x0000) @@ -738,6 +742,7 @@ std::string CNeutrinoYParser::func_get_current_stream_info(CyhookHandler *hh, s hh->ParamList["apid"] = itoh(serviceinfo.apid); hh->ParamList["vtxtpid"] = (serviceinfo.vtxtpid != 0)?itoh(serviceinfo.vtxtpid):"not available"; hh->ParamList["pmtpid"] = (serviceinfo.pmtpid != 0)?itoh(serviceinfo.pmtpid):"not available"; + hh->ParamList["pcrpid"] = (serviceinfo.pcrpid != 0)?itoh(serviceinfo.pcrpid):"not available"; hh->ParamList["tsfrequency"] = string_printf("%d.%d MHz", serviceinfo.tsfrequency/1000, serviceinfo.tsfrequency%1000); hh->ParamList["polarisation"] = serviceinfo.polarisation==1?"h":"v"; hh->ParamList["ServiceName"] = NeutrinoAPI->GetServiceName(CZapit::getInstance()->GetCurrentChannelID()); diff --git a/src/nhttpd/web/Y_StreamInfo.yhtm b/src/nhttpd/web/Y_StreamInfo.yhtm index d554b0417..944651899 100644 --- a/src/nhttpd/web/Y_StreamInfo.yhtm +++ b/src/nhttpd/web/Y_StreamInfo.yhtm @@ -79,6 +79,16 @@  
{=vpid=}
+ + {=L:epg.si.pcrpid=}: +   +
{=pcrpid=}
+ + + {=L:epg.si.pmtpid=}: +   +
{=pmtpid=}
+ {=L:epg.si.apid=}:   diff --git a/src/nhttpd/web/Y_Version.txt b/src/nhttpd/web/Y_Version.txt index 5698d1a0b..173750aaa 100644 --- a/src/nhttpd/web/Y_Version.txt +++ b/src/nhttpd/web/Y_Version.txt @@ -1,4 +1,4 @@ -version=2.8.0.43 -date=07.07.2013 +version=2.8.0.44 +date=09.08.2013 type=Release info=Port CST diff --git a/src/nhttpd/web/languages/Deutsch b/src/nhttpd/web/languages/Deutsch index f17d79614..dd6d71641 100644 --- a/src/nhttpd/web/languages/Deutsch +++ b/src/nhttpd/web/languages/Deutsch @@ -196,6 +196,8 @@ epg.si.onid=Original Network ID epg.si.sid=Service ID epg.si.tsid=Transponder Stream ID epg.si.vpid=Video PID +epg.si.pmtpid=Program Map Table PID +epg.si.pcrpid=Program Clock Reference PID epg.si.apid=Audio PID epg.si.vtxtpid=Teletext PID epg.si.crypt=Crypt Systeme diff --git a/src/nhttpd/web/languages/English b/src/nhttpd/web/languages/English index d9ae7c8d2..c5ff7241a 100644 --- a/src/nhttpd/web/languages/English +++ b/src/nhttpd/web/languages/English @@ -199,6 +199,8 @@ epg.si.onid=Original Network ID epg.si.sid=Service ID epg.si.tsid=Transponder Stream ID epg.si.vpid=Video PID +epg.si.pmtpid=Program Map Table PID +epg.si.pcrpid=Program Clock Reference PID epg.si.apid=Audio PID epg.si.vtxtpid=Teletext PID epg.si.crypt=Crypt systems