Merge master.
authorCarl Hetherington <cth@carlh.net>
Sat, 8 Mar 2014 13:15:06 +0000 (13:15 +0000)
committerCarl Hetherington <cth@carlh.net>
Sat, 8 Mar 2014 13:15:06 +0000 (13:15 +0000)
ChangeLog
src/lib/ffmpeg_decoder.cc

index d7cd6adf85a86e81b2b1dde654f3846b5fd22ff0..7c6f4ebdde0727b1691df2d9a2ba67faf39fc009 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
 
        * Add subtitle view.
 
+2014-03-08  Carl Hetherington  <cth@carlh.net>
+
+       * Support for unsigned 8-bit audio (hmm!).
+
 2014-03-06  Carl Hetherington  <cth@carlh.net>
 
        * Version 1.65.0 released.
index dc2a5590b450f2226ef55ef0ffab005022aa899c..d37399eb3e00d9b5d09dff228d002c30b89e2038 100644 (file)
@@ -182,6 +182,23 @@ FFmpegDecoder::deinterleave_audio (uint8_t** data, int size)
        shared_ptr<AudioBuffers> audio (new AudioBuffers (_ffmpeg_content->audio_channels(), frames));
 
        switch (audio_sample_format()) {
+       case AV_SAMPLE_FMT_U8:
+       {
+               uint8_t* p = reinterpret_cast<uint8_t *> (data[0]);
+               int sample = 0;
+               int channel = 0;
+               for (int i = 0; i < total_samples; ++i) {
+                       audio->data(channel)[sample] = float(*p++) / (1 << 23);
+
+                       ++channel;
+                       if (channel == _ffmpeg_content->audio_channels()) {
+                               channel = 0;
+                               ++sample;
+                       }
+               }
+       }
+       break;
+       
        case AV_SAMPLE_FMT_S16:
        {
                int16_t* p = reinterpret_cast<int16_t *> (data[0]);