From: Mark Thompson <sw@jkqxz.net> To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH 2/9] libavcodec: add amfdec. Date: Wed, 14 Feb 2024 23:41:49 +0000 Message-ID: <0fde4913-2006-4176-a2c7-2e06be1a924d@jkqxz.net> (raw) In-Reply-To: <20240214015515.1027-2-ovchinnikov.dmitrii@gmail.com> On 14/02/2024 01:55, Dmitrii Ovchinnikov wrote: > From: Evgeny Pavlov <lucenticus@gmail.com> > > Added AMF based h264, hevc, av1 decoders. > Co-authored-by: Dmitrii Ovchinnikov <ovchinnikov.dmitrii@gmail.com> > --- > libavcodec/Makefile | 4 +- > libavcodec/allcodecs.c | 3 + > libavcodec/amfdec.c | 667 ++++++++++++++++++++++++++++++++++++++++ > libavcodec/amfdec.h | 75 +++++ > libavcodec/h264_slice.c | 3 + > libavcodec/h264dec.c | 3 + > libavcodec/hwconfig.h | 2 + > 7 files changed, 755 insertions(+), 2 deletions(-) > create mode 100644 libavcodec/amfdec.c > create mode 100644 libavcodec/amfdec.h > > ... > + > +static int amf_decode_init(AVCodecContext *avctx) > +{ > + AvAmfDecoderContext *ctx = avctx->priv_data; > + int ret; > + enum AVPixelFormat pix_fmts[3] = { > + AV_PIX_FMT_AMF, > + avctx->pix_fmt, > + AV_PIX_FMT_NONE }; > + > + ret = ff_get_format(avctx, pix_fmts); > + if (ret < 0) { > + avctx->pix_fmt = AV_PIX_FMT_NONE; > + } I think you've misunderstood how decoder setup works. AVCodecContext.pix_fmt happens to be set to an initial value in some cases which use libavformat (including the ffmpeg utility), but there is no requirement on the user to do so (see the doxy). Also all of the format information can change at any moment mid-stream (consider adaptive streaming scenarios). It is therefore necessary for the decoder to parse the input and determine the intended format before calling the get_format callback, and to do that again whenever the format changes. Calling it once at the beginning does not work at all. > ... > diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c > index 8464a0b34c..d11821194f 100644 > --- a/libavcodec/h264_slice.c > +++ b/libavcodec/h264_slice.c > @@ -864,6 +864,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback) > #if CONFIG_H264_NVDEC_HWACCEL > *fmt++ = AV_PIX_FMT_CUDA; > #endif > +#if CONFIG_H264_AMFDEC_HWACCEL > + *fmt++ = AV_PIX_FMT_AMF; > +#endif > #if CONFIG_H264_VIDEOTOOLBOX_HWACCEL > if (h->avctx->colorspace != AVCOL_SPC_RGB) > *fmt++ = AV_PIX_FMT_VIDEOTOOLBOX; > diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c > index 9f5893c512..7a2c9eecef 100644 > --- a/libavcodec/h264dec.c > +++ b/libavcodec/h264dec.c > @@ -1137,6 +1137,9 @@ const FFCodec ff_h264_decoder = { > #if CONFIG_H264_NVDEC_HWACCEL > HWACCEL_NVDEC(h264), > #endif > +#if CONFIG_H264_AMFDEC_HWACCEL > + HWACCEL_AMFDEC(h264), > +#endif > #if CONFIG_H264_VAAPI_HWACCEL > HWACCEL_VAAPI(h264), > #endif I don't see any acceleration support here at all, this is entirely an offload decoder. Thanks, - Mark _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2024-02-14 23:41 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-14 1:55 [FFmpeg-devel] [PATCH 1/9] libavutil: add hwcontext_amf Dmitrii Ovchinnikov 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 2/9] libavcodec: add amfdec Dmitrii Ovchinnikov 2024-02-14 23:41 ` Mark Thompson [this message] 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 3/9] avcodec/amfenc: Fixes the color information in the output Dmitrii Ovchinnikov 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 4/9] avcodec/amfenc: HDR metadata Dmitrii Ovchinnikov 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 5/9] avcodec/amfenc: add 10 bit encoding in av1_amf Dmitrii Ovchinnikov 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 6/9] avcodec/amfenc: add smart access video option Dmitrii Ovchinnikov 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 7/9] libavcodec/amfenc: redesign to use hwcontext_amf Dmitrii Ovchinnikov 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 8/9] avfilter/scale_amf: Add AMF HW scaler & color converter Dmitrii Ovchinnikov 2024-02-14 15:08 ` Timo Rothenpieler 2024-02-14 15:27 ` Evgeny Pavlov 2024-02-14 16:26 ` Dennis Mungai 2024-02-19 11:18 ` Evgeny Pavlov 2024-02-19 14:43 ` Dennis Mungai 2024-02-14 1:55 ` [FFmpeg-devel] [PATCH 9/9] doc/filters: Add documentation for AMF filters Dmitrii Ovchinnikov 2024-02-14 2:56 ` [FFmpeg-devel] [PATCH 1/9] libavutil: add hwcontext_amf James Almer 2024-02-14 16:48 ` Dmitrii Ovchinnikov 2024-02-14 20:56 ` Mark Thompson
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=0fde4913-2006-4176-a2c7-2e06be1a924d@jkqxz.net \ --to=sw@jkqxz.net \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git