From 5ebeacdd79edd0e1c788eeaaf44479c13407b928 Mon Sep 17 00:00:00 2001 From: esp Date: Tue, 7 Oct 2025 17:24:08 +0530 Subject: [PATCH] esp_h264: Output frame type not populated frame_type for output frame is not populated in sw encoding; resulting in ESP_H264_FRAME_TYPE_IDR as frame_type for all frames. --- esp_h264/idf_component.yml | 2 +- esp_h264/sw/src/esp_h264_enc_single_sw.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/esp_h264/idf_component.yml b/esp_h264/idf_component.yml index 6fe3fab..9c16f4a 100644 --- a/esp_h264/idf_component.yml +++ b/esp_h264/idf_component.yml @@ -1,4 +1,4 @@ -version: "1.1.3" +version: "1.1.4" description: Espressif H264 encoder and decoder url: https://github.com/espressif/esp-h264-component diff --git a/esp_h264/sw/src/esp_h264_enc_single_sw.c b/esp_h264/sw/src/esp_h264_enc_single_sw.c index 63c69a9..5cdcad0 100644 --- a/esp_h264/sw/src/esp_h264_enc_single_sw.c +++ b/esp_h264/sw/src/esp_h264_enc_single_sw.c @@ -113,6 +113,25 @@ static esp_h264_err_t h264_sw_enc_process(esp_h264_enc_sw_handle_t *sw_hd, esp_h default: return ESP_H264_ERR_FAIL; } + switch (sFbi.eFrameType) { + case videoFrameTypeIDR: + out_frame->frame_type = ESP_H264_FRAME_TYPE_IDR; + break; + case videoFrameTypeI: + out_frame->frame_type = ESP_H264_FRAME_TYPE_I; + break; + case videoFrameTypeP: + out_frame->frame_type = ESP_H264_FRAME_TYPE_P; + break; + + case videoFrameTypeInvalid: + // fallthrough + case videoFrameTypeSKIP: + // fallthrough + case videoFrameTypeIPMixed: + out_frame->frame_type = ESP_H264_FRAME_TYPE_INVALID; + break; + } out_frame->length = (uint32_t)sFbi.iFrameSizeInBytes; out_frame->pts = (uint32_t)sFbi.uiTimeStamp; out_frame->dts = in_frame->pts;