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