Firefly开源社区

标题: 关于硬件编解码:RK3588S [打印本页]

作者: programcj    时间: 2022-12-17 23:04
标题: 关于硬件编解码:RK3588S
我记得在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, 下载次数: 1, 下载积分: 灯泡 -1 , 经验 -1


作者: programcj    时间: 2022-12-18 22:59
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为什么弄一个自己的分支,需要查很多地方来找。。。主版本又不兼容。。。
作者: kfeifei    时间: 2023-1-9 14:35
学习了





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1