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