From: Mark Thompson <sw@jkqxz.net>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH v2 11/12] lavc/vaapi_decode: use dynamic frame pool for output frames with libva2
Date: Tue, 30 Jan 2024 19:07:57 +0000
Message-ID: <8b2c8882-fb35-4596-8763-9e45647d3759@jkqxz.net> (raw)
In-Reply-To: <d3e891bda163152d8493e403a411c56350a00da9.camel@intel.com>
On 30/01/2024 06:30, Xiang, Haihao wrote:
> On Ma, 2024-01-29 at 21:58 +0000, Mark Thompson wrote:
>> On 26/01/2024 07:25, Xiang, Haihao wrote:
>>> On Wo, 2023-12-20 at 15:10 +0800, Xiang, Haihao wrote:
>>>> From: Haihao Xiang <haihao.xiang@intel.com>
>>>>
>>>> This allows a downstream element stores more frames from VAAPI
>>>> decoders and fixes error in get_buffer()
>>>>
>>>> $ ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i
>>>> input_100frames.mp4 \
>>>> -vf reverse -an -f null -
>>>> ...
>>>> [h264 @ 0x557a075a1400] get_buffer() failed
>>>> [h264 @ 0x557a075a1400] thread_get_buffer() failed
>>>> [h264 @ 0x557a075a1400] decode_slice_header error
>>>> [h264 @ 0x557a075a1400] no frame!
>>>>
>>>> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
>>>> ---
>>>> libavcodec/vaapi_decode.c | 36 ++++++++++++++++++++----------------
>>>> 1 file changed, 20 insertions(+), 16 deletions(-)
>>>>
>>>> diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
>>>> index ceac769c52..8cc29e96f9 100644
>>>> --- a/libavcodec/vaapi_decode.c
>>>> +++ b/libavcodec/vaapi_decode.c
>>>> @@ -601,22 +601,26 @@ static int vaapi_decode_make_config(AVCodecContext
>>>> *avctx,
>>>> if (err < 0)
>>>> goto fail;
>>>>
>>>> - frames->initial_pool_size = 1;
>>>> - // Add per-codec number of surfaces used for storing reference
>>>> frames.
>>>> - switch (avctx->codec_id) {
>>>> - case AV_CODEC_ID_H264:
>>>> - case AV_CODEC_ID_HEVC:
>>>> - case AV_CODEC_ID_AV1:
>>>> - frames->initial_pool_size += 16;
>>>> - break;
>>>> - case AV_CODEC_ID_VP9:
>>>> - frames->initial_pool_size += 8;
>>>> - break;
>>>> - case AV_CODEC_ID_VP8:
>>>> - frames->initial_pool_size += 3;
>>>> - break;
>>>> - default:
>>>> - frames->initial_pool_size += 2;
>>>> + if (CONFIG_VAAPI_1)
>>>> + frames->initial_pool_size = 0;
>>>> + else {
>>>> + frames->initial_pool_size = 1;
>>>> + // Add per-codec number of surfaces used for storing
>>>> reference
>>>> frames.
>>>> + switch (avctx->codec_id) {
>>>> + case AV_CODEC_ID_H264:
>>>> + case AV_CODEC_ID_HEVC:
>>>> + case AV_CODEC_ID_AV1:
>>>> + frames->initial_pool_size += 16;
>>>> + break;
>>>> + case AV_CODEC_ID_VP9:
>>>> + frames->initial_pool_size += 8;
>>>> + break;
>>>> + case AV_CODEC_ID_VP8:
>>>> + frames->initial_pool_size += 3;
>>>> + break;
>>>> + default:
>>>> + frames->initial_pool_size += 2;
>>>> + }
>>>> }
>>>> }
>>>>
>>>
>>> Hi Mark,
>>>
>>> Do you have any comment about dynamic frame pool used in vaapi ?
>>
>> Are we completely sure that there are no driver/hardware combinations which
>> rely on this still used?
>
> I tested this patch with i965, iHD and radeonsi drivers on Linux and vaon12
> driver on Windows. But honestly I am not sure whether there is a driver which
> works with fixed frame pool only.
How does the vaon12 driver work with this given that some D3D12 devices require a fixed array texture?
Note that the interesting test here is not the most recent version of any of these things. Rather, it is the older versions which exist in a distribution configuration which we still want to support, for example Ubuntu 20.04.
I'm also unclear to what degree this might depend on the hardware being used. Certainly in D3D12 whether the fixed array texture is required depends on the actual hardware support.
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-01-30 19:07 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-20 7:10 [FFmpeg-devel] [PATCH v2 01/12] lavu/hwcontext_qsv: update AVQSVFramesContext to support dynamic frame pools Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 02/12] lavu/hwcontext_qsv: create dynamic frame pool if required Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 03/12] lavu/hwcontext_qsv: add support for dynamic frame pool in qsv_frames_derive_to Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 04/12] lavu/hwcontext_qsv: add support for dynamic frame pool in qsv_map_to Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 05/12] lavc/qsv: fix the mfx allocator to support dynamic frame pools Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 06/12] lavc/qsvenc: use the right info to config encoding parameters Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 07/12] lavc/qsvdec: require a dynamic frame pool if possible Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 08/12] lavfi/qsvvpp: set right mfxFrameInfo for frames in dynamic frame pools Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 09/12] lavfi/qsvvpp: require a dynamic frame pool for output if possible Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 10/12] lavu/hwcontext_vaapi: relax the requirement when using libva2 (VAAPI 1) Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 11/12] lavc/vaapi_decode: use dynamic frame pool for output frames with libva2 Xiang, Haihao
2024-01-26 7:25 ` Xiang, Haihao
2024-01-29 21:58 ` Mark Thompson
2024-01-30 6:30 ` Xiang, Haihao
2024-01-30 19:07 ` Mark Thompson [this message]
2024-01-31 2:26 ` Xiang, Haihao
2024-02-08 4:15 ` Xiang, Haihao
2023-12-20 7:10 ` [FFmpeg-devel] [PATCH v2 12/12] lavfi/vaapi_vpp: use dynamic frame pool for output link " Xiang, Haihao
2024-01-02 5:33 ` [FFmpeg-devel] [PATCH v2 01/12] lavu/hwcontext_qsv: update AVQSVFramesContext to support dynamic frame pools Xiang, Haihao
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=8b2c8882-fb35-4596-8763-9e45647d3759@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