固件类型:官方提供的固件
固件文件名称:ROC-RK3588S-PC_Ubuntu20.04-Gnome-r21199_v1.0.1b_22
固件下载地址:官方
Log日志:RC-RK3588S-PC.zip
我记得在RK3399中的ffmpeg解码后为DRM格式,其实是mpp的nv12内容格式;
但是到了RK3588S中ffmpeg版本4.2.4, 解码后直接变成了ffmpeg的yuv420p格式了,
看日志中是有这样的消息输出
[hevc_rkmpp @ 0x55aa9ed870] Decoder noticed an info change (1920x1080), format=0
rga_api version 1.8.1_[0]
与RK3399有什么区别呢?
dpkg -l | grep ffmpeg
ii ffmpeg 7:4.2.4-1ubuntu1.0firefly5 arm64 Tools for transcoding, streaming and playing of multimedia files
ii gstreamer1.0-libav:arm64 1.16.2-2 arm64 ffmpeg plugin for GStreamer
请问我在哪里可以寻找到4.2.4-1ubuntu1.0firefly5的源码?
tchip_askquestions
RC-RK3588S-PC.zip (881 Bytes)
dpkg -l | grep ffmpeg
ii ffmpeg 7:4.2.4-1ubuntu1.0firefly5 arm64 Tools for transcoding, streaming and playing of multimedia files
ii gstreamer1.0-libav:arm64 1.16.2-2 arm64 ffmpeg plugin for GStreamer
ffmpeg官方:https://github.dev/FFmpeg/FFmpeg/tree/n4.2.4 rkmppdec.c 和4.0.2一样 编译后不能使用;
通过查看: https://github.com/JeffyCN/FFmpeg 发现rkmppdec.c采用了rga处理输出的结果;
于是修ffmpeg解码参数 pCodecCtx->pix_fmt = AV_PIX_FMT_DRM_PRIME; 可以达到3399的效果DRM(NV12)格式
在使用上需要注意解码后的数据内容:
3399中使用DRM数据
—DRM强制转换为MppFrame后续可使用RGA切换为BGR等格式-----
typedef struct
{
MppFrame frame;
AVBufferRef *decoder_ref;
} RKMPPFrameContext;
MppFrame AVFrame2MppFrame(AVFrame *avframe)
{
MppBuffer mppbuff;
if (avframe->format != AV_PIX_FMT_DRM_PRIME)
{
return NULL;
}
AVBufferRef framecontextref = (AVBufferRef) av_buffer_get_opaque(
avframe->buf[0]);
RKMPPFrameContext framecontext =
(RKMPPFrameContext) framecontextref->data;
return framecontext->frame;
}
新的ffmpeg4.2.4-ubuntu20,如果使用yuv420的返回不知道怎么获取真实数据
ffmpeg为什么弄一个自己的分支,需要查很多地方来找。。。主版本又不兼容。。。