From: Miguel F. <mig...@us...> - 2002-04-20 18:31:06
|
Update of /cvsroot/xine/xine-lib/src/libw32dll In directory usw-pr-cvs1:/tmp/cvs-serv10010/src/libw32dll Modified Files: w32codec.c Log Message: fix several audio buffer leaks Index: w32codec.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/w32codec.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -r1.71 -r1.72 --- w32codec.c 16 Apr 2002 02:36:46 -0000 1.71 +++ w32codec.c 20 Apr 2002 18:31:03 -0000 1.72 @@ -980,6 +980,7 @@ unsigned long in_size=in_fmt_->nBlockAlign; unsigned long out_size; audio_buffer_t *audio_buffer; + int audio_buffer_mem_size; in_fmt = (WAVEFORMATEX *) malloc (64); @@ -999,8 +1000,14 @@ printf("w32codec: (ACM_Decoder) Cannot open audio output device\n"); return 0; } + audio_buffer = this->audio_out->get_buffer (this->audio_out); + audio_buffer_mem_size = audio_buffer->mem_size; + audio_buffer->num_frames = 0; + audio_buffer->vpts = 0; + this->audio_out->put_buffer (this->audio_out, audio_buffer); + wf.nChannels = in_fmt->nChannels; wf.nSamplesPerSec = in_fmt->nSamplesPerSec; wf.nAvgBytesPerSec = 2*wf.nSamplesPerSec*wf.nChannels; @@ -1030,8 +1037,8 @@ acmStreamSize(this->srcstream, in_size, &out_size, ACM_STREAMSIZEF_SOURCE); out_size*=2; - if(out_size < audio_buffer->mem_size) - out_size=audio_buffer->mem_size; + if(out_size < audio_buffer_mem_size) + out_size=audio_buffer_mem_size; printf("w32codec: Audio buffer min. size: %d\n",(int)out_size); acmStreamSize(this->srcstream, out_size, (LPDWORD) &this->rec_audio_src_size, @@ -1046,7 +1053,7 @@ return 0; } - out_size = audio_buffer->mem_size; + out_size = audio_buffer_mem_size; printf("w32codec: output buffer size: %d\n",(int)out_size); this->rec_audio_src_size=DS_AudioDecoder_GetSrcSize(this->ds_dec,out_size); |