#ifndef SCAR_VIDEO_DECODER_H #define SCAR_VIDEO_DECODER_H #include #include #include #include #include extern "C" { #include #include #include } namespace scar { class VideoDecoder { public: VideoDecoder(); ~VideoDecoder(); // Initialize decoder bool initialize(); // Decode H.264 packet and return RGB24 data // Returns empty vector if no frame ready yet std::vector decode(const std::vector& encoded_data, int& out_width, int& out_height); // Cleanup void cleanup(); private: AVCodecContext* codec_ctx_; AVFrame* frame_; SwsContext* sws_ctx_; int width_; int height_; bool initialized_; std::mutex decode_mutex_; }; } // namespace scar #endif // SCAR_VIDEO_DECODER_H