X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mixer.cpp;h=04a35530cc7af36d7681d1aca2ebef695be960e0;hb=05b0c5b2b693ba809b8334a892463ae34febb6c3;hp=f3d975c6d7757a1e049b6eac88377f5362bd34fb;hpb=f6ab60538006a0ec33781d8cf23ad0f9e4de6770;p=nageru diff --git a/mixer.cpp b/mixer.cpp index f3d975c..04a3553 100644 --- a/mixer.cpp +++ b/mixer.cpp @@ -267,8 +267,7 @@ void Mixer::bm_frame(unsigned card_index, uint16_t timecode, // Insert silence as needed. fprintf(stderr, "Card %d dropped %d frame(s) (before timecode 0x%04x), inserting silence.\n", card_index, dropped_frames, timecode); - vector silence; - silence.resize(silence_samples * 2); + vector silence(silence_samples * 2, 0.0f); for (int i = 0; i < dropped_frames; ++i) { card->resampling_queue->add_input_samples(local_pts / double(TIMEBASE), silence.data(), silence_samples); // Note that if the format changed in the meantime, we have @@ -494,6 +493,7 @@ void Mixer::thread_func() } if (audio_level_callback != nullptr) { + unique_lock lock(r128_mutex); double loudness_s = r128.loudness_S(); double loudness_i = r128.integrated(); double loudness_range_low = r128.range_min(); @@ -744,7 +744,10 @@ void Mixer::process_audio_one_frame(int64_t frame_pts_int, int num_samples) vector left, right; deinterleave_samples(samples_out, &left, &right); float *ptrs[] = { left.data(), right.data() }; - r128.process(left.size(), ptrs); + { + unique_lock lock(r128_mutex); + r128.process(left.size(), ptrs); + } // Send the samples to the sound card. if (alsa) {