From a44eb2723851679a256d7db1840c7447351ebbb2 Mon Sep 17 00:00:00 2001 From: arpi_esp Date: Wed, 25 Apr 2001 01:27:30 +0000 Subject: ACM fixes - now plays april_25.asf too git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@632 b3059339-0415-0410-9bf9-f77b7e298cf2 --- dll_init.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'dll_init.c') diff --git a/dll_init.c b/dll_init.c index 126a4f32d2..ad0b6298c5 100644 --- a/dll_init.c +++ b/dll_init.c @@ -59,17 +59,18 @@ int init_acm_audio_codec(sh_audio_t *sh_audio){ } if(verbose) printf("Audio codec opened OK! ;-)\n"); - srcsize=in_fmt->nBlockAlign; - acmStreamSize(sh_audio->srcstream, srcsize, &srcsize, ACM_STREAMSIZEF_SOURCE); + acmStreamSize(sh_audio->srcstream, in_fmt->nBlockAlign, &srcsize, ACM_STREAMSIZEF_SOURCE); if(srcsizeaudio_out_minsize=srcsize; // audio output min. size if(verbose) printf("Audio ACM output buffer min. size: %ld\n",srcsize); - acmStreamSize(sh_audio->srcstream, srcsize, &srcsize, ACM_STREAMSIZEF_DESTINATION); + acmStreamSize(sh_audio->srcstream, 2*srcsize, &srcsize, ACM_STREAMSIZEF_DESTINATION); sh_audio->audio_in_minsize=srcsize; // audio input min. size if(verbose) printf("Audio ACM input buffer min. size: %ld\n",srcsize); + + if(srcsizenBlockAlign) srcsize=in_fmt->nBlockAlign; - sh_audio->a_in_buffer_size=sh_audio->audio_in_minsize; + sh_audio->a_in_buffer_size=2*sh_audio->audio_in_minsize; sh_audio->a_in_buffer=malloc(sh_audio->a_in_buffer_size); sh_audio->a_in_buffer_len=0; @@ -89,6 +90,7 @@ int acm_decode_audio(sh_audio_t *sh_audio, void* a_buffer,int len){ demux_read_data(sh_audio->ds,&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len], srcsize-sh_audio->a_in_buffer_len); } + if(verbose>=3)printf("acm convert %d -> %d bytes\n",sh_audio->a_in_buffer_len,len); memset(&ash, 0, sizeof(ash)); ash.cbStruct=sizeof(ash); ash.fdwStatus=0; @@ -105,9 +107,10 @@ int acm_decode_audio(sh_audio_t *sh_audio, void* a_buffer,int len){ hr=acmStreamConvert(sh_audio->srcstream,&ash,0); if(hr){ printf("ACM_Decoder: acmStreamConvert error %d\n",(int)hr); - return -1; + +// return -1; } - //printf("ACM convert %d -> %d (buf=%d)\n",ash.cbSrcLengthUsed,ash.cbDstLengthUsed,a_in_buffer_len); + if(verbose>=3) printf("acm converted %d -> %d\n",ash.cbSrcLengthUsed,ash.cbDstLengthUsed); if(ash.cbSrcLengthUsed>=sh_audio->a_in_buffer_len){ sh_audio->a_in_buffer_len=0; } else { -- cgit v1.2.3