Toybrick

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

eaven_chen

新手上路

积分
15
发表于 2024-11-1 15:22:06    查看: 730|回复: 5 | [复制链接]    打印 | 显示全部楼层
本帖最后由 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

版主

积分
13610
发表于 2024-11-4 16:23:48 | 显示全部楼层
3588编码器带前置转换器,是可以吃rgba数据,参看mpp input设置设置成对应数据格式即可。
如果你看到四个画面叠加,那大概率是有参数设置错误,导致rbga当成了yuv在编码。
回复

使用道具 举报

eaven_chen

新手上路

积分
15
 楼主| 发表于 2024-11-5 11:11:03 | 显示全部楼层
jefferyzhang 发表于 2024-11-4 16:23
3588编码器带前置转换器,是可以吃rgba数据,参看mpp input设置设置成对应数据格式即可。
如果你看到四个画 ...

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

使用道具 举报

eaven_chen

新手上路

积分
15
 楼主| 发表于 2024-11-5 11:17:35 | 显示全部楼层
问题已解决!
原因是在看 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 参数导致的问题。
回复

使用道具 举报

sointer

新手上路

积分
45
发表于 2024-11-14 09:02:05 | 显示全部楼层
本帖最后由 sointer 于 2024-11-14 11:49 编辑

请问,rk3568的mpp编码器是否支持将bgr888格式的数据编码为jpeg?是mpp低版本的问题?还是mpp编码器本身就不支持?
这个mpp是2022年版本的,我在github上代码历史中找到了这段代码判断
新版本说是移到HAL中。

我运行得出以下结果mpi_enc_test -w 1920 -h 1080 -f 65543  -t 8 -i  bgr1080p.dat  -o nv12.jpg
  
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_utils: cmd parse result:
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_utils: input  file name: bgr1080p.dat
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_utils: output file name: nv12.jpg
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_utils: width      : 1920
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_utils: height     : 1080
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_utils: format     : 65543
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_utils: type       : 8
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_test: mpi_enc_test start
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_test: jpege default encode only one frame. Use -n [num] for rc case
Nov 14 11:13:39 debian11 mpp[903524]: mpp_info: mpp version: fed7460f author: Herman Chen   2022-10-18 [mpp_mem_pool]: Add leak buffer count print
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_test: 0x7fa4001fe0 encoder test start w 1920 h 1080 type 8
Nov 14 11:13:39 debian11 mpp[903524]: mpp_enc: MPP_ENC_SET_RC_CFG bps 7776000 [486000 : 8262000] fps [30:30] gop 60
Nov 14 11:13:39 debian11 mpp[903524]: jpege_api_v2: jpege_proc_prep_cfg invalid format 65543 is not supportted
Nov 14 11:13:39 debian11 mpp[903524]: jpege_api_v2: jpege_proc_prep_cfg failed to accept new prep config
Nov 14 11:13:39 debian11 mpp[903524]: mpp: command 320001 param 0x7fa4009680 ret -1
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_test: mpi control enc set cfg failed ret -1
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_test: enc_test test mpp setup failed ret -1
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_test: chn 0 encode 0 frames time 0 ms delay   0 ms fps 0.00 bps 0
Nov 14 11:13:39 debian11 mpp[903524]: mpi_enc_test: mpi_enc_test average frame rate 0.00






回复

使用道具 举报

jefferyzhang

版主

积分
13610
发表于 2024-11-18 09:43:30 | 显示全部楼层
sointer 发表于 2024-11-14 09:02
请问,rk3568的mpp编码器是否支持将bgr888格式的数据编码为jpeg?是mpp低版本的问题?还是mpp编码器本身就不 ...

不是所有芯片都带编码前格式转化的IP核,如果不支持,就先自己用rga转换成nv12再编码。
3568应该是没有前置转换
回复

使用道具 举报

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

本版积分规则

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


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