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

📄 mse_free.c

📁 TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KEIL C51 平台编译,
💻 C
📖 第 1 页 / 共 2 页
字号:
		else
			SetSclH(PTH_X,_dvc,mse_ch_scl,((_pichr-_pichl)*0x016c)<<_shft);	// 0x016c(65536/180=364.09)
	}
//	if(mse_ch_ptr < 4){
		if(_picxx == 0x30)	WriteAsicByte(_dvc,DVC_PG1,0x30+(_ch<<2),_pichl);
		else	WriteAsicByte(_dvc,DVC_PG1,0x31+(_ch<<2),_pichr);
//	}
//	else{
//		if(_picxx == 0x40)	WriteAsicByte(_dvc,DVC_PG1,0x40+(_ch<<2),_pichl);
//		else	WriteAsicByte(_dvc,DVC_PG1,0x41+(_ch<<2),_pichr);
//	}
}
//==================================================================================
void	TglMseChMrr(U8 _dvc, U8 _ch, U8 _mrr)
{
	U8 _ch_ctl_;
	
//	if(mse_ch_ptr < 4){
		_ch_ctl_ = ReadAsicByte(_dvc,DVC_PG1,0x11+(_ch<<3));
		_ch_ctl_ ^= _mrr;
		WriteAsicByte(_dvc,DVC_PG1,0x11+(_ch<<3),_ch_ctl_);
//	}
//	else{
//		_ch_ctl_ = ReadAsicByte(_dvc,DVC_PG1,0x14+(_ch<<3));
//		_ch_ctl_ ^= _mrr;
//		WriteAsicByte(_dvc,DVC_PG1,0x14+(_ch<<3),_ch_ctl_);
//	}
}
//==================================================================================
void SetMseFreeScl(void)
{
	U8 _pos_x_, _pos_y_;
	U8 _pic_sz_[4];
	U8 _dvc_, _ch_;
	U8 _t1_, _t2_;

	_pos_x_ = (U8)(reg_crsr_pos_x>>1);
	_pos_y_ = (U8)(reg_crsr_pos_y>>1);

	if((b_mse_rlse_lb == 0)&&(b_mse_init_drg == 0)){
		if(b_mse_init_scl == 0){
			b_mse_init_scl = 1;
//	if(BitClear(mse_flg,MSE_RLSE_LB)&&BitClear(mse_flg,MSE_INIT_DRG)){
//		if(BitClear(mse_flg,MSE_INIT_SCL)){
//			SetBit(mse_flg,MSE_INIT_SCL);

			if(b_mse_stts_pth == MSE_PTH_X)	b_mse_stts_free = ON;
			if(b_mse_rlse_rb == 0)	b_mse_scl_bnd_only = 1;
//			if(BitClear(mse_flg,MSE_STTS_PTH))	SetBit(mse_flg,MSE_STTS_FREE);
//			if(BitClear(mse_flg,MSE_RLSE_RB))	SetBit(mse_flg,MSE_SCL_BND_ONLY);

			mse_ch_ptr = mse_ch & 0x0f;

//				for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
////					SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
////					if(_t1_ == mse_ch_ptr){
////						mse_ch_scl = ReadAsicByte(_dvc_,DVC_PG1,REG_FUNC_MODE_X+(_ch_<<3)) & DEC_PTH;
//					if(_t1_ == mse_ch_ptr){
//						mse_ch_scl = ReadAsicByte(MASTER,DVC_PG1,0x10+(_t1_<<3)) & 0x03;	//... DEC_PTH
//
///*		//... display channel number
//						_t1_ = ReadAsicByte(_dvc_,DVC_PG1,0x30+(_ch_<<3));
//						_t1_ = (_t1_+2)>>2;
//						_t2_ = ReadAsicByte(_dvc_,DVC_PG1,0x32+(_ch_<<3));
//						_t2_ = (_t2_+3)/5;
//						SetMseFreeOSDCh(_t1_,_t2_,mse_ch_ptr);
//						//	*/
//					}
//				}

			mse_ch_scl = mse_ch_ptr;
		}

		if(b_mse_stts_free == ON){
//		if(BitSet(mse_flg,MSE_STTS_FREE)){
			if(mse_btn_pshng_cnt == MSE_BTN_DLY_CLK){
				for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
//						SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
					if(_t1_ == mse_ch_ptr){
//						if(_t1_ < 4){
////							SetChFuncMode(PTH_X,_dvc_,_ch_,POP_UP,ON);
////							SetChCtrl(PTH_X,_dvc_,_ch_,FREEZE|ENHANCE|BLINK,OFF);
							SetAsicFlgType(MASTER,DVC_PG1,0x10+(_t1_<<3),BIT6,BIT6);				//... enable popup
							SetAsicFlgType(MASTER,DVC_PG1,0x11+(_t1_<<3),BIT6|BIT3|BIT0,0x00);	//... disable freeze,enhance,blink
//						}
//						else{
//							_t2_ = _t1_&0x03;
////							SetChFuncMode(PTH_X,_dvc_,_ch_,POP_UP,ON);
////							SetChCtrl(PTH_X,_dvc_,_ch_,FREEZE|ENHANCE|BLINK,OFF);
//							SetAsicFlgType(MASTER,DVC_PG1,0x13+(_t2_<<3),BIT6,BIT6);				//... enable popup
//							SetAsicFlgType(MASTER,DVC_PG1,0x14+(_t2_<<3),BIT6|BIT3|BIT0,0x00);	//... disable freeze,enhance,blink
//						}
					}
					else{
//						if(_t1_ < 4){
////							SetChFuncMode(PTH_X,_dvc_,_ch_,POP_UP,OFF);
							SetAsicFlgType(MASTER,DVC_PG1,0x10+(_t1_<<3),BIT6,0x00);				//... disable popup
//						}
//						else{
//							_t2_ = _t1_&0x03;
////							SetChFuncMode(PTH_X,_dvc_,_ch_,POP_UP,OFF);
//							SetAsicFlgType(MASTER,DVC_PG1,0x13+(_t2_<<3),BIT6,0x00);				//... disable popup
//						}
					}
				}
			}

			SetCrntDvcCh(mse_ch_ptr,&_dvc_,&_ch_);
			for(_t1_=0;_t1_<4;_t1_++)	_pic_sz_[_t1_] = ReadAsicByte(_dvc_,DVC_PG1,0x30+(_ch_<<2)+_t1_);
//			for(_t1_=0;_t1_<4;_t1_++)
//				_pic_sz_[_t1_] = ReadAsicByte(MASTER,DVC_PG1,0x30+(mse_ch_ptr<<2)+_t1_);


//			IfBitSet(mse_ch,BIT7){
			if(BitSet(mse_ch,BIT7)){
				if(_pos_x_ <= _pic_sz_[1]){
//					if(GetAsicFlag(_dvc_,DVC_PG0,0x38,BIT0<<_ch_)){				//... when enable pb
					if(GetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT2)){				//... PB_PATH_EN=1
//#if	defined(__4CH__)
//						if((b_jp_4pb == OFF)&&(((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF))||(glbl_dspl_pb_inpt > PB_INPT_MUX)))//{
//#elif	defined(__16CH__)
//						if(((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF))||(glbl_dspl_pb_inpt > PB_INPT_MUX))//{
//#endif
						if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
							if(_pos_x_ >= (_pic_sz_[1]-90)){
								_pic_sz_[0] = _pos_x_;
							}
							else{
								_pic_sz_[0] = _pic_sz_[1]-90;
							}
							SetMseFreeSclH(_dvc_,_ch_,0x30,_pic_sz_[0],_pic_sz_[1],1);
							WriteAsicByte(_dvc_,DVC_PG2,0x62+(_ch_<<3),_pic_sz_[0]+1);
						}
						else{
							_pic_sz_[0] = _pos_x_;

							SetMseFreeSclH(_dvc_,_ch_,0x30,_pic_sz_[0],_pic_sz_[1],0);
							WriteAsicByte(_dvc_,DVC_PG2,0x62+(_ch_<<3),_pic_sz_[0]+1);
						}
					}
					else{
						_pic_sz_[0] = _pos_x_;

						SetMseFreeSclH(_dvc_,_ch_,0x30,_pic_sz_[0],_pic_sz_[1],0);
						//... 2d box setting
						WriteAsicByte(_dvc_,DVC_PG2,0x62+(_ch_<<3),_pic_sz_[0]+1);

					}
				}
				else{
					TglMseChMrr(_dvc_,_ch_,BIT5);
					_pic_sz_[0] = _pic_sz_[1];
					mse_ch ^= BIT7|BIT6;
//					WriteAsicByte(_dvc_,DVC_PG1,0x30+(_ch_<<2),_pic_sz_[0]);
					WriteAsicByte(_dvc_,DVC_PG1,0x30+(_ch_<<2),_pic_sz_[0]);
					//... 2d box setting
					WriteAsicByte(_dvc_,DVC_PG2,0x62+(_ch_<<3),_pic_sz_[0]+1);
				}
			}
