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

📄 wndw_ds_scrn.c

📁 一个比较好用的TW2835音视频芯片开发板的程序,
💻 C
📖 第 1 页 / 共 2 页
字号:
////				}
//			}
		}
		else{
//			SetAsicFlgType(MASTER,DVC_PG1,0x56,BIT6,BIT6);						//... internal trigger mode

//			if(wndw_rc_fm_mux_type != MUX_TYPE_FL){
//				wndw_rc_fm_mux_type = MUX_TYPE_FL;
			if(wndw_rc_fm_type != MUX_TYPE_FL){
				wndw_rc_fm_type = MUX_TYPE_FL;
			}
			SetAsicFlgType(MASTER,DVC_PG1,0x56,0xf0,0x00);		//... MUX_MODE=0,TRIG_MODE=0,MUX_FLD=0
		}
	}
	else{
		//... y path ...................................
//		SetAsicFlgType(MASTER,DVC_PG1,0x61+_t1_*3,BIT2,BIT2);			//... BLANK_EN=1

//		if(b_rc_fm_type == FM_TYPE_CIF){
		if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
		}
		else{
			SetAsicFlgType(MASTER,DVC_PG1,0x56,BIT6,BIT6);						//... internal trigger mode
		}
	}
}

#endif
//==================================================================================
void	SetWndwDsScFmtLvPb(void)
{
	U8 _t1_;
	U8 _dvc_, _ch_;
	
	//... pb path
#if defined(__4CH__)
	if(b_ds_wth_4pb){				//... enable pb 4ch: triplex(lv 4ch + pb 4ch)
		if(wndw_rc_fm_type == CIF_TYPE_FR)
			SetAsicFlgType(MASTER,DVC_PG1,0x01,0x03,0x03);			//... STRB_FLD=3		(because AUTO_ENHANCE=1)
		else
			SetAsicFlgType(MASTER,DVC_PG1,0x01,0x03,0x02);			//... STRB_FLD=2
		
		for(_t1_=0;_t1_<4;_t1_++){
			SetChNinePos(PTH_PB,MASTER,_t1_,_t1_+5);
//			if(b_rc_fm_type == FM_TYPE_CIF){
			if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
				SetSclRto(PTH_PB,MASTER,_t1_,0x23,0x23);

//				if(wndw_rc_fm_cif_type == CIF_TYPE_FR)
				if(wndw_rc_fm_type == CIF_TYPE_FR)
					SetAsicFlgType(MASTER,DVC_PG1,0x15+(_t1_<<3),BIT5,0x00);			//... FIELD_OP=0
				else	SetAsicFlgType(MASTER,DVC_PG1,0x15+(_t1_<<3),BIT5,BIT5);		//... FIELD_OP=1
			}
			else{															//... PB (MUX)
				SetSclRto(PTH_PB,MASTER,_t1_,0x13,0x23);
				SetAsicFlgType(MASTER,DVC_PG1,0x15+(_t1_<<3),BIT5,BIT5);				//... FIELD_OP=1
			}
			WriteAsicByte(MASTER,DVC_PG1,0x14+(_t1_<<3),0x02);						//... ENHANCE=0
			WriteAsicByte(MASTER,DVC_PG1,0x16+(_t1_<<3),0x90|_t1_);
			WriteAsicByte(MASTER,DVC_PG1,0x13+(_t1_<<3),0x90|BIT2|_t1_);		//... PB_PATH_EN=1
		}
	}
