X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fdecklink_output.h;h=d5ec41446f255639e1781aa8662b3156f9d94665;hb=a0e57ec99e9dfdd7e79bcf21e8c996dc43b6cb49;hp=f008dc3b32bec8f0c1aba542c4d3de3a8167b047;hpb=a823a1f7d9f454913044ff8e0e17acbc73f86316;p=nageru diff --git a/nageru/decklink_output.h b/nageru/decklink_output.h index f008dc3..d5ec414 100644 --- a/nageru/decklink_output.h +++ b/nageru/decklink_output.h @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include @@ -16,9 +16,12 @@ #include #include "DeckLinkAPI.h" +#include "DeckLinkAPIModes.h" #include "DeckLinkAPITypes.h" #include "LinuxCOM.h" +#include + #include "shared/context.h" #include "print_latency.h" #include "quittable_sleeper.h" @@ -46,7 +49,7 @@ public: // where you get a freeze if querying an IDeckLinkInput interface // on an already-started card. bool set_device(IDeckLink *decklink, IDeckLinkInput *input_arg); - void start_output(uint32_t mode, int64_t base_pts); // Mode comes from get_available_video_modes(). + void start_output(uint32_t mode, int64_t base_pts, bool is_master_card); // Mode comes from get_available_video_modes(). void end_output(); void send_frame(GLuint y_tex, GLuint cbcr_tex, movit::YCbCrLumaCoefficients ycbcr_coefficients, const std::vector &input_frames, int64_t pts, int64_t duration); @@ -143,7 +146,7 @@ private: std::unordered_set scheduled_frames; // Owned by the driver, so no unique_ptr. Under . std::condition_variable frame_queues_changed; - bool playback_initiated = false, playback_started = false; + bool playback_initiated = false, playback_started = false, is_master_card = false; int64_t base_pts, frame_duration; BMDDisplayModeFlags current_mode_flags = 0; bool last_frame_had_mode_mismatch = false;