This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM365 decode时,如何对付丢帧和误码?

当编码后的帧数据通过无线方式传送到接收端,难以避免丢帧和误码的情况。

 

我们发现基于DMAI接口的VDEC2_process()当出现帧内误码时,会导致原本应该

输出显示的帧数据没有输出,造成VDEC2使用的BufTab爆满,无法再通过Fifo_get()

获得新的译码空间,导致decode程序挂起。

 

请问这种情况下,应采取什么措施才能解决,让decode程序能够顺利的运行下去?

 

Best regard!  2012.2.23

  • 1. 这个基本属于解码端差错控制问题,应该抛弃数据,Seek到下一个IDR帧进行解码

  • 非常感谢您的回复,为解决问题指明了方向。

    我的理解解码端差错控制问题有两方面的解决策略:

    1) 堵截的办法。就像您说的,发现帧中有错误数据就抛弃,并seek到下一个IDR解码。如果对一帧的全部数据增加校验,代价较高,是否允许提取帧中的某些关键数据作FEC控制,只要保证关键数据的正确,就能确保解码器顺利完成一帧的解码,即使图像出现马赛克? 如果可行的话,帧中的哪些数据是关键数据?

    2)疏导的办法。当出现解码器BufTab爆满时,能否通过强制释放某些buffer的策略,让解码器能够正常运行下去而不至于

    挂在那里? 通过DMAI接口能够实现么,哪些函数可以完成这些功能?

    不好意思,问题有些复杂。还请您百忙中,稍微多点时间解答一下,方便的话最好提供一些参考资料,这些问题对于我们至关重要,且有线IP传输的情况下也有类似问题,因此具有典型意义。

     

    Best regard!

  • 1. 增强信道编码纠错能力

    2. 视频用多条带编码,解码器发现数据错误,就用前一个条带的参考数据

    3. 编码器设计的时候要参考标准文档的解码器缓冲区规范,这样就可以保证解码器的缓冲区不出现上溢出和下溢出

  • 非常感谢您的及时回复。

    您回复的第2条应该是解码器内部的处理吧,用户能干涉么?

    我们使用了TI提供的decode demo程序为解码器申请的缓冲区,在播放264文件时已经证明过是没问题的。

    现在我们发现,当输入到解码器的帧数据有问题时,可能导致解码器的缓冲区出现上溢。所以我们想采用

    两种策略或其一解决这个问题,提高解码器的容错能力。

    方法一:当发现解码器缓冲区上溢是,能否通过TI提供的DMAI接口释放部分缓冲区,让代码继续运行下去?

    方法二:为输入解码器缓冲区的帧数据中某些关键参数增加FEC保护,这些参数的正确能够确保解码器不会出现

    缓冲区上溢?

    DM365的解码器就像一个黑盒子,这方面的资料太少了。还请您稍微详细解释,不胜感激。

  • 求高人解答,自己顶!

  • 1. 简单的说,你必须保证你给TI的解码器的数据是正确的,TI的解码程序只会正确的解码,不会干别的,所以一切差错处理无论是信源还是信道还有缓冲区管理都必须你的应用程序去完成。

  • 感谢你的回复,从资料上看DM365的解码器还是有较强的抗干扰能力的,解码器通过不同的返回值指示译码结果。

    具体的说,当出现下面的情况:

        Vdec2_process()=Dmai_EBITERROR 且 Buffer_getNumBytesUsed()=0

    应用程序若不想退出,应如何处理 比较好?

    Thanks & Best regard!

x 出现错误。请重试或与管理员联系。