Toybrick

楼主: jefferyzhang

RK3399Pro入门教程(6)硬件编解码器MPP库的使用

 

swlmx

注册会员

积分
195
发表于 2019-11-6 11:31:35 | 显示全部楼层
jefferyzhang 发表于 2019-10-30 11:43
toybrick里带的都是64bit的

你们固件里面libmpp.so确实是armv7的,我下载github上mpp的testcode编译出来armv8找不到libmpp.so,只有v7才能运行,而且输出也不正常……
回复

使用道具 举报

jefferyzhang

版主

积分
13402
 楼主| 发表于 2019-11-6 12:52:00 | 显示全部楼层
swlmx 发表于 2019-11-6 11:31
你们固件里面libmpp.so确实是armv7的,我下载github上mpp的testcode编译出来armv8找不到libmpp.so,只有v ...

你说的是安卓还是linux?
回复

使用道具 举报

swlmx

注册会员

积分
195
发表于 2019-11-6 13:58:38 | 显示全部楼层
jefferyzhang 发表于 2019-11-6 12:52
你说的是安卓还是linux?

安卓 字数补丁
回复

使用道具 举报

jefferyzhang

版主

积分
13402
 楼主| 发表于 2019-11-6 15:15:01 | 显示全部楼层

哦,安卓是v7 32bit的,因为安卓的框架mediacodec他是32 only的,所以mpp也必须是32才能被系统调用
回复

使用道具 举报

swlmx

注册会员

积分
195
发表于 2019-11-8 16:44:41 | 显示全部楼层
本帖最后由 swlmx 于 2019-11-8 16:54 编辑
jefferyzhang 发表于 2019-11-6 15:15
哦,安卓是v7 32bit的,因为安卓的框架mediacodec他是32 only的,所以mpp也必须是32才能被系统调用 ...

我用mpp demo里的decode_advanced代码循环300次平均每解码1帧1080p jpg要26ms,而且dmesg显示解码耗时很离谱。我另外测用jpegturbo解码平均才17ms。
另外demo里decode_simple解不了mjpeg……是不是有bug?

mpp流程循环中的伪代码:
  1. mpp_packet_set_pos
  2. mpp_packet_set_length
  3. //input
  4. mpi->poll
  5. mpi->dequeue
  6. mpp_task_meta_set_packet
  7. mpp_task_meta_set_frame
  8. mpi->enqueue
  9. //output
  10. mpi->poll
  11. mpi->dequeue
  12. mpp_task_meta_get_frame
  13. mpi->enqueue
复制代码


dmesg里的log:
  1. [83150.339427] rk_vcodec: vpu2_dec task: 1573200164298 ms
  2. [83150.368903] rk_vcodec: vpu2_dec task: 1573200164327 ms
  3. [83150.394374] rk_vcodec: vpu2_dec task: 1573200164353 ms
  4. [83150.419830] rk_vcodec: vpu2_dec task: 1573200164378 ms
  5. [83150.445152] rk_vcodec: vpu2_dec task: 1573200164404 ms
  6. [83150.470661] rk_vcodec: vpu2_dec task: 1573200164429 ms
  7. [83150.496018] rk_vcodec: vpu2_dec task: 1573200164455 ms
  8. [83150.521544] rk_vcodec: vpu2_dec task: 1573200164480 ms
  9. [83150.550334] rk_vcodec: vpu2_dec task: 1573200164509 ms
  10. [83150.579556] rk_vcodec: vpu2_dec task: 1573200164538 ms
  11. [83150.620477] rk_vcodec: vpu2_dec task: 1573200164579 ms
  12. [83150.649453] rk_vcodec: vpu2_dec task: 1573200164608 ms
  13. [83150.678954] rk_vcodec: vpu2_dec task: 1573200164637 ms
  14. [83150.702283] rk_vcodec: vpu2_dec task: 1573200164661 ms
复制代码


感觉是把当前时间戳打出来了
回复

使用道具 举报

jefferyzhang

版主

积分
13402
 楼主| 发表于 2019-11-8 18:06:43 | 显示全部楼层
swlmx 发表于 2019-11-8 16:44
我用mpp demo里的decode_advanced代码循环300次平均每解码1帧1080p jpg要26ms,而且dmesg显示解码耗时很离 ...

1. decode_simple 确实解不了mjpeg,很早前就提过需求给相关部门了,他们还没有实现。
2. MJpeg解码比cpu慢是正常的,我们VPU是用来解码264、265帧间编码速度快的,这种帧内编码的解码肯定不如CPU,我们A72CPU跑满1.8GHz的,这种运算肯定是CPU快。
3. 显示不对这个我回头问问相关人员。
回复

使用道具 举报

swlmx

注册会员

积分
195
发表于 2019-11-11 16:44:23 | 显示全部楼层
jefferyzhang 发表于 2019-11-8 18:06
1. decode_simple 确实解不了mjpeg,很早前就提过需求给相关部门了,他们还没有实现。
2. MJpeg解码比cpu ...

了解 谢谢楼主
回复

使用道具 举报

coolfly19

新手上路

积分
22
发表于 2019-11-16 15:52:44 | 显示全部楼层
本帖最后由 coolfly19 于 2019-11-16 15:53 编辑

我在https://github.com/rockchip-linux/mpp下载的源代码,用android-ndk-r16b编译mpp后,写了一个采集编码程序,但程序启动时在初始化摄像头时就失败了,cam_hal_init返回错误,这怎么解决啊?是不是mpp和摄像头驱动有关联,需要用同一个ndk版本编译才行?
单独运行采集而不调用mpp编码接口的程序可以正常采集图像。
回复

使用道具 举报

dawnmaples

新手上路

积分
31
发表于 2019-11-25 15:48:12 | 显示全部楼层
本帖最后由 dawnmaples 于 2019-11-25 16:10 编辑

我在debian下编译的mpp,运行./make-Makefiles.bash,显示...
--compile without drm support
...

CMake Warning:
Maually-specified variables were not used by the project :
HAVE-DRM
RKPLATFORM

您好,这里是不是编译了也不能调用GPU,还有我看系统的/usr/lib/aarch64-linux-gnu/下是有libdrm的,用pkg-config也可以看到libdrm的多个支持平台的lib名,但是问题是,就是没有libdrm_rockchip。我看/usr/lib/aarch64-linux-gnu/目录下是有libdrm_rockchip的库,但是没有libdrm_rockchip.so库,只有libdrm_rockchip.so.1和libdrm_rockchip.1.0.0这俩,不明白这是为什么?

同样这个/usr/lib/aarch64-linux-gnu/目录下也有librockchip_mpp.so和librockchip_mpp.so.1,但是却没有头文件对应,这是为啥?

回复

使用道具 举报

jefferyzhang

版主

积分
13402
 楼主| 发表于 2019-11-25 16:24:41 | 显示全部楼层
dawnmaples 发表于 2019-11-25 15:48
我在debian下编译的mpp,运行./make-Makefiles.bash,显示...
--compile without drm support
...

mpp跟gpu、drm有啥关系? mpp只是vpu的api而已。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表