X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mixer.h;h=5fb195ec77793faf0a8e9d3989758caf6650b7de;hb=bcdbb7bdfcfc45b34ccdf36d3950e7e0af6444bd;hp=8f5342afd4f7a5df0257a22ec119b67a6cb9dd24;hpb=471db5155f58c3bf7a98c446575cfa0c483da765;p=nageru diff --git a/mixer.h b/mixer.h index 8f5342a..5fb195e 100644 --- a/mixer.h +++ b/mixer.h @@ -47,8 +47,8 @@ class v210Converter; namespace movit { class Effect; class EffectChain; -class FlatInput; class ResourcePool; +class YCbCrInput; } // namespace movit // For any card that's not the master (where we pick out the frames as they @@ -334,7 +334,12 @@ public: private: struct CaptureCard; - void configure_card(unsigned card_index, bmusb::CaptureInterface *capture, bool is_fake_capture, DeckLinkOutput *output); + enum class CardType { + LIVE_CARD, + FAKE_CAPTURE, + FFMPEG_INPUT + }; + void configure_card(unsigned card_index, bmusb::CaptureInterface *capture, CardType card_type, DeckLinkOutput *output); void set_output_card_internal(int card_index); // Should only be called from the mixer thread. void bm_frame(unsigned card_index, uint16_t timecode, bmusb::FrameAllocator::Frame video_frame, size_t video_offset, bmusb::VideoFormat video_format, @@ -355,7 +360,7 @@ private: void trim_queue(CaptureCard *card, unsigned card_index); HTTPD httpd; - unsigned num_cards; + unsigned num_cards, num_video_inputs; QSurface *mixer_surface, *h264_encoder_surface, *decklink_output_surface; std::unique_ptr resource_pool; @@ -383,7 +388,7 @@ private: std::atomic display_timecode_on_stdout{false}; // Effects part of . Owned by . - movit::FlatInput *display_input; + movit::YCbCrInput *display_input; int64_t pts_int = 0; // In TIMEBASE units. unsigned frame_num = 0;