コード例 #1
0
uint32_t HimppVideoISP::WhiteBalance::getCrGain()
{
	if (isEnabled()) {
		if (_mode == IVideoSource::Imaging::WhiteBalance::AUTO_WB) {
			ISP_AWB_ATTR_S awb_attr;
			if (HI_MPI_ISP_GetAWBAttr(&awb_attr) != HI_SUCCESS)
				throw IpcamError("Cannot get AWB mode");
			return awb_attr.u8RGStrength;
		}
	}

	return _cr_gain;
}
コード例 #2
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::Exposure::ExposureMode
HimppVideoSource::Imaging::Exposure::getMode()
{
	HimppVideoISP *isp = (HimppVideoISP*)_media._vi_dev0;
	if (isp) {
		HimppVideoISP::Exposure *exposure = isp->getExposure();
		if (exposure) {
			return exposure->getExposureMode();
		}
	}

	throw IpcamError("Requested interface not supported");
}
コード例 #3
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::WhiteBalance::WhiteBalanceMode
HimppVideoSource::Imaging::WhiteBalance::getMode()
{
	HimppVideoISP *isp = (HimppVideoISP *)_media._vi_dev0;
	if (isp) {
		HimppVideoISP::WhiteBalance *wb = isp->getWhiteBalance();
		if (wb) {
			return wb->getWBMode();
		}
	}

	throw IpcamError("Requested interface not supported");
}
コード例 #4
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
void
HimppVideoSource::Imaging::Exposure::setPriority(IVideoSource::Imaging::Exposure::ExposurePriority value)
{
	HimppVideoISP *isp = (HimppVideoISP *)_media._vi_dev0;
	if (isp) {
		HimppVideoISP::Exposure *exposure = isp->getExposure();
		if (exposure) {
			return exposure->setExposurePriority(value);
		}
	}

	throw IpcamError("Requested interface not supported");
}
コード例 #5
0
HimppVideoISP::WhiteBalanceMode HimppVideoISP::WhiteBalance::getWBMode()
{
	if (isEnabled()) {
		ISP_OP_TYPE_E wbmode;
		if (HI_MPI_ISP_GetWBType(&wbmode) == HI_SUCCESS) {
			WhiteBalanceMode mode = (wbmode == OP_TYPE_AUTO) ?
				IVideoSource::Imaging::WhiteBalance::AUTO_WB :
				IVideoSource::Imaging::WhiteBalance::MANUAL_WB;
			return mode;
		}
		throw IpcamError("get WhiteBalance mode failed");
	}
	return _mode;
}
コード例 #6
0
HimppVideoISP::ExposureMode HimppVideoISP::Exposure::getExposureMode()
{
	if (isEnabled()) {
		ISP_OP_TYPE_E exp_mode;
		if (HI_MPI_ISP_GetExposureType(&exp_mode) != HI_SUCCESS)
			throw IpcamError("get exposure MinGain failed");

		ExposureMode mode;
		mode = (exp_mode == OP_TYPE_AUTO) ?
				IVideoSource::Imaging::Exposure::AUTO_EXPOSURE :
				IVideoSource::Imaging::Exposure::MANUAL_EXPOSURE;
		return mode;
	}
	return _mode;
}
コード例 #7
0
HimppVideoISP::ExposurePriority HimppVideoISP::Exposure::getExposurePriority()
{
	if (isEnabled()) {
		ISP_AE_ATTR_EX_S ae_attr;
		if (HI_MPI_ISP_GetAEAttrEx(&ae_attr) != HI_SUCCESS)
			throw IpcamError("get exposure MinGain failed");

		ExposurePriority priority;
		priority = (ae_attr.enAEMode == AE_MODE_LOW_NOISE) ?
					IVideoSource::Imaging::Exposure::LOWNOISE_PRIORITY :
					IVideoSource::Imaging::Exposure::FRAMERATE_PRIORITY;
		return priority;
	}
	return _priority;
}
コード例 #8
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::Gamma& HimppVideoSource::Imaging::getGamma()
{
	throw IpcamError("Request interface not implemented");
}
コード例 #9
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::WideDynamicRange& HimppVideoSource::Imaging::getWideDynamicRange()
{
	throw IpcamError("Request interface not implemented");
}
コード例 #10
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::Focus& HimppVideoSource::Imaging::getFocus()
{
	throw IpcamError("Request interface not implemented");
}
コード例 #11
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::Backlight& HimppVideoSource::Imaging::getBacklight()
{
	throw IpcamError("Request interface not implemented");
}
コード例 #12
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::IrCutFilterMode
HimppVideoSource::Imaging::getIrCutFilterMode()
{
	throw IpcamError("Not implemented");
}
コード例 #13
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
void HimppVideoSource::Imaging::setSharpness(uint32_t value)
{
	throw IpcamError("Not implemented");
}
コード例 #14
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
uint32_t HimppVideoSource::Imaging::getSharpness()
{
	throw IpcamError("Not implemented");
}
コード例 #15
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
void HimppVideoSource::Imaging::setIrCutFilterMode
(IVideoSource::Imaging::IrCutFilterMode value)
{
	throw IpcamError("Not implemented");
}
コード例 #16
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
void HimppVideoSource::setFramerate(uint32_t value)
{
	throw IpcamError("Readonly property");
}
コード例 #17
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
IVideoSource::Imaging::AntiFlicker& HimppVideoSource::Imaging::getAntiFlicker()
{
	throw IpcamError("Request interface not implemented");
}
コード例 #18
0
ファイル: himpp-media.cpp プロジェクト: hi35xx/live-streamer
void HimppVideoSource::setResolution(ImageResolution &res)
{
	throw IpcamError("Readonly property");
}
コード例 #19
0
bool HimppVideoISP::enableObject()
{
	HI_S32 s32Ret;
	ISP_IMAGE_ATTR_S *pstImageAttr = *video_sensor;
	ISP_INPUT_TIMING_S *pstInputTiming = *video_sensor;

	if (!loadSensorModule())
		return false;

	if (!registerAlgorithm())
		goto err_unload_mod;

	if ((s32Ret = HI_MPI_ISP_Init()) != HI_SUCCESS) {
		goto err_unreg_alg;
	}

	if (HI_MPI_ISP_SetImageAttr(pstImageAttr) != HI_SUCCESS) {
		goto err_exit_isp;
	}

	if (HI_MPI_ISP_SetInputTiming(pstInputTiming) != HI_SUCCESS) {
		goto err_exit_isp;
	}

	if (pthread_create(&isp_thread, 0, isp_thread_routine, NULL))
		goto err_exit_isp;

	ISP_OP_TYPE_E exp_opmode;
	exp_opmode = (_exposure._mode == IVideoSource::Imaging::Exposure::AUTO_EXPOSURE) ?
		OP_TYPE_AUTO : OP_TYPE_MANUAL;
	if (HI_MPI_ISP_SetExposureType(exp_opmode) != HI_SUCCESS) {
		fprintf(stderr, "HI_MPI_ISP_SetExposureType failed\n");
    }

	// initialize Exposure
	ISP_AE_ATTR_EX_S ae_attr;
	if (HI_MPI_ISP_GetAEAttrEx(&ae_attr) == HI_SUCCESS) {
        ae_attr.enAEMode = (_exposure._priority == IVideoSource::Imaging::Exposure::LOWNOISE_PRIORITY) ? \
                            AE_MODE_LOW_NOISE : AE_MODE_FRAME_RATE;
		ae_attr.u32ExpTimeMin = _exposure._min_exp_time;
		ae_attr.u32ExpTimeMax = _exposure._max_exp_time;
		ae_attr.u32AGainMin = _exposure._min_gain;
		ae_attr.u32AGainMax = _exposure._max_gain;

		if (HI_MPI_ISP_SetAEAttrEx(&ae_attr) != HI_SUCCESS) {
			fprintf(stderr, "HI_MPI_ISP_SetAEAttrEx failed\n");
		}
	}

	ISP_ME_ATTR_EX_S me_attr;
	if (HI_MPI_ISP_GetMEAttrEx(&me_attr) == HI_SUCCESS) {
		me_attr.u32ExpLine = _exposure._exp_time;
		me_attr.s32AGain = _exposure._gain;
		if (HI_MPI_ISP_SetMEAttrEx(&me_attr) != HI_SUCCESS) {
			fprintf(stderr, "HI_MPI_ISP_SetMEAttrEx failed\n");
		}
	}

	// Initialize WhiteBalance
	ISP_OP_TYPE_E wb_opmode;
	wb_opmode = (_whitebalance._mode == IVideoSource::Imaging::WhiteBalance::AUTO_WB) ?
		OP_TYPE_AUTO : OP_TYPE_MANUAL;
	if (HI_MPI_ISP_SetWBType(wb_opmode) != HI_SUCCESS) {
		fprintf(stderr, "HI_MPI_ISP_SetWBType failed\n");
    }

	if (_whitebalance._mode == IVideoSource::Imaging::WhiteBalance::AUTO_WB) {
		ISP_AWB_ATTR_S awb_attr;
		if (HI_MPI_ISP_GetAWBAttr(&awb_attr) == HI_SUCCESS) {
			awb_attr.u8BGStrength = (HI_U8)_whitebalance._cb_gain;
			awb_attr.u8RGStrength = (HI_U8)_whitebalance._cr_gain;
			if (HI_MPI_ISP_SetAWBAttr(&awb_attr) != HI_SUCCESS)
				fprintf(stderr, "HI_MPI_ISP_SetWBType failed\n");
		}
	}
	else {
		ISP_MWB_ATTR_S mwb_attr;
		if (HI_MPI_ISP_GetMWBAttr(&mwb_attr) == HI_SUCCESS)
			mwb_attr.u16Rgain = (HI_U16)_whitebalance._r_gain;
			mwb_attr.u16Ggain = (HI_U16)_whitebalance._g_gain;
			mwb_attr.u16Bgain = (HI_U16)_whitebalance._b_gain;
			if (HI_MPI_ISP_SetMWBAttr(&mwb_attr) != HI_SUCCESS)
				throw IpcamError("Cannot set MWB attr");
	}

	return true;

err_exit_isp:
	HI_MPI_ISP_Exit();
err_unreg_alg:
	unregisterAlgorithm();
err_unload_mod:
	unloadSensorModule();

	return false;
}