# HG changeset patch # User reimar # Date 1399751981 0 # Node ID 3466f03a5256e9f9bf5a96f9b0e6420807b37ca8 # Parent 5a59a2cfcc8098e4f8dbcaac27dacd9806e59ced Change part of EOF condition into warning message instead. This avoids hangs in some cases when e.g. audio packets are incomplete. Based on debugging and patch by Kieran Clancy [clancy.kieran+mplayer gmail.com] diff -r 5a59a2cfcc80 -r 3466f03a5256 mencoder.c --- a/mencoder.c Sat May 10 19:59:40 2014 +0000 +++ b/mencoder.c Sat May 10 19:59:41 2014 +0000 @@ -1393,7 +1393,15 @@ } } } - if(len<=0) { if (!mux_a->buffer_len && !sh_audio->a_out_buffer_len && sh_audio->ds->eof) at_eof |= 2; break; } // EOF? + if(len<=0) { + // EOF? + if (!sh_audio->a_out_buffer_len && sh_audio->ds->eof) { + if (mux_a->buffer_len) + mp_msg(MSGT_MENCODER, MSGL_WARN, "Audio data left in buffer at end of file. Probably bug in audio encoder, please report."); + at_eof |= 2; + } + break; + } muxer_write_chunk(mux_a,len,AVIIF_KEYFRAME, MP_NOPTS_VALUE, MP_NOPTS_VALUE); a_muxer_time = adjusted_muxer_time(mux_a); // update after muxing if(!mux_a->h.dwSampleSize && a_muxer_time>0)