From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id DE9814964F for ; Wed, 14 Feb 2024 23:41:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4DAFD68D214; Thu, 15 Feb 2024 01:41:37 +0200 (EET) Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D1C6C68BCDC for ; Thu, 15 Feb 2024 01:41:30 +0200 (EET) Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-41211acfcfcso722115e9.1 for ; Wed, 14 Feb 2024 15:41:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20230601.gappssmtp.com; s=20230601; t=1707954090; x=1708558890; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=etUK8hKYe+TjQ1rMSo1NnhEE2+6GSN9n7lWatOM9T44=; b=M6aYUBxgRIni+XwU6hGLOR+/xWn3WKPUvMoHfzN0p4SdSrwtSv78joi9J8JoEHhCeD Q+qLI6qvlMnyt1U1wKbn/muh2Yrap3C0il/fQtbLbikDG2UTK83Mu6u1oPSJWOhTtFwX FXiBmVp4dIfcdVV4myJn44iS4kMkPuKW5sdD6icuEui7XB9AMAYKSk+An1e+BeqJ2AbQ p5amyByvSBzoKNS7GUaMpOvD7KLWR44LROEnKMagI2LrLOn32tWJpQVwEOmsgigHgU5m IETG6bNF3UU41Unxz7jR8mAJT97SkM9L++3Y3aOjgqIeFlZJmMJCUToHJgomuz2sKMIb 5GFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707954090; x=1708558890; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=etUK8hKYe+TjQ1rMSo1NnhEE2+6GSN9n7lWatOM9T44=; b=KF1XAjoDxpiU3kh+XpiTFJoHMU0usNOPdfCSH/2RRtcNGCDJuqOCsPO60vaRFtwlyz p8JBNPlWKHQAwoyqZvuQKFkc6p9+FvK/CjCEBpsEuWc2+lo2c7Yh8RVny6rLOtJITaJD 23+1d5NCas/2FJosNZ4Qdfo6F2+EdvyJWPLzoUpYjbjQhG33pTJSmUVUMVzkGAI5Vp2O ExnZ9Qsk5kjTICkmnTGTSupYaEr5ZqlSMTR+gSeYPGiO52o58xdk5pTrRXQ2rEd1Jhzt Mv1HuyA1r4hdyEdFJOd9wfFGbVeihvlXKxV2lzrW2kaDiiyqhMBdxa8AZ0BejOHHSZtK WvQQ== X-Gm-Message-State: AOJu0YzKyBZOEZHBl6+fVroz3XwX+bRZDXETxkM8i2+jbCWbxY6pujfZ Rl+5N9UA7Xsci63kAUoxHUAOU+Ea1U175+/pY1gEL7PUoszMEfg5E3SgilIlrYiqJtXhm/ksb8I G X-Google-Smtp-Source: AGHT+IGGV2/4GCiOjUWpKk4PENzhzXuvHWMIsTEsxC8jqqG5KCGGIvzFw6C/K4b8dLcSuoC+H2K2hA== X-Received: by 2002:a7b:c4c8:0:b0:411:fe7d:ac4 with SMTP id g8-20020a7bc4c8000000b00411fe7d0ac4mr82134wmk.24.1707954089991; Wed, 14 Feb 2024 15:41:29 -0800 (PST) Received: from [192.168.0.15] (cpc92302-cmbg19-2-0-cust1183.5-4.cable.virginm.net. [82.1.212.160]) by smtp.gmail.com with ESMTPSA id d9-20020a05600c34c900b0040e4733aecbsm154203wmq.15.2024.02.14.15.41.29 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 14 Feb 2024 15:41:29 -0800 (PST) Message-ID: <0fde4913-2006-4176-a2c7-2e06be1a924d@jkqxz.net> Date: Wed, 14 Feb 2024 23:41:49 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20240214015515.1027-1-ovchinnikov.dmitrii@gmail.com> <20240214015515.1027-2-ovchinnikov.dmitrii@gmail.com> From: Mark Thompson In-Reply-To: <20240214015515.1027-2-ovchinnikov.dmitrii@gmail.com> Subject: Re: [FFmpeg-devel] [PATCH 2/9] libavcodec: add amfdec. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 14/02/2024 01:55, Dmitrii Ovchinnikov wrote: > From: Evgeny Pavlov > > Added AMF based h264, hevc, av1 decoders. > Co-authored-by: Dmitrii Ovchinnikov > --- > 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".