#pragma once #include #include #include #include #include "frame/frame.h" #include "utils/result.h" #include "utils/simple_json.h" namespace rk3588 { struct EncodePacket { std::vector data; uint64_t pts = 0; bool keyframe = false; std::vector extra_data; }; class IEncoder { public: virtual ~IEncoder() = default; virtual Status Open(const SimpleJson& config) = 0; virtual Status Send(const std::shared_ptr& frame) = 0; virtual Result Receive() = 0; virtual std::vector ExtraData() const = 0; virtual void Close() = 0; }; } // namespace rk3588