Herman Chen
Herman Chen
使用 MPP_ENC_GET_HDR_SYNC 和 MPP_ENC_GET_EXTRA_INFO 两种的接口参数是有不同的,但是效果应该是一样的…… 需要注意的是,这两个接口需要在所有的参数配置都完成之后再调用,才能得到正确的结果。
怀疑问题根本原因是这样的: MPP_ENC_GET_EXTRA_INFO 得到的是内部数据的 packet 结构信息,在编码器配置更新之后,里面的内容也给更新了,再去拷贝数据是正常的。 MPP_ENC_GET_HDR_SYNC 是在接口调用时刻就进行拷贝,把当时参数条件下生成的不正常的头就拷贝出现,等编码器配置完成完成之后,拷贝出来的数据就和真正编码器内部的数据不一致了。
> > 怀疑问题根本原因是这样的: MPP_ENC_GET_EXTRA_INFO 得到的是内部数据的 packet 结构信息,在编码器配置更新之后,里面的内容也给更新了,再去拷贝数据是正常的。 MPP_ENC_GET_HDR_SYNC 是在接口调用时刻就进行拷贝,把当时参数条件下生成的不正常的头就拷贝出现,等编码器配置完成完成之后,拷贝出来的数据就和真正编码器内部的数据不一致了。 > > 您这个说法我有个疑问,因为在`MPP_ENC_HEADER_MODE_EACH_IDR`情况下,每次编码到I帧都需要复制一次SPS PPS吧? 然后好像我mpp库换成github上的是没什么问题的样子 是的,开起来就每次编码都带 SPS/PPS 输出 > 新的mpp库里编码出来一定带有两段SEI,这两段SEI都是完整的 嗯,是用来保存码控信息的
估计是你那这的 drm 分配器打开和 mmap 的 flag 不对,对比下看看
radxa,radxa-cm3-io rockchip,rk3566 这个找到不匹配的 soc 名字,可以更新 下 mpp 看看
https://github.com/rockchip-linux/mpp/blob/02058ce67a244ad50e589104a1fa52e724c303e5/mpp/hal/rkdec/h265d/hal_h265d_com.c#L89 这个 hevc_hor_align 函数里定义了 hevc 在 rkvdec 上的对齐方式
更新下代码看看 另外,mpp_info: mpp version: unknown mpp version for missing VCS info 这里看不到 mpp 的版本信息
The hardware has performance limit on huffman decoding. So when stream is larger then the decoding time is longer. You can check the hardware timing: echo 0x100 > /sys/modules/rk_vcodec/parameters/mpp_dev_debug
the directory under /sys/modules may be vpu_service or rk_vcodec, please ls and try
264 解码器没有输出格式转换的能力,只有 jpeg 解码才有