[CP] Refine short format flow
More information please refer to the JIRA story belonging to this change.
diff --git a/media_driver/linux/common/codec/ddi/media_ddi_decode_avc.cpp b/media_driver/linux/common/codec/ddi/media_ddi_decode_avc.cpp
index d47c061..79d0019 100644
--- a/media_driver/linux/common/codec/ddi/media_ddi_decode_avc.cpp
+++ b/media_driver/linux/common/codec/ddi/media_ddi_decode_avc.cpp
@@ -570,7 +570,6 @@
m_codechalSettings->shortFormatInUse = m_ddiDecodeCtx->bShortFormatInUse;
CODECHAL_FUNCTION codecFunction = CODECHAL_FUNCTION_DECODE;
- m_ddiDecodeCtx->pCpDdiInterface->SetCpParams(m_ddiDecodeAttr->uiEncryptionType, m_codechalSettings);
CODECHAL_STANDARD_INFO standardInfo;
memset(&standardInfo, 0, sizeof(standardInfo));
@@ -591,6 +590,8 @@
m_codechalSettings->mode = CODECHAL_DECODE_MODE_AVCVLD;
m_codechalSettings->standard = CODECHAL_AVC;
+ m_ddiDecodeCtx->pCpDdiInterface->SetCpParams(m_ddiDecodeAttr->uiEncryptionType, m_codechalSettings);
+
m_ddiDecodeCtx->DecodeParams.m_iqMatrixBuffer = (void*)MOS_AllocAndZeroMemory(sizeof(CODEC_AVC_IQ_MATRIX_PARAMS));
if (m_ddiDecodeCtx->DecodeParams.m_iqMatrixBuffer == nullptr)
{
diff --git a/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp b/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
index 8be71c5..d319f76 100644
--- a/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
+++ b/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
@@ -686,7 +686,7 @@
if (m_ddiDecodeCtx->pCpDdiInterface)
{
- DDI_CHK_RET(m_ddiDecodeCtx->pCpDdiInterface->SetDecodeParams(&m_ddiDecodeCtx->DecodeParams),"SetDecodeParams failed!");
+ DDI_CHK_RET(m_ddiDecodeCtx->pCpDdiInterface->SetDecodeParams(m_ddiDecodeCtx, m_codechalSettings),"SetDecodeParams failed!");
}
Mos_Solo_OverrideBufferSize(m_ddiDecodeCtx->DecodeParams.m_dataSize, m_ddiDecodeCtx->DecodeParams.m_dataBuffer);
diff --git a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp
index f8e525c..b988640 100644
--- a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp
+++ b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.cpp
@@ -153,7 +153,8 @@
}
VAStatus DdiCpInterface::SetDecodeParams(
- CodechalDecodeParams *decodeParams)
+ DDI_DECODE_CONTEXT *ddiDecodeContext,
+ CodechalSetting *setting)
{
DdiStubMessage();
return VA_STATUS_SUCCESS;
diff --git a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h
index 244276c..14c3967 100644
--- a/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h
+++ b/media_driver/linux/common/cp/ddi/media_libva_cp_interface.h
@@ -54,6 +54,8 @@
return (PDDI_CP_CONTEXT)cpCtx;
}
+struct DDI_DECODE_CONTEXT;
+
class DdiCpInterface
{
public:
@@ -99,7 +101,9 @@
PMOS_CONTEXT osContext,
CodechalSetting * settings);
- virtual VAStatus SetDecodeParams(CodechalDecodeParams *decodeParams);
+ virtual VAStatus SetDecodeParams(
+ DDI_DECODE_CONTEXT *ddiDecodeContext,
+ CodechalSetting *setting);
virtual bool IsCencProcessing();