MCPcopy Create free account
hub / github.com/Aleksoid1978/VideoRenderer / SetProcAmpValues

Method SetProcAmpValues

Source/DX9VideoProcessor.cpp:3183–3213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3181// IMFVideoProcessor
3182
3183STDMETHODIMP CDX9VideoProcessor::SetProcAmpValues(DWORD dwFlags, DXVA2_ProcAmpValues *pValues)
3184{
3185 CheckPointer(pValues, E_POINTER);
3186 if (m_srcParams.cformat == CF_NONE) {
3187 return MF_E_TRANSFORM_TYPE_NOT_SET;
3188 }
3189
3190 if (dwFlags & DXVA2_ProcAmp_Mask) {
3191 CAutoLock cRendererLock(&m_pFilter->m_RendererLock);
3192
3193 if (dwFlags & DXVA2_ProcAmp_Brightness) {
3194 m_DXVA2ProcAmpValues.Brightness.ll = std::clamp(pValues->Brightness.ll, m_DXVA2ProcAmpRanges[0].MinValue.ll, m_DXVA2ProcAmpRanges[0].MaxValue.ll);
3195 }
3196 if (dwFlags & DXVA2_ProcAmp_Contrast) {
3197 m_DXVA2ProcAmpValues.Contrast.ll = std::clamp(pValues->Contrast.ll, m_DXVA2ProcAmpRanges[1].MinValue.ll, m_DXVA2ProcAmpRanges[1].MaxValue.ll);
3198 }
3199 if (dwFlags & DXVA2_ProcAmp_Hue) {
3200 m_DXVA2ProcAmpValues.Hue.ll = std::clamp(pValues->Hue.ll, m_DXVA2ProcAmpRanges[2].MinValue.ll, m_DXVA2ProcAmpRanges[2].MaxValue.ll);
3201 }
3202 if (dwFlags & DXVA2_ProcAmp_Saturation) {
3203 m_DXVA2ProcAmpValues.Saturation.ll = std::clamp(pValues->Saturation.ll, m_DXVA2ProcAmpRanges[3].MinValue.ll, m_DXVA2ProcAmpRanges[3].MaxValue.ll);
3204 }
3205
3206 m_DXVA2VP.SetProcAmpValues(m_DXVA2ProcAmpValues);
3207 if (!m_DXVA2VP.IsReady()) {
3208 SetShaderConvertColorParams();
3209 }
3210 }
3211
3212 return S_OK;
3213}
3214
3215// IMFVideoMixerBitmap
3216

Callers 1

InitializeDXVA2VPMethod · 0.45

Calls 1

IsReadyMethod · 0.45

Tested by

no test coverage detected