Files
xiaozhi-esp32/main/display/lvgl_display/jpg/image_to_jpeg.h

71 lines
2.3 KiB
C
Raw Normal View History

// image_to_jpeg.h - 图像到JPEG转换的高效编码接口
// 节省约8KB SRAM的JPEG编码实现
#pragma once
#include "sdkconfig.h"
#ifndef CONFIG_IDF_TARGET_ESP32
#include <stdint.h>
#include <stddef.h>
#include <linux/videodev2.h>
typedef uint32_t v4l2_pix_fmt_t; // see linux/videodev2.h for details
#ifdef __cplusplus
extern "C" {
#endif
// JPEG输出回调函数类型
// arg: 用户自定义参数, index: 当前数据索引, data: JPEG数据块, len: 数据块长度
// 返回: 实际处理的字节数
typedef size_t (*jpg_out_cb)(void *arg, size_t index, const void *data, size_t len);
/**
* @brief JPEG
*
* 使JPEG编码器进行编码
* - 8KB的SRAM使用
* -
* - JPEG输出
*
* @param src
* @param src_len
* @param width
* @param height
* @param format (PIXFORMAT_RGB565, PIXFORMAT_RGB888, )
* @param quality JPEG质量 (1-100)
* @param out JPEG数据指针 ()
* @param out_len JPEG数据长度
*
* @return true , false
*/
bool image_to_jpeg(uint8_t *src, size_t src_len, uint16_t width, uint16_t height,
v4l2_pix_fmt_t format, uint8_t quality, uint8_t **out, size_t *out_len);
/**
* @brief JPEG
*
* 使JPEG输出数据
* - 8KB的SRAM使用
* -
* - JPEG数据
*
* @param src
* @param src_len
* @param width
* @param height
* @param format
* @param quality JPEG质量 (1-100)
* @param cb
* @param arg
*
* @return true , false
*/
bool image_to_jpeg_cb(uint8_t *src, size_t src_len, uint16_t width, uint16_t height,
v4l2_pix_fmt_t format, uint8_t quality, jpg_out_cb cb, void *arg);
#ifdef __cplusplus
}
#endif
#endif // ndef CONFIG_IDF_TARGET_ESP32