Toybrick

1808计算棒 如何调用mpp(C/C++)

buyishengun

中级会员

积分
394
楼主
发表于 2020-2-26 16:01:41    查看: 30485|回复: 19 | [复制链接]    打印 | 只看该作者
本帖最后由 buyishengun 于 2020-3-2 09:00 编辑

1808计算棒要如何调用mpp(C/C++)?
目前还无法成功调用mpp进行h264进行解码
以下是我的相关操作:安装mpp,rga,drm:

使用dnf命令,直接安装
dnf install librockchip_mpp
dnf install librockchip_mpp-devel
dnf install librockchip_mpp-tests


dnf install librockchip_drm
dnf install librockchip_drm-devel

dnf install libdrm
dnf install libdrm-devel

dnf install librockchip_rga-devel

使用命令查看mpp相关信息:
[root@rk1808 inference]# mpi_test
mpi_test: mpi_test start
mpi_test: mpi_test decoder test start
mpi: mpp_create enter ctx 0x7fe8f5c4c0 mpi 0x7fe8f5c4c8
mpi: mpp version: Without VCS info
mpi: mpp_create leave ret 0 ctx 0x1a9673a0 mpi 0x7f97f4d4b0
mpi: mpp_init enter ctx 0x1a9673a0 type 0 coding 0
mpp: unable to create unsupported type 0 coding 0
mpi: mpp_init leave ret -1
mpi_test: mpp_init failed
mpi: mpp_destroy enter ctx 0x1a9673a0
mpi: mpp_destroy leave ret 0
mpi_test: mpi_test failed
[root@rk1808 inference]#

[root@rk1808 inference]# mpp_info_test
mpp_info_test: mpp revision is 0
mpp_info_test: mpp info all:
Without VCS info
mpp_info_test: mpp info revision: -1
mpp_info_test: mpp info date    :
mpp_info_test: mpp info author  : Unknown
[root@rk1808 inference]#

编译mpp自带的例子
cd /usr/share/rockchip_mpp/example/
make
将test.h264放到该目录(确定该test.h264文件是没问题的,是一帧h264 I帧)
执行编译出的应用
# ./mpp_decode
生成的test.nv12文件为空文件
跟踪调试mpp_decode代码
发现frame=mpp_get_frame(&dec);得到的frame为NULL。


自己写的测试程序
参考http://t.rock-chips.com/wiki.php?mod=view&id=57#h1_1
执行到解码图像出队操作:dequeue或者decode后得到的DecFrame永远是NULL


执行dmesg查看:

rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01











本帖子中包含更多资源

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

x
回复

使用道具 举报

jefferyzhang

版主

积分
13578
沙发
发表于 2020-3-2 08:31:37 | 只看该作者
test.h264 一起发给我们下
回复

使用道具 举报

buyishengun

中级会员

积分
394
板凳
 楼主| 发表于 2020-3-2 09:01:39 | 只看该作者
jefferyzhang 发表于 2020-3-2 08:31
test.h264 一起发给我们下

test.h264我上传到楼主层的附件了,里面的yuv是我用ffmpeg解处理的yuv420p数据。
回复

使用道具 举报

bobby_jiang

高级会员

积分
546
地板
发表于 2020-3-2 16:38:26 | 只看该作者
在线更新一下librockchip_mpp、librockchip_mpp-devel、librockchip_mpp-tests到最新版本
回复

使用道具 举报

buyishengun

中级会员

积分
394
5#
 楼主| 发表于 2020-3-3 10:23:37 | 只看该作者
本帖最后由 buyishengun 于 2020-3-3 10:29 编辑
bobby_jiang 发表于 2020-3-2 16:38
在线更新一下librockchip_mpp、librockchip_mpp-devel、librockchip_mpp-tests到最新版本

我把mpp相关卸载掉,clean all,重新安装mpp,还是编译test程序,还是不行。

[root@rk1808 ~]# dnf install librockchip_mpp-devel librockchip_mpp-tests
Fedora Modular 28 - aarch64                                                                                                                                                         21 kB/s | 159 kB     00:07   
Fedora Modular 28 - aarch64 - Updates                                                                                                                                              149 kB/s | 1.5 MB     00:10   
Fedora 28 - aarch64 - Updates                                                                                                                                                      9.8 kB/s |  27 MB     46:31   
Fedora 28 - aarch64                                                                                                                                                                 27 kB/s |  54 MB     34:08   
RK1808 28 - aarch64                                                                                                                                                                3.3 kB/s |  67 kB     00:20   
Last metadata expiration check: 0:00:01 ago on Mon 02 Mar 2020 09:13:49 PM EST.
Dependencies resolved.
===================================================================================================================================================================================================================
Package                                                   Arch                                        Version                                                    Repository                                  Size
===================================================================================================================================================================================================================
Installing:
librockchip_mpp-devel                                     aarch64                                     1.3.8-1.rockchip.fc28                                      RK1808                                      78 k
librockchip_mpp-tests                                     aarch64                                     1.3.8-1.rockchip.fc28                                      RK1808                                      71 k
Installing dependencies:
librockchip_mpp                                           aarch64                                     1.3.8-1.rockchip.fc28                                      RK1808                                     403 k

Transaction Summary
===================================================================================================================================================================================================================
Install  3 Packages

