diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-12-18 21:15:10 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-12-18 21:15:10 +0000 |
| commit | eb145ae0fc23ac9730de45e9f323e6b20019d745 (patch) | |
| tree | 865ab654d385c6320d25aaf363d3754f832df64d /src/lib/ffmpeg_decoder.cc | |
| parent | 174d9a2d2b1ca5a9c2c0f39c6b0ebad6e24d6216 (diff) | |
| parent | 513ee257dfcac679b346a872e4446ab2ef453f67 (diff) | |
Fix merge.
Diffstat (limited to 'src/lib/ffmpeg_decoder.cc')
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 74eb8934c..3c607a7fb 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -438,7 +438,25 @@ FFmpegDecoder::deinterleave_audio (uint8_t* data, int size) } } } + break; + + case AV_SAMPLE_FMT_FLT: + { + float* p = reinterpret_cast<float*> (data); + int sample = 0; + int channel = 0; + for (int i = 0; i < total_samples; ++i) { + audio->data(channel)[sample] = *p++; + ++channel; + if (channel == _film->audio_channels()) { + channel = 0; + ++sample; + } + } + } + break; + case AV_SAMPLE_FMT_FLTP: { float* p = reinterpret_cast<float*> (data); @@ -450,7 +468,7 @@ FFmpegDecoder::deinterleave_audio (uint8_t* data, int size) break; default: - assert (false); + throw DecodeError (String::compose ("Unrecognised audio sample format (%1)", static_cast<int> (audio_sample_format()))); } return audio; |
