Toybrick

标题: ffmpeg 拉流 mpp 解码 运行一段时间解码器被重置 [打印本页]

作者: czcl    时间: 2021-11-12 16:20
标题: ffmpeg 拉流 mpp 解码 运行一段时间解码器被重置
ffmpeg 拉流

mpp 解码

运行一段时间解码器被重置,ffmpeg端设置tcp方式拉流
                                               mpp 端设置自动拼包模式

通过dmesg -wH  命令监控日志发现,解码器被重置了。
但是代码中没有重置的逻辑,而且也没有发现有丢包的问题,保证输入的都是h264的包(已经手动添加校验)
报错函数:
mpp_frame_get_errinfo  返回结果是1





内核消息如下:

[Nov12 16:16] rk-vcodec ff660000.rkvdec: resetting...
[  +0.005128] rk-vcodec ff660000.rkvdec: reset done
[  +0.005036] rk-vcodec ff660000.rkvdec: reset done
[ +16.114366] rk-vcodec ff660000.rkvdec: resetting...
[  +0.005163] rk-vcodec ff660000.rkvdec: reset done
[  +0.007395] rk-vcodec ff660000.rkvdec: reset done
[ +27.869316] rk-vcodec ff660000.rkvdec: resetting...
[  +0.005158] rk-vcodec ff660000.rkvdec: reset done
[  +0.005198] rk-vcodec ff660000.rkvdec: reset done
[Nov12 16:17] rk-vcodec ff660000.rkvdec: resetting...
[  +0.005159] rk-vcodec ff660000.rkvdec: reset done
[  +0.008355] rk-vcodec ff660000.rkvdec: reset done
[ +16.192154] rk-vcodec ff660000.rkvdec: resetting...
[  +0.012014] rk-vcodec ff660000.rkvdec: reset done
[  +0.007324] rk-vcodec ff660000.rkvdec: reset done




作者: czcl    时间: 2021-11-12 16:52
使用 官方源码里编译好的 可执行程序   mpi_dec_test -i test.h264 命令 报同样的问题
下面是我测试的h264文件



作者: jefferyzhang    时间: 2021-11-13 17:06
resetting...是正常的,当h264码流有错误时候就会引发vpu reset
作者: czcl    时间: 2021-11-15 09:24
我认为这个并不正常,当h264 码流有错误的时候引发vpu  reset,这种逻辑存在瑕疵
如果在单线程这种逻辑问题还说的过去,但是在多线程下就会导致reset 的次数增多,视频也就没有流畅性可言了
所以个人认为这是一个漏洞,需要及时解决的,否则vpu 就无法投入商业运行
作者: jefferyzhang    时间: 2021-11-15 09:32
czcl 发表于 2021-11-15 09:24
我认为这个并不正常,当h264 码流有错误的时候引发vpu  reset,这种逻辑存在瑕疵
如果在单线程这种逻辑问题 ...

这个是硬件的reset,reset所有寄存器的,错误的码流造成vpu寄存器状态异常,是必须reset的,不会影响任何流畅性,
影响流畅性的是你自己的264码流本身,解码不出来就卡了。


作者: czcl    时间: 2021-11-15 09:58
硬件本身有这种逻辑很正常,但是mpp作为调度放,理应在解码前就应该对码流进行校验,否则用户层面无法知道具体的错误原因
而且也不应该有自动重置的逻辑,应该由用户决定





欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3