X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mixer.h;h=6d0cbce1593b6da92c4f426668d948c982683921;hb=baf23298b4648b3e2ad708041834376a47a2db3e;hp=6cd912637f2ec081f5f33b8890854c240247152a;hpb=0faba3d989c344d3db70f241a06761407d966bf7;p=nageru diff --git a/mixer.h b/mixer.h index 6cd9126..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,6 +211,8 @@ private: bool should_quit = false; RefCountedFrame new_frame; int64_t new_frame_length; // In TIMEBASE units. + 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. @@ -225,7 +228,7 @@ private: }; CaptureCard cards[MAX_CARDS]; // protected by - RefCountedFrame bmusb_current_rendering_frame[MAX_CARDS]; + InputState input_state; class OutputChannel { public: @@ -251,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};