mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
feat(jpeg_encoder): Add yuv444 and yuv420 jpeg encoder format on esp32p4 eco5
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include "hal/color_types.h"
|
||||
#include "sdkconfig.h"
|
||||
#include "soc/soc_caps.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -57,6 +59,10 @@ typedef enum {
|
||||
JPEG_ENCODE_IN_FORMAT_RGB565 = COLOR_TYPE_ID(COLOR_SPACE_RGB, COLOR_PIXEL_RGB565), /*!< input RGB565 format */
|
||||
JPEG_ENCODE_IN_FORMAT_GRAY = COLOR_TYPE_ID(COLOR_SPACE_GRAY, COLOR_PIXEL_GRAY8), /*!< input GRAY format */
|
||||
JPEG_ENCODE_IN_FORMAT_YUV422 = COLOR_TYPE_ID(COLOR_SPACE_YUV, COLOR_PIXEL_YUV422), /*!< input YUV422 format */
|
||||
#if !(CONFIG_ESP_REV_MIN_FULL < 300 && SOC_IS(ESP32P4)) // Invisible for unsupported chips
|
||||
JPEG_ENCODE_IN_FORMAT_YUV444 = COLOR_TYPE_ID(COLOR_SPACE_YUV, COLOR_PIXEL_YUV444), /*!< input YUV444 format */
|
||||
JPEG_ENCODE_IN_FORMAT_YUV420 = COLOR_TYPE_ID(COLOR_SPACE_YUV, COLOR_PIXEL_YUV420), /*!< input YUV420 format */
|
||||
#endif
|
||||
} jpeg_enc_input_format_t;
|
||||
|
||||
/**
|
||||
|
||||
@@ -183,6 +183,16 @@ esp_err_t jpeg_encoder_process(jpeg_encoder_handle_t encoder_engine, const jpeg_
|
||||
encoder_engine->color_space = JPEG_ENC_SRC_YUV422;
|
||||
best_hb_idx = JPEG_ENC_SRC_YUV422_HB;
|
||||
break;
|
||||
#if !(CONFIG_ESP_REV_MIN_FULL < 300 && SOC_IS(ESP32P4))
|
||||
case JPEG_ENCODE_IN_FORMAT_YUV444:
|
||||
encoder_engine->color_space = JPEG_ENC_SRC_YUV444;
|
||||
best_hb_idx = JPEG_ENC_SRC_YUV444_HB;
|
||||
break;
|
||||
case JPEG_ENCODE_IN_FORMAT_YUV420:
|
||||
encoder_engine->color_space = JPEG_ENC_SRC_YUV420;
|
||||
best_hb_idx = JPEG_ENC_SRC_YUV420_HB;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
ESP_LOGE(TAG, "wrong, we don't support encode from such format.");
|
||||
ret = ESP_ERR_NOT_SUPPORTED;
|
||||
|
||||
@@ -57,7 +57,9 @@ const uint32_t enc_hb_tbl[JPEG_ENC_BEST_HB_MAX][JPEG_DOWN_SAMPLING_NUM] = {
|
||||
{40, 32, 32, 0},
|
||||
{0, 64, 0, 0},
|
||||
{64, 64, 48, 0},
|
||||
{0, 0, 0, 128}
|
||||
{0, 0, 0, 128},
|
||||
{40, 0, 0, 0},
|
||||
{0, 0, 48, 0},
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -131,6 +131,8 @@ typedef enum {
|
||||
JPEG_ENC_SRC_YUV422_HB = 1, // Input YUV422 format
|
||||
JPEG_ENC_SRC_RGB565_HB = 2, // Input RGB565 format
|
||||
JPEG_ENC_SRC_GRAY_HB = 3, // Input GRAY format
|
||||
JPEG_ENC_SRC_YUV444_HB = 4, // Input YUV444 format
|
||||
JPEG_ENC_SRC_YUV420_HB = 5, // Input YUV420 format
|
||||
JPEG_ENC_BEST_HB_MAX,
|
||||
} jpeg_enc_format_hb_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user