修改libdvbsi++彻底屏蔽TS流中的空EPG
浏览:2192
发布日期:2014-12-06
134亚太6号上的jw直播平台虽然没有提供有用的EPG,但其TS流中却携带了无效的空EPG信息,会覆盖DM正常加载的网络EPG信息,造成不便。
为解决这个问题,卫视界高手,本论坛的版主linking_dai和nx111都提出了各自的解决办法,主要是修改相关python代码,例如:
修改EventInfo.py
复制代码
- @@ -23,9 +23,12 @@
- service = self.navcore.getCurrentService()
- info = service and service.info()
- ret = info and info.getEvent(self.now_or_next)
- - if not ret and info:
- - refstr = info.getInfoString(iServiceInformation.sServiceref)
- - ret = self.epgQuery(eServiceReference(refstr), -1, self.now_or_next and 1 or 0)
- + if not ret or ret.getEventName() == "":
- + if info:
- + refstr = info.getInfoString(iServiceInformation.sServiceref)
- + ret = self.epgQuery(eServiceReference(refstr), -1, self.now_or_next and 1 or 0)
- + else:
- + ret = None
- return ret
- event = property(getEvent)
同时还要修改InfoBarGenerics.py
复制代码
- @@ -618,10 +618,10 @@
- service = self.session.nav.getCurrentService()
- info = service and service.info()
- ptr = info and info.getEvent(0)
- - if ptr:
- + if ptr and ptr.getEventName() != "":
- epglist.append(ptr)
- ptr = info and info.getEvent(1)
- - if ptr:
- + if ptr and ptr.getEventName() != "":
- epglist.append(ptr)
- self.epglist = epglist
但是由于Dreambox版本众多,升级频繁,这两个文件也经常被修改,简单的覆盖有可能会造成机器启动绿屏或其他问题,因此直接修改libdvbsi++,在源头上屏蔽TS流中的空EPG应该是一个更好、更彻底和简便的选择:
复制代码
- @@ -69,7 +69,7 @@
- uint16_t loopLength=0;
-
- while (bytesLeft > 11 && bytesLeft >= (loopLength = 12 + DVB_LENGTH(&buffer[pos+10]))) {
- - events.push_back(new Event(&buffer[pos]));
- + if (loopLength > 12) events.push_back(new Event(&buffer[pos]));
- bytesLeft -= loopLength;
- pos += loopLength;
- }
附上修改好的libdvbsi++安装包,适合DM800,DM8000等多种采用Enigma2的mipsel架构的机器
扫码下方或搜索关注公众号“卫星参数网”,独家内幕新闻!