comparison dec_audio.c @ 1309:598e3047ce13

Add some preliminary support for non-x86 architectures to mplayer
author jkeil
date Thu, 12 Jul 2001 15:35:52 +0000
parents 36ed1692c0b8
children d797ecb9778f
comparison
equal deleted inserted replaced
1308:ffd63a75700c 1309:598e3047ce13
73 // setup required min. in/out buffer size: 73 // setup required min. in/out buffer size:
74 sh_audio->audio_out_minsize=8192;// default size, maybe not enough for Win32/ACM 74 sh_audio->audio_out_minsize=8192;// default size, maybe not enough for Win32/ACM
75 75
76 switch(driver){ 76 switch(driver){
77 case 4: 77 case 4:
78 #ifndef ARCH_X86
79 printf("Win32/ACM audio codec unavailable on non-x86 CPU -> force nosound :(\n");
80 driver=0;
81 #else
78 // Win32 ACM audio codec: 82 // Win32 ACM audio codec:
79 if(init_acm_audio_codec(sh_audio)){ 83 if(init_acm_audio_codec(sh_audio)){
80 sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec; 84 sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
81 sh_audio->channels=sh_audio->o_wf.nChannels; 85 sh_audio->channels=sh_audio->o_wf.nChannels;
82 sh_audio->samplerate=sh_audio->o_wf.nSamplesPerSec; 86 sh_audio->samplerate=sh_audio->o_wf.nSamplesPerSec;
86 // sh_audio->a_buffer_size=sh_audio->audio_out_minsize+MAX_OUTBURST; 90 // sh_audio->a_buffer_size=sh_audio->audio_out_minsize+MAX_OUTBURST;
87 } else { 91 } else {
88 printf("Could not load/initialize Win32/ACM AUDIO codec (missing DLL file?)\n"); 92 printf("Could not load/initialize Win32/ACM AUDIO codec (missing DLL file?)\n");
89 driver=0; 93 driver=0;
90 } 94 }
95 #endif
91 break; 96 break;
92 case 7: 97 case 7:
93 #ifndef USE_DIRECTSHOW 98 #ifndef USE_DIRECTSHOW
94 printf("Compiled without DirectShow support -> force nosound :(\n"); 99 printf("Compiled without DirectShow support -> force nosound :(\n");
95 driver=0; 100 driver=0;
147 } 152 }
148 memset(sh_audio->a_buffer,0,sh_audio->a_buffer_size); 153 memset(sh_audio->a_buffer,0,sh_audio->a_buffer_size);
149 sh_audio->a_buffer_len=0; 154 sh_audio->a_buffer_len=0;
150 155
151 switch(driver){ 156 switch(driver){
157 #ifdef ARCH_X86
152 case 4: { 158 case 4: {
153 int ret=acm_decode_audio(sh_audio,sh_audio->a_buffer,4096,sh_audio->a_buffer_size); 159 int ret=acm_decode_audio(sh_audio,sh_audio->a_buffer,4096,sh_audio->a_buffer_size);
154 if(ret<0){ 160 if(ret<0){
155 printf("ACM decoding error: %d\n",ret); 161 printf("ACM decoding error: %d\n",ret);
156 driver=0; 162 driver=0;
157 } 163 }
158 sh_audio->a_buffer_len=ret; 164 sh_audio->a_buffer_len=ret;
159 break; 165 break;
160 } 166 }
167 #endif
161 case 2: { 168 case 2: {
162 // AVI PCM Audio: 169 // AVI PCM Audio:
163 WAVEFORMATEX *h=sh_audio->wf; 170 WAVEFORMATEX *h=sh_audio->wf;
164 sh_audio->i_bps=h->nAvgBytesPerSec; 171 sh_audio->i_bps=h->nAvgBytesPerSec;
165 sh_audio->channels=h->nChannels; 172 sh_audio->channels=h->nChannels;
318 memcpy(buf,((ac3_frame_t*)sh_audio->ac3_frame)->audio_data,len); 325 memcpy(buf,((ac3_frame_t*)sh_audio->ac3_frame)->audio_data,len);
319 sh_audio->ac3_frame=NULL; 326 sh_audio->ac3_frame=NULL;
320 } 327 }
321 //printf("{3:%d}",avi_header.idx_pos);fflush(stdout); 328 //printf("{3:%d}",avi_header.idx_pos);fflush(stdout);
322 break; 329 break;
330 #ifdef ARCH_X86
323 case 4: 331 case 4:
324 // len=sh_audio->audio_out_minsize; // optimal decoded fragment size 332 // len=sh_audio->audio_out_minsize; // optimal decoded fragment size
325 // if(len<minlen) len=minlen; else 333 // if(len<minlen) len=minlen; else
326 // if(len>maxlen) len=maxlen; 334 // if(len>maxlen) len=maxlen;
327 // len=acm_decode_audio(sh_audio,buf,len); 335 // len=acm_decode_audio(sh_audio,buf,len);
328 len=acm_decode_audio(sh_audio,buf,minlen,maxlen); 336 len=acm_decode_audio(sh_audio,buf,minlen,maxlen);
329 break; 337 break;
338 #endif
330 339
331 #ifdef USE_DIRECTSHOW 340 #ifdef USE_DIRECTSHOW
332 case 7: // DirectShow 341 case 7: // DirectShow
333 { int ret; 342 { int ret;
334 int size_in=0; 343 int size_in=0;