#elif	defined(__16CH__)
	if(b_ds_wth_16pb){				//... enable pb 4ch: triplex(lv 4ch + pb 4ch)
//		if(wndw_rc_fm_type == CIF_TYPE_FR)
//			SetAsicFlgType(_dvc_,DVC_PG1,0x01,0x03,0x03);			//... STRB_FLD=3		(because AUTO_ENHANCE=1)
//		else
			SetAsicFlgType(_dvc_,DVC_PG1,0x01,0x03,0x02);			//... STRB_FLD=2
		
		for(_t1_=0;_t1_<16;_t1_++){
			SetCrntDvcCh(_t1_,&_dvc_,&_ch_);

			if(_t1_ < 2)	SetCh36Pos(PTH_PB,_dvc_,_ch_,_t1_+18);
			else		SetCh36Pos(PTH_PB,_dvc_,_ch_,_t1_+20);
//			if(b_rc_fm_type == FM_TYPE_CIF){
			if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
//				SetSclRto(PTH_PB,_dvc_,_ch_,0x13,0x13);
//
////				if(wndw_rc_fm_cif_type == CIF_TYPE_FR)
//				if(wndw_rc_fm_type == CIF_TYPE_FR)
//					SetAsicFlgType(_dvc_,DVC_PG1,0x15+(_ch_<<3),BIT5,0x00);			//... FIELD_OP=0
//				else	SetAsicFlgType(_dvc_,DVC_PG1,0x15+(_ch_<<3),BIT5,BIT5);		//... FIELD_OP=1

				if(wndw_rc_fm_type == CIF_TYPE_FR)	SetSclRto(PTH_PB,_dvc_,_ch_,0x13,0x23);
				else	SetSclRto(PTH_PB,_dvc_,_ch_,0x13,0x13);
				SetAsicFlgType(_dvc_,DVC_PG1,0x15+(_ch_<<3),BIT5,BIT5);		//... FIELD_OP=1
			}
			else{															//... PB (MUX)
				SetSclRto(PTH_PB,_dvc_,_ch_,0x16,0x13);
				SetAsicFlgType(_dvc_,DVC_PG1,0x15+(_ch_<<3),BIT5,BIT5);				//... FIELD_OP=1
			}
			WriteAsicByte(_dvc_,DVC_PG1,0x14+(_ch_<<3),0x02);						//... ENHANCE=0
			WriteAsicByte(_dvc_,DVC_PG1,0x16+(_ch_<<3),0x90|_t1_);
			WriteAsicByte(_dvc_,DVC_PG1,0x13+(_ch_<<3),0x90|BIT2|_ch_);		//... PB_PATH_EN=1
		}
	}
#endif
	else{								//... disable pb 4ch: only live 4ch
		for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
			SetCrntDvcCh(_t1_,&_dvc_,&_ch_);

			if(!(_t1_&0x03))
				SetAsicFlgType(_dvc_,DVC_PG1,0x01,0x03,0x02);			//... STRB_FLD=2
	
			//... strobe mode牢 dummy ch阑 disable 苞 enable阑 馆汗且锭,
			//... 1. live mode肺 setting饶 disable, 2. strobe 肯丰饶 disable, 3. 捞档历档 饺栏搁 enable傈俊 MODE_RST=1肺 setting.
			SetAsicFlgType(_dvc_,DVC_PG1,0x13+(_ch_<<3),BIT7|0x30,0x00);			//... CHENA=0,FUNC_MODE=0

////			SetAsicFlgType(_dvc_,DVC_PG2,REG_2DBOX_CTL+(_t1_<<3),_2DBOX_EN_X,_2DBOX_EN_X);
//			SetAsicFlgType(_dvc_,DVC_PG2,0x60+(_t1_<<3),0x80,0x80);	//... MDBOX_EN=1
		}
	}
}
//==================================================================================
void	SetWndwDsScFmtLv(void)
{
	U8 _dvc_, _ch_;
	U8 _t1_;
	
	//... live path
	for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
		SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
		SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT3|BIT2,0x00);			//... DM_PATH_SEL=0,PB_PATH_EN=0
		SetAsicFlgType(_dvc_,DVC_PG1,0x11+(_ch_<<3),BIT6|BIT3,0x00);			//... FRZ_CH=0,ENHANCE=0
		SetAsicFlgType(_dvc_,DVC_PG1,0x12+(_ch_<<3),BIT5,0x00);					//... FIELD_OP=0
	}

	ChngWndwDsScFmtLv();
	SetWndwDsScFmtLvPb();
}
//==================================================================================
void	SetWndwDsScFmtFl(void)
{
	U8 _dvc_, _ch_;
	U8 _t1_;
	
	//... if needed, do zoom control for playback

	//... live path
	for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
		SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
		SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT3|BIT2,0x00);			//... DM_PATH_SEL=0,PB_PATH_EN=0
		SetAsicFlgType(_dvc_,DVC_PG1,0x11+(_ch_<<3),BIT6|BIT3,0x00);			//... FRZ_CH=0,ENHANCE=0
		SetAsicFlgType(_dvc_,DVC_PG1,0x12+(_ch_<<3),BIT5,0x00);					//... FIELD_OP=0
		//... strobe mode牢 dummy ch阑 disable 苞 enable阑 馆汗且锭,
		//... 1. live mode肺 setting饶 disable, 2. strobe 肯丰饶 disable, 3. 捞档历档 饺栏搁 enable傈俊 MODE_RST=1肺 setting.
		SetAsicFlgType(_dvc_,DVC_PG1,0x13+(_ch_<<3),BIT7|0x30,0x00);			//... CHENA=0,FUNC_MODE=0
	}

	ChngWndwDsScFmtLv();
}
//==================================================================================
//==================================================================================
void	CreateWndwDsSc(U8 _pth)
{
//	b_status_wndw = ON;
	b_cmn_wndw_mn = ON;

	WriteOSDClr(_pth,MASTER,WNDW_DS_SC_POS_X,WNDW_DS_SC_POS_Y,WNDW_DS_SC_L,WNDW_DS_SC_H);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_DS_SC_POS_X,WNDW_DS_SC_POS_Y,WNDW_DS_SC_L,WNDW_DS_SC_H,str_wndw_ttl_ds_scrn);

