如何控制MediaFoundation中的摄像头捕获显示?

时间:2012-05-21 02:55:56

标签: c++ windows-7 ms-media-foundation

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

1 个答案:

答案 0 :(得分: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
       );
    }
 }