//			else IfBitSet(mse_ch,BIT6){
			else if(BitSet(mse_ch,BIT6)){
				if(_pos_x_ >= _pic_sz_[0]){
//					if(GetAsicFlag(_dvc_,DVC_PG0,0x38,BIT0<<_ch_)){				//... when enable pb
					if(GetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT2)){				//... when enable pb
//#if	defined(__4CH__)
//						if((b_jp_4pb == OFF)&&(((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF))||(glbl_dspl_pb_inpt > PB_INPT_MUX)))//{
//#elif	defined(__16CH__)
//						if(((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF))||(glbl_dspl_pb_inpt > PB_INPT_MUX))//{
//#endif
						if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
							if(_pos_x_ <= (_pic_sz_[0]+90)){
								_pic_sz_[1] = _pos_x_;
							}
							else{
								_pic_sz_[1] = _pic_sz_[0]+90;
							}
							SetMseFreeSclH(_dvc_,_ch_,0x31,_pic_sz_[0],_pic_sz_[1],1);
						}
						else{
							_pic_sz_[1] = _pos_x_;

							SetMseFreeSclH(_dvc_,_ch_,0x31,_pic_sz_[0],_pic_sz_[1],0);
						}
					}
					else{
						_pic_sz_[1] = _pos_x_;

						SetMseFreeSclH(_dvc_,_ch_,0x31,_pic_sz_[0],_pic_sz_[1],0);
					}
				}
				else{
					TglMseChMrr(_dvc_,_ch_,BIT5);
					_pic_sz_[1] = _pic_sz_[0];
					mse_ch ^= BIT7|BIT6;
					WriteAsicByte(_dvc_,DVC_PG1,0x31+(_ch_<<2),_pic_sz_[1]);
				}
			}

