X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fkaeru.cpp;h=32b497d200f924c7289c146759094e75bd9c199e;hb=9ffd4f03f314cc6e0254449593def95c9bc203d6;hp=843bd81b4293cbdc28f15c6387e9457aa550c049;hpb=a6b07abd7ffa9583d7157ea9d8cff8deff06f7b4;p=nageru diff --git a/nageru/kaeru.cpp b/nageru/kaeru.cpp index 843bd81..32b497d 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); @@ -172,7 +173,7 @@ int main(int argc, char *argv[]) parse_flags(PROGRAM_KAERU, argc, argv); if (optind + 1 != argc) { usage(PROGRAM_KAERU); - exit(1); + abort(); } global_flags.num_cards = 1; // For latency metrics.