Toybrick

标题: mpp使用的严重问题 [打印本页]

作者: how0723    时间: 2020-9-19 23:44
标题: mpp使用的严重问题
本帖最后由 how0723 于 2020-9-19 23:53 编辑

mpp库解码,输入为usb摄像头的mjpeg图像,1920*1080,输入设置为MPP_VIDEO_CodingMJPEG,解码输出设置为MPP_FMT_BGR888,(为方便opencv使用)
输出图像buffer长度为6266880=1920*1088*3,但是buffer后面一半(长度为3133440=1920*1088*1.5)的数据全部为0,以至于恢复出来的图像完全不对。程序是参考mpi_dec_test.c写的。bgr三个通道 ,通道b的数据基本正常,通道g的数据一半为0,通道r的数据全部为0 。如果使用opencv解码此usb摄像头的mjpeg图像,完全正常,使用mpp出现这种异常现象。
另外尝试解码输出设置为不同的值,都是后面一半长度的数据都是0。另外不管buffer设置多大,index在1920 * 1088 * 1.5以后的数据都是0。
图像如下所示,请问问题出在哪里?
请问是怎么回事?是哪里设置不对吗?[attach]1318[/attach]







作者: how0723    时间: 2020-9-19 23:55
使用opencv解码没有以上问题
作者: jefferyzhang    时间: 2020-9-20 15:32
mpi_dec_test 解码这张图正常么?
作者: how0723    时间: 2020-9-20 15:39
jefferyzhang 发表于 2020-9-20 15:32
mpi_dec_test 解码这张图正常么?

也不正常,结果是一样的
作者: how0723    时间: 2020-9-20 16:09
本帖最后由 how0723 于 2020-9-20 17:03 编辑

RK3399Pro的vpu不能解码mjpeg ?
作者: how0723    时间: 2020-9-20 17:05
jefferyzhang 发表于 2020-9-20 15:32
mpi_dec_test 解码这张图正常么?

到底是什么问题?
作者: jefferyzhang    时间: 2020-9-20 17:41
how0723 发表于 2020-9-20 17:05
到底是什么问题?

我哪知道,你把原图打包下发上来,我明天才有地方问啊,今天又没上班

作者: jefferyzhang    时间: 2020-9-20 17:42
本帖最后由 jefferyzhang 于 2020-9-20 17:53 编辑

发送下:
1. 原图(打包zip下,预防被转码)
2. mpi dec tes你试验出问题t的命令和参数
作者: how0723    时间: 2020-9-20 21:45
jefferyzhang 发表于 2020-9-20 17:42
发送下:
1. 原图(打包zip下,预防被转码)
2. mpi dec tes你试验出问题t的命令和参数 ...

[attach]1319[/attach]
sudo ./mpi_dec_test -i xxx.jpg -o test.data -w 1920 -h 1080 -t 8 -f 65543 -n 1

65543=MPP_FMT_BGR888

作者: how0723    时间: 2020-9-20 21:53
jefferyzhang 发表于 2020-9-20 17:42
发送下:
1. 原图(打包zip下,预防被转码)
2. mpi dec tes你试验出问题t的命令和参数 ...

瑞芯微的示例程序不能dump bgr888的格式到disk,如果不改程序是得不到数据,我是改了程序才得到转换后的数据
raw.zip是mpi_dec_test转换后的数据,我修改代码拿到的
[attach]1320[/attach]

作者: how0723    时间: 2020-9-20 21:55
jefferyzhang 发表于 2020-9-20 17:42
发送下:
1. 原图(打包zip下,预防被转码)
2. mpi dec tes你试验出问题t的命令和参数 ...

[attach]1321[/attach]
只支持这几种格式dump2file

作者: how0723    时间: 2020-9-20 21:56
jefferyzhang 发表于 2020-9-20 17:42
发送下:
1. 原图(打包zip下,预防被转码)
2. mpi dec tes你试验出问题t的命令和参数 ...

[attach]1322[/attach]

作者: jefferyzhang    时间: 2020-9-21 08:52
好的,问题已经上报,有进展会回你
作者: jefferyzhang    时间: 2020-9-21 08:59
媒体部回复如下:

1. 解码 jpeg 输出也只有 8888 的格式,24bit 的 888 没法支持
2. 1808 PP 给砍了,做不了格式转换,所以只有 YUV420 的输出,如果转不了,请输出格式用YUV420,然后自行RGA转换其他格式
作者: how0723    时间: 2020-9-21 10:52
jefferyzhang 发表于 2020-9-21 08:59
媒体部回复如下:

1. 解码 jpeg 输出也只有 8888 的格式,24bit 的 888 没法支持

谢谢。RK3399/RK3399Pro还是可以输出8888格式吧 ?
作者: jefferyzhang    时间: 2020-9-21 11:23
how0723 发表于 2020-9-21 10:52
谢谢。RK3399/RK3399Pro还是可以输出8888格式吧 ?

888都不支持,8888支持,具体你可以试试。
不过我不建议用MPP来做格式转换,一个模块做一件事是软件开发基本的守则,代码要保持最低程度耦合度。
mpp能设置输出格式完全是为了应对小白而做的,vpu本身就不带格式转换功能,mpp只控制vpu不应该去做多余的事。解码出来后再去判断格式手动用rga转才是正确做法。
作者: how0723    时间: 2020-9-21 11:39
本帖最后由 how0723 于 2020-9-21 11:51 编辑
jefferyzhang 发表于 2020-9-21 11:23
888都不支持,8888支持,具体你可以试试。
不过我不建议用MPP来做格式转换,一个模块做一件事是软件开发 ...

好的,谢谢。rga的开发文档和源码在哪里?如果不提供源码请提供头文件和动态库

作者: jefferyzhang    时间: 2020-9-21 14:12
how0723 发表于 2020-9-21 11:39
好的,谢谢。rga的开发文档和源码在哪里?如果不提供源码请提供头文件和动态库
...

没有统一的封装,直接ioctl即可使用。
目前封装较好的就是android里的librga,有需要可以移植过来编译。
作者: how0723    时间: 2020-9-21 19:19
jefferyzhang 发表于 2020-9-21 14:12
没有统一的封装,直接ioctl即可使用。
目前封装较好的就是android里的librga,有需要可以移植过来编译。 ...

好多坑啊,我都一个一个的趟过了
作者: how0723    时间: 2020-9-21 22:20
jefferyzhang 发表于 2020-9-21 14:12
没有统一的封装,直接ioctl即可使用。
目前封装较好的就是android里的librga,有需要可以移植过来编译。 ...

已解决,感谢
作者: xiaozhang    时间: 2020-12-8 07:35
@jefferyzhang 请问PX30的MPP的jpeg硬解码,支持argb888的输出吗?
作者: bluerainq    时间: 2022-3-10 11:12
楼主,您好!我想问一下,用mpp库可以编码保存30帧1080p的视频吗?




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3