<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>int setCameraProfile</title>
</head>

<body>

<p>int setCameraProfile(ryDxCaptureGraph &amp; cap, const CamState &amp; state) {<br>
<br>
	// these are set in the video graph, can't change by now<br>
	//video->dvSetFormat(FORMAT_VGA);&nbsp;<br>
	//video->dvSetVideoMode(session.videoMode);<br>
<br>
	//running with 15fps seems to minimize or fix the loss of frame event for auxcamera<br>
	//video->dvSetFrameRate(state->frame_rate); // 1-3.75fps, 2-7.5fps, 3-15fps, 4-30 fps;<br>
<br>
	long  fooval = 0;<br>
	IBaseFilter * pSrcFilter = cap.m_pSrcFilter;<br>
	FiExpoControl * pFiExpoControl;<br>
	FiColorControl * pFiColorControl;<br>
	FiBasicControl * pFiBasicControl;<br>
	FiCameraInfo	* pFiCameraInfo;<br>
<br>
	//pSC->GetVideoFilter IID_FiExpoControl<br>
<br>
	// really?? 9/19/2001, ryang<br>
	//TODO: why does shutter mess up external trigger operation?<br>
<br>
	 HRESULT hr = pSrcFilter->QueryInterface(IID_FiExpoControl, (void **) &amp;pFiExpoControl);<br>
	if(NOERROR == hr) {<br>
<br>
		pFiExpoControl->Set(FiExpoControl_Shutter,	state.shutter,	state.shutter_auto	? FiFeatureControl_Flags_Auto:0);<br>
		pFiExpoControl->Set(FiExpoControl_Autoexp,	fooval,			state.auto_exposure	? FiFeatureControl_Flags_Auto:0);<br>
		pFiExpoControl->Set(FiExpoControl_Gain,		state.gain,		state.gain_auto		? FiFeatureControl_Flags_Auto:0);<br>
<br>
		pFiExpoControl->Release();<br>
	} else  {<br>
		fprintf(stderr, "QueryInterface for FiExpoInfo failed with error %x\n", hr);<br>
<br>
	}<br>
<br>
<br>
	hr = pSrcFilter->QueryInterface(IID_FiColorControl, (void **) &amp;pFiColorControl);<br>
	if(NOERROR == hr) {<br>
<br>
		pFiColorControl->Set(FiColorControl_Saturation,	state.saturation,	FiFeatureControl_Flags_On );<br>
		pFiColorControl->Set(FiColorControl_Hue,		state.hue,			FiFeatureControl_Flags_On );<br>
<br>
		// note (ryang): WB auto mode may not work here, need testing<br>
		pFiColorControl->Set(FiColorControl_UB,	state.white_balance &amp; 0xfff,state.white_balance_auto ? FiFeatureControl_Flags_Auto: 0);<br>
		pFiColorControl->Set(FiColorControl_VR,	state.white_balance >> 12,	state.white_balance_auto ? FiFeatureControl_Flags_Auto: 0);&nbsp;<br>
<br>
		pFiColorControl->Release();<br>
	} else  {<br>
		fprintf(stderr, "QueryInterface for FiColorInfo failed with error %x\n", hr);<br>
<br>
	}&nbsp;<br>
<br>
<br>
	hr = pSrcFilter->QueryInterface(IID_FiBasicControl, (void **) &amp;pFiBasicControl);<br>
	if(NOERROR == hr) {<br>
<br>
		pFiBasicControl->Set(FiBasicControl_Brightness,	state.brightness,	FiFeatureControl_Flags_On);<br>
		pFiBasicControl->Set(FiBasicControl_Sharpness,	state.sharpness,	FiFeatureControl_Flags_On);<br>
		pFiBasicControl->Set(FiBasicControl_Gamma,		state.gamma,		FiFeatureControl_Flags_On);<br>
<br>
		pFiBasicControl->Release();<br>
	} else  {<br>
		fprintf(stderr, "QueryInterface for FiBasicInfo failed with error %x\n", hr);<br>
<br>
	}<br>
<br>
<br>
	// special treatment for trigger mode<br>
	// have to write to the register directly<br>
	// video->dvSetTrigStatus(state->trigger_mode_on);&nbsp;<br>
	hr = pSrcFilter->QueryInterface(IID_FiCameraInfo, (void **) &amp;pFiCameraInfo);<br>
	if(NOERROR == hr) {<br>
<br>
		long triggerOffset = 0xF0F00830;<br>
		long value = 0;<br>
		hr = pFiCameraInfo->GetRegister(triggerOffset, &amp;value);<br>
<br>
		const long triggerBit = 0x02000000;<br>
<br>
		//********************<br>
		value = (state.trigger_mode_on)? (value | triggerBit): value &amp; (~(triggerBit));&nbsp;<br>
		hr = pFiCameraInfo->SetRegister(triggerOffset, value);<br>
		hr = pFiCameraInfo->GetRegister(triggerOffset, &amp;value);<br>
<br>
		pFiCameraInfo->Release();<br>
	} else  {<br>
		fprintf(stderr, "QueryInterface for FiCameraInfo failed with error %x\n", hr);<br>
<br>
	}<br>
<br>
<br>
<br>
<br>
	return 0;<br>
}</p>

</body>

</html>