//			IfBitSet(mse_ch,BIT5){
			if(BitSet(mse_ch,BIT5)){
				if(_pos_y_ <= _pic_sz_[3]){
//					if(GetAsicFlag(_dvc_,DVC_PG0,0x38,BIT0<<_ch_)){				//... when enable pb
					if(GetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT2)){				//... when enable pb
//#if	defined(__4CH__)
//						if((((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF)&&(glbl_rec_fmt_cif_type == CIF_TYPE_FR))||
//							(glbl_dspl_pb_inpt == PB_CIF_FRM))&&(b_jp_4pb == OFF))//{
//#elif	defined(__16CH__)
//						if(((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF)&&(glbl_rec_fmt_cif_type == CIF_TYPE_FR))||
//							(glbl_dspl_pb_inpt == PB_CIF_FRM))//{
//#endif
						if(wndw_rc_fm_type == CIF_TYPE_FR){
							//... when record out is quad size( 360x120 or 360x144 )
							if(_pos_y_ >= (_pic_sz_[3]-(cmn_bot>>1))){
								_pic_sz_[2] = _pos_y_;
							}
							else{
								_pic_sz_[2] = _pic_sz_[3]-(cmn_bot>>1);
							}
							SetMseFreeSclV(_dvc_,_ch_,0x32,_pic_sz_[2],_pic_sz_[3]);
							WriteAsicByte(_dvc_,DVC_PG2,0x64+(_ch_<<3),_pic_sz_[2]);
						}
						else{
							_pic_sz_[2] = _pos_y_;

							SetMseFreeSclV(_dvc_,_ch_,0x32,_pic_sz_[2],_pic_sz_[3]);
							WriteAsicByte(_dvc_,DVC_PG2,0x64+(_ch_<<3),_pic_sz_[2]);

						}
					}
					else{
						_pic_sz_[2] = _pos_y_;

						SetMseFreeSclV(_dvc_,_ch_,0x32,_pic_sz_[2],_pic_sz_[3]);
						//... 2d box setting
						WriteAsicByte(_dvc_,DVC_PG2,0x64+(_ch_<<3),_pic_sz_[2]);

					}
				}
				else{
					TglMseChMrr(_dvc_,_ch_,BIT4);
					_pic_sz_[2] = _pic_sz_[3];
					mse_ch ^= BIT5|BIT4;
					WriteAsicByte(_dvc_,DVC_PG1,0x32+(_ch_<<2),_pic_sz_[2]);
					//... 2d box setting
					WriteAsicByte(_dvc_,DVC_PG2,0x64+(_ch_<<3),_pic_sz_[2]);
				}
			}
