Toybrick

3588使用mpp编码hevc时是否支持 rgba格式?

eaven_chen

新手上路

积分
15
楼主
发表于 6 天前    查看: 190|回复: 3 | [复制链接]    打印 | 只看该作者
本帖最后由 eaven_chen 于 2024-11-1 15:42 编辑

目前采集到的原始数据是rgba8888,打算使用mpp进行编码成h265,观看文档 Rockchip_Developer_Guide_MPP_CN.md 时并没有限制仅支持yuv,但编码出来的画面是混乱的,彷佛有四个画面叠加在一次,而且颜色混乱。
也看了 Rockchip RK3588 TRM V1.0 手册,写着是支持的,但输出的画面异常。
宽高也64对齐,线性存储rgbargba格式了
mpp 版本是 1.0.7 ndk 是 r21e
请问3588使用mpp编码hevc时是否支持 rgba格式?还是一定要走rga做一次转换?

回复

使用道具 举报

jefferyzhang

版主

积分
13524
沙发
发表于 3 天前 | 只看该作者
3588编码器带前置转换器,是可以吃rgba数据,参看mpp input设置设置成对应数据格式即可。
如果你看到四个画面叠加,那大概率是有参数设置错误,导致rbga当成了yuv在编码。
回复

使用道具 举报

eaven_chen

新手上路

积分
15
板凳
 楼主| 发表于 前天 11:11 | 只看该作者
jefferyzhang 发表于 2024-11-4 16:23
3588编码器带前置转换器,是可以吃rgba数据,参看mpp input设置设置成对应数据格式即可。
如果你看到四个画 ...

感谢!确实是参数问题!
回复

使用道具 举报

eaven_chen

新手上路

积分
15
地板
 楼主| 发表于 前天 11:17 | 只看该作者
问题已解决!
原因是在看 mpp 的 mpi_enc_test.c 时,在下面这段代码
  1.     p->width        = cmd->width;
  2.     p->height       = cmd->height;
  3.     p->hor_stride   = (cmd->hor_stride) ? (cmd->hor_stride) :
  4.                       (MPP_ALIGN(cmd->width, 16));
  5.     p->ver_stride = (cmd->ver_stride) ? (cmd->ver_stride) : (MPP_ALIGN(cmd->height, 16));
复制代码

以为 cmd 没有传 hor_stride 参数,cmd->hor_stride 这个应该肯定为空,我就把 hor_stride 直接等于 MPP_ALIGN(cmd->width, 16) 了,
但其实它在之前的 mpi_enc_test_cmd_update_by_args 内部
  1.     if (!cmd->hor_stride)
  2.         cmd->hor_stride = mpi_enc_width_default_stride(cmd->width, cmd->format);
复制代码

已经根据 format 设置了对应的正确默认值。
所以是我传错 hor_stride 参数导致的问题。
回复

使用道具 举报

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

本版积分规则

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


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