#include "timebase.h"
#include "stereocompressor.h"
#include "filter.h"
+#include "input_state.h"
class H264Encoder;
class QSurface;
void reset_meters();
- struct BufferedFrame {
- RefCountedFrame frame;
- unsigned field_number;
- };
-
- BufferedFrame get_buffered_frame(int card, int history_pos)
- {
- return buffered_frames[card][history_pos];
- }
-
private:
void bm_frame(unsigned card_index, uint16_t timecode,
FrameAllocator::Frame video_frame, size_t video_offset, uint16_t video_format,
};
CaptureCard cards[MAX_CARDS]; // protected by <bmusb_mutex>
- // For each card, the last three frames (or fields), with 0 being the
- // most recent one. Note that we only need the actual history if we have
- // interlaced output (for deinterlacing), so if we detect progressive input,
- // we immediately clear out all history and all entries will point to the same
- // frame.
- BufferedFrame buffered_frames[MAX_CARDS][FRAME_HISTORY_LENGTH];
+ InputState input_state;
class OutputChannel {
public:
std::atomic<bool> 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<float> peak{0.0f};