mediafoundation: Add support for setting CODECAPI_AVEncSliceGenerationMode

Reviewed-by: Pohsiang (John) Hsu <pohhsu@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37982>
This commit is contained in:
Silvio Vilerino 2025-10-15 17:27:39 -04:00 committed by Pohsiang (John) Hsu
parent a6f84de5b0
commit e612709141
2 changed files with 23 additions and 1 deletions

View file

@ -274,6 +274,10 @@ StringFromCodecAPI( const GUID *Api )
{
return "CODECAPI_AVEncVideoRateControlFramePreAnalysisExternalReconDownscale";
}
else if (*Api == CODECAPI_AVEncSliceGenerationMode)
{
return "CODECAPI_AVEncSliceGenerationMode";
}
else if( *Api == CODECAPI_AVEncVideoInputDeltaQPBlockSettings )
{
return "CODECAPI_AVEncVideoInputDeltaQPBlockSettings";
@ -344,7 +348,7 @@ CDX12EncHMFT::IsSupported( const GUID *Api )
*Api == CODECAPI_AVEncVideoMaxNumRefFrame || *Api == CODECAPI_AVEncVideoMeanAbsoluteDifference ||
*Api == CODECAPI_AVEncVideoMaxQP || *Api == CODECAPI_AVScenarioInfo || *Api == CODECAPI_AVEncVideoROIEnabled ||
*Api == CODECAPI_AVEncVideoLTRBufferControl || *Api == CODECAPI_AVEncVideoMarkLTRFrame ||
*Api == CODECAPI_AVEncVideoUseLTRFrame )
*Api == CODECAPI_AVEncVideoUseLTRFrame || *Api == CODECAPI_AVEncSliceGenerationMode)
{
hr = S_OK;
return hr;
@ -939,6 +943,11 @@ CDX12EncHMFT::GetValue( const GUID *Api, VARIANT *Value )
Value->vt = VT_BOOL;
Value->boolVal = m_bRateControlFramePreAnalysisExternalReconDownscale ? VARIANT_TRUE : VARIANT_FALSE;
}
else if (*Api == CODECAPI_AVEncSliceGenerationMode)
{
Value->vt = VT_UI4;
Value->ulVal = m_uiSliceGenerationMode;
}
else if( *Api == CODECAPI_AVEncWorkGlobalPriority )
{
Value->vt = VT_UI4;
@ -1809,6 +1818,16 @@ CDX12EncHMFT::SetValue( const GUID *Api, VARIANT *Value )
}
m_bRateControlFramePreAnalysisExternalReconDownscale = Value->boolVal == VARIANT_TRUE ? TRUE : FALSE;
}
else if (*Api == CODECAPI_AVEncSliceGenerationMode)
{
if (Value->vt != VT_UI4)
{
CHECKHR_GOTO(E_INVALIDARG, done);
}
debug_printf("[dx12 hmft 0x%p] SET CODECAPI_AVEncSliceGenerationMode - %u\n", this, Value->ulVal);
m_uiSliceGenerationMode = Value->ulVal;
m_bSliceGenerationModeSet = TRUE;
}
else
{
CHECKHR_GOTO( E_NOTIMPL, done );

View file

@ -757,6 +757,9 @@ class __declspec( uuid( HMFT_GUID ) ) CDX12EncHMFT : CMFD3DManager,
UINT32 m_uiVideoOutputBitsUsedMapBlockSize = 0;
UINT32 m_uiVideoSatdMapBlockSize = 0;
UINT32 m_uiSliceGenerationMode = 0;
BOOL m_bSliceGenerationModeSet = FALSE;
BOOL m_bRateControlFramePreAnalysis = FALSE;
BOOL m_bRateControlFramePreAnalysisExternalReconDownscale = FALSE;