X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=audio_mixer.cpp;h=15c65de53566d2c776b2b6096e82af2f21cf9c9a;hb=4bbcd111d04f36a42cf3d40f18fcee5a91c6322a;hp=06c7f870fcae75203eb75749ebf8c568e44d5bf9;hpb=35e2c9dbbd5899d6dd3b2f926f95eeba72d038ba;p=nageru diff --git a/audio_mixer.cpp b/audio_mixer.cpp index 06c7f87..15c65de 100644 --- a/audio_mixer.cpp +++ b/audio_mixer.cpp @@ -59,6 +59,16 @@ AudioMixer::AudioMixer(unsigned num_cards) set_compressor_enabled(global_flags.compressor_enabled); set_limiter_enabled(global_flags.limiter_enabled); set_final_makeup_gain_auto(global_flags.final_makeup_gain_auto); + + // Generate a very simple, default input mapping. + InputMapping::Input input; + input.name = "Main"; + input.input_source_type = InputSourceType::CAPTURE_CARD; + input.input_source_index = 0; + input.source_channel[0] = 0; + input.source_channel[1] = 1; + + input_mapping.inputs.push_back(input); } void AudioMixer::reset_card(unsigned card_index) @@ -227,11 +237,11 @@ vector AudioMixer::get_output(double pts, unsigned num_samples, Resamplin // something we get out per-sample. // // Note that there's a feedback loop here, so we choose a very slow filter - // (half-time of 100 seconds). + // (half-time of 30 seconds). double target_loudness_factor, alpha; double loudness_lu = loudness_lufs - ref_level_lufs; double current_makeup_lu = to_db(final_makeup_gain); - target_loudness_factor = from_db(-loudness_lu); + target_loudness_factor = final_makeup_gain * from_db(-loudness_lu); // If we're outside +/- 5 LU uncorrected, we don't count it as // a normal signal (probably silence) and don't change the @@ -241,7 +251,7 @@ vector AudioMixer::get_output(double pts, unsigned num_samples, Resamplin } else { // Formula adapted from // https://en.wikipedia.org/wiki/Low-pass_filter#Simple_infinite_impulse_response_filter. - const double half_time_s = 100.0; + const double half_time_s = 30.0; const double fc_mul_2pi_delta_t = 1.0 / (half_time_s * OUTPUT_FREQUENCY); alpha = fc_mul_2pi_delta_t / (fc_mul_2pi_delta_t + 1.0); } @@ -259,3 +269,33 @@ vector AudioMixer::get_output(double pts, unsigned num_samples, Resamplin return samples_out; } + +vector AudioMixer::get_names() const +{ + vector names; + for (unsigned card_index = 0; card_index < num_cards; ++card_index) { + const CaptureCard *card = &cards[card_index]; + unique_lock lock(card->audio_mutex); + names.push_back(card->name); + } + return names; +} + +void AudioMixer::set_name(unsigned card_index, const string &name) +{ + CaptureCard *card = &cards[card_index]; + unique_lock lock(card->audio_mutex); + card->name = name; +} + +void AudioMixer::set_input_mapping(const InputMapping &input_mapping) +{ + lock_guard lock(mapping_mutex); + this->input_mapping = input_mapping; +} + +InputMapping AudioMixer::get_input_mapping() const +{ + lock_guard lock(mapping_mutex); + return input_mapping; +}