⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tv_mmi.c

📁 泰景的模拟电视全部驱动及MTK平台界面代码
💻 C
📖 第 1 页 / 共 2 页
字号:

	return ret;
}

#elif CHANNEL_SWITCH_EFFECT == 3

int TLGAPP_SetChannelExt(int iChn)
{
	uint16 AudioMode, AudioGain, VideoY, VideoU, VideoV;

#if USE_SYNC_CONTROL
	static uint16 v_hi_start1, v_hi_stop1, v_hi_start2, v_hi_stop2, v_hi_start3, v_hi_stop3,
	  	   h_hi_start, h_hi_stop, h_kill_start1, h_kill_stop1, h_kill_start2, h_kill_stop2;
#endif	/* USE_SYNC_CONTROL */

	int ret;

#if	USE_SYNC_CONTROL
	TLG_GetExtHSync(tlg_i2c_addr, &h_hi_start, &h_hi_stop, &h_kill_start1, &h_kill_stop1, &h_kill_start2, &h_kill_stop2);
	TLG_GetExtVSync(tlg_i2c_addr, &v_hi_start1, &v_hi_stop1, &v_hi_start2, &v_hi_stop2, &v_hi_start3, &v_hi_stop3);
#endif	/* USE_SYNC_CONTROL */

	TLG_GetAudioMode(tlg_i2c_addr, &AudioMode);
	TLG_GetAudioGain(tlg_i2c_addr, AudioMode, &AudioGain);

#if	USE_SYNC_CONTROL
	TLG_SetExtHSync(tlg_i2c_addr, 0, 0, 0, 0, 0, 0);
	TLG_SetExtVSync(tlg_i2c_addr, 0, 0, 0, 0, 0, 0);
#endif	/* USE_SYNC_CONTROL */

#if USE_PA_CONTROL
#ifdef ADS_MTK
	AFE_TurnOffSpeaker(L1SP_FM_RADIO);
#endif
#endif	/* USE_PA_CONTROL */

	TLG_SetAudioGain(tlg_i2c_addr, AudioMode, 0);

#if USE_MUTE_CONTROL
	TLG_SetAudioEnable(tlg_i2c_addr, TLG_MUTE);
#endif	/* USE_MUTE_CONTROL */

	ret = TLGAPP_SetChannel(iChn);

	TLG_Delay(100);

#if	USE_SYNC_CONTROL
	TLG_SetExtHSync(tlg_i2c_addr, h_hi_start, h_hi_stop, h_kill_start1, h_kill_stop1, h_kill_start2, h_kill_stop2);
	TLG_SetExtVSync(tlg_i2c_addr, v_hi_start1, v_hi_stop1, v_hi_start2, v_hi_stop2, v_hi_start3, v_hi_stop3);
#endif	/* USE_SYNC_CONTROL */

	TLG_SetAudioGain(tlg_i2c_addr, AudioMode, AudioGain);

#if USE_MUTE_CONTROL
	TLG_SetAudioEnable(tlg_i2c_addr, TLG_ENABLE);
#endif	/* USE_MUTE_CONTROL */

#if USE_PA_CONTROL
#ifdef ADS_MTK
	AFE_TurnOnSpeaker(L1SP_FM_RADIO);
#endif
#endif	/* USE_PA_CONTROL */

	return ret;
}

#endif	/* CHANNEL_SWITCH_EFFECT */

void DropFrame(void)
{
	static int TvFrmCnt;

       ENABLE_CAMERA_IDLE_INT;
	if (TvFrmCnt++)
	{
		if (isp_digital_zoom_flag == 0)
			DISABLE_VIEW_FINDER_MODE;

		if (gTvScanLines == TLG_TV_525_LINES && gTvStorage.mScrMode == TLG_SCRMD_FULLSCREEN)
			{ if (TvFrmCnt > 2) TvFrmCnt = 0; }
		else
			{ if (TvFrmCnt > 1) TvFrmCnt = 0; }
	}
	else
	{
#if CHANNEL_SWITCH_EFFECT == 2
		if (is_switching)
			DISABLE_VIEW_FINDER_MODE;
		else
#endif /* CHANNEL_SWITCH_EFFECT */
			ENABLE_VIEW_FINDER_MODE;
	}

	isp_ibw2_cb();
}

void reset_image_data_path(void)
{
	kal_uint32 save_irq_mask;

	save_irq_mask = SaveAndSetIRQMask();
	isp_digital_zoom_flag = 1;
	ENABLE_CAMERA_FRAME_READY_INT;
	RestoreIRQMask(save_irq_mask);

	StartTimer(ATV_TIMER_RESET_DATA_PATH, 500, reset_image_data_path);
}

