]> git.sesse.net Git - nageru/blobdiff - mixer.h
Add support for FFmpeg inputs.
[nageru] / mixer.h
diff --git a/mixer.h b/mixer.h
index 8f5342afd4f7a5df0257a22ec119b67a6cb9dd24..5fb195ec77793faf0a8e9d3989758caf6650b7de 100644 (file)
--- 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<movit::ResourcePool> resource_pool;
@@ -383,7 +388,7 @@ private:
        std::atomic<bool> display_timecode_on_stdout{false};
 
        // Effects part of <display_chain>. Owned by <display_chain>.
-       movit::FlatInput *display_input;
+       movit::YCbCrInput *display_input;
 
        int64_t pts_int = 0;  // In TIMEBASE units.
        unsigned frame_num = 0;