]> git.sesse.net Git - nageru/blob - nageru/input_state.h
IWYU-fix nageru/*.h.
[nageru] / nageru / input_state.h
1 #ifndef _INPUT_STATE_H
2 #define _INPUT_STATE_H 1
3
4 #include <movit/image_format.h>
5
6 #include "defs.h"
7 #include "ref_counted_frame.h"
8 #include "shared/shared_defs.h"
9
10 struct BufferedFrame {
11         RefCountedFrame frame;
12         unsigned field_number;
13 };
14
15 // Encapsulates the state of all inputs at any given instant.
16 // In particular, this is captured by Theme::get_chain(),
17 // so that it can hold on to all the frames it needs for rendering.
18 struct InputState {
19         // For each card, the last five frames (or fields), with 0 being the
20         // most recent one. Note that we only need the actual history if we have
21         // interlaced output (for deinterlacing), so if we detect progressive input,
22         // we immediately clear out all history and all entries will point to the same
23         // frame.
24         BufferedFrame buffered_frames[MAX_VIDEO_CARDS][FRAME_HISTORY_LENGTH];
25
26         // For each card, the current Y'CbCr input settings. Ignored for BGRA inputs.
27         // If ycbcr_coefficients_auto = true for a given card, the others are ignored
28         // for that card (SD is taken to be Rec. 601, HD is taken to be Rec. 709,
29         // both limited range).
30         bool ycbcr_coefficients_auto[MAX_VIDEO_CARDS];
31         movit::YCbCrLumaCoefficients ycbcr_coefficients[MAX_VIDEO_CARDS];
32         bool full_range[MAX_VIDEO_CARDS];
33 };
34
35 #endif  // !defined(_INPUT_STATE_H)