DirectShow设置亮度、对比度等属性

在DirectShow,对很多设置可以通过   IAMVideoProcAmp接口设置亮度、对比度等属性 

下面m_pVideo是源设备Filter,

   IAMVideoProcAmp *pProcAmp = 0;
   hr = m_pVideo->QueryInterface(IID_IAMVideoProcAmp, (void**)&pProcAmp);
   if(SUCCEEDED(hr))
   {
    long Min, Max, Step, Default, Flags, Val;

    // 亮度.
    if( g_Brightness > 0 )
    {
     hr = pProcAmp->GetRange(VideoProcAmp_Brightness, &Min, &Max, &Step,
      &Default, &Flags);
     if(SUCCEEDED(hr))
     {
      hr = pProcAmp->Get(VideoProcAmp_Brightness, &Val, &Flags);
      Val = Min+(Max-Min)*g_Brightness/100;
      pProcAmp->Set(VideoProcAmp_Brightness, Val, Flags);
     }
    }

   //对比度
    if( g_Contrast > 0 )
    {
     hr = pProcAmp->GetRange(VideoProcAmp_Contrast, &Min, &Max, &Step,
      &Default, &Flags);
     if(SUCCEEDED(hr))
     {
      hr = pProcAmp->Get(VideoProcAmp_Contrast, &Val, &Flags);
      Val = Min+(Max-Min)*g_Contrast/100;
      pProcAmp->Set(VideoProcAmp_Contrast, Val, Flags);
     }
    }

   //饱和度
    if( g_Saturation > 0 )
    {
     hr = pProcAmp->GetRange(VideoProcAmp_Saturation, &Min, &Max, &Step,
      &Default, &Flags);
     if(SUCCEEDED(hr))
     {
      hr = pProcAmp->Get(VideoProcAmp_Saturation, &Val, &Flags);
      Val = Min+(Max-Min)*g_Saturation/100;
      pProcAmp->Set(VideoProcAmp_Saturation, Val, Flags);
     }
    }
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值