Toybrick
标题:
mpp 对BRG的支持
[打印本页]
作者:
czcl
时间:
2021-11-25 15:09
标题:
mpp 对BRG的支持
输入流为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
时间:
2021-11-25 16:09
不能,码流什么格式解码完就是什么格式,转码缩放后面可以自己用RGA来做。
作者:
czcl
时间:
2021-11-30 14:45
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);
欢迎光临 Toybrick (https://t.rock-chips.com/)
Powered by Discuz! X3.3