From 1c92db1cd35dd63ff2a91818314f09a7feb8f8ad Mon Sep 17 00:00:00 2001 From: rfelker Date: Tue, 24 May 2005 02:41:48 +0000 Subject: patch by oded to fix edl hang when end of audio is reached git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15557 b3059339-0415-0410-9bf9-f77b7e298cf2 --- mencoder.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'mencoder.c') diff --git a/mencoder.c b/mencoder.c index 00baddb74e..eefa834b2b 100644 --- a/mencoder.c +++ b/mencoder.c @@ -1612,15 +1612,16 @@ int edl_seek(edl_record_ptr next_edl_record, demuxer_t* demuxer, demux_stream_t if (sh_audio) { a_pts = d_audio->pts + (ds_tell_pts(d_audio) - sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; while (sh_video->pts > a_pts) { + int len; if (mux_a->h.dwSampleSize) { - int len; len = mux_a->wf->nAvgBytesPerSec * (sh_video->pts - a_pts); len/= mux_a->h.dwSampleSize; if(len<1) len=1; len*= mux_a->h.dwSampleSize; - demux_read_data(sh_audio->ds,mux_a->buffer,len); + len = demux_read_data(sh_audio->ds,mux_a->buffer,len); } else { - ds_get_packet(sh_audio->ds,(unsigned char**) &mux_a->buffer); + len = ds_get_packet(sh_audio->ds,(unsigned char**) &mux_a->buffer); } + if (len <= 0) break; // EOF of audio. a_pts = d_audio->pts + (ds_tell_pts(d_audio)-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; } } -- cgit v1.2.3