Mercurial > mplayer.hg
comparison mplayer.c @ 17274:13b99f89969f
check the intermediate audio buffer
otherwise, data can get stuck between the demuxer and filter layer
causing a premature end of audio.
author | henry |
---|---|
date | Sat, 31 Dec 2005 07:37:37 +0000 |
parents | 3d02f6e2a432 |
children | b0046966ab82 |
comparison
equal
deleted
inserted
replaced
17273:30f4c40e137f | 17274:13b99f89969f |
---|---|
2597 | 2597 |
2598 // Fill buffer if needed: | 2598 // Fill buffer if needed: |
2599 current_module="decode_audio"; // Enter AUDIO decoder module | 2599 current_module="decode_audio"; // Enter AUDIO decoder module |
2600 t=GetTimer(); | 2600 t=GetTimer(); |
2601 while(sh_audio->a_out_buffer_len<playsize && | 2601 while(sh_audio->a_out_buffer_len<playsize && |
2602 (!d_audio->eof || sh_audio->a_in_buffer_len > 0)){ | 2602 (!d_audio->eof || sh_audio->a_in_buffer_len > 0 || sh_audio->a_buffer_len > 0)){ |
2603 int ret=decode_audio(sh_audio,&sh_audio->a_out_buffer[sh_audio->a_out_buffer_len], | 2603 int ret=decode_audio(sh_audio,&sh_audio->a_out_buffer[sh_audio->a_out_buffer_len], |
2604 playsize-sh_audio->a_out_buffer_len,sh_audio->a_out_buffer_size-sh_audio->a_out_buffer_len); | 2604 playsize-sh_audio->a_out_buffer_len,sh_audio->a_out_buffer_size-sh_audio->a_out_buffer_len); |
2605 if(ret<=0) { // EOF? | 2605 if(ret<=0) { // EOF? |
2606 if (d_audio->eof) | 2606 if (d_audio->eof) |
2607 sh_audio->a_in_buffer_len = 0; // make sure we don't hang if something's broken | 2607 sh_audio->a_in_buffer_len = 0; // make sure we don't hang if something's broken |