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

Method SetProcAmpValues

Source/DX11VideoProcessor.cpp:4506–4537  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4504// IMFVideoProcessor
4505
4506STDMETHODIMP CDX11VideoProcessor::SetProcAmpValues(DWORD dwFlags, DXVA2_ProcAmpValues *pValues)
4507{
4508 CheckPointer(pValues, E_POINTER);
4509 if (m_srcParams.cformat == CF_NONE) {
4510 return MF_E_TRANSFORM_TYPE_NOT_SET;
4511 }
4512
4513 if (dwFlags & DXVA2_ProcAmp_Brightness) {
4514 m_DXVA2ProcAmpValues.Brightness.ll = std::clamp(pValues->Brightness.ll, m_DXVA2ProcAmpRanges[0].MinValue.ll, m_DXVA2ProcAmpRanges[0].MaxValue.ll);
4515 }
4516 if (dwFlags & DXVA2_ProcAmp_Contrast) {
4517 m_DXVA2ProcAmpValues.Contrast.ll = std::clamp(pValues->Contrast.ll, m_DXVA2ProcAmpRanges[1].MinValue.ll, m_DXVA2ProcAmpRanges[1].MaxValue.ll);
4518 }
4519 if (dwFlags & DXVA2_ProcAmp_Hue) {
4520 m_DXVA2ProcAmpValues.Hue.ll = std::clamp(pValues->Hue.ll, m_DXVA2ProcAmpRanges[2].MinValue.ll, m_DXVA2ProcAmpRanges[2].MaxValue.ll);
4521 }
4522 if (dwFlags & DXVA2_ProcAmp_Saturation) {
4523 m_DXVA2ProcAmpValues.Saturation.ll = std::clamp(pValues->Saturation.ll, m_DXVA2ProcAmpRanges[3].MinValue.ll, m_DXVA2ProcAmpRanges[3].MaxValue.ll);
4524 }
4525
4526 if (dwFlags & DXVA2_ProcAmp_Mask) {
4527 CAutoLock cRendererLock(&m_pFilter->m_RendererLock);
4528
4529 m_D3D11VP.SetProcAmpValues(&m_DXVA2ProcAmpValues);
4530
4531 if (!m_D3D11VP.IsReady()) {
4532 SetShaderConvertColorParams();
4533 }
4534 }
4535
4536 return S_OK;
4537}
4538
4539// IMFVideoMixerBitmap
4540

Callers

nothing calls this directly

Calls 1

IsReadyMethod · 0.45

Tested by

no test coverage detected