comparison libmpdemux/demux_audio.c @ 4720:10ad330c1733

fixed WAV demuxer so that it skips to the actual start of the audio data
author melanson
date Sat, 16 Feb 2002 05:45:16 +0000
parents b7054dadd2c0
children 9579496a91db
comparison
equal deleted inserted replaced
4719:62eb233b12ed 4720:10ad330c1733
131 demux_info_add(demuxer,"Genre",genres[g]); 131 demux_info_add(demuxer,"Genre",genres[g]);
132 } 132 }
133 } 133 }
134 break; 134 break;
135 case WAV: { 135 case WAV: {
136 unsigned int chunk_type;
137 unsigned int chunk_size;
136 WAVEFORMATEX* w; 138 WAVEFORMATEX* w;
137 int l; 139 int l;
138 sh_audio->wf = w = (WAVEFORMATEX*)malloc(sizeof(WAVEFORMATEX)); 140 sh_audio->wf = w = (WAVEFORMATEX*)malloc(sizeof(WAVEFORMATEX));
139 l = stream_read_dword_le(s); 141 l = stream_read_dword_le(s);
140 if(l < 16) { 142 if(l < 16) {
150 w->wBitsPerSample = sh_audio->samplesize = stream_read_word_le(s); 152 w->wBitsPerSample = sh_audio->samplesize = stream_read_word_le(s);
151 w->cbSize = 0; 153 w->cbSize = 0;
152 l -= 16; 154 l -= 16;
153 if(l) 155 if(l)
154 stream_skip(s,l); 156 stream_skip(s,l);
157 do
158 {
159 chunk_type = stream_read_fourcc(demuxer->stream);
160 chunk_size = stream_read_dword_le(demuxer->stream);
161 if (chunk_type != mmioFOURCC('d', 'a', 't', 'a'))
162 stream_skip(demuxer->stream, chunk_size);
163 } while (chunk_type != mmioFOURCC('d', 'a', 't', 'a'));
155 demuxer->movi_start = stream_tell(s); 164 demuxer->movi_start = stream_tell(s);
156 demuxer->movi_end = s->end_pos; 165 demuxer->movi_end = s->end_pos;
157 } break; 166 } break;
158 } 167 }
159 168
217 stream_read(s,dp->buffer,l); 226 stream_read(s,dp->buffer,l);
218 ds_add_packet(ds,dp); 227 ds_add_packet(ds,dp);
219 return 1; 228 return 1;
220 } 229 }
221 default: 230 default:
222 printf("Audio demuxer : unknow format %d\n",priv->frmt); 231 printf("Audio demuxer : unknown format %d\n",priv->frmt);
223 } 232 }
224 233
225 234
226 return 0; 235 return 0;
227 } 236 }