Firefly开源社区

打印 上一主题 下一主题

[技术讨论] 关于硬件编解码:RK3588S

27

积分

0

威望

0

贡献

技术小白

积分
27
QQ

关于硬件编解码:RK3588S

发表于 2022-12-17 23:04:33      浏览:5535 | 回复:2        打印      只看该作者   [复制链接] 楼主
  • 固件类型: 官方提供的固件
  • 固件文件名称: 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的源码?


RC-RK3588S-PC.zip

881 Bytes, 下载次数: 1, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

27

积分

0

威望

0

贡献

技术小白

积分
27
QQ
发表于 2022-12-18 22:59:05        只看该作者  沙发
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为什么弄一个自己的分支,需要查很多地方来找。。。主版本又不兼容。。。
回复

使用道具 举报

40

积分

0

威望

0

贡献

技术小白

积分
40
发表于 2023-1-9 14:35:07        只看该作者  板凳
学习了
回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表