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