博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rockchip的RK3399硬解码总结
阅读量:6518 次
发布时间:2019-06-24

本文共 722 字,大约阅读时间需要 2 分钟。

Android下可以直接使用MediaCodec,它更下一层是OpenMAX,再下一层是MPP。

Ubuntu下理论应该可以使用OpenMAX,但是个人对OpenMAX也没有任何了解,所以只能直接使用MPP了。

开始接触RK3399硬解码的时候,服务商提供的资料里面提到gstreamer,就去死转它了,浪费了两星期时间,根本没能把它运行起来,稍微修改了一下代码就编译过去了,但是使用gstreamer却一直失败,但是软解是可以使用的,因为对gstreamer也不熟悉只能放弃,转投Android。

Android下开发很简单,解码显示都没问题,但是一到使用OpenCV处理帧时就出现了重大问题,1080p的帧处理过程既然要达到100ms,跟踪了一下,发现获取得到的帧光拷贝到OpenCV的Mat就花了10ms,听取别人的建议要使用JNI实现,自己觉得干脆直接回到Ubuntu平台彻底放弃Android。

分析MediaCodec后,对rockchip提供的MPP库才有了新的理解,解码功能迎刃而解!OpenCV 的C++效率果然高了不少,不到40ms做完相同的处理。

需要注意

1、Android下MediaCodec得到的帧,其提示是YUV420 NV21,而直接使用MPP解码得到的帧却是YUV NV12,实际上MediaCodec是错的,硬件解码返回的格式为YUV NV12;

2、返回帧是1920×1088的,而不是有效的1920×1080,一开始处理帧数据的时候,我就直接取1920×1080×3/2的数据,结果显示怎么都是错误。

 

转载于:https://www.cnblogs.com/darkise/p/8822051.html

你可能感兴趣的文章
簡單使用 tshark 命令形的 wireshark tcpdump
查看>>
git 常用指令快速上手
查看>>
Struts2教程5:使用Validation框架验证数据
查看>>
监控网络丢包率脚本
查看>>
jQuery 对AMD的支持
查看>>
我的友情链接
查看>>
验证输入的邮件地址是否合法
查看>>
CentOS使用Smartmontools检测磁盘状态
查看>>
shell中$#等含义
查看>>
centos7 安装nbd
查看>>
Linux学习笔记(七)---CentOS7单用户模式
查看>>
bash脚本:函数
查看>>
我的友情链接
查看>>
第一次写博文和大家打个招呼先
查看>>
FPM打包工具制作Tengine为RPM包详解
查看>>
Oracle中Hint被忽略的几种常见情形
查看>>
SQL Server 的本地时间和UTC时间
查看>>
java虚拟机之初探
查看>>
我的友情链接
查看>>
Windows Server 2008 R2 报错 0X800F0818
查看>>