Toybrick

mpp 对BRG的支持

czcl

注册会员

积分
104
发表于 2021-11-25 15:09:05    查看: 75|回复: 2 | [复制链接]    打印 | 显示全部楼层
输入流为1080p

使用mpp解码,mpp是否可以设置解码后的数据的宽高以及格式,例如(在mpp_frame_get_change的时候)
MppFrame  frame_tmp = NULL;
mpp_frame_init(&frame_tmp);
mpp_frame_set_width(frame_tmp, width);
mpp_frame_set_height(frame_tmp, height);
mpp_frame_set_hor_stride(frame_tmp,width);
mpp_frame_set_ver_stride(frame_tmp, height);
mpp_frame_set_fmt(frame_tmp, MPP_FMT_BGR888);
mCodec->control(mpCodecContext,MPP_DEC_SET_FRAME_INFO,(MppParam)frame_tmp);
mpp_frame_deinit(&frame_tmp);
比如原始宽高为1920*1080 设置解码输出为1920*1072,同时输出的数据格式为BGR888



回复

使用道具 举报

jefferyzhang

论坛元老

积分
8910
发表于 2021-11-25 16:09:06 | 显示全部楼层
不能,码流什么格式解码完就是什么格式,转码缩放后面可以自己用RGA来做。
回复

使用道具 举报

czcl

注册会员

积分
104
 楼主| 发表于 4 天前 | 显示全部楼层
jefferyzhang 发表于 2021-11-25 16:09
不能,码流什么格式解码完就是什么格式,转码缩放后面可以自己用RGA来做。 ...

我看mpp源码里面有rga 的功能
但是我在使用mpp源码中的rga的时候报错
os_allocator_drm_mmap map_dumb failed: Unknown error -1
这是怎么回事


实例代码:

    MppBuffer dst_buf = NULL;
    MppFrame rk_dstframe = NULL;
    ret = mpp_buffer_get(NULL, &dst_buf, size*3);
    if(ret)
    {
        printf("malloc dst_buf error\n");
    }
    mpp_frame_init(&rk_dstframe);
    mpp_frame_set_buffer(rk_dstframe, dst_buf);
    mpp_frame_set_width(rk_dstframe, m_iWidth);
    mpp_frame_set_height(rk_dstframe, m_iHeight);
    mpp_frame_set_hor_stride(rk_dstframe, MPP_ALIGN(m_iWidth, 16));
    mpp_frame_set_ver_stride(rk_dstframe, MPP_ALIGN(m_iHeight, 16));
    mpp_frame_set_fmt(rk_dstframe, MPP_FMT_RGB888);
    ret = rga_control(mRga, RGA_CMD_SET_SRC, rk_srcframe);
    if (ret) {
        printf("rga cmd setup source failed %d\n", ret);
    }

    ret = rga_control(mRga, RGA_CMD_SET_DST, rk_dstframe);
    if (ret) {
        printf("rga cmd setup destination failed %d\n", ret);
    }

    ret = rga_control(mRga, RGA_CMD_RUN_SYNC, NULL);
    if (ret) {
        printf("rga cmd process copy failed %d\n", ret);
    }
    uint8_t *tmpbuffer = (uint8_t *)dst_buf;
    if(tmpbuffer)
    {
        printf("======%p======\n",tmpbuffer);
        memcpy(buffer,tmpbuffer,size*3);
    }
    mpp_frame_deinit(&rk_dstframe);

回复

使用道具 举报

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

本版积分规则

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


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