Total download size: 552 k
Installed size: 2.2 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): librockchip_mpp-tests-1.3.8-1.rockchip.fc28.aarch64.rpm                                                                                                                      14 kB/s |  71 kB     00:05   
(2/3): librockchip_mpp-devel-1.3.8-1.rockchip.fc28.aarch64.rpm                                                                                                                      15 kB/s |  78 kB     00:05   
(3/3): librockchip_mpp-1.3.8-1.rockchip.fc28.aarch64.rpm                                                                                                                            75 kB/s | 403 kB     00:05   
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                              102 kB/s | 552 kB     00:05     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                           1/1
  Installing       : librockchip_mpp-1.3.8-1.rockchip.fc28.aarch64                                                                                                                                             1/3
  Installing       : librockchip_mpp-devel-1.3.8-1.rockchip.fc28.aarch64                                                                                                                                       2/3
  Installing       : librockchip_mpp-tests-1.3.8-1.rockchip.fc28.aarch64                                                                                                                                       3/3
  Running scriptlet: librockchip_mpp-tests-1.3.8-1.rockchip.fc28.aarch64                                                                                                                                       3/3
  Verifying        : librockchip_mpp-devel-1.3.8-1.rockchip.fc28.aarch64                                                                                                                                       1/3
  Verifying        : librockchip_mpp-1.3.8-1.rockchip.fc28.aarch64                                                                                                                                             2/3
  Verifying        : librockchip_mpp-tests-1.3.8-1.rockchip.fc28.aarch64                                                                                                                                       3/3

Installed:
  librockchip_mpp-devel.aarch64 1.3.8-1.rockchip.fc28                     librockchip_mpp-tests.aarch64 1.3.8-1.rockchip.fc28                     librockchip_mpp.aarch64 1.3.8-1.rockchip.fc28                    

Complete!
[root@rk1808 ~]# cd /usr/share/rockchip_mpp/
[root@rk1808 rockchip_mpp]# cd example/
[root@rk1808 example]# make
g++ mpp_decode.cpp rockchip_mpp.cpp -lrockchip_rga -lrockchip_mpp -lrockchip_drm -I/usr/include/libdrm -o mpp_decode
g++ mpp_encode.cpp rockchip_mpp.cpp -lrockchip_rga -lrockchip_mpp -lrockchip_drm -I/usr/include/libdrm -o mpp_encode
[root@rk1808 example]#
[root@rk1808 example]#
[root@rk1808 example]# ./mpp_decode
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator
[root@rk1808 example]#
[root@rk1808 example]# make
g++ mpp_decode.cpp rockchip_mpp.cpp -lrockchip_rga -lrockchip_mpp -lrockchip_drm -I/usr/include/libdrm -o mpp_decode
g++ mpp_encode.cpp rockchip_mpp.cpp -lrockchip_rga -lrockchip_mpp -lrockchip_drm -I/usr/include/libdrm -o mpp_encode
[root@rk1808 example]# ./mpp_decode
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator
frame == NULL
[root@rk1808 example]#


frame == NULL是我加上去的,打印mpp_get_frame结果。

使用dmesg查看:
[ 5772.569588] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01
[ 6143.788420] rk_vcodec: vpu_service_ioctl:2138: error: unknown vpu service ioctl cmd 40086c01



回复

使用道具 举报

jefferyzhang

版主

积分
13578
6#
发表于 2020-3-9 09:31:10 | 只看该作者
mpp_decode 后面要加参数啊
回复

使用道具 举报

buyishengun

中级会员

积分
394
7#
 楼主| 发表于 2020-3-9 10:06:23 | 只看该作者
jefferyzhang 发表于 2020-3-9 09:31
mpp_decode 后面要加参数啊

int main(int argc, char **argv)
{
    int ret;
    /* Input h264 file */
    FILE *in = fopen("test.h264", "r");
    /* Output nv12 file */
    FILE *out = fopen("test.nv12", "w+");

    if(in == NULL)
    {
        fprintf(stderr, "Open file failed\n");
                return -EINVAL;
    }
   
    if(in == NULL || out == NULL)
    {
        fprintf(stderr, "Open file failed\n");
                return -EINVAL;
    }

    ret = mpp_decode(in, out);
exit:
    if(in != NULL)
            fclose(in);
    if(out != NULL)
            fclose(out);

    return ret;
}

这是example里的mpp_decode源码,没说要带参数啊
回复

使用道具 举报

jefferyzhang

版主

积分
13578
8#
发表于 2020-3-9 10:30:03 | 只看该作者
buyishengun 发表于 2020-3-9 10:06
int main(int argc, char **argv)
{
    int ret;

exit:后面的返回值加一些打印调试下,看看ret是多少。
回复

使用道具 举报

buyishengun

中级会员

积分
394
9#
 楼主| 发表于 2020-3-9 13:55:21 | 只看该作者
jefferyzhang 发表于 2020-3-9 10:30
exit:后面的返回值加一些打印调试下,看看ret是多少。

ret = 0
看起来也没啥不对的。
回复

使用道具 举报

buyishengun

中级会员

积分
394
10#
 楼主| 发表于 2020-3-10 11:01:01 | 只看该作者
jefferyzhang 发表于 2020-3-9 10:30
exit:后面的返回值加一些打印调试下,看看ret是多少。

http://t.rock-chips.com/forum.ph ... ight=mpp&page=2
我在上面论坛的11楼看到一些信息,会不会我现在的状况是一样的,RK1808的VPU是没有打开的?
要怎么看是否有打开,如果没有打开,要怎么打开?
回复

使用道具 举报

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

本版积分规则

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


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