int TLGMMI_GetRegion(TLG_REGION_CODE *pRegion)
{
	*pRegion = gTvStorage.mRegion;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_SetRegion(TLG_REGION_CODE iRegion)
{
	if (iRegion >= TLG_REGION_TOTAL) return TLG_ERR_FAIL;
	
	gTvStorage.mRegion = iRegion;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetBrightness(uint8 *pBrightness)
{
	*pBrightness = gTvOptions.mBrightness;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_SetBrightness(uint8 iBrightness)
{
	gTvOptions.mBrightness = iBrightness;

#if WYSIWYG
	// Adjust LCD backlight here
#endif /* WYSIWYG */
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetContrast(uint8 *pContrast)
{
	*pContrast = gTvOptions.mContrast;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_SetContrast(uint8 iContrast)
{
	if (iContrast > 15) return TLG_ERR_FAIL;

	gTvOptions.mContrast = iContrast;

#if WYSIWYG
	{
	uint16 y, u, v;

	TLG_GetYUVScale(tlg_i2c_addr, &y, &u, &v);
	y = gTvOptions.mContrast;
	TLG_SetYUVScale(tlg_i2c_addr, y, u, v);
	}
#endif /* WYSIWYG */
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetSaturation(uint8 *pSaturation)
{
	*pSaturation = gTvOptions.mSaturation;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_SetSaturation(uint8 iSaturation)
{
	if (iSaturation > SATURATION_RANGE) return TLG_ERR_FAIL;

	gTvOptions.mSaturation = iSaturation;

#if WYSIWYG
	{
	uint16 y, u, v;

	TLG_GetYUVScale(tlg_i2c_addr, &y, &u, &v);
	
	u = min(235 * gTvOptions.mSaturation / SATURATION_DEFAULT, 255);
	v = min(158 * gTvOptions.mSaturation / SATURATION_DEFAULT, 255);

	TLG_SetYUVScale(tlg_i2c_addr, y, u, v);
	}
#endif /* WYSIWYG */
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetDefinition(uint8 *pDefinition)
{
	*pDefinition = gTvOptions.mDefinition;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_SetDefinition(uint8 iDefinition)
{
	if (iDefinition > 63) return TLG_ERR_FAIL;

	gTvOptions.mDefinition = iDefinition;

#if WYSIWYG
	TLG_SetMobileVidEnhancement(tlg_i2c_addr, TLG_MVE_MANUAL, gTvOptions.mDefinition);
#endif /* WYSIWYG */
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetHSize(uint8 *pHsize)
{
	*pHsize = gTvOptions.mHReduce;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetVSize(uint8 *pVsize)
{
	*pVsize = gTvOptions.mVReduce;
	return TLG_ERR_SUCCESS;
}

// 数值越大,横向图像越大,类似放大镜
int TLGMMI_SetHSize(uint8 iHsize)
{
	if (iHsize > H_REDUCE_RANGE) return TLG_ERR_FAIL;

	gTvOptions.mHReduce = iHsize;
	return TLG_ERR_SUCCESS;
}

// 数值越大,纵向图像越大,类似放大镜
int TLGMMI_SetVSize(uint8 iVsize)
{
	if (iVsize > V_REDUCE_RANGE) return TLG_ERR_FAIL;

	gTvOptions.mVReduce = iVsize;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetHOffset(uint8 *pHoffset)
{
	*pHoffset = gTvOptions.mHOffset;
	return TLG_ERR_SUCCESS;
}

int TLGMMI_GetVOffset(uint8 *pVoffset)
{
	*pVoffset = gTvOptions.mVOffset;
	return TLG_ERR_SUCCESS;
}

// 数值越大,图像越向右移
int TLGMMI_SetHOffset(uint8 iHoffset)
{
	if (iHoffset > H_OFFSET_RANGE) return TLG_ERR_FAIL;

	gTvOptions.mHOffset = iHoffset;
#if WYSIWYG
	TLGAPP_InitHsyncAndVsync();
#endif /* WYSIWYG */
	return TLG_ERR_SUCCESS;
}

// 数值越大,图像越向下移
int TLGMMI_SetVOffset(uint8 iVoffset)
{
	if (iVoffset > V_OFFSET_RANGE) return TLG_ERR_FAIL;

	gTvOptions.mVOffset = iVoffset;
#if WYSIWYG
	TLGAPP_InitHsyncAndVsync();
#endif /* WYSIWYG */
	return TLG_ERR_SUCCESS;
}

void TLGMMI_RestoreTvOption(void)
{
	gTvOptions.mBrightness = 0;					// mBrightness
	gTvOptions.mContrast = 12;					// mContrast
	gTvOptions.mSaturation = SATURATION_DEFAULT;	// mSaturation
	gTvOptions.mDefinition = 44;					// mDefinition
	gTvOptions.mVolume = 4;						// mVolume

	gTvOptions.mHOffset = H_OFFSET_RANGE / 2;		// mHOffset
	gTvOptions.mHReduce = H_REDUCE_RANGE / 2;	// mHReduce
	gTvOptions.mVOffset = V_OFFSET_RANGE / 2;		// mVOffset
	gTvOptions.mVReduce = V_REDUCE_RANGE / 2;	// mVReduce
}

void TLGMMI_RestoreFmOption(void)
{
	gFmOptions.mVolume = 4;						// mVolume
}

void TLGMMI_ClearTvStorage(void)
{
	gTvStorage.mTuneMode = TLG_TUNEMD_MANUAL;
	gTvStorage.mScrMode = TLG_SCRMD_WINDOW;
	gTvStorage.mRegion = TLG_REGION_SHENZHEN;

	gTvStorage.mCurChnIdx = 0;
	gTvStorage.mIdxListCnt = 0;
	gTvStorage.mCurListIdx = 0;
}

void TLGMMI_ClearFmStorage(void)
{
	gFmStorage.mTuneMode = TLG_TUNEMD_MANUAL;

	gFmStorage.mCurChnIdx = 0;
	gFmStorage.mIdxListCnt = 0;
	gFmStorage.mCurListIdx = 0;
}

void TLGMMI_NextTvChannel(void)
{
	if (gTvStorage.mTuneMode == TLG_TUNEMD_AUTO)
	{
		do {
			if (++gTvStorage.mCurListIdx > gTvStorage.mIdxListCnt)
			{
				gTvStorage.mCurListIdx = 0;
				break;
			}
		} while (gTvStorage.mIdxListBuf[gTvStorage.mCurListIdx].ChnIdx <= gTvStorage.mCurChnIdx);

		gTvStorage.mCurChnIdx = gTvStorage.mIdxListBuf[gTvStorage.mCurListIdx].ChnIdx;
	}
	else /* gTvStorage.mTuneMode == TLG_TUNEMD_MANUAL */
	{
		if (++gTvStorage.mCurChnIdx > tlg_cur_chn_cnt)
			gTvStorage.mCurChnIdx = 0;
	}

	TLGAPP_SetChannelExt(p_tlg_cur_map[gTvStorage.mCurChnIdx] CHN_S);
}

void TLGMMI_PrevTvChannel(void)
{
	if (gTvStorage.mTuneMode == TLG_TUNEMD_AUTO)
	{
		do {
			if (--gTvStorage.mCurListIdx < 0)
			{
				gTvStorage.mCurListIdx = gTvStorage.mIdxListCnt - 1;
				break;
			}
		} while (gTvStorage.mIdxListBuf[gTvStorage.mCurListIdx].ChnIdx >= gTvStorage.mCurChnIdx);

		gTvStorage.mCurChnIdx = gTvStorage.mIdxListBuf[gTvStorage.mCurListIdx].ChnIdx;
	}
	else /* gTvStorage.mTuneMode == TLG_TUNEMD_MANUAL */
	{
		if (--gTvStorage.mCurChnIdx < 0)
			gTvStorage.mCurChnIdx = tlg_cur_chn_cnt - 1;
	}

	TLGAPP_SetChannelExt(p_tlg_cur_map[gTvStorage.mCurChnIdx] CHN_S);
}

void TLGMMI_NextFmChannel(void)
{
	if (gFmStorage.mTuneMode == TLG_TUNEMD_AUTO)
	{
		do {
			if (++gFmStorage.mCurListIdx > gFmStorage.mIdxListCnt)
			{
				gFmStorage.mCurListIdx = 0;
				break;
			}
		} while (gFmStorage.mIdxListBuf[gFmStorage.mCurListIdx].ChnIdx <= gFmStorage.mCurChnIdx);

		gFmStorage.mCurChnIdx = gFmStorage.mIdxListBuf[gFmStorage.mCurListIdx].ChnIdx;
	}
	else /* gFmStorage.mTuneMode == TLG_TUNEMD_MANUAL */
	{
		if (++gFmStorage.mCurChnIdx > tlg_cur_chn_cnt)
			gFmStorage.mCurChnIdx = 0;
	}

	TLGAPP_SetChannel(p_tlg_cur_map[gFmStorage.mCurChnIdx] CHN_S);
}

void TLGMMI_PrevFmChannel(void)
{
	if (gFmStorage.mTuneMode == TLG_TUNEMD_AUTO)
	{
		do {
			if (--gFmStorage.mCurListIdx < 0)
			{
				gFmStorage.mCurListIdx = gFmStorage.mIdxListCnt - 1;
				break;
			}
		} while (gFmStorage.mIdxListBuf[gFmStorage.mCurListIdx].ChnIdx >= gFmStorage.mCurChnIdx);

		gFmStorage.mCurChnIdx = gFmStorage.mIdxListBuf[gFmStorage.mCurListIdx].ChnIdx;
	}
	else /* gFmStorage.mTuneMode == TLG_TUNEMD_MANUAL */
	{
		if (--gFmStorage.mCurChnIdx < 0)
			gFmStorage.mCurChnIdx = tlg_cur_chn_cnt - 1;
	}

	TLGAPP_SetChannel(p_tlg_cur_map[gFmStorage.mCurChnIdx] CHN_S);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -