changeset 29511:2c47c6dd92b5

Retry deciding to get audio parameters several times on errors, this avoids failing to init the decoder completely just because the first packet is broken.
author reimar
date Wed, 26 Aug 2009 19:05:36 +0000
parents 8ba4a5ee1480
children 93da3c10c2ac
files libmpcodecs/ad_ffmpeg.c
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/ad_ffmpeg.c	Wed Aug 26 17:35:40 2009 +0000
+++ b/libmpcodecs/ad_ffmpeg.c	Wed Aug 26 19:05:36 2009 +0000
@@ -36,6 +36,7 @@
 
 static int init(sh_audio_t *sh_audio)
 {
+    int tries = 0;
     int x;
     AVCodecContext *lavc_context;
     AVCodec *lavc_codec;
@@ -106,7 +107,9 @@
    }
 
    // Decode at least 1 byte:  (to get header filled)
+   do {
    x=decode_audio(sh_audio,sh_audio->a_buffer,1,sh_audio->a_buffer_size);
+   } while (x <= 0 && tries++ < 5);
    if(x>0) sh_audio->a_buffer_len=x;
 
   sh_audio->channels=lavc_context->channels;