Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Lynne via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: "Wu, Tong1" <tong1.wu@intel.com>,
	FFmpeg development discussions and patches
	<ffmpeg-devel@ffmpeg.org>
Cc: Lynne <dev@lynne.ee>
Subject: Re: [FFmpeg-devel] [PATCH v11 07/14] avcodec/vaapi_encode: extract the init and close function to base layer
Date: Mon, 27 May 2024 03:04:20 +0200
Message-ID: <5fdbfd06-b971-4bae-b192-34058775ee93@lynne.ee> (raw)
In-Reply-To: <CH3PR11MB8659C019C86976DA137DBF74C0F02@CH3PR11MB8659.namprd11.prod.outlook.com>


[-- Attachment #1.1.1.1: Type: text/plain, Size: 3357 bytes --]

On 27/05/2024 02:35, Wu, Tong1 wrote:
>> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Lynne
>> via ffmpeg-devel
>> Sent: Saturday, May 25, 2024 10:07 PM
>> To: ffmpeg-devel@ffmpeg.org
>> Cc: Lynne <dev@lynne.ee>
>> Subject: Re: [FFmpeg-devel] [PATCH v11 07/14] avcodec/vaapi_encode: extract
>> the init and close function to base layer
>>
>> On 25/05/2024 12:30, tong1.wu-at-intel.com@ffmpeg.org wrote:
>>> From: Tong Wu <tong1.wu@intel.com>
>>>
>>> Related parameters such as device context, frame context are also moved
>>> to base layer.
>>>
>>> Signed-off-by: Tong Wu <tong1.wu@intel.com>
>>> ---
>>>    libavcodec/hw_base_encode.c     | 49 ++++++++++++++++++
>>>    libavcodec/hw_base_encode.h     | 17 +++++++
>>>    libavcodec/vaapi_encode.c       | 90 +++++++++++----------------------
>>>    libavcodec/vaapi_encode.h       | 10 ----
>>>    libavcodec/vaapi_encode_av1.c   |  2 +-
>>>    libavcodec/vaapi_encode_h264.c  |  2 +-
>>>    libavcodec/vaapi_encode_h265.c  |  2 +-
>>>    libavcodec/vaapi_encode_mjpeg.c |  6 ++-
>>>    8 files changed, 102 insertions(+), 76 deletions(-)
>>>
>>> diff --git a/libavcodec/hw_base_encode.c b/libavcodec/hw_base_encode.c
>>> index 16afaa37be..c4789380b6 100644
>>> --- a/libavcodec/hw_base_encode.c
>>> +++ b/libavcodec/hw_base_encode.c
>>> @@ -592,3 +592,52 @@ end:
>>>
>>>        return 0;
>>>    }
>>> +
>>> +int ff_hw_base_encode_init(AVCodecContext *avctx)
>>> +{
>>> +    FFHWBaseEncodeContext *ctx = avctx->priv_data;
>>
>> This is the issue I was talking about, this requires that
>> FFHWBaseEncodeContext is always the main context.
>>
>> Could you change it so everything takes FFHWBaseEncodeContext as an
>> argument, rather than AVCodecContext (apart from where the function
>> absolutely must read some data from it)?
> 
> I'm trying to understand it more.
> 
> In ff_hw_base_encode_init we also have the following code:
> 
>      if (!avctx->hw_frames_ctx) {
>          av_log(avctx, AV_LOG_ERROR, "A hardware frames reference is "
>                 "required to associate the encoding device.\n");
>          return AVERROR(EINVAL);
>      }
> 
> In this scenario we still need avctx right? So maybe this is the "must read data from it" situation and we keep AVCodecContext as the main context?

Yup. My point is that FFHWBaseEncodeContext doesn't become the primary 
context that must be used, but a separate component other users can use 
standalone.

> Plus I have this av_log concern which is there's indeed some function that the only use of avctx is its av_log's context. Do you think I should instead use FFHWBaseEncodeContext as the main context and pass it to av_log for this situation while keeping AVCodecContext as the main context for other functions which actually read from AVCodecContext. That might lead to different av_log context in the same file.

Just save a pointer to avctx on init in FFHWBaseEncodeContext. That's 
what most of our code does.

> Do you think the callbacks in FFHWEncodePictureOperation should be changed too? Or only all the functions in hw_base_encode.c should be concerned. Thank you.

No, the callbacks should stay as-is. Users need to retrieve their own 
context via avctx. That's also a reason why you should keep a pointer to 
avctx on init.

Thanks

[-- Attachment #1.1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 637 bytes --]

[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
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".

  reply	other threads:[~2024-05-27  1:04 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-25 10:30 [FFmpeg-devel] [PATCH v11 01/14] avcodec/vaapi_encode: introduce a base layer for vaapi encode tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 02/14] avcodec/hw_base_encode: add FF_HW_ prefix for two enums tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 03/14] avcodec/vaapi_encode: add async_depth to common options tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 04/14] avcodec/vaapi_encode: add picture type name to base tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 05/14] avcodec/vaapi_encode: move pic->input_surface initialization to encode_alloc tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 06/14] avcodec/vaapi_encode: move the dpb logic from VAAPI to base layer tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 07/14] avcodec/vaapi_encode: extract the init and close function " tong1.wu-at-intel.com
2024-05-25 13:07   ` Lynne via ffmpeg-devel
2024-05-25 14:18     ` Sean McGovern
2024-05-25 14:25       ` Lynne via ffmpeg-devel
2024-05-27  0:35     ` Wu, Tong1
2024-05-27  1:04       ` Lynne via ffmpeg-devel [this message]
2024-05-28 15:53         ` Wu, Tong1
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 08/14] avcodec/vaapi_encode: extract gop configuration and two options " tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 09/14] avcodec/vaapi_encode: extract set_output_property " tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 10/14] avcodec/vaapi_encode: extract a get_recon_format function " tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 11/14] avcodec/vaapi_encode: extract a free funtion " tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 12/14] avutil/hwcontext_d3d12va: add Flags for resource creation tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 13/14] avcodec: add D3D12VA hardware HEVC encoder tong1.wu-at-intel.com
2024-05-25 10:30 ` [FFmpeg-devel] [PATCH v11 14/14] Changelog: add D3D12VA HEVC encoder changelog tong1.wu-at-intel.com

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=5fdbfd06-b971-4bae-b192-34058775ee93@lynne.ee \
    --to=ffmpeg-devel@ffmpeg.org \
    --cc=dev@lynne.ee \
    --cc=tong1.wu@intel.com \
    /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