目前我用dm368编码,通过网络送出去,网络接收端有两种:
1 通过dm368解码
2 通过PC的ffmpeg解码
测试时发现,由于网络存在丢包问题,可能会导致码流部分丢失.这种情况下:
1 pc解码的容错很高,在网络很差的情况下,依然能够得到比较流畅的图像.
2 dm368解码的容错很差,网络稍有丢包,就会解码错误,给不出buff,导致显示卡顿非常严重.
我大概看了一下解码的配置,其中有个closed loop mode和universal mode,其中closed loop mode缓冲3个buff,universal mode缓存10个buff,是不是buff缓存越多,可参考的数据就越多,容错就越好?
请问有什么思路,可以提高dm368解码的容错率?
非常感谢!
Louis:
你好,
关于closed loop mode 与 universal mode的配置,在http://processors.wiki.ti.com/index.php/DM365_Codecs_FAQ,有如下的描述:
Why the word "closed" for some of the decoders?
Closed loop decoders can only decode stream encoded by the encoder of that corresponding device. It cannot decode any stream available under the supported profile and level.
个人认为buffer缓存的多少,对画面的流畅性确实有所帮助,尤其是在网络差的时候,增大缓存能够有效解决由于视频包接收延迟导致的画面不流畅问题,但是会增加视频播放的固定延迟。如果出现丢包,在解码端没有特殊的容错机制条件下,会出现画面解码错误以及色块花屏等现象,而通过已有的缓存数据,经过特殊的容错算法之后,是能够解决部分图像流畅性的问题的,当然缓存越多,容错算法越复杂,效果越好。
jun wang7:
回复 Louis:
你好:
我在项目遇到这样的问题,用dm368解海思ipc发现图像有马赛克,后来我将解码方式由close loop decoder mode改成universal decoder mode后,不会出现马赛克,但由于因为universal decoder mode下解码器需要同时10个buf,而close loop decoder mode只需要3个buf,这样我需要在av_caption_load.sh中分配更多的内存块,导致我系统内存不够。 请问,我改怎么处理,感谢答复!!
jun wang7:
你好!
你说的closed loop mode和universal mode,其中closed loop mode缓冲3个buff,universal mode缓存10个buff,这个buf个数能调整么? 在哪个配置中可以改的。因为,我在项目中用到universal mode,但是10个buf我内存分配不够,想改小一点,不知道在哪里改?
谢谢!