| 4504 | // IMFVideoProcessor |
| 4505 | |
| 4506 | STDMETHODIMP 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 | |