]> git.sesse.net Git - nageru/blobdiff - audio_mixer.h
Add a beginning UI for mapping inputs. No logic connected yet.
[nageru] / audio_mixer.h
index ef49120dc2b2047b99ed7ff045ec17ad226a137f..8e15f543d48ac7921a7da0b6e98a3855436167fc 100644 (file)
@@ -19,6 +19,7 @@
 #include <vector>
 
 #include "bmusb/bmusb.h"
+#include "db.h"
 #include "defs.h"
 #include "filter.h"
 #include "resampling_queue.h"
@@ -41,6 +42,8 @@ public:
        // See comments inside get_output().
        void set_current_loudness(double level_lufs) { loudness_lufs = level_lufs; }
 
+       void set_fader_volume(unsigned card_index, float level_db) { cards[card_index].fader_volume_db = level_db; }
+
        void set_locut_cutoff(float cutoff_hz)
        {
                locut_cutoff_hz = cutoff_hz;
@@ -125,13 +128,13 @@ public:
        {
                std::unique_lock<std::mutex> lock(compressor_mutex);
                final_makeup_gain_auto = false;
-               final_makeup_gain = pow(10.0f, gain_db / 20.0f);
+               final_makeup_gain = from_db(gain_db);
        }
 
        float get_final_makeup_gain_db()
        {
                std::unique_lock<std::mutex> lock(compressor_mutex);
-               return 20.0 * log10(final_makeup_gain);
+               return to_db(final_makeup_gain);
        }
 
        void set_final_makeup_gain_auto(bool enabled)
@@ -153,6 +156,7 @@ private:
                std::mutex audio_mutex;
                std::unique_ptr<ResamplingQueue> resampling_queue;  // Under audio_mutex.
                int64_t next_local_pts = 0;  // Beginning of next frame, in TIMEBASE units. Under audio_mutex.
+               std::atomic<float> fader_volume_db{0.0f};
        };
        CaptureCard cards[MAX_CARDS];