libdvbpsi1.0.0 pre2/pre3的一个小bug

    最近把libdvbpsi应用到了个人的dvb demo开发中,用来分析各种SI信息真是舒服之极,任何字段、描述符手到擒来,不用再一个字节一个字节的去扣详细信息。

    开始时一切顺利,在做NIT表分析时,却发现在大多数情况下,NIT携带的数据只能处理一小部分。查了一下,NIT表在我的网络里分为俩个section,dvbpsi收到last section后就调用了我的回调函数,而不管是否收齐了所有的section。经查,dvbpsi_decoder_psi_sections_completed函数用于判断一个table的section是否已经收齐,但其中的判断条件居然是只要有一个section的section number等于last section number,就认为table已经收齐...。这在基于数据轮播(Data Carousel)dvb网络里完全错误的做法,因为用户可能在任意时间点来接收SI信息,而且dvbpsi的section注入是以ts packet为单位的,在这时section信息尚未解析,使用者不可能严格按照section number的顺序注入ts数据。通过根开发组的沟通,并提出修改建议,很快有了回应并给出一个patch让我测试,结果顺利解决问题,修改将在官方的pre4版中发布。

    至此,也算是在开源世界出了一点力吧。

你可能感兴趣的:(libdvbpsi1.0.0 pre2/pre3的一个小bug)