On 9/9/2017 4:00 AM, LongChair . wrote: > From: LongChair <longch...@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) > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel