Toybrick

标题: 3588使用mpp编码hevc时是否支持 rgba格式? [打印本页]

作者: eaven_chen    时间: 6 天前
标题: 3588使用mpp编码hevc时是否支持 rgba格式?
本帖最后由 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    时间: 3 天前
3588编码器带前置转换器,是可以吃rgba数据,参看mpp input设置设置成对应数据格式即可。
如果你看到四个画面叠加,那大概率是有参数设置错误,导致rbga当成了yuv在编码。
作者: eaven_chen    时间: 前天 11:11
jefferyzhang 发表于 2024-11-4 16:23
3588编码器带前置转换器,是可以吃rgba数据,参看mpp input设置设置成对应数据格式即可。
如果你看到四个画 ...

感谢!确实是参数问题!
作者: eaven_chen    时间: 前天 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 参数导致的问题。




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