mirror of
https://github.com/78/xiaozhi-esp32.git
synced 2026-02-19 02:18:09 +00:00
* Fix: uart-uhci compiling errors * Enhance Esp32Camera functionality by adding optional byte swapping for RGB565 format. Introduce SetSwapBytes method to enable/disable byte order swapping, and update Capture method to utilize an encode buffer for improved memory management and performance during image processing.
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#pragma once
|
|
#include "sdkconfig.h"
|
|
|
|
#include <lvgl.h>
|
|
#include <thread>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include <freertos/FreeRTOS.h>
|
|
#include <freertos/queue.h>
|
|
|
|
#include "camera.h"
|
|
#include "esp_camera.h"
|
|
#include "jpg/image_to_jpeg.h"
|
|
|
|
struct JpegChunk
|
|
{
|
|
uint8_t *data;
|
|
size_t len;
|
|
};
|
|
|
|
class Esp32Camera : public Camera
|
|
{
|
|
private:
|
|
bool streaming_on_ = false;
|
|
bool swap_bytes_enabled_ = true; // Swap pixel byte order for RGB565, enabled by default
|
|
std::string explain_url_;
|
|
std::string explain_token_;
|
|
std::thread encoder_thread_;
|
|
camera_fb_t *current_fb_ = nullptr;
|
|
uint8_t *encode_buf_ = nullptr; // Buffer for JPEG encoding (with optional byte swap)
|
|
size_t encode_buf_size_ = 0;
|
|
|
|
public:
|
|
Esp32Camera(const camera_config_t &config);
|
|
~Esp32Camera();
|
|
|
|
virtual void SetExplainUrl(const std::string &url, const std::string &token) override;
|
|
virtual bool Capture() override;
|
|
virtual bool SetHMirror(bool enabled) override;
|
|
virtual bool SetVFlip(bool enabled) override;
|
|
virtual bool SetSwapBytes(bool enabled) override;
|
|
virtual std::string Explain(const std::string &question) override;
|
|
};
|