[FFmpeg-devel] [PATCH v3 2/2] lavc/get_buffer: Add a warning on failed allocation from a fixed pool

Mark Thompson sw at jkqxz.net
Mon Mar 18 23:33:29 EET 2024


On 18/03/2024 05:53, Xiang, Haihao wrote:
> On So, 2024-03-17 at 20:51 +0000, Mark Thompson wrote:
>> For hardware cases where we are forced to have a fixed pool of frames
>> allocated up-front (such as array textures on decoder output), suggest
>> a possible workaround to the user if an allocation fails because the
>> pool is exhausted.
>> ---
>> Perhaps helpful; any thoughts?
>>
>> The warning comes out before any errors, looking like:
>>
>> [mpeg2video @ 0x560ff51b4600] Failed to allocate a vaapi/nv12 frame from a
>> fixed pool of hardware frames.
>> [mpeg2video @ 0x560ff51b4600] Consider setting extra_hw_frames to a larger
>> value (currently set to 8, giving a pool size of 14).
>> [mpeg2video @ 0x560ff51b4600] get_buffer() failed
>> [vist#0:0/mpeg2video @ 0x560ff5199840] [dec:mpeg2video @ 0x560ff51b3b40] Error
>> submitting packet to decoder: Operation not permitted
> 
> I'm OK to print such warning so user may know how to work around it. But now
> many cases are impacted by this error (e.g. https://trac.ffmpeg.org/ticket/10856
> ), I think it is a regression to user. I still prefer to use a dynamic buffer
> pool instead fixed frame pool to avoid such error when the dynamic buffer pool
> can work.

How would we implement this on D3D11 or D3D12?

A way of doing the second in particular would be very useful, because the current decoder only works on a subset of drivers which don't require array textures.

Thanks,

- Mark


More information about the ffmpeg-devel mailing list