]> git.sesse.net Git - nageru/commitdiff
Unbreak audio transcoding in Kaeru, which has seemingly been broken from the very...
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 10 Mar 2019 11:40:35 +0000 (12:40 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 10 Mar 2019 11:40:38 +0000 (12:40 +0100)
nageru/kaeru.cpp

index 843bd81b4293cbdc28f15c6387e9457aa550c049..7a058e47e5e0d4c1733953acf077d9d37c485186 100644 (file)
@@ -104,17 +104,18 @@ void video_frame_callback(FFmpegCapture *video, X264Encoder *x264_encoder, Audio
                size_t num_samples = audio_frame.len / (audio_format.bits_per_sample / 8);
                vector<float> float_samples;
                float_samples.resize(num_samples);
                size_t num_samples = audio_frame.len / (audio_format.bits_per_sample / 8);
                vector<float> float_samples;
                float_samples.resize(num_samples);
+
                if (audio_format.bits_per_sample == 16) {
                        const int16_t *src = (const int16_t *)audio_frame.data;
                        float *dst = &float_samples[0];
                        for (size_t i = 0; i < num_samples; ++i) {
                if (audio_format.bits_per_sample == 16) {
                        const int16_t *src = (const int16_t *)audio_frame.data;
                        float *dst = &float_samples[0];
                        for (size_t i = 0; i < num_samples; ++i) {
-                               *dst++ = le16toh(*src++) * (1.0f / 32768.0f);
+                               *dst++ = int16_t(le16toh(*src++)) * (1.0f / 32768.0f);
                        }
                } else if (audio_format.bits_per_sample == 32) {
                        const int32_t *src = (const int32_t *)audio_frame.data;
                        float *dst = &float_samples[0];
                        for (size_t i = 0; i < num_samples; ++i) {
                        }
                } else if (audio_format.bits_per_sample == 32) {
                        const int32_t *src = (const int32_t *)audio_frame.data;
                        float *dst = &float_samples[0];
                        for (size_t i = 0; i < num_samples; ++i) {
-                               *dst++ = le32toh(*src++) * (1.0f / 2147483648.0f);
+                               *dst++ = int32_t(le32toh(*src++)) * (1.0f / 2147483648.0f);
                        }
                } else {
                        assert(false);
                        }
                } else {
                        assert(false);