📄 tv_mmi.c
字号:
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 + -