Herman Chen
Herman Chen
这些是在老的3.10内核上ion的接口,drm 没有对应接口
4.4内核目前没什么简单的办法,要有的话,需要在vpu驱动中找到输出buffer,对输出地址进行 invalidate,然后上层开 cache 去读取,可能会快一些
没问题,可以的,使用 rga 完成到 normal 的拷贝,思路正确~ 可以这样来,解码输出图像buffer直接给 rga 做输入,rga 读 ddr 里的数据没有 cache 的问题,然后输出到 normal 的 buffer,然后 invalid normal buffer,这样效率最高。 invalid 这些只针对 cpu cache 与 ddr 的一致,对硬件处理本身没有影响。
cache 出错的前提是 cache 被 cpu 写入,是 dirty 状态,同时没有没有与 ddr 里的数据进行同步,导致的不一致的态,或者是数据读出到 cache 之后,ddr 数据被硬件写入这种的不一致状态。 如果这个 buffer 本身没有被 cpu 访问过,这时去读取数据的都是正常的。
如果是 non-cache 的,每次读取都会去 ddr 读取,而不是从 cache 读取,这样是永远不会出错的。
客气,如果能解决问题的话,麻烦请关闭问题:)
不用 ./mpi_dec_test 直接在目录下运行么?为啥要用 shell 来运行?
@joopdo The current MPP module has two parts: the userspace libmpp.so in the repo and the mpp_service in kernel drivers/video/rockchip/mpp. This framework simplifies the kernel driver and keep most complicated...
264 里 slice 头里的 pps_id 要有对应的信息才能正常解码啊,协议如此,没有 pps 让解码器怎么解…… 如果码流是从非 I 帧开始的,会有一段码流是无法解码的,到后面带着 sps/pps 的 I 帧来的时候,就能开始正常解码
MppFrame 里带的 MppBuffer 可以 get fd 出来,这个 fd 是 dmabuf,可以导入到 rga 里去使用