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

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 22:25   338   0

在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);
}
}
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP