diff options
author | Stephan Vedder <vedder@mbits.info> | 2022-07-04 11:41:45 +0200 |
---|---|---|
committer | Stephan Vedder <vedder@mbits.info> | 2022-07-04 13:29:09 +0200 |
commit | 1c8bddf3cad7ac2721c89f661268d0a558057683 (patch) | |
tree | caeec9fec07ee2f7705d8857a066c44d12651d8d /modules | |
parent | b0766a62ec1b220f9172dfd412357b016be24aca (diff) | |
download | gtk+-1c8bddf3cad7ac2721c89f661268d0a558057683.tar.gz |
ffmpeg: Fix crash on some media files
Return code EAGAIN expects the user to feed more packets into the decoder
Diffstat (limited to 'modules')
-rw-r--r-- | modules/media/gtkffmediafile.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/modules/media/gtkffmediafile.c b/modules/media/gtkffmediafile.c index 819d14d2c1..2210d31ddd 100644 --- a/modules/media/gtkffmediafile.c +++ b/modules/media/gtkffmediafile.c @@ -292,9 +292,15 @@ gtk_ff_media_file_decode_frame (GtkFfMediaFile *video, if (errnum >= 0) { errnum = avcodec_receive_frame (video->codec_ctx, frame); + if (errnum == AVERROR (EAGAIN)) + { + // Just retry with the next packet + errnum = 0; + continue; + } if (errnum < 0) G_BREAKPOINT(); - if (errnum >= 0) + else { av_packet_unref (&packet); break; |