summaryrefslogtreecommitdiffstats
path: root/mencoder.c
diff options
context:
space:
mode:
authorrfelker <rfelker@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-24 02:41:48 +0000
committerrfelker <rfelker@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-24 02:41:48 +0000
commit1c92db1cd35dd63ff2a91818314f09a7feb8f8ad (patch)
treeb19daa7c794f17841a57e692d0e91a88bee4af02 /mencoder.c
parente92e250a3ca92dbaf7b576c1c3b34992e031c14a (diff)
downloadmpv-1c92db1cd35dd63ff2a91818314f09a7feb8f8ad.tar.bz2
mpv-1c92db1cd35dd63ff2a91818314f09a7feb8f8ad.tar.xz
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
Diffstat (limited to 'mencoder.c')
-rw-r--r--mencoder.c7
1 files changed, 4 insertions, 3 deletions
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;
}
}