Toybrick

楼主: jefferyzhang

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

 

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-8-25 17:37:47 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-23 17:43
大神,我安装mpp的步骤是这样的,请看下是是否正确:
1、瑞芯微github下载mpp,
2、修改mpp/build/linux/aa ...

看过去编译是没问题的,都能正常跑了。
没有要改源码的话可以用我们dnf安装即可。
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 2019-8-26 09:13:42 | 显示全部楼层
jefferyzhang 发表于 2019-8-25 17:37
看过去编译是没问题的,都能正常跑了。
没有要改源码的话可以用我们dnf安装即可。 ...

在上面的解码的时候log里,有一个报错:

h264d_dpb: dpb_size error.


这在mpp开发参考(0.3版).pdf里的截图中是没有的。
回复

使用道具 举报

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-8-26 09:31:12 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-26 09:13
在上面的解码的时候log里,有一个报错:

h264d_dpb: dpb_size error.

没花屏的话无所谓
说的是码流中 vui 信息与前面码流的 dpb 信息不一致
这跟编译没关系,是你的码流告警的,不用在意
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 2019-8-28 17:59:34 | 显示全部楼层
mpi_dec_test
这个程序如果指定了输出文件,文件的类型是什么?我看好像不能指定输出类型。
回复

使用道具 举报

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-8-29 08:16:21 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-28 17:59
mpi_dec_test
这个程序如果指定了输出文件,文件的类型是什么?我看好像不能指定输出类型。
...

默认是NV12,可以设置输出rgb我记得。具体看下help,我也记不清楚了。
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 2019-8-29 10:51:27 | 显示全部楼层
jefferyzhang 发表于 2019-8-29 08:16
默认是NV12,可以设置输出rgb我记得。具体看下help,我也记不清楚了。

斑竹辛苦了,这个属性,是否就是制定了默认的输出类型?
我看了代码,是输入命令-f后面的参数。但是这个参数非必须,那么默认值就是MPP_FMT_BUTT,但是这个格式没有理解具体含义,不像yuv和rgb那样容易理解。还希望能指导一下。


另外,解码时,分了两种情况,分别使用decode_simple和decode_advanced两种流程,选择依据是 cmd->simple = (cmd->type != MPP_VIDEO_CodingMJPEG) ? (1) : (0);
意为如果输入文件的类型-t 的参数是MPP_VIDEO_CodingMJPEG,编号为4,那么simple=0,调用decode_advanced进行解码;
如果输入文件的类型不是MPP_VIDEO_CodingMJPEG,如h264文件为-t 7,那么simple=1,调用decode_simple进行解码。
我没有理解为什么要分两种情况,是否可以简单指导一下?

貌似这个帖子就我最笨,问的问题也比较low,给斑竹增加了工作量,深感抱歉,但是也是无奈之举。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 2019-8-29 10:55:46 | 显示全部楼层
kiwi 发表于 2019-8-23 14:10
建议别捣鼓ffmpeg了,他们也只是对接了api,据说是有bug的,也不会提供ffmpeg的支持,用mpp是最好的,官 ...

大佬好,我看了mpi_dec_test的源码,好像确实是没有解析rtsp协议得到h264裸流数据包的功能。
你看这样想行不行,利用ffmpeg的接口进行解协议,从rtsp的网址得到得到avpacket,即从网络流中得到h264的数据包。
然后再把这个avpacket送给mpp。

但是问题就是怎么给,是把这两个库的packet结构体进行比较,然后对应的赋值吗?比如都有pts成员。

可否简单的提点我一下怎么喂数据。。。。。。。。
回复

使用道具 举报

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-8-29 12:41:03 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-29 10:55
大佬好,我看了mpi_dec_test的源码,好像确实是没有解析rtsp协议得到h264裸流数据包的功能。
你看这样想 ...

mpp_dec_test一直就在讲怎么喂数据,h264数据放package喂进去就可以了,并不复杂。
整个mpp库接口都是仿照ffmpeg设计的。
好好看下源码,所有源码都开放了,sample都有了,又来问别人怎么写代码,这就很不合适了吧。
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 2019-8-29 13:57:27 | 显示全部楼层
jefferyzhang 发表于 2019-8-29 12:41
mpp_dec_test一直就在讲怎么喂数据,h264数据放package喂进去就可以了,并不复杂。
整个mpp库接口都是仿 ...

我错了,大佬,,,,,,,多谢回复,正在看。
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 2019-8-31 09:57:27 | 显示全部楼层
本帖最后由 zhouzhouzlove 于 2019-8-31 16:51 编辑

楼主大神,是的,没错,我又来了。。。。。。。。
是这样的,我运行mpi_dec_test时,运行的时候,cpu占用率是处于比较高的水平的,cpu5已经达到了70%。

当运行mpi_dec_multi_test时,程序报错,当然,这可能是维护未更新的问题,但是从cpu占用率来看,三个cpu的占用率加起来也是达到了70%。
mpi: mpp version: 3d35398 author: Johnson Ding [jpege]: Fix jpeg encoder stride problem



得到的文件时yuv420sp格式,用yuv播放器确实可以看到一幅幅的画面。
这是正常的吗?按理说,mpp肯定是调用了硬件解码,应该比较少才对,感觉怎么着也得降到10%吧。。。。。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

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


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