[FFmpeg-devel] [PATCH] Add support for RockChip Media Process Platform
James Almer
jamrial at gmail.com
Sun Sep 10 20:13:54 EEST 2017
On 9/9/2017 4:00 AM, LongChair . wrote:
> From: LongChair <LongChair at hotmail.com>
>
> This adds hardware decoding for h264 / HEVC / VP8 using MPP Rockchip API.
> Will return frames holding an AVDRMFrameDescriptor struct in buf[0] that allows drm / dmabuf usage.
> Was tested on RK3288 (TinkerBoard) and RK3328.
>
> Changes from Previous patch :
> - Frame colorspace info is now filled.
> - Frame interlacing is now filled (Note : currently had a bug in mpp which will be fixed soon by rockchip, will set the frame to progressive).
> - hw_frame_context returns none as format for the rockchip specific 10 bits.
> - Added support for MPEG4 codec
> - Added support for VP9 codec.
> - the ION format has been kept for MPP init (rather than DRM) as this is the only one working right, using DRM format will cause assertions upon close.
> - Other minor comments have been taken into account
> ---
> Changelog | 1 +
> configure | 16 ++
> libavcodec/Makefile | 5 +
> libavcodec/allcodecs.c | 5 +
> libavcodec/rkmppdec.c | 584 +++++++++++++++++++++++++++++++++++++++++++++++++
> 5 files changed, 611 insertions(+)
> create mode 100644 libavcodec/rkmppdec.c
> +#define RKMPP_DEC(NAME, ID, BSFS) \
> + RKMPP_DEC_CLASS(NAME) \
> + AVCodec ff_##NAME##_rkmpp_decoder = { \
> + .name = #NAME "_rkmpp", \
> + .long_name = NULL_IF_CONFIG_SMALL(#NAME " (rkmpp)"), \
> + .type = AVMEDIA_TYPE_VIDEO, \
> + .id = ID, \
> + .priv_data_size = sizeof(RKMPPDecodeContext), \
> + .init = rkmpp_init_decoder, \
> + .close = rkmpp_close_decoder, \
> + .receive_frame = rkmpp_receive_frame, \
> + .flush = rkmpp_flush, \
> + .priv_class = &rkmpp_##NAME##_dec_class, \
> + .capabilities = AV_CODEC_CAP_DELAY, \
Add AV_CODEC_CAP_AVOID_PROBING as well.
> + .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS, \
It doesn't look like you're setting pkt_dts anywhere?
> + .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_DRM_PRIME, \
> + AV_PIX_FMT_NONE}, \
> + .bsfs = BSFS, \
> + };
> +
> +RKMPP_DEC(h264, AV_CODEC_ID_H264, "h264_mp4toannexb")
> +RKMPP_DEC(hevc, AV_CODEC_ID_HEVC, "hevc_mp4toannexb")
> +RKMPP_DEC(mpeg4, AV_CODEC_ID_MPEG4, NULL)
> +RKMPP_DEC(vp8, AV_CODEC_ID_VP8, NULL)
> +RKMPP_DEC(vp9, AV_CODEC_ID_VP9, NULL)
>
More information about the ffmpeg-devel
mailing list