//			else IfBitSet(mse_ch,BIT4){
			else if(BitSet(mse_ch,BIT4)){
				if(_pos_y_ >= _pic_sz_[2]){
//					if(GetAsicFlag(_dvc_,DVC_PG0,0x38,BIT0<<_ch_)){				//... when enable pb
					if(GetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT2)){				//... when enable pb
//#if	defined(__4CH__)
//						if((((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF)&&(glbl_rec_fmt_cif_type == CIF_TYPE_FR))||
//							(glbl_dspl_pb_inpt == PB_CIF_FRM))&&(b_jp_4pb == OFF))//{
//#elif	defined(__16CH__)
//						if(((glbl_dspl_pb_inpt == PB_INPT_REC)&&(b_rec_fmt_type == FMT_TYPE_CIF)&&(glbl_rec_fmt_cif_type == CIF_TYPE_FR))||
//							(glbl_dspl_pb_inpt == PB_CIF_FRM))//{
//#endif
						if(wndw_rc_fm_type == CIF_TYPE_FR){
							//... when record out is quad size( 360x120 or 360x144 )
							if(_pos_y_ <= (_pic_sz_[2]+(cmn_bot>>1))){
								_pic_sz_[3] = _pos_y_;
							}
							else{
								_pic_sz_[3] = _pic_sz_[2]+(cmn_bot>>1);
							}
							SetMseFreeSclV(_dvc_,_ch_,0x33,_pic_sz_[2],_pic_sz_[3]);
						}
						else{
							_pic_sz_[3] = _pos_y_;

							SetMseFreeSclV(_dvc_,_ch_,0x33,_pic_sz_[2],_pic_sz_[3]);
						}
					}
					else{
						_pic_sz_[3] = _pos_y_;

						SetMseFreeSclV(_dvc_,_ch_,0x33,_pic_sz_[2],_pic_sz_[3]);
					}
				}
				else{
					TglMseChMrr(_dvc_,_ch_,BIT4);
					_pic_sz_[3] = _pic_sz_[2];
					mse_ch ^= BIT5|BIT4;
					WriteAsicByte(_dvc_,DVC_PG1,0x33+(_ch_<<2),_pic_sz_[3]);
				}
			}


/*		//... display channel boundary value
			if(b_jp_video == NTSC)	_t2_ = 20;
			else	_t2_ = 24;
			for(_t1_=0;_t1_<4;_t1_++)	DisplayValue(PTH_X,1+3*_t1_,_t2_,0xff,_pic_sz_[_t1_],2);
			//	*/

/*		//... display channel number
			if(b_mse_no_moving == OFF){
				_t1_ = (_pic_sz_[0]+2)>>2;
				_t2_ = (_pic_sz_[2]+3)/5;
				SetMseFreeOSDCh(_t1_,_t2_,mse_ch_ptr);
			}
			//	*/

