#include <epoxy/gl.h>
#undef Success
+#include <stdbool.h>
+#include <stdint.h>
+
#include <movit/effect_chain.h>
#include <movit/flat_input.h>
+#include <condition_variable>
+#include <cstddef>
#include <functional>
+#include <memory>
+#include <mutex>
+#include <string>
+#include <thread>
+#include <vector>
#include "bmusb/bmusb.h"
+#include "ebu_r128_proc.h"
#include "h264encode.h"
+#include "httpd.h"
#include "pbo_frame_allocator.h"
#include "ref_counted_frame.h"
#include "ref_counted_gl_sync.h"
-#include "theme.h"
#include "resampler.h"
+#include "theme.h"
#include "timebase.h"
-#include "httpd.h"
-#include "ebu_r128_proc.h"
-#define MAX_CARDS 16
+class H264Encoder;
+class QSurface;
+namespace movit {
+class Effect;
+class EffectChain;
+class FlatInput;
+class ResourcePool;
+} // namespace movit
namespace movit {
class YCbCrInput;
enum Output {
OUTPUT_LIVE = 0,
OUTPUT_PREVIEW,
- OUTPUT_INPUT0,
- OUTPUT_INPUT1,
- OUTPUT_INPUT2,
- OUTPUT_INPUT3,
- NUM_OUTPUTS
+ OUTPUT_INPUT0, // 1, 2, 3, up to 15 follow numerically.
+ NUM_OUTPUTS = 18
};
struct DisplayFrame {
return theme->get_transition_names(pts());
}
+ unsigned get_num_channels() const
+ {
+ return theme->get_num_channels();
+ }
+
+ std::string get_channel_name(unsigned channel) const
+ {
+ return theme->get_channel_name(channel);
+ }
+
+ bool get_supports_set_wb(unsigned channel) const
+ {
+ return theme->get_supports_set_wb(channel);
+ }
+
+ void set_wb(unsigned channel, double r, double g, double b) const
+ {
+ theme->set_wb(channel, r, g, b);
+ }
+
private:
void bm_frame(unsigned card_index, uint16_t timecode,
FrameAllocator::Frame video_frame, size_t video_offset, uint16_t video_format,