Toybrick

标题: 关于mpp的调用 [打印本页]

作者: qq1993106    时间: 2020-6-17 18:08
标题: 关于mpp的调用
选用
mpp_decode
这个接口进行H264的解码测试,关于mpp_get_frameDecFrame* mpp_get_frame(mpp_decoder* dec)
{
    int retry = 10;
    DecFrame* frame = NULL;

    while (retry--)
    {
        /* TODO: Dequeue and get decoded frame */
        frame = dec->dequeue();

        if (frame)
        {
            return frame;
        }

        usleep(1000);
    }

    return NULL;
}

这个函数中retry设置有规则吗?这个参数小于16时,我的第一帧直接为null退出了,等于或者大于16时解码到后面会报错如图

请教这个参数的具体含义以及设置和H264源文件有关吗?
H264测试文件超过10m无法上传。




作者: jefferyzhang    时间: 2020-6-17 21:57
先用mpp_dec_test程序跑,没问题就按这个sample来写代码
作者: qq1993106    时间: 2020-6-18 08:46
本帖最后由 qq1993106 于 2020-6-18 08:58 编辑
jefferyzhang 发表于 2020-6-17 21:57
先用mpp_dec_test程序跑,没问题就按这个sample来写代码

直接dnf安装的mpp库是否无法直接用mpp_dec_test?是不是需要编译安装才用得了?或者是可以直接dnf install mpp_dec_test?
感谢答复
作者: jefferyzhang    时间: 2020-6-18 08:53
qq1993106 发表于 2020-6-18 08:46
直接dnf安装的mpp库是否无法直接用mpp_dec_test?是不是需要编译安装才用得了?
感谢答复 ...

源码在这里:https://github.com/rockchip-linux/mpp
可以尝试自己编译。sample也在这里
作者: qq1993106    时间: 2020-6-18 14:13
jefferyzhang 发表于 2020-6-18 08:53
源码在这里:https://github.com/rockchip-linux/mpp
可以尝试自己编译。sample也在这里 ...

使用mpp_dec_test执行命令mpi_dec_test  -i test.h264 -o test.NV12 -t 7 -d 1 -w 1280 -h 720 ,可以解出视频流,所以假如我用mpp_decode的接口应该怎么改动代码呢?
感谢答复  
作者: jefferyzhang    时间: 2020-6-18 14:15
本帖最后由 jefferyzhang 于 2020-6-18 14:17 编辑
qq1993106 发表于 2020-6-18 14:13
使用mpp_dec_test执行命令mpi_dec_test  -i test.h264 -o test.NV12 -t 7 -d 1 -w 1280 -h 720 ,可以解 ...

按demo写,其他我也不懂。如果sample code里没有这个接口的demo,他就是非公开的接口。
作者: qq1993106    时间: 2020-6-18 14:59
本帖最后由 qq1993106 于 2020-6-18 15:07 编辑
jefferyzhang 发表于 2020-6-18 14:15
按demo写,其他我也不懂。如果sample code里没有这个接口的demo,他就是非公开的接口。 ...

我还按照mpp_decode的sample写的,就是把retry这个参数变大了 就可以找到,看代码的话这个参数代表的是出队列的时间延迟阈值,不过由于不同其中的原理,所以还是用起来不放心。然后我测试的时候会有持续编码 ,卡顿在某一帧几秒钟的情况(偶发不是频发),也不太懂是不是正常的。
作者: jefferyzhang    时间: 2020-6-18 18:05
qq1993106 发表于 2020-6-18 14:59
我还按照mpp_decode的sample写的,就是把retry这个参数变大了 就可以找到,看代码的话这个参数代表的是出 ...

这个情况其他客户都没遇到过,建议你看下kernel log是不是在reset vpu,如果有reset打印,就是给的帧是有问题的,vpu解不了,只能reset所有寄存器




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