Herman Chen
Herman Chen
The low-delay mode is a special mode for jpeg slice encoding. The input jpeg can be splited into several segment, encoded one by one and output each segment when it...
Hardware reset happened on stream error. So use ffmpeg check the input stream is correct or not first.
1. 用 echo 0x100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug,然后跑测试,如果用了硬解码,会有内核打印每个任务的时间 2. 新的内核补丁会加上使用率
echo 0 应该是能生效的,估计是路径打错了
author: sayon.chen 2020-12-24 版本太旧了,用 develop 分支
hal_h264d_api: mpp_dev_init failed ret: -1 这个说明内核驱动不匹配,跑下 mpp_platform_test 看看结果
像 mpi_dec_test 里一样把 eos 在最后一包码流上做标记,然后要输出端一直要取到带 eos 标记的帧再退出。 最后几帧没取到,一般来说是码流没有送完就退出或者码流还没有被解码器处理就 reset 的情况
按 4096 固定大小其实是不太好的,最好外部做个分帧,这样一次输入就是一帧的码流,这样解码器可以不用做内部分帧 不一致的话,是不是有 cache 问题?把解码器的 cache 关一下,不一致的图像是花屏还是有错? 帧数不一致的话,应该有是些帧在最后没取出来,看下 eos 是不是标记在最后一包上了,或者把 eos 标记在一个额外的空包上也可以,然后在输出端一直要取到带 eos 标记的帧再退出
解码输出顺序不同? 解码器 cache 问题可以试下把 mpp_buffer_impl.cpp 里的 if (type & MPP_BUFFER_FLAGS_CACHABLE) flag += MPP_ALLOC_FLAG_CACHABLE; 给去掉一下 mpi_dec_test 里应该是有配置 packet eos 和 判断 frame 的 eos 流程 看下面 frm_eos 相关的代码 https://github.com/rockchip-linux/mpp/blob/4a71a39dc75d2e875a6b58fcd5e50eeb5841c007/test/mpi_dec_test.c#L207
1. 看文档,在读取 buffer 的时候,先 mpp_buffer_sync 再读 2. 解码速度是一样的,不会慢,5.10 内核可以开 cache,但是 drm 的 cache 的内核接口可能有问题