wndw_rc_fmt_ls.c
来自「TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KE」· C语言 代码 · 共 281 行
C
281 行
#include "hdr.h"
//==================================================================================
U8 idata wndw_rc_fm_ls_md = LOSS_MD_BLUE;
//==================================================================================
// Display wndwdow function description
//==================================================================================
void SetWndwRcFmLsOSDMd(void)
{
U8 _t1_, _t2_;
WriteOSDStr(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_MD_X+2,WNDW_RC_FM_LS_RDO_MD_Y+LOSS_MD_BYPS,0x00,str_wndw_no_vid_byps);
WriteOSDStr(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_MD_X+2,WNDW_RC_FM_LS_RDO_MD_Y+LOSS_MD_HOLD,0x00,str_wndw_no_vid_hold);
WriteOSDStr(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_MD_X+2,WNDW_RC_FM_LS_RDO_MD_Y+LOSS_MD_BLUE,0x00,str_wndw_no_vid_blue_back);
WriteOSDStr(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_MD_X+2,WNDW_RC_FM_LS_RDO_MD_Y+LOSS_MD_SKIP,0x00,str_wndw_no_vid_skip);
for(_t1_=0;_t1_<4;_t1_++){
if(_t1_ == wndw_rc_fm_ls_md) _t2_ = OSD_RDO_CHK;
else _t2_ = OSD_RDO_BLK;
WriteOSDFnt(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_MD_X,WNDW_RC_FM_LS_RDO_MD_Y+_t1_,0x00,_t2_);
}
}
//==================================================================================
void SetWndwRcFmLsOSDSk(void)
{
U8 _t1_, _t2_, _t3_;
if(wndw_rc_fm_ls_md == LOSS_MD_SKIP) _t1_ = 0x00;
else _t1_ = OSD_MIX;
WriteOSDStr(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_SK_X+2,WNDW_RC_FM_LS_RDO_SK_Y+LOSS_SKIP_AUTO,_t1_,str_wndw_no_vid_auto);
WriteOSDStr(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_SK_X+2,WNDW_RC_FM_LS_RDO_SK_Y+LOSS_SKIP_MANL,_t1_,str_wndw_no_vid_manl);
for(_t3_=0;_t3_<2;_t3_++){
if(_t3_ == b_rc_fm_ls_sk) _t2_ = OSD_RDO_CHK;
else _t2_ = OSD_RDO_BLK;
WriteOSDFnt(PTH_Y,MASTER,WNDW_RC_FM_LS_RDO_SK_X,WNDW_RC_FM_LS_RDO_SK_Y+_t3_,_t1_,_t2_);
}
}
//==================================================================================
void SetWndwRcFmLsOSDSkMn(U16 _data)
{
U8 _rdat_l_, _rdat_h_;
U8 _t1_, _t2_, _t3_, _t4_;
if((wndw_rc_fm_ls_md == LOSS_MD_SKIP)&&(b_rc_fm_ls_sk == LOSS_SKIP_MANL)) _t1_ = 0x00;
else _t1_ = OSD_MIX;
SetOSDGrp(PTH_Y,WNDW_RC_FM_LS_SK_CH_X-1,WNDW_RC_FM_LS_SK_CH07_Y,17,4,_t1_,str_wndw_grp_skip_ch);
_rdat_l_ = (U8)(_data&0x00ff);//ReadAsicByte(cmn_lst_slvr_y,DVC_PG1,0x5d);
_rdat_h_ = (U8)((_data&0xff00)>>8);//ReadAsicByte(cmn_lst_slvr_y,DVC_PG1,0x5c);
for(_t3_=0;_t3_<16;_t3_++){
#if defined(__4CH__)
if(_t3_ > 3) _t1_ = OSD_MIX;
#endif
if(_t3_ < 8){
WriteOSDFnt(PTH_Y,MASTER,WNDW_RC_FM_LS_SK_CH_X+(_t3_<<1),WNDW_RC_FM_LS_SK_CH07_Y,_t1_,0x10+_t3_);
if(BitSet(_rdat_l_,BIT0<<_t3_)) _t2_ = OSD_CHK_BOX_CHK;
else _t2_ = OSD_CHK_BOX_BLK;
WriteOSDFnt(PTH_Y,MASTER,WNDW_RC_FM_LS_SK_CH_X+(_t3_<<1),WNDW_RC_FM_LS_SK_CHK07_Y,_t1_,_t2_);
}
else{
_t4_ = _t3_-8;
if(_t4_ < 2) WriteOSDFnt(PTH_Y,MASTER,WNDW_RC_FM_LS_SK_CH_X+(_t4_<<1),WNDW_RC_FM_LS_SK_CH8F_Y,_t1_,0x18+_t4_);
else WriteOSDFnt(PTH_Y,MASTER,WNDW_RC_FM_LS_SK_CH_X+(_t4_<<1),WNDW_RC_FM_LS_SK_CH8F_Y,_t1_,0x1f+_t4_);
if(BitSet(_rdat_h_,BIT0<<_t4_)) _t2_ = OSD_CHK_BOX_CHK;
else _t2_ = OSD_CHK_BOX_BLK;
WriteOSDFnt(PTH_Y,MASTER,WNDW_RC_FM_LS_SK_CH_X+(_t4_<<1),WNDW_RC_FM_LS_SK_CHK8F_Y,_t1_,_t2_);
}
}
}
//==================================================================================
//==================================================================================
U16 GetWndwRcFmLsSkMn(void)
{
U16 _rdat_;
_rdat_ = ReadAsicByte(cmn_lst_slvr_y,DVC_PG1,0x5c);
_rdat_ <<= 8;
_rdat_ |= ReadAsicByte(cmn_lst_slvr_y,DVC_PG1,0x5d);
return _rdat_;
}
//==================================================================================
void SetWndwRcFmLsSkMn(U16 _data)
{
U8 _t1_;
/* //... update:050708 Rev2.0
_t1_ = (U8)(_data&0x00ff);
WriteAsicByte(cmn_lst_slvr_y,DVC_PG1,0x5d,_t1_);
_t1_ = (U8)((_data&0xff00)>>8);
WriteAsicByte(cmn_lst_slvr_y,DVC_PG1,0x5c,_t1_);
// */
_t1_ = (U8)(_data&0x00ff);
WriteAsicByte(cmn_dvc,DVC_PG1,0x5d,_t1_);
_t1_ = (U8)((_data&0xff00)>>8);
WriteAsicByte(cmn_dvc,DVC_PG1,0x5c,_t1_);
}
//==================================================================================
void SetWndwRcFmLsMd(void)
{
U8 _rdat_;
U8 _t1_, _t2_=0;
//... update:050708 Rev2.0
#if defined(__4CH__)
for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
SetCrntDvcCh(_t1_,&wndw_crnt_dvc,&wndw_crnt_ch);
if(wndw_crnt_dvc != _t2_){
_t2_ = wndw_crnt_dvc;
_rdat_ = ReadAsicByte(wndw_crnt_dvc,DVC_PG1,0x5b);
if(wndw_rc_fm_ls_md == LOSS_MD_HOLD) ClearBit(_rdat_,BIT3);
else if(wndw_rc_fm_ls_md == LOSS_MD_SKIP) SetBit(_rdat_,BIT3);
WriteAsicByte(wndw_crnt_dvc,DVC_PG1,0x5b,_rdat_);
}
}
#endif
if(wndw_rc_fm_ls_md == LOSS_MD_BYPS) _t1_ = LOSS_MODE_BYPS;
else if(wndw_rc_fm_ls_md == LOSS_MD_HOLD) _t1_ = LOSS_MODE_FRZ;
else if(wndw_rc_fm_ls_md == LOSS_MD_BLUE) _t1_ = LOSS_MODE_BLAK;
//... update:050708 Rev2.0
#if defined(__4CH__)
else if(wndw_rc_fm_ls_md == LOSS_MD_SKIP) _t1_ = LOSS_MODE_FRZ;
#elif defined(__16CH__)
else if(wndw_rc_fm_ls_md == LOSS_MD_SKIP) _t1_ = LOSS_MODE_BLK_FRZ; //... LOSS_MODE_BLK_FRZ is same value as LOSS_MD_SKIP
#endif
// _rdat_ = ReadAsicByte(MASTER,DVC_PG1,0x55);
// _rdat_ = (_rdat_ & 0x3f)|(_t1_<<6);
// WriteAsicByte(cmn_dvc,DVC_PG1,0x55,_rdat_);
SetAsicFlgType(MASTER,DVC_PG1,0x55,0xc0,_t1_<<6);
}
//==================================================================================
//==================================================================================
void InitWndwRcFmVarLsMd(void)
{
U8 _rdat_;
// _rdat_ = ReadAsicByte(MASTER,DVC_PG1,0x55);
// _rdat_ = (_rdat_ & 0xc0)>>6;
_rdat_ = GetAsicVar8Type(MASTER,DVC_PG1,0x55,0x62);
if(_rdat_ == LOSS_MODE_FRZ){
_rdat_ = ReadAsicByte(wndw_crnt_dvc,DVC_PG1,0x5b);
if(BitSet(_rdat_,BIT3)) wndw_rc_fm_ls_md = LOSS_MD_SKIP;
else wndw_rc_fm_ls_md = LOSS_MD_HOLD;
}
else wndw_rc_fm_ls_md = _rdat_;
}
//==================================================================================
//==================================================================================
void CreateWndwRcFmLs(void)
{
U16 _rdat_=0;
b_rc_fm_loss = ON;
WriteOSDClr(PTH_Y,MASTER,WNDW_RC_FM_LS_POS_X-1,WNDW_RC_FM_LS_POS_Y-1,WNDW_RC_FM_LS_L+2,WNDW_RC_FM_LS_H+2);
SetOSDWndw(PTH_Y,OSD_WNDW_TYPE_MAIN,WNDW_RC_FM_LS_POS_X,WNDW_RC_FM_LS_POS_Y,WNDW_RC_FM_LS_L,WNDW_RC_FM_LS_H,str_wndw_ttl_no_vid);
InitWndwRcFmVarLsMd();
SetWndwRcFmLsOSDMd();
SetWndwRcFmLsOSDSk();
_rdat_ = GetWndwRcFmLsSkMn();
SetWndwRcFmLsOSDSkMn(_rdat_);
}
//==================================================================================
void RunWndwRcFmLs(void)//U8 _osd_pos_x_, U8 _osd_pos_y_)
{
U16 _rdat_;
U8 _t1_;
U8 _osd_pos_x_, _osd_pos_y_;
_osd_pos_x_ = GetMseOSDX(reg_crsr_pos_x);
_osd_pos_y_ = GetMseOSDY(reg_crsr_pos_y);
if(b_mse_btn_dwn_lb == 1){
b_mse_btn_dwn_lb = 0;
if((_osd_pos_x_ == WNDW_RC_FM_LS_CLOS_X)&&(_osd_pos_y_ == WNDW_RC_FM_LS_CLOS_Y)){
// SetBoxBtnStrPush(LOSS_BOX_QUIT);
}
}
if(b_mse_btn_dwn_rb == 1) b_mse_btn_dwn_rb = 0;
if(b_mse_clk_lb == 1){
b_mse_clk_lb = 0;
if((_osd_pos_x_ == WNDW_RC_FM_LS_CLOS_X)&&(_osd_pos_y_ == WNDW_RC_FM_LS_CLOS_Y)){
// SetBoxBtnStrPull(LOSS_BOX_QUIT);
WriteOSDClr(PTH_Y,MASTER,WNDW_RC_FM_LS_POS_X,WNDW_RC_FM_LS_POS_Y,WNDW_RC_FM_LS_L,WNDW_RC_FM_LS_H);
WriteOSDClrX(MASTER,WNDW_RC_FM_LS_POS_X-1,WNDW_RC_FM_LS_POS_Y-1,WNDW_RC_FM_LS_L+2,WNDW_RC_FM_LS_H+2);
// DisableBox(PTH_Y,LOSS_BOX_QUIT,LOSS_BOX_FRM); // decoration wndwdow, main wndwdow
b_rc_fm_loss = OFF;
CreateWndwRcFm(PTH_Y);
}
else if((_osd_pos_y_ >= WNDW_RC_FM_LS_RDO_MD_Y)&&(_osd_pos_y_ <= (WNDW_RC_FM_LS_RDO_MD_Y+LOSS_MD_SKIP))){
if(_osd_pos_x_ == WNDW_RC_FM_LS_RDO_MD_X){
_t1_ = _osd_pos_y_ - WNDW_RC_FM_LS_RDO_MD_Y;
if(_t1_ != wndw_rc_fm_ls_md){
if((_t1_ < LOSS_MD_SKIP)&&(wndw_rc_fm_ls_md < LOSS_MD_SKIP)){
wndw_rc_fm_ls_md = _t1_;
}
else{
wndw_rc_fm_ls_md = _t1_;
SetWndwRcFmLsOSDSk();
SetWndwRcFmLsSkMn(0x0000);
SetWndwRcFmLsOSDSkMn(0x0000);
}
SetWndwRcFmLsOSDMd();
SetWndwRcFmLsMd();
}
}
}
else if(wndw_rc_fm_ls_md == LOSS_MD_SKIP){
if((_osd_pos_y_ == WNDW_RC_FM_LS_RDO_SK_Y)||(_osd_pos_y_ == (WNDW_RC_FM_LS_RDO_SK_Y+LOSS_SKIP_MANL))){
if(_osd_pos_x_ == WNDW_RC_FM_LS_RDO_SK_X){
if(_osd_pos_y_ == WNDW_RC_FM_LS_RDO_SK_Y) _t1_ = LOSS_SKIP_AUTO;
else _t1_ = LOSS_SKIP_MANL;
if(_t1_ != b_rc_fm_ls_sk){
b_rc_fm_ls_sk = _t1_;
SetWndwRcFmLsOSDSk();
if(b_rc_fm_ls_sk == LOSS_SKIP_AUTO){
SetWndwRcFmLsSkMn(0x0000);
SetWndwRcFmLsOSDSkMn(0x0000);
}
else{
_rdat_ = GetWndwRcFmLsSkMn();
SetWndwRcFmLsOSDSkMn(_rdat_);
}
}
}
}
else if(b_rc_fm_ls_sk == LOSS_SKIP_MANL){
#if defined(__4CH__)
if(_osd_pos_y_ == WNDW_RC_FM_LS_SK_CHK07_Y){
if((_osd_pos_x_ >= WNDW_RC_FM_LS_SK_CH_X)&&(_osd_pos_x_ <= (WNDW_RC_FM_LS_SK_CH_X+6))){
_t1_ = _osd_pos_x_ - WNDW_RC_FM_LS_SK_CH_X;
if(BitClear(_t1_,BIT0)){
_t1_ >>= 1;
#elif defined(__16CH__)
if((_osd_pos_y_ == WNDW_RC_FM_LS_SK_CHK07_Y)||(_osd_pos_y_ == WNDW_RC_FM_LS_SK_CHK8F_Y)){
if((_osd_pos_x_ >= WNDW_RC_FM_LS_SK_CH_X)&&(_osd_pos_x_ <= (WNDW_RC_FM_LS_SK_CH_X+14))){
_t1_ = _osd_pos_x_ - WNDW_RC_FM_LS_SK_CH_X;
if(BitClear(_t1_,BIT0)){
_t1_ >>= 1;
if(_osd_pos_y_ == WNDW_RC_FM_LS_SK_CHK8F_Y) _t1_ += 8;
#endif
_rdat_ = GetWndwRcFmLsSkMn();
_rdat_ ^= 0x0001<<_t1_;
SetWndwRcFmLsOSDSkMn(_rdat_);
SetWndwRcFmLsSkMn(_rdat_);
}
}
}
}
}
}
if(b_mse_clk_rb == 1) b_mse_clk_rb = 0;
if(b_mse_pshng_clk_lb == 1){
b_mse_pshng_clk_lb = 0;
}
if(b_mse_pshng_clk_rb == 1) b_mse_pshng_clk_rb = 0;
}
//==================================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?