wndw_ado_live_mr.c

来自「一个比较好用的TW2835音视频芯片开发板的程序,」· C语言 代码 · 共 567 行 · 第 1/2 页

C
567
字号
#include	"hdr.h"

#if defined(__WTH_ADO__)
//==================================================================================
//						Audio Live wndwdow definition & variable description
//==================================================================================
//U8 idata	wndw_ado_lv_mr_sel;
//U8 idata	wndw_ado_lv_mr_mute;


//==================================================================================
//						Audio Live wndwdow function description
//==================================================================================
void	RunWndwAdoLvMrOSDPbArw(U8 _pth_prp, U8 _osd_pos_x, U8 _osd_pos_y)//, U8 _pos_x_l, U8 _pos_x_r, U8 _pos_y, U8 _pos_flg)
{
	U8 _pth_, _prp_;
	U8 _t1_;

	_pth_ = _pth_prp&0x0f;//0xf0;
	_prp_ = _pth_prp&0xf0;//0x0f;
	if(((_osd_pos_x == WNDW_ADO_LV_MR_DEC_X0)||(_osd_pos_x == WNDW_ADO_LV_MR_INC_X0))&&(_osd_pos_y == WNDW_ADO_LV_MR_PB_Y)){
		if(b_ado_lv_mr_arw_pb == 0){
			b_ado_lv_mr_arw_pb = 1;
			
			if(_osd_pos_x == WNDW_ADO_LV_MR_DEC_X0)	_t1_ = OSD_ARW_L_BIG;//OSD_MINUS_SML;
			else	_t1_ = OSD_ARW_R_BIG;//OSD_PLUS_SML;
			WriteOSDFnt(_pth_,MASTER,_osd_pos_x,_osd_pos_y,OSD_MIX|1,_t1_);
		}
	}
	else{
		if(b_ado_lv_mr_arw_pb == 1){
			b_ado_lv_mr_arw_pb = 0;

			WriteOSDFnt(_pth_,MASTER,WNDW_ADO_LV_MR_DEC_X0,WNDW_ADO_LV_MR_PB_Y,_prp_,OSD_ARW_L_SML);
			WriteOSDFnt(_pth_,MASTER,WNDW_ADO_LV_MR_INC_X0,WNDW_ADO_LV_MR_PB_Y,_prp_,OSD_ARW_R_SML);
		}
	}
}
//==================================================================================
void	SetWndwAdoLvMrOSDArw(U8 _pth, U8 _ch)//U8 _osd_pos_y)
{
	U8 _dvc_, _ch_;
	U8 _t1_, _t2_;
	
	SetCrntDvcCh(_ch,&_dvc_,&_ch_);
	if(GetAsicFlgType(_dvc_,DVC_PG0,0x6d,BIT0<<_ch_))				//... MIX_MUTE data
		_t1_ = OSD_MIX;
#if defined(__4CH__)
	else{
		if(_ch<4)	_t1_ = 0x00;
		else	_t1_ = OSD_MIX;
	}
#elif defined(__16CH__)
	else
		_t1_ = 0x00;
#endif

	if(_ch&BIT0)									//... odd channel
		_t2_ = WNDW_ADO_LV_MR_DEC_X1;
	else												//... even channel
		_t2_ = WNDW_ADO_LV_MR_DEC_X0;
//	_t2_ = _osd_pos_y-WNDW_ADO_LV_MR_CHK_Y;
//	if((wndw_ado_lv_mr_sel != ADO_SEL_MIX)||BitSet(wndw_ado_lv_mr_mute,(BIT0<<_t2_)))	_t1_ = OSD_MIX;
//	else	_t1_ = 0x00;

	RunMseOnOSDH(_pth|_t1_,0,0,_t2_,_t2_+3,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),BIT0<<_ch);
}
//==================================================================================
//==================================================================================
void	SetWndwAdoLvMrOSDPbChk(U8 _pth)
{
//	U8 _dvc_, _ch_;
//	U8 _rdat_;
	U8 _t1_, _t2_;//, _t3_;
	
//	_rdat_ = GetAsicFlgType(MASTER,DVC_PG0,0x6d,BIT4);		//... MIX_MUTE data
//	if(_rdat_){
	if(GetAsicFlgType(cmn_lst_slvr_x,DVC_PG0,0x6d,BIT4)){				//... MIX_MUTE data
		_t1_ = OSD_MIX;
		_t2_ = OSD_CHK_BOX_BLK;
	}
	else{
		_t1_ = 0x00;
		_t2_ = OSD_CHK_BOX_CHK;
	}
	
	WriteOSDFnt(_pth,MASTER,WNDW_ADO_LV_MR_CHK_X0,WNDW_ADO_LV_MR_PB_Y,0x00,_t2_);
	WriteOSDStr(_pth,MASTER,WNDW_ADO_LV_MR_CHK_X0+2,WNDW_ADO_LV_MR_PB_Y,0x00,str_wndw_ado_lv_pb);

	RunWndwAdoLvMrOSDPbArw(_pth|_t1_,0,0);
}
//==================================================================================
void	SetWndwAdoLvMrOSDPbNum(U8 _pth)
{
	U8 _t1_, _t2_;
	U8 _rdat_;
	
//	_rdat_ = GetAsicFlgType(MASTER,DVC_PG0,0x6d,BIT4);		//... MIX_MUTE data
//	if(_rdat_)	_t2_ = OSD_MIX;
//	else	_t2_ = 0x00;
//	_rdat_ = GetAsicFlgType(MASTER,DVC_PG0,0x6d,BIT4);		//... MIX_MUTE data
	if(GetAsicFlgType(cmn_lst_slvr_x,DVC_PG0,0x6d,BIT4))	_t2_ = OSD_MIX;
	else	_t2_ = 0x00;

	_rdat_ = GetAsicFlgType(cmn_lst_slvr_x,DVC_PG0,0x70,0x0f);		//... MIX_RATIOP data
	_rdat_ = ConvDec2Bcd(_rdat_);
	_t1_ = (_rdat_&0xf0)>>4;
	if(_t1_ == 0)	WriteOSDFnt(_pth,MASTER,WNDW_ADO_LV_MR_NUM_X0-1,WNDW_ADO_LV_MR_PB_Y,OSD_CLR,0x00);
	else	WriteOSDFnt(_pth,MASTER,WNDW_ADO_LV_MR_NUM_X0-1,WNDW_ADO_LV_MR_PB_Y,_t2_,_t1_+0x10);
	_t1_ = _rdat_&0x0f;
	WriteOSDFnt(_pth,MASTER,WNDW_ADO_LV_MR_NUM_X0,WNDW_ADO_LV_MR_PB_Y,_t2_,_t1_+0x10);
}
//==================================================================================
void	SetWndwAdoLvMrOSDChk(U8 _pth, U8 _ch)//U8 _data)
{
	U8 _dvc_, _ch_;
//	U8 _rdat_;
	U8 _t1_, _t2_, _t3_;
	
	SetCrntDvcCh(_ch,&_dvc_,&_ch_);
#if defined(__4CH__)
	if(_ch<4){
		_t1_ = 0x00;
		if(GetAsicFlgType(_dvc_,DVC_PG0,0x6d,BIT0<<_ch_))				//... MIX_MUTE data
			_t2_ = OSD_CHK_BOX_BLK;
		else	_t2_ = OSD_CHK_BOX_CHK;
	}
	else{
		_t1_ = OSD_MIX;
		_t2_ = OSD_CHK_BOX_BLK;
	}
#elif defined(__16CH__)
	_t1_ = 0x00;
	if(GetAsicFlgType(_dvc_,DVC_PG0,0x6d,BIT0<<_ch_))				//... MIX_MUTE data
		_t2_ = OSD_CHK_BOX_BLK;
	else
		_t2_ = OSD_CHK_BOX_CHK;
#endif

	if(_ch&BIT0){									//... odd channel
		WriteOSDFnt(_pth,MASTER,WNDW_ADO_LV_MR_CHK_X1,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),_t1_,_t2_);
		_t3_ = WNDW_ADO_LV_MR_CHK_X1;
	}
	else{												//... even channel
		WriteOSDFnt(_pth,MASTER,WNDW_ADO_LV_MR_CHK_X0,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),_t1_,_t2_);
		_t3_ = WNDW_ADO_LV_MR_CHK_X0;
	}
	
	if(_ch < 10)
		WriteOSDFnt(_pth,MASTER,_t3_+2,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),_t1_,_ch+0x10);
	else
		WriteOSDFnt(_pth,MASTER,_t3_+2,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),_t1_,_ch+0x17);
}
//==================================================================================
void	SetWndwAdoLvMrOSDNum(U8 _pth, U8 _ch)//U8 _osd_pos_y, U8 _data)
{
	U8 _t1_, _t2_, _t3_;
	U8 _dvc_, _ch_;
	U8 _rdat_;

	SetCrntDvcCh(_ch,&_dvc_,&_ch_);
	_rdat_ = GetWndwAdoLvMr(_dvc_,_ch_);
	if(GetAsicFlgType(_dvc_,DVC_PG0,0x6d,BIT0<<_ch_))	_t2_ = OSD_MIX;			//... MIX_MUTE data
#if defined(__4CH__)
	else{
		if(_ch<4)	_t2_ = 0x00;
		else{
			_t2_ = OSD_MIX;
			_rdat_ = 0x00;
		}
	}
#elif defined(__16CH__)
	else	_t2_ = 0x00;
#endif

	if(_ch&BIT0)									//... odd channel
		_t3_ = WNDW_ADO_LV_MR_NUM_X1;
	else												//... even channel
		_t3_ = WNDW_ADO_LV_MR_NUM_X0;

	_rdat_ = ConvDec2Bcd(_rdat_);
	_t1_ = (_rdat_&0xf0)>>4;
	if(_t1_ == 0)	WriteOSDFnt(_pth,MASTER,_t3_-1,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),OSD_CLR,0x00);
	else	WriteOSDFnt(_pth,MASTER,_t3_-1,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),_t2_,_t1_+0x10);
	_t1_ = _rdat_&0x0f;
	WriteOSDFnt(_pth,MASTER,_t3_,WNDW_ADO_LV_MR_CHK_Y+(_ch>>1),_t2_,_t1_+0x10);
}
//==================================================================================
void	SetWndwAdoLvMrOSD(U8 _pth)//U8 _data)
{
	U8 _t1_;//, _t2_;

	//... ch0 ~ ch15
	for(_t1_=0;_t1_<16;_t1_++){
		SetWndwAdoLvMrOSDChk(_pth,_t1_);
		SetWndwAdoLvMrOSDArw(_pth,_t1_);
		SetWndwAdoLvMrOSDNum(_pth,_t1_);
	}
	//... pb
	SetWndwAdoLvMrOSDPbChk(_pth);
//	RunWndwAdoLvMrOSDPbArw(_pth|_t1_,0,0);
	SetWndwAdoLvMrOSDPbNum(_pth);
}
//==================================================================================
U8	GetWndwAdoLvMr(U8 _dvc, U8 _ch)//_osd_pos_y)
{
	U8 _t1_;

//	if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y)
//		_t1_ = GetAsicVar8Type(MASTER,DVC_PG0,0x6e,0x04);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+1)
//		_t1_ = GetAsicVar8Type(MASTER,DVC_PG0,0x6e,0x44);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+2)
//		_t1_ = GetAsicVar8Type(MASTER,DVC_PG0,0x6f,0x04);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+3)
//		_t1_ = GetAsicVar8Type(MASTER,DVC_PG0,0x6f,0x44);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+4)
//		_t1_ = GetAsicVar8Type(MASTER,DVC_PG0,0x70,0x04);
	if(_ch == 0)	_t1_ = GetAsicVar8Type(_dvc,DVC_PG0,0x6e,0x04);		//... MIX_RATIO0
	else if(_ch == 1)	_t1_ = GetAsicVar8Type(_dvc,DVC_PG0,0x6e,0x44);		//... MIX_RATIO1
	else if(_ch == 2)	_t1_ = GetAsicVar8Type(_dvc,DVC_PG0,0x6f,0x04);		//... MIX_RATIO2
	else if(_ch == 3)	_t1_ = GetAsicVar8Type(_dvc,DVC_PG0,0x6f,0x44);		//... MIX_RATIO3

	return	_t1_;
}
//==================================================================================
void	SetWndwAdoLvMr(U8 _dvc, U8 _ch, U8 _dat)//U8 _osd_pos_y, U8 _data)
{
//	if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y)
//		SetAsicVar8Type(MASTER,DVC_PG0,0x6e,0x04,_data);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+1)
//		SetAsicVar8Type(MASTER,DVC_PG0,0x6e,0x44,_data);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+2)
//		SetAsicVar8Type(MASTER,DVC_PG0,0x6f,0x04,_data);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+3)
//		SetAsicVar8Type(MASTER,DVC_PG0,0x6f,0x44,_data);
//	else if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y+4)
//		SetAsicVar8Type(MASTER,DVC_PG0,0x70,0x04,_data);
	if(_ch == 0)	SetAsicVar8Type(_dvc,DVC_PG0,0x6e,0x04,_dat);		//... MIX_RATIO0
	else if(_ch == 1)	SetAsicVar8Type(_dvc,DVC_PG0,0x6e,0x44,_dat);		//... MIX_RATIO1
	else if(_ch == 2)	SetAsicVar8Type(_dvc,DVC_PG0,0x6f,0x04,_dat);		//... MIX_RATIO2
	else if(_ch == 3)	SetAsicVar8Type(_dvc,DVC_PG0,0x6f,0x44,_dat);		//... MIX_RATIO3
}
//==================================================================================
//==================================================================================
void	CreateWndwAdoLvMr(U8 _pth)
{
////	b_status_wndw = ON;
//	b_cmn_wndw_mn = ON;
	b_ado_lv_mr = ON;

//	ClearOSD(X_PATH,WNDW_ADO_LV_MR_POS_X,WNDW_ADO_LV_MR_POS_Y,WNDW_ADO_LV_MR_L,WNDW_ADO_LV_MR_H);
//	SetOSDWndw(X_PATH,OSD_WNDW_TYPE_MAIN|BOX_WNDW_FRM,WNDW_ADO_LV_MR_POS_X,WNDW_ADO_LV_MR_POS_Y,
//		WNDW_ADO_LV_MR_L,WNDW_ADO_LV_MR_H,str_wndw_ttl_ado_live);
	WriteOSDClr(_pth,MASTER,WNDW_ADO_LV_MR_POS_X-1,WNDW_ADO_LV_MR_POS_Y-1,WNDW_ADO_LV_MR_L+2,WNDW_ADO_LV_MR_H+2);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_ADO_LV_MR_POS_X,WNDW_ADO_LV_MR_POS_Y,WNDW_ADO_LV_MR_L,WNDW_ADO_LV_MR_H,str_wndw_ttl_ado_lv_mr);


//	wndw_ado_lv_mr_sel = GetAsicVar8Type(MASTER,DVC_PG0,0x71,0x05);			//... MIX_OUTSEL data
//	wndw_ado_lv_mr_mute = GetAsicFlgType(MASTER,DVC_PG0,0x6d,0x1f);		//... MIX_MUTE data

	mse_flg_on_osd = 0xffff;
	b_ado_lv_mr_arw_pb = 1;
//	SetWndwAdoLvMrOSDSel(_pth);
	SetWndwAdoLvMrOSD(_pth);
}
//==================================================================================
//==================================================================================
//void	RunWndwAdoLvMrDec(U8 _pth, U8 _ch)//_osd_pos_y)
//{
//	U8 _dvc_, _ch_;
//	U8 _rdat_;
//
//	SetCrntDvcCh(_ch,&_dvc_,&_ch_);
//	if(!(GetAsicFlgType(_dvc_,DVC_PG0,0x6d,BIT0<<_ch_))){							//... not MUTE
//		if(_osd_pos_y == WNDW_ADO_LV_MR_CHK_Y){
//			if(BitClear(wndw_ado_lv_mr_mute,BIT0)){
//				_rdat_ = GetAsicVar8Type(MASTER,DVC_PG0,0x6e,0x04);
//				if(_rdat_ > 0)	_rdat_--;
//				else	_rdat_ = 15;
//				SetAsicVar8Type(MASTER,DVC_PG0,0x6e,0x04,_rdat_);
//				SetWndwAdoLvMrOSDNum(_pth,WNDW_ADO_LV_MR_CHK_Y,_rdat_);
//			}
//		}

⌨️ 快捷键说明

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