[FFmpeg-devel] [PATCH] Add support for RockChip Media Process Platform
James Almer
jamrial at gmail.com
Thu Sep 14 00:06:13 EEST 2017
On 9/11/2017 5:21 AM, LongChair . wrote:
>
>
> Le 10/09/2017 à 19:13, James Almer a écrit :
>> 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.
> What would that flag change ?
Avoids using this decoder for probing. Read the flag's doxy in avcodec.h
for the rationale.
>>
>>> + .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 at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list