[Encode] CDF table programming for BRC case
In BRC case, driver uses a standalone CDF buffer which is sent to Huc, and let Huc copy CDF probabilities after QP is decided.
diff --git a/media_driver/agnostic/common/codec/shared/codec_def_common_encode.h b/media_driver/agnostic/common/codec/shared/codec_def_common_encode.h
index 2e9660c..c951005 100644
--- a/media_driver/agnostic/common/codec/shared/codec_def_common_encode.h
+++ b/media_driver/agnostic/common/codec/shared/codec_def_common_encode.h
@@ -184,6 +184,24 @@
RATECONTROL_IWD_VBR = 100
} RATE_CONTROL_METHOD;
+//!
+//! \brief Help function to check if the rate control method is BRC
+//!
+//! \param [in] rc
+//! Rate control method
+//!
+//! \return True if using BRC , else return false
+//!
+inline bool IsRateControlBrc(uint8_t rc)
+{
+ return (rc == RATECONTROL_CBR) ||
+ (rc == RATECONTROL_VBR) ||
+ (rc == RATECONTROL_AVBR) ||
+ (rc == RATECONTROL_VCM) ||
+ (rc == RATECONTROL_ICQ) ||
+ (rc == RATECONTROL_QVBR);
+}
+
typedef enum
{
DEFAULT_WEIGHTED_INTER_PRED_MODE = 0,
diff --git a/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_interface.h b/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_interface.h
index 67e349b..c4d5d20 100644
--- a/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_interface.h
+++ b/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_interface.h
@@ -140,6 +140,7 @@
MOS_SURFACE *m_decodedPic = nullptr; //!< Decoded Output Frame Buffer
MOS_RESOURCE *m_intrabcDecodedOutputFrameBuffer = nullptr; //!< IntraBC Decoded output frame buffer
MOS_RESOURCE *m_cdfTableInitializationBuffer = nullptr; //!< CDF Tables Initialization Buffer
+ uint32_t m_cdfTableInitializationBufferOffset = 0; //!< CDF Tables Initialization Buffer Size
MOS_RESOURCE *m_cdfTableBwdAdaptationBuffer = nullptr; //!< CDF Tables Backward Adaptation Buffer
MOS_RESOURCE *m_segmentIdReadBuffer = nullptr; //!< AV1 Segment ID Read Buffer