X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mixer.h;h=6d0cbce1593b6da92c4f426668d948c982683921;hb=a1f1d6374a7c519c7a8b412578c9b88d64edddd4;hp=76aec682c5d71773c7d3909de60ed2d9a58a76a8;hpb=5c8dc09f89df0f25434bcefc9102438d2b491df2;p=nageru diff --git a/mixer.h b/mixer.h index 76aec68..6d0cbce 100644 --- a/mixer.h +++ b/mixer.h @@ -34,6 +34,7 @@ #include "timebase.h" #include "stereocompressor.h" #include "filter.h" +#include "input_state.h" class H264Encoder; class QSurface; @@ -210,7 +211,8 @@ private: bool should_quit = false; RefCountedFrame new_frame; int64_t new_frame_length; // In TIMEBASE units. - unsigned new_frame_field; // Which field (0 or 1) of the frame to use. + bool new_frame_interlaced; + unsigned new_frame_field; // Which field (0 or 1) of the frame to use. Always 0 for progressive. GLsync new_data_ready_fence; // Whether new_frame is ready for rendering. std::condition_variable new_data_ready_changed; // Set whenever new_data_ready is changed. unsigned dropped_frames = 0; // Before new_frame. @@ -226,7 +228,7 @@ private: }; CaptureCard cards[MAX_CARDS]; // protected by - RefCountedFrame bmusb_current_rendering_frame[MAX_CARDS]; + InputState input_state; class OutputChannel { public: @@ -252,7 +254,8 @@ private: std::atomic should_quit{false}; audio_level_callback_t audio_level_callback = nullptr; - Ebu_r128_proc r128; + std::mutex r128_mutex; + Ebu_r128_proc r128; // Under r128_mutex. Resampler peak_resampler; std::atomic peak{0.0f};