使用RTK3588的mpp做GPU加速编码图传的时候,图像可能会出现分辨率不对,显示不正常的问题。这时候要检查自己输入的图像格式是否是其默认支持的格式。mpp默认支持以下格式
static const MppFrameFormat gst_mpp_enc_formats[] = {
MPP_FMT_YUV420SP,
MPP_FMT_YUV420P,
MPP_FMT_YUV422_YUYV,
MPP_FMT_YUV422_UYVY,
MPP_FMT_RGB565LE,
MPP_FMT_BGR565LE,
MPP_FMT_ARGB8888,
MPP_FMT_ABGR8888,
MPP_FMT_RGBA8888,
MPP_FMT_BGRA8888,
};
如果格式不在支持范围内,mpph264enc会自动尝试用rga去转换成支持的格式。rga是3588的图形加速器,可以转换格式或者裁剪拉伸旋转图像。但是默认的rga的驱动是有问题的。导致这个转换会失败。最终的表现就是输出视频显示错误。
所以如果输入格式没法改可以在gstreamer的流水线里面加上videoconvert转换到支持的格式。当然这个过程是需要额外消耗CPU的。更好的方式还是解决rga的驱动问题。不过目前还我还没找到很好的解决方法。