//*		//... adaptive motion detection cell
			_t1_ = (_pic_sz_[1]-_pic_sz_[0]-1)>>3;
			if(_t1_ > 1)	_t2_ = _t1_ - 1;
			else	_t2_ = 0;
			WriteAsicByte(_dvc_,DVC_PG2,0x63+((_ch_&0x3)<<3),_t2_);
			//... (HW + 1(md_bnd))*(16 / 2(resol)) = HR - HL - 1(ch_bnd) - pixel_offset(full:4,quad:2,pip:1... -> not contain)
			_t1_ = (_pic_sz_[3]-_pic_sz_[2])/6;
			if(_t1_ > 1)	_t2_ = _t1_ - 1;
			else	_t2_ = 0;
			WriteAsicByte(_dvc_,DVC_PG2,0x65+((_ch_&0x3)<<3),_t2_);
		//	*/
		}
	}
	else{
		if(b_mse_init_scl == 1){
			b_mse_init_scl = 0;
			b_mse_scl_bnd_only = 0;
			b_mse_stts_free = OFF;
//		if(BitSet(mse_flg,MSE_INIT_SCL)){
//			ClearBit(mse_flg,MSE_INIT_SCL);
//			ClearBit(mse_flg,MSE_SCL_BND_ONLY);
//			ClearBit(mse_flg,MSE_STTS_FREE);

/*		//... display channel boundary value
			if(b_jp_video == NTSC)	_t2_ = 20;
			else	_t2_ = 24;
			ClearOSD(PTH_X,0,_t2_,45,1);
			//	*/

/*			//... magnetic effect
						SetCrntDvcCh(mse_ch_ptr,&_dvc_,&_ch_);
			_t1_ = ReadAsicByte(_dvc_,DVC_PG2,REG_2DBOX_CTL+(_ch_<<3));
			IfBitSet(_t1_,_2DBOX_EN_X){		//... if motion detection on, fitting at the button-rlse moment after free scaling
				for(_t1_=0;_t1_<4;_t1_++)	_pic_sz_[_t1_] = ReadAsicByte(_dvc_,DVC_PG1,0x30+(_ch_<<2)+_t1_);

				t_2dbox_w = ReadAsicByte(_dvc_,DVC_PG2,REG_2DBOX_HW+(_ch_<<3));
				_pic_sz_[1] = _pic_sz_[0]+((t_2dbox_w+1)<<3)+1;
				WriteAsicByte(_dvc_,DVC_PG1,0x31+(_ch_<<3),_pic_sz_[1]);
//				if(mse_ch_scl == 4)	SetHScalePB(ary_picxx[mse_ch_ptr][1]-ary_picxx[mse_ch_ptr][0]);
//				else	SetHScale(PTH_X,mse_ch_scl,(ary_picxx[mse_ch_ptr][1]-ary_picxx[mse_ch_ptr][0])*0x016c);	// 0x016c(65536/180=364.09)
				if(b_mse_rlse_rb == 1)	SetHScale(PTH_X,_dvc_,mse_ch_scl,(_pic_sz_[1]-_pic_sz_[0])*0x016c);	// 0x016c(65536/180=364.09)

				t_2dbox_w = ReadAsicByte(_dvc_,DVC_PG2,REG_2DBOX_VW+(_ch_<<3));
				_pic_sz_[3] = _pic_sz_[2]+((t_2dbox_w+1)*6);
				WriteAsicByte(_dvc_,DVC_PG1,0x33+(_ch_<<3),_pic_sz_[3]);
//				if(mse_ch_scl == 4)	SetVScalePB(ary_picxx[mse_ch_ptr][3]-ary_picxx[mse_ch_ptr][2]);
//				else	SetVScale(PTH_X,mse_ch_scl,(ary_picxx[mse_ch_ptr][3]-ary_picxx[mse_ch_ptr][2])*_scl_v_unt_);
				if(b_mse_rlse_rb == 1)	SetVScale(PTH_X,_dvc_,mse_ch_scl,(_pic_sz_[3]-_pic_sz_[2])*_scl_v_unt_);
			}
			//	*/
		}
	}
}
//==================================================================================

⌨️ 快捷键说明

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