#pragma once #include "screencast/codec/encoder.h" #include #include #include #include #include namespace sc { struct DecodedFrame { int width = 0; int height = 0; uint64_t capture_timestamp_ns = 0; std::vector rgba_pixels; }; struct DecoderConfig { std::string_view codec_name = "h264"; int width = 0; int height = 0; }; class Decoder { public: virtual ~Decoder () = default; // Feed one encoded frame. Returns decoded frames when available. virtual std::vector decode ( const EncodedFrame &frame ) = 0; }; class DecoderFactory { public: static std::unique_ptr create ( const DecoderConfig &config ); }; } // namespace sc