Mercurial > mplayer.hg
comparison dec_audio.c @ 401:835fac6382be
DVD PCM audio support
author | arpi_esp |
---|---|
date | Sat, 14 Apr 2001 15:25:11 +0000 |
parents | 1f7c824033fb |
children | 5251b0c57e39 |
comparison
equal
deleted
inserted
replaced
400:ae91bfef2a94 | 401:835fac6382be |
---|---|
3 | 3 |
4 int driver=sh_audio->codec->driver; | 4 int driver=sh_audio->codec->driver; |
5 | 5 |
6 sh_audio->samplesize=2; | 6 sh_audio->samplesize=2; |
7 sh_audio->samplerate=0; | 7 sh_audio->samplerate=0; |
8 sh_audio->pcm_bswap=0; | 8 //sh_audio->pcm_bswap=0; |
9 | 9 |
10 sh_audio->a_buffer_size=16384; // default size, maybe not enough for Win32/ACM | 10 sh_audio->a_buffer_size=16384; // default size, maybe not enough for Win32/ACM |
11 sh_audio->a_buffer=NULL; | 11 sh_audio->a_buffer=NULL; |
12 | 12 |
13 if(driver==4){ | 13 if(driver==4){ |
61 driver=0; | 61 driver=0; |
62 } | 62 } |
63 break; | 63 break; |
64 } | 64 } |
65 case 2: { | 65 case 2: { |
66 // if(file_format==DEMUXER_TYPE_AVI){ // FIXME!!!!!!! | |
67 // AVI PCM Audio: | 66 // AVI PCM Audio: |
68 WAVEFORMATEX *h=&sh_audio->wf; | 67 WAVEFORMATEX *h=&sh_audio->wf; |
69 sh_audio->channels=h->nChannels; | 68 sh_audio->channels=h->nChannels; |
70 sh_audio->samplerate=h->nSamplesPerSec; | 69 sh_audio->samplerate=h->nSamplesPerSec; |
71 sh_audio->samplesize=(h->wBitsPerSample+7)/8; | 70 sh_audio->samplesize=(h->wBitsPerSample+7)/8; |
72 // } else { | 71 break; |
73 // // DVD PCM audio: | 72 } |
74 // sh_audio->channels=2; | 73 case 8: { |
75 // sh_audio->samplerate=48000; | 74 // DVD PCM Audio: |
75 sh_audio->channels=2; | |
76 sh_audio->samplerate=48000; | |
76 // sh_audio->pcm_bswap=1; | 77 // sh_audio->pcm_bswap=1; |
77 // } | |
78 break; | 78 break; |
79 } | 79 } |
80 case 3: { | 80 case 3: { |
81 // Dolby AC3 audio: | 81 // Dolby AC3 audio: |
82 ac3_config.fill_buffer_callback = ac3_fill_buffer; | 82 ac3_config.fill_buffer_callback = ac3_fill_buffer; |
147 switch(sh_audio->codec->driver){ | 147 switch(sh_audio->codec->driver){ |
148 case 1: // MPEG layer 2 or 3 | 148 case 1: // MPEG layer 2 or 3 |
149 len=MP3_DecodeFrame(buf,-1); | 149 len=MP3_DecodeFrame(buf,-1); |
150 sh_audio->channels=2; // hack | 150 sh_audio->channels=2; // hack |
151 break; | 151 break; |
152 case 2: // PCM | 152 case 2: // AVI PCM |
153 { len=demux_read_data(sh_audio->ds,buf,OUTBURST); | 153 { len=demux_read_data(sh_audio->ds,buf,OUTBURST); |
154 if(sh_audio->pcm_bswap){ | 154 break; |
155 int j; | 155 } |
156 case 8: // DVD PCM | |
157 { int j; | |
158 len=demux_read_data(sh_audio->ds,buf,OUTBURST); | |
156 //if(i&1){ printf("Warning! pcm_audio_size&1 !=0 (%d)\n",i);i&=~1; } | 159 //if(i&1){ printf("Warning! pcm_audio_size&1 !=0 (%d)\n",i);i&=~1; } |
157 for(j=0;j<len;j+=2){ | 160 for(j=0;j<len;j+=2){ |
158 char x=buf[j]; | 161 char x=buf[j]; |
159 buf[j]=buf[j+1]; | 162 buf[j]=buf[j+1]; |
160 buf[j+1]=x; | 163 buf[j+1]=x; |
161 } | 164 } |
162 } | |
163 break; | 165 break; |
164 } | 166 } |
165 case 5: // aLaw decoder | 167 case 5: // aLaw decoder |
166 { int l=demux_read_data(sh_audio->ds,buf,OUTBURST/2); | 168 { int l=demux_read_data(sh_audio->ds,buf,OUTBURST/2); |
167 unsigned short *d=(unsigned short *) buf; | 169 unsigned short *d=(unsigned short *) buf; |