3

我想知道我可以使用哪个 MediaFoundation API 来控制亮度、对比度、色调和饱和度等?我发现 IMFVideoProcessor::SetProcAmpValues 可以修改这些属性,但是这些属性是在显卡中修改的;我想通过捕获设备或 AVStream 中的 MediaFoundation 接口来修改这些。谢谢你!

4

1 回答 1

4

这与 DirectShow 中的相同:为您的视频捕获设备获取 IMFMediaSource,然后查询 IAMVideoProcAmp 接口:

 IMFMediaSource * pSource = NULL;
 ...
 IAMVideoProcAmp *pProcAmp = NULL;
 hr = pSource->QueryInterface(IID_PPV_ARGS(&pProcAmp));
 if (SUCCEEDED(hr))
 {
    long lMin, lMax, lStep, lDefault, lCaps;
    hr = pProcAmp->GetRange(
                      VideoProcAmp_Brightness, 
                      &lMin, 
                      &lMax, 
                      &lStep, 
                      &lDefault, 
                      &lCaps
    );

    if (SUCCEEDED(hr))
    {
       hr = pProcAmp->Set(
                       VideoProcAmp_Brightness, 
                       lMax, 
                       VideoProcAmp_Flags_Manual
       );
    }
 }
于 2013-02-27T15:39:12.517 回答