#pragma once #include "screencast/capture/capture.h" #include "screencast/codec/decoder.h" #include "screencast/codec/encoder.h" #include "screencast/network/transport.h" #include "screencast/render/renderer.h" #include #include namespace sc { struct SenderPipelineConfig { CaptureTarget capture_target; EncoderConfig encoder; Endpoint local_rtp_endpoint; std::optional signaling_server; }; struct ReceiverPipelineConfig { DecoderConfig decoder; Endpoint local_rtp_endpoint; std::optional peer_signaling; RendererConfig renderer; }; // Sender pipeline: capture → encode → packetize → RTP/UDP. class SenderPipeline { public: explicit SenderPipeline(SenderPipelineConfig config); ~SenderPipeline(); bool start(); void stop(); private: class Impl; std::unique_ptr impl_; }; // Receiver pipeline: RTP/UDP → depacketize → decode → render. class ReceiverPipeline { public: explicit ReceiverPipeline(ReceiverPipelineConfig config); ~ReceiverPipeline(); bool start(); void stop(); private: class Impl; std::unique_ptr impl_; }; } // namespace sc