//	InitWndwDsScVarLs();

	SetWndwDsScOSDFmt(_pth);
//	SetWndwDsScOSDLoss(_pth);
}
//==================================================================================
void	RunWndwDsSc(U8 _pth)//U8 _index_x, U8 _index_y)
{
	U8 _t1_;
	U8 _dvc_, _ch_;
	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_DS_SC_CLOS_X)&&(_osd_pos_y_ == WNDW_DS_SC_CLOS_Y)){
//			SetBoxBtnStrPush(BOX_WNDW_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_DS_SC_CLOS_X)&&(_osd_pos_y_ == WNDW_DS_SC_CLOS_Y)){
//			SetBoxBtnStrPull(BOX_WNDW_QUIT);
			
			WriteOSDClr(_pth,MASTER,WNDW_DS_SC_POS_X,WNDW_DS_SC_POS_Y,WNDW_DS_SC_L,WNDW_DS_SC_H);
			WriteOSDClrX(MASTER,WNDW_DS_SC_POS_X-1,WNDW_DS_SC_POS_Y-1,WNDW_DS_SC_L+2,WNDW_DS_SC_H+2);
////			WriteOSDClr(PTH_Y,MASTER,WNDW_DS_SC_CNT_X,WNDW_DS_SC_CNT_Y,10,1);
//			DisableBox(_pth,BOX_WNDW_FRM-2,BOX_WNDW_FRM);	// decoration wndwdow, main wndwdow

			SetOSDNoMn();

//			b_status_wndw = OFF;
//			global_menu_crnt_pos = 30;
			b_cmn_wndw_mn = OFF;
			wndw_mn_pos_crnt = 30;
		}
		else{
#if defined(__4CH__)
			if((_osd_pos_x_ == WNDW_DS_SC_RDO_FM_X)&&
				((_osd_pos_y_ == WNDW_DS_SC_RDO_FM_Y)||(_osd_pos_y_ == (WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH))||
				(_osd_pos_y_ == (WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH)))){

				_t1_ = _osd_pos_y_ - WNDW_DS_SC_RDO_FM_Y;
//				if(_t1_ != wndw_ds_sc_fmt){
					if((_t1_ < SC_FMT_8CH)&&(wndw_ds_sc_fmt < SC_FMT_8CH)){
						//... if select one of full or quad, pass OSD process... (-> redrawndwg protection)
						wndw_ds_sc_fmt = _t1_;				//... don't move out of if() sentence
					}
					else{
						wndw_ds_sc_fmt = _t1_;
					}
#elif	defined(__16CH__)
			if((_osd_pos_x_ == WNDW_DS_SC_RDO_FM_X)&&
				((_osd_pos_y_ == WNDW_DS_SC_RDO_FM_Y)||(_osd_pos_y_ == (WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH))||
				(_osd_pos_y_ == (WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH)))){

				_t1_ = _osd_pos_y_ - WNDW_DS_SC_RDO_FM_Y;
//				if(_t1_ != wndw_ds_sc_fmt){
					wndw_ds_sc_fmt = _t1_;
#endif

#if defined(__4CH__)
					if(wndw_ds_sc_fmt == SC_FMT_8CH){
						InitWndwDsScFmtPsd8Ch(ON);
						SetWndwDsScFmtPsd8Ch();
						SetWndwDsScFmtPsd8ChRc();
					}
					else{
						InitWndwDsScFmtPsd8Ch(OFF);
#elif	defined(__16CH__)
					if(wndw_ds_sc_fmt == SC_FMT_16CH){
						SetWndwDsScFmtLv();
					}
					else{
#endif
						if(wndw_ds_sc_fmt == SC_FMT_4CH){
							SetWndwDsScFmtLv();
						}
						else if(wndw_ds_sc_fmt == SC_FMT_1CH){
							SetWndwDsScFmtFl();
						}
					}
					
					SetWndwDsScOSDFmtRdo(_pth);

//				}
			}
			else{
#if defined(__4CH__)
				if(wndw_ds_sc_fmt == SC_FMT_4CH){
					if((_osd_pos_x_ == WNDW_DS_SC_CHK_X)&&(_osd_pos_y_ == WNDW_DS_SC_CHK_4PB_Y)){
						b_ds_wth_4pb ^= 1;
						
						SetWndwDsScFmtLv();
						SetWndwDsScOSDFmtChk(_pth);
						
						if(b_ds_wth_4pb){
							for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
								SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
								Disable2DBoxDsply(_dvc_,_ch_);
							}
						}
					}
				}
				else if(wndw_ds_sc_fmt == SC_FMT_8CH){
					if((_osd_pos_x_ == WNDW_DS_SC_CHK_X)&&(_osd_pos_y_ == WNDW_DS_SC_CHK_RC_Y)){
						b_ds_wth_rc ^= 1;

//						//... add (date:050401 Rev1.2)
//						if(b_rc_fm_type == FM_TYPE_MUX){
////... update:050802 Rev2.1_ pseudo 8ch field by field mux switching test
//							if(b_ds_wth_rc == 1){
//////								SetAsicFlgType(MASTER,DVC_PG1,REG_MUX_CTL_Y,TRIG_MODE,0x00);						//... external trigger mode
////								SetAsicFlgType(MASTER,DVC_PG1,REG_MUX_CTL_Y,TRIG_MODE,TRIG_MODE);			//... internal trigger mode
////								SetAsicFlgType(MASTER,DVC_PG1,0x50,0xff,0x80);						//... set Strobe acknowledge of display path on MPPDEC_X[3:0]
//								SetAsicFlgType(MASTER,DVC_PG1,0x56,BIT6,BIT6);						//... internal trigger mode
//							}
//							else{
////								SetAsicFlgType(MASTER,DVC_PG1,REG_MUX_CTL_Y,TRIG_MODE,0x00);					//... external trigger mode
////								SetAsicFlgType(MASTER,DVC_PG1,0x50,0xff,0x00);						//... set input mode on MPPDEC_X[3:0]
//								SetAsicFlgType(MASTER,DVC_PG1,0x56,BIT6,0x00);						//... internal trigger mode
//							}
//						}
						SetWndwDsScFmtPsd8ChRc();
						SetWndwDsScOSDFmtChk(_pth);

						if(b_ds_wth_rc){
							for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
								SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
								Disable2DBoxDsply(_dvc_,_ch_);
							}
						}
					}
				}
#elif	defined(__16CH__)
				if(wndw_ds_sc_fmt == SC_FMT_16CH){
					if((_osd_pos_x_ == WNDW_DS_SC_CHK_X)&&(_osd_pos_y_ == WNDW_DS_SC_CHK_16PB_Y)){
						b_ds_wth_16pb ^= 1;
						
						SetWndwDsScFmtLv();
						SetWndwDsScOSDFmtChk(_pth);

						if(b_ds_wth_16pb){
							for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
								SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
								Disable2DBoxDsply(_dvc_,_ch_);
							}
						}
					}
				}
#endif
//				else{//if(wndw_ds_sc_fmt != SC_FMT_8CH){
//					if((_osd_pos_x_ == WNDW_DS_SC_RDO_LS_X)&&
//						((_osd_pos_y_ >= WNDW_DS_SC_RDO_LS_Y)&&(_osd_pos_y_ <= (WNDW_DS_SC_RDO_LS_Y+3)))){
//						
//						_t1_ = _osd_pos_y_ - WNDW_DS_SC_RDO_LS_Y;
//						if(_t1_ != wndw_ds_sc_loss){
//							wndw_ds_sc_loss = _t1_;//_osd_pos_y_ - WNDW_DS_SC_RDO_LS_Y;
//
//							SetWndwDsScOSDLoss(_pth);
//
////							_t1_ = ReadAsicByte(MASTER,DVC_PG1,REG_FRZ_FLD_X);
////							_t1_ = (_t1_ & 0x3f)|(wndw_ds_sc_loss<<6);
////							WriteAsicByte(global_dvc,DVC_PG1,REG_FRZ_FLD_X,_t1_);
//							SetAsicFlgType(cmn_dvc,DVC_PG1,0x05,0xc0,wndw_ds_sc_loss<<6);
//						}
//					}
//				}
			}
		}
	}
	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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -