DirectShow 设置视频质量

发布于 2021-11-28


DirectShow 提供了接口支持设置视频的质量。同时这也需要硬件设备的支持。

图像质量的控制

IAMVideoProcAmp 接口可以设置图像质量:

  • Backlight compensation,背光补偿
  • Brightness,亮度
  • Contrast,对比度
  • Gain,ISO
  • Gamma,伽玛校正
  • Hue,色调
  • Saturation,饱和度
  • Sharpness,锐度
  • White balance 白平衡
    // 获取 IAMVideoProcAmp 接口
    CComPtr<IAMVideoProcAmp> video_proc_amp;
    HRESULT hr = camera_filter->QueryInterface(IID_IAMVideoProcAmp,
                                       (void **)&video_proc_amp);
    if (FAILED(hr)) {
      return false;
    }

    // 获得 VideoProcAmp_Brightness 的参数信息
    HRESULT hr = video_proc_amp->GetRange(VideoProcAmp_Brightness, pMin, pMax, pSteppingDelta,
      pDefault, &CapsFlags);
    if (hr != S_OK) {
      return false;
    }

    // 设置 VideoProcAmp_Brightness 的参数信息
    video_proc_amp->Set(VideoProcAmp_Brightness, lValue, VideoProcAmp_Flags_Manual);

摄像头设置

IAMCameraControl 接口可以设置摄像头相关的信息:

  • Exposure
  • Focus
  • Iris
  • Pan
  • Roll
  • Tilt
  • Zoom

IAMCameraControl 用法类似 IAMVideoProcAmp。

注意:IAMVideoProcAmp 和 IAMCameraControl 所支持的设置依赖硬件设备。它们返回接口结果可能会失败,要注意判断。

写了一个demo,如下图所示:

DirectShow video quality

参考