From c9166d314b7681c636874e00d26d33943c7f0088 Mon Sep 17 00:00:00 2001 From: sujun96 Date: Thu, 6 Jul 2023 11:30:52 +0800 Subject: [PATCH] [Encode] Correct maxBRCLevel Correct maxBRCLevel value set due to frame type. --- .../common/codec/shared/codec_def_encode_hevc.h | 12 ------------ .../enc/hevc/packet/encode_huc_brc_init_packet.cpp | 4 ++-- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/media_common/agnostic/common/codec/shared/codec_def_encode_hevc.h b/media_common/agnostic/common/codec/shared/codec_def_encode_hevc.h index aa5d79bfc0..5cdac963f6 100644 --- a/media_common/agnostic/common/codec/shared/codec_def_encode_hevc.h +++ b/media_common/agnostic/common/codec/shared/codec_def_encode_hevc.h @@ -106,18 +106,6 @@ enum HEVC_BRC_FRAME_TYPE HEVC_BRC_FRAME_TYPE_INVALID }; -//! -//! \enum HEVC_PYRAMID_LAYER_NUM -//! -enum HEVC_PYRAMID_LAYER_NUM -{ - HEVC_PYRAMID_LAYER_NUM_0 = 0, - HEVC_PYRAMID_LAYER_NUM_1 = 1, - HEVC_PYRAMID_LAYER_NUM_2 = 2, - HEVC_PYRAMID_LAYER_NUM_3 = 3, - HEVC_PYRAMID_LAYER_NUM_4 = 4 -}; - typedef enum { ENCODE_HEVC_BIT_DEPTH_8 = 0, diff --git a/media_softlet/agnostic/common/codec/hal/enc/hevc/packet/encode_huc_brc_init_packet.cpp b/media_softlet/agnostic/common/codec/hal/enc/hevc/packet/encode_huc_brc_init_packet.cpp index ee926d54e0..c9271f6302 100644 --- a/media_softlet/agnostic/common/codec/hal/enc/hevc/packet/encode_huc_brc_init_packet.cpp +++ b/media_softlet/agnostic/common/codec/hal/enc/hevc/packet/encode_huc_brc_init_packet.cpp @@ -196,13 +196,13 @@ namespace encode { bool bAllowedPyramid = m_basicFeature->m_hevcSeqParams->GopRefDist != 3; uint16_t intraPeriod = m_basicFeature->m_hevcSeqParams->GopPicSize > 4001 ? 4000 : m_basicFeature->m_hevcSeqParams->GopPicSize - 1; intraPeriod = ((intraPeriod + m_basicFeature->m_hevcSeqParams->GopRefDist - 1) / m_basicFeature->m_hevcSeqParams->GopRefDist) * m_basicFeature->m_hevcSeqParams->GopRefDist; - if (m_basicFeature->m_hevcSeqParams->HierarchicalFlag && bAllowedPyramid) + if (m_basicFeature->m_hevcSeqParams->HierarchicalFlag && bAllowedPyramid) { hucVdencBrcInitDmem->GopP_U16 = intraPeriod/m_basicFeature->m_hevcSeqParams->GopRefDist; hucVdencBrcInitDmem->GopB_U16 = (hucVdencBrcInitDmem->GopP_U16)*(m_basicFeature->m_hevcSeqParams->GopRefDist>1); hucVdencBrcInitDmem->GopB1_U16 = hucVdencBrcInitDmem->GopP_U16 * ((m_basicFeature->m_hevcSeqParams->GopRefDist > 2) + (m_basicFeature->m_hevcSeqParams->GopRefDist == 4 || m_basicFeature->m_hevcSeqParams->GopRefDist > 5)); hucVdencBrcInitDmem->GopB2_U16 = (intraPeriod - hucVdencBrcInitDmem->GopP_U16 - hucVdencBrcInitDmem->GopB_U16 - hucVdencBrcInitDmem->GopB1_U16) * (m_basicFeature->m_hevcSeqParams->GopRefDist > 3); - hucVdencBrcInitDmem->MaxBRCLevel_U8 = hucVdencBrcInitDmem->GopB1_U16 == 0 ? HEVC_PYRAMID_LAYER_NUM_2 : (hucVdencBrcInitDmem->GopB2_U16 == 0 ? HEVC_PYRAMID_LAYER_NUM_3 : HEVC_PYRAMID_LAYER_NUM_4); + hucVdencBrcInitDmem->MaxBRCLevel_U8 = hucVdencBrcInitDmem->GopB1_U16 == 0 ? HEVC_BRC_FRAME_TYPE_B : (hucVdencBrcInitDmem->GopB2_U16 == 0 ? HEVC_BRC_FRAME_TYPE_B1 : HEVC_BRC_FRAME_TYPE_B2); hucVdencBrcInitDmem->BRCPyramidEnable_U8 = 1; } else //FlatB or LDB