Le 10/09/2017 à 19:13, James Almer a écrit :
On 9/9/2017 4:00 AM, LongChair . wrote: From: LongChair <longch...@hotmail.com><mailto: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. What would that flag change ? + .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS, \ It doesn't look like you're setting pkt_dts anywhere? True, I can remove that one. + .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<mailto:ffmpeg-devel@ffmpeg.org> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel