Mercurial > libavformat.hg
comparison riff.c @ 3737:704c20dd52a4 libavformat
Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
author | pross |
---|---|
date | Tue, 19 Aug 2008 10:54:30 +0000 |
parents | 98156a539790 |
children | 8e7b2616e1ad |
comparison
equal
deleted
inserted
replaced
3736:441e758e1a5e | 3737:704c20dd52a4 |
---|---|
169 { CODEC_ID_PCM_S16LE, 0x0001 }, | 169 { CODEC_ID_PCM_S16LE, 0x0001 }, |
170 { CODEC_ID_PCM_U8, 0x0001 }, /* must come after s16le in this list */ | 170 { CODEC_ID_PCM_U8, 0x0001 }, /* must come after s16le in this list */ |
171 { CODEC_ID_PCM_S24LE, 0x0001 }, | 171 { CODEC_ID_PCM_S24LE, 0x0001 }, |
172 { CODEC_ID_PCM_S32LE, 0x0001 }, | 172 { CODEC_ID_PCM_S32LE, 0x0001 }, |
173 { CODEC_ID_ADPCM_MS, 0x0002 }, | 173 { CODEC_ID_ADPCM_MS, 0x0002 }, |
174 { CODEC_ID_PCM_F32LE, 0x0003 }, | |
175 { CODEC_ID_PCM_F64LE, 0x0003 }, /* must come after f32le in this list */ | |
174 { CODEC_ID_PCM_ALAW, 0x0006 }, | 176 { CODEC_ID_PCM_ALAW, 0x0006 }, |
175 { CODEC_ID_PCM_MULAW, 0x0007 }, | 177 { CODEC_ID_PCM_MULAW, 0x0007 }, |
176 { CODEC_ID_WMAVOICE, 0x000A }, | 178 { CODEC_ID_WMAVOICE, 0x000A }, |
177 { CODEC_ID_ADPCM_IMA_WAV, 0x0011 }, | 179 { CODEC_ID_ADPCM_IMA_WAV, 0x0011 }, |
178 { CODEC_ID_PCM_ZORK, 0x0011 }, /* must come after adpcm_ima_wav in this list */ | 180 { CODEC_ID_PCM_ZORK, 0x0011 }, /* must come after adpcm_ima_wav in this list */ |
250 bps = 0; | 252 bps = 0; |
251 } else if (enc->codec_id == CODEC_ID_ADPCM_IMA_WAV || enc->codec_id == CODEC_ID_ADPCM_MS || enc->codec_id == CODEC_ID_ADPCM_G726 || enc->codec_id == CODEC_ID_ADPCM_YAMAHA) { // | 253 } else if (enc->codec_id == CODEC_ID_ADPCM_IMA_WAV || enc->codec_id == CODEC_ID_ADPCM_MS || enc->codec_id == CODEC_ID_ADPCM_G726 || enc->codec_id == CODEC_ID_ADPCM_YAMAHA) { // |
252 bps = 4; | 254 bps = 4; |
253 } else if (enc->codec_id == CODEC_ID_PCM_S24LE) { | 255 } else if (enc->codec_id == CODEC_ID_PCM_S24LE) { |
254 bps = 24; | 256 bps = 24; |
255 } else if (enc->codec_id == CODEC_ID_PCM_S32LE) { | 257 } else if (enc->codec_id == CODEC_ID_PCM_S32LE || enc->codec_id == CODEC_ID_PCM_F32LE) { |
256 bps = 32; | 258 bps = 32; |
259 } else if (enc->codec_id == CODEC_ID_PCM_F64LE) { | |
260 bps = 64; | |
257 } else { | 261 } else { |
258 bps = 16; | 262 bps = 16; |
259 } | 263 } |
260 if(bps != enc->bits_per_sample && enc->bits_per_sample){ | 264 if(bps != enc->bits_per_sample && enc->bits_per_sample){ |
261 av_log(enc, AV_LOG_WARNING, "requested bits_per_sample (%d) and actually stored (%d) differ\n", enc->bits_per_sample, bps); | 265 av_log(enc, AV_LOG_WARNING, "requested bits_per_sample (%d) and actually stored (%d) differ\n", enc->bits_per_sample, bps); |
271 } else | 275 } else |
272 blkalign = enc->channels*bps >> 3; | 276 blkalign = enc->channels*bps >> 3; |
273 if (enc->codec_id == CODEC_ID_PCM_U8 || | 277 if (enc->codec_id == CODEC_ID_PCM_U8 || |
274 enc->codec_id == CODEC_ID_PCM_S24LE || | 278 enc->codec_id == CODEC_ID_PCM_S24LE || |
275 enc->codec_id == CODEC_ID_PCM_S32LE || | 279 enc->codec_id == CODEC_ID_PCM_S32LE || |
280 enc->codec_id == CODEC_ID_PCM_F32LE || | |
281 enc->codec_id == CODEC_ID_PCM_F64LE || | |
276 enc->codec_id == CODEC_ID_PCM_S16LE) { | 282 enc->codec_id == CODEC_ID_PCM_S16LE) { |
277 bytespersec = enc->sample_rate * blkalign; | 283 bytespersec = enc->sample_rate * blkalign; |
278 } else { | 284 } else { |
279 bytespersec = enc->bit_rate / 8; | 285 bytespersec = enc->bit_rate / 8; |
280 } | 286 } |
408 id = CODEC_ID_PCM_U8; | 414 id = CODEC_ID_PCM_U8; |
409 if (id == CODEC_ID_PCM_S16LE && bps == 24) | 415 if (id == CODEC_ID_PCM_S16LE && bps == 24) |
410 id = CODEC_ID_PCM_S24LE; | 416 id = CODEC_ID_PCM_S24LE; |
411 if (id == CODEC_ID_PCM_S16LE && bps == 32) | 417 if (id == CODEC_ID_PCM_S16LE && bps == 32) |
412 id = CODEC_ID_PCM_S32LE; | 418 id = CODEC_ID_PCM_S32LE; |
419 if (id == CODEC_ID_PCM_F32LE && bps == 64) | |
420 id = CODEC_ID_PCM_F64LE; | |
413 if (id == CODEC_ID_ADPCM_IMA_WAV && bps == 8) | 421 if (id == CODEC_ID_ADPCM_IMA_WAV && bps == 8) |
414 id = CODEC_ID_PCM_ZORK; | 422 id = CODEC_ID_PCM_ZORK; |
415 return id; | 423 return id; |
416 } | 424 } |
417 #endif // CONFIG_DEMUXERS | 425 #endif // CONFIG_DEMUXERS |