From cc295d633756a6e43a36fc3b0b8f38021b4bfe49 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 10 Mar 2019 12:40:35 +0100 Subject: [PATCH] Unbreak audio transcoding in Kaeru, which has seemingly been broken from the very start. --- nageru/kaeru.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nageru/kaeru.cpp b/nageru/kaeru.cpp index 843bd81..7a058e4 100644 --- a/nageru/kaeru.cpp +++ b/nageru/kaeru.cpp @@ -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_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) { - *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) { - *dst++ = le32toh(*src++) * (1.0f / 2147483648.0f); + *dst++ = int32_t(le32toh(*src++)) * (1.0f / 2147483648.0f); } } else { assert(false); -- 2.39.2