Mercurial > mplayer.hg
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; |