[FFmpeg-devel] [PATCH] avcodec/decode: clean-up if get_hw_frames_parameters fails
Thomas Guillem
thomas at gllm.fr
Wed Oct 30 15:19:41 EET 2024
Happy monthly anniversary to my not very interesting patch.
FYI, OpenSuse applied it for their ffmpeg build...
On Mon, Oct 14, 2024, at 10:54, Thomas Guillem via ffmpeg-devel wrote:
> Ping.
>
> On Mon, Oct 7, 2024, at 17:43, Thomas Guillem via ffmpeg-devel wrote:
>> Fixes the following assert:
>>
>> [00007f1df83d17e0] vaapi generic error:
>> avcodec_get_hw_frames_parameters failed: -22
>> Assertion p_dst->hwaccel_threadsafe || (!dst->hwaccel &&
>> !dst->internal->hwaccel_priv_data) failed at
>> libavcodec/pthread_frame.c:349
>>
>> Reproduced from VLC with VAAPI, when fallbacking from hw to sw.
>> ---
>> libavcodec/decode.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
>> index c331bb8596..3380cb27cf 100644
>> --- a/libavcodec/decode.c
>> +++ b/libavcodec/decode.c
>> @@ -19,6 +19,7 @@
>> */
>>
>> #include <stdint.h>
>> +#include <stdbool.h>
>> #include <string.h>
>>
>> #include "config.h"
>> @@ -1173,6 +1174,7 @@ int
>> avcodec_get_hw_frames_parameters(AVCodecContext *avctx,
>> const AVCodecHWConfigInternal *hw_config;
>> const FFHWAccel *hwa;
>> int i, ret;
>> + bool clean_priv_data = false;
>>
>> for (i = 0;; i++) {
>> hw_config = ffcodec(avctx->codec)->hw_configs[i];
>> @@ -1197,6 +1199,7 @@ int
>> avcodec_get_hw_frames_parameters(AVCodecContext *avctx,
>> av_buffer_unref(&frames_ref);
>> return AVERROR(ENOMEM);
>> }
>> + clean_priv_data = true;
>> }
>>
>> ret = hwa->frame_params(avctx, frames_ref);
>> @@ -1217,6 +1220,8 @@ int
>> avcodec_get_hw_frames_parameters(AVCodecContext *avctx,
>>
>> *out_frames_ref = frames_ref;
>> } else {
>> + if (clean_priv_data)
>> + av_freep(&avctx->internal->hwaccel_priv_data);
>> av_buffer_unref(&frames_ref);
>> }
>> return ret;
>> --
>> 2.45.2
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list