#pragma once #include #include #include #include #include #include #include #include "cereal/messaging/messaging.h" #include "msgq/visionipc/visionbuf.h" class JpegEncoder { public: JpegEncoder(const std::string &pusblish_name, int width, int height); ~JpegEncoder(); void pushThumbnail(VisionBuf *buf, const VisionIpcBufExtra &extra); private: void generateThumbnail(const uint8_t *y, const uint8_t *uv, int width, int height, int stride); void compressToJpeg(uint8_t *y_plane, uint8_t *u_plane, uint8_t *v_plane); int thumbnail_width; int thumbnail_height; std::string publish_name; std::vector yuv_buffer; std::unique_ptr pm; // JPEG output buffer unsigned char* out_buffer = nullptr; unsigned long out_size = 0; };