X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=mixer.cpp;h=04a35530cc7af36d7681d1aca2ebef695be960e0;hb=05b0c5b2b693ba809b8334a892463ae34febb6c3;hp=37af64fb023316abf7543d06811b10bafe60d57c;hpb=a01adea195e33f581ed0308105839616e51ca662;p=nageru diff --git a/mixer.cpp b/mixer.cpp index 37af64f..04a3553 100644 --- a/mixer.cpp +++ b/mixer.cpp @@ -10,12 +10,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include #include @@ -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) {