亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? amp_gui.c

?? Sunplus 8202S source code.
?? C
字號(hào):

#include "osd.h"
#include "iop.h"

#ifdef TDA7448
#include "tda7448.c"
#endif

#ifdef PT2258
#include "pt2258.c"
#endif


BYTE  subvol_time_out = 0 ;
BYTE current_channel = 0;

#if defined(DOLBY_AMP_VOLUME_CTRL)
/*
channel: 0--6
 
 1-6->sub channel vol
vol:0-->79dB
*/
void subvol_channel_volume(BYTE channel,BYTE vol)
{
#ifdef SUPPORT_APOGEE_AMP
	ddx_set_channel_vol(channel, vol);
#endif

#ifdef TAS_5026_PWM
	tas_5026_channel_vol(channel,  vol);
#endif
}
#endif

#if  defined(TDA7448)||defined(PT2258)||defined(DOLBY_AMP_VOLUME_CTRL)

#ifdef DOLBY_AMP_VOLUME_CTRL
#ifdef  TAS_5026_PWM
char *channel_str[6]={"FRONT L","FRONT R","SURROUND L","SURROUND R","CENTER","LFE",};
#else
//char *channel_str[6]={"LFE","SURROUND R","SURROUND L","CENTER","FRONT R","FRONT L"};
char *channel_str[6]={"FRONT L","FRONT R","SURROUND L","SURROUND R","CENTER","LFE",};
#endif
#else
char *channel_str[6]={"SW","SR","SL","CE","FR","FL"};
//BYTE  channel_str[6]={STR_SUB_CH,STR_SR_CH,STR_SL_CH,STR_C_CH,STR_FR_CH,STR_FL_CH};
#endif

/*
current_channel:
0->main 
1->ch1
2->ch2
3->ch3
4->ch4
5->ch5
6->ch6
*/
BYTE volum_list[7];
BYTE channel_vol_offset[6] = {CH1_VOL,CH2_VOL,CH3_VOL,CH4_VOL,CH5_VOL,CH6_VOL};

#define  GET_ABSOLUTE_VALUE(channel)     (volum_list[0]+channel_vol_offset[channel-1]-(CH_VOL_MAX/2))

#ifdef SAVE_AMP_VOLUME
/*
  channel:
  main  0
  fl       1
  fr       2
  sl      3
  sr       4
  ce       5
  lfe     6

  global var: volum_list

  AMPLIFIER_START 228
  bass offset   7
  treble offset 8
*/

#define  AMPLIFIER_START  228
extern BYTE ddx_Bass_lev;
extern BYTE ddx_Treble_lev;



void save_amp_variable(BYTE ch)
{
	BYTE data;
#ifdef  SUPPORT_APOGEE_AMP	
	data = ddx_Treble_lev;
	WriteToI2c(I2C_ID_MEMORY, AMPLIFIER_START+8,&data, 1);
#endif
	if(ch==0)
	{

	}
	else if ((ch > 0)&&(ch<7))
	{
		data = channel_vol_offset[ch-1];
		WriteToI2c(I2C_ID_MEMORY, AMPLIFIER_START+ch,&data, 1);
#ifdef DEBUG_VOLUME
		printf("save ch %d data %d\n",ch,data);
#endif
	}
}



void load_amp_variable()
{
	BYTE data,ch;
	int res;
	for(ch = 1;ch<7;ch++)
	{
		res = ReadFromI2c(I2C_ID_MEMORY, AMPLIFIER_START+ch,&data, 1);
		
		if(res == 1)//no error
		{
#ifdef DEBUG_VOLUME
			printf("load ch %d data %d\n",ch,data);
#endif

			if(data <= CH_VOL_MAX)
				channel_vol_offset[ch-1] = data;
		}
	}
}

#endif	


extern void init_tas_5026();
void init_subvol()
{
	BYTE ch;

#ifdef PT2258
	init_pt2258();
#endif

#ifdef TAS_5026_PWM
	init_tas_5026();
#endif

	volum_list[0] = MAIN_VOL;
#ifdef SAVE_AMP_VOLUME
	load_amp_variable();
#endif
	for(ch = 1;ch<7;ch++)
	{
		volum_list[ch] = GET_ABSOLUTE_VALUE(ch);
		subvol_channel_volume(ch,volum_list[ch]);
	}
	/*init lineout volume*/
	subvol_channel_volume(7, LINE_OUT_VOL);
	subvol_channel_volume(8, LINE_OUT_VOL);
}

/*
current_channel:
0->main 
1->ch1
2->ch2
3->ch3
4->ch4
5->ch5
6->ch6
*/
#define SUBVOL_TIME_OUT  8 //decrease in 500ms polling

void subvol_next_channel()
{
	if(current_channel == 6)
		current_channel = 0;
	else
		current_channel ++;

	if(current_channel == 0)
		psprintf(RegionValStr[REGION1], "MAIN");
	else
		{
		subvol_time_out = SUBVOL_TIME_OUT;
		psprintf(RegionValStr[REGION1], "%s",channel_str[current_channel-1]);
		}
 	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
}

/*
  to come with dolby's demand
  sub channel adjust from -10dB to +10dB
*/
//char  channel_offset_str[];
void show_channel_msg()
{
#ifdef DEBUG_VOLUME
	printf("keep ch %d  %d\n",current_channel,(channel_vol_offset[current_channel-1]));
#endif

	if((channel_vol_offset[current_channel-1])==(CH_VOL_MAX/2))
	{
		psprintf(RegionValStr[REGION1],"%s 0",channel_str[current_channel-1]);
	}
	else if((channel_vol_offset[current_channel-1])<(CH_VOL_MAX/2))
	{
		psprintf(RegionValStr[REGION1],"%s -%d",channel_str[current_channel-1],(CH_VOL_MAX/2)-(channel_vol_offset[current_channel-1]));
	}
	else
	{
		psprintf(RegionValStr[REGION1],"%s +%d",channel_str[current_channel-1],(channel_vol_offset[current_channel-1])-(CH_VOL_MAX/2));
	}
	PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
}

/*
	I place this function at 500ms polling loop
	so,the time out is 500ms * 10 == 5 sec 
*/

void polling_channel_timeout()
{
	if(subvol_time_out>0)
	{
		subvol_time_out--;
/*		if(current_channel > 0)
		{
			show_channel_msg();
		}*/
	}
	else
	{
		current_channel = 0;
	}
}


/*
  according to DOLBY's specification.
  actually,we set each channel here.
*/
void subvol_main_vol()
{
	BYTE ch;
	for(ch = 1;ch<7;ch++)
	{
		volum_list[ch]=GET_ABSOLUTE_VALUE(ch);

		/*huziqin 2004-5-10 avoid volume turn to 255*/
		if(volum_list[ch]>(255-CH_VOL_MAX))
		{
			volum_list[ch] = 0;
			break;
		}	
		if(volum_list[0] == 0) //if main vol ==0,all channel set to zero
			subvol_channel_volume(ch,0);
			else
			subvol_channel_volume(ch,volum_list[ch]);
	}
}




/*
	global -- volum_list[]
*/
void subvol_vol_up()
{
	BYTE ch;
	
	if(current_channel == 0) //main vol
	{
		/*check if reach max,according to DOLBY's spec*/
		for(ch = 0;ch <7;ch ++)
		{
			if (volum_list[ch]>=(MAIN_VOL_MAX-1))
			{
    			psprintf(RegionValStr[REGION1], "MAIN MAX");
		        PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
				return;
			}
		}
		volum_list[0] ++;
		subvol_main_vol();

		psprintf(RegionValStr[REGION1], "MAIN %d",volum_list[0]);
    PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);

}	
	else//channel vol
	{
		subvol_time_out = SUBVOL_TIME_OUT;
		volum_list[current_channel] = GET_ABSOLUTE_VALUE(current_channel);
			
		if(volum_list[current_channel]>=(MAIN_VOL_MAX-1))
		{
        return;
			}
		if((channel_vol_offset[current_channel-1])<CH_VOL_MAX)
			(channel_vol_offset[current_channel-1])++;
		subvol_channel_volume(current_channel, volum_list[current_channel]);
		show_channel_msg();
		PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
	
	}
#ifdef SAVE_AMP_VOLUME
	save_amp_variable(current_channel);
#endif

}



void subvol_vol_down()
{
	
	if(current_channel == 0) //main vol
	{
	
		if(volum_list[0]>0)
			volum_list[0] --;
		subvol_main_vol();

		psprintf(RegionValStr[REGION1], "MAIN %d",volum_list[0]);
		PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
		
	}
	else//channel vol
	{
		subvol_time_out = SUBVOL_TIME_OUT;
		volum_list[current_channel] =GET_ABSOLUTE_VALUE(current_channel);
			
		if(volum_list[current_channel]==0)
		{
        return;
			}
		if((channel_vol_offset[current_channel-1])>0)
			(channel_vol_offset[current_channel-1])--;

		subvol_channel_volume(current_channel, volum_list[current_channel]);
		show_channel_msg();
		PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
	
	}
#ifdef SAVE_AMP_VOLUME
	save_amp_variable(current_channel);
#endif

}


//******************************************************
//wuzhj 2004/12/10
//for Radio new UI vol control
// Radio_vol_up();Radio_vol_down();Radio_main_vol()
//******************************************************
#ifdef SUPPORT_Radio_NEW_UI  //wuzhj  2004/12/10   
void Radio_vol_up()
{
	BYTE ch;
	
	if(current_channel == 0) //main vol
	{
		/*check if reach max,according to DOLBY's spec*/
		for(ch = 0;ch <7;ch ++)
		{
			if (volum_list[ch]>=(MAIN_VOL_MAX-1))
			{
				return;
			}
		}
		volum_list[0] ++;
		subvol_main_vol();

		psprintf(RegionValStr[REGION1], " MAIN %d",volum_list[0]);
        //PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
        //osd_DrawString(18+8, 2-2, RegionValStr[REGION1], 2, 11);

}	
	else//channel vol
	{
		subvol_time_out = SUBVOL_TIME_OUT;
		volum_list[current_channel] = GET_ABSOLUTE_VALUE(current_channel);
			
		if(volum_list[current_channel]>=(MAIN_VOL_MAX-1))
		{
        return;
			}
		if((channel_vol_offset[current_channel-1])<CH_VOL_MAX)
			(channel_vol_offset[current_channel-1])++;
		subvol_channel_volume(current_channel, volum_list[current_channel]);
		show_channel_msg();
		//PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
	
	}
#ifdef SAVE_AMP_VOLUME
	save_amp_variable(current_channel);
#endif

}

void Radio_vol_down()
{
	
	if(current_channel == 0) //main vol
	{
	
		if(volum_list[0]>0)
			volum_list[0] --;
		subvol_main_vol();

		psprintf(RegionValStr[REGION1], " MAIN %d",volum_list[0]);
		//PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
		
	}
	else//channel vol
	{
		subvol_time_out = SUBVOL_TIME_OUT;
		volum_list[current_channel] =GET_ABSOLUTE_VALUE(current_channel);
			
		if(volum_list[current_channel]==0)
		{
        return;
			}
		if((channel_vol_offset[current_channel-1])>0)
			(channel_vol_offset[current_channel-1])--;

		subvol_channel_volume(current_channel, volum_list[current_channel]);
		show_channel_msg();
		PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);	
	
	}
#ifdef SAVE_AMP_VOLUME
	save_amp_variable(current_channel);
#endif

}

void Radio_main_vol()
{
	BYTE ch;
	for(ch = 1;ch<7;ch++)
	{
		volum_list[ch]=GET_ABSOLUTE_VALUE(ch);

		//huziqin 2004-5-10 avoid volume turn to 255
		if(volum_list[ch]>(255-CH_VOL_MAX))
		{
			volum_list[ch] = 0;
			break;
		}	
		if(volum_list[0] == 0) //if main vol ==0,all channel set to zero
			subvol_channel_volume(ch,0);
			else
			subvol_channel_volume(ch,volum_list[ch]);
	}
    psprintf(RegionValStr[REGION1], " MAIN %d",volum_list[0]);
}

#endif//#ifdef SUPPORT_Radio_NEW_UI  //wuzhj  2004/12/10   
#endif //defined(TDA7448)||defined(PT2258)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品毛片a∨一区二区三区| 国产精品久久二区二区| 色噜噜狠狠色综合欧洲selulu| 成人av资源在线观看| 色婷婷av久久久久久久| 欧美无人高清视频在线观看| 欧美精品一二三| 久久综合九色综合97婷婷| 精品日韩在线观看| 亚洲精品美国一| 国产亚洲精品中文字幕| 26uuu国产一区二区三区 | 国产剧情av麻豆香蕉精品| 91女人视频在线观看| 日韩欧美一区二区免费| 1024成人网| 国产精品影视在线| 日韩女优毛片在线| 性久久久久久久久久久久 | 欧美精品一区二区久久婷婷| 天堂在线亚洲视频| 天堂在线亚洲视频| 国产乱理伦片在线观看夜一区| 国产一区二区三区免费播放| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 激情六月婷婷久久| 欧美三级电影一区| 国产欧美视频一区二区| 丝袜美腿亚洲色图| 国产日韩欧美一区二区三区综合| 欧美精品久久久久久久多人混战| 精品国产3级a| 日韩黄色小视频| 99在线视频精品| 国产午夜久久久久| 国产麻豆视频一区| 久久这里都是精品| 中文字幕日韩欧美一区二区三区| 国产乱码精品1区2区3区| 欧美一区二区三区在线观看视频| 悠悠色在线精品| 欧美日韩国产精品成人| 18欧美乱大交hd1984| 国产精品一区在线观看乱码| 日韩欧美资源站| 日韩高清欧美激情| 91精品国产综合久久福利软件| 亚洲日本乱码在线观看| 99久久久国产精品免费蜜臀| 日韩理论片网站| 欧美日韩一区在线观看| 青娱乐精品在线视频| 久久久蜜桃精品| 国产成人精品三级麻豆| 欧美视频自拍偷拍| 精品视频123区在线观看| 一区二区三区不卡在线观看 | 国产精品一级黄| 中文字幕中文字幕一区二区| 日本道在线观看一区二区| 亚洲制服丝袜一区| 日韩久久精品一区| 色综合久久中文综合久久牛| 午夜久久久久久久久| 久久亚洲综合av| 欧美视频在线观看一区| 久久狠狠亚洲综合| 亚洲在线成人精品| 国产精品麻豆视频| 欧美一级日韩免费不卡| 99久久亚洲一区二区三区青草| 日韩高清一区二区| 亚洲成人在线免费| 亚洲人成小说网站色在线| 欧美mv和日韩mv国产网站| 色偷偷久久一区二区三区| 极品少妇xxxx精品少妇| 日韩综合一区二区| 午夜精品久久久久久久蜜桃app| 亚洲一二三区不卡| 一区二区高清在线| 亚洲欧美偷拍另类a∨色屁股| 国产精品视频yy9299一区| 精品福利一区二区三区免费视频| 56国语精品自产拍在线观看| 欧美性大战久久久久久久| 99精品国产99久久久久久白柏 | 欧美日韩在线免费视频| 日本高清免费不卡视频| 欧美一卡在线观看| 欧美一级片免费看| 日韩精品一区二区三区在线播放| 欧美福利视频导航| 欧美一区二区三区喷汁尤物| 91精品国产色综合久久不卡电影 | 国产精品久久午夜| 亚洲精品五月天| 日韩av不卡在线观看| 极品少妇一区二区| 成人免费视频app| 色久优优欧美色久优优| 波多野结衣中文字幕一区二区三区| 成人免费毛片高清视频| 欧美午夜精品理论片a级按摩| 欧美吞精做爰啪啪高潮| 日韩视频一区二区在线观看| 欧美xxxxx裸体时装秀| 亚洲色图色小说| 精品一区二区免费| 国产一区二区三区最好精华液| 91免费观看国产| 日韩一区二区精品葵司在线| 久久精品免费在线观看| 一区二区三区毛片| 波多野结衣一区二区三区| 日韩一区二区免费在线观看| 一区二区三区精品在线| 国产一区二区三区高清播放| 欧美日本一区二区在线观看| 中文字幕高清一区| 国产在线精品一区二区夜色| 在线国产亚洲欧美| 亚洲青青青在线视频| 黄色精品一二区| 欧美一级一区二区| 性久久久久久久| 岛国一区二区在线观看| 亚洲精品在线电影| 奇米影视一区二区三区| 欧美日韩免费电影| 亚洲国产精品天堂| 色成年激情久久综合| 亚洲乱码国产乱码精品精的特点| 国产成人在线观看| 欧美激情在线一区二区| 国产成人鲁色资源国产91色综| 久久综合国产精品| 国产超碰在线一区| 国产日韩av一区二区| 成人福利视频在线| 亚洲最大的成人av| 在线一区二区三区做爰视频网站| 国产视频在线观看一区二区三区 | 日韩欧美123| 99在线精品免费| 午夜av一区二区| 久久综合五月天婷婷伊人| 久久99在线观看| 精品国产91乱码一区二区三区 | 欧美精品乱码久久久久久| 久久电影国产免费久久电影| 2023国产精华国产精品| 黄色日韩三级电影| 56国语精品自产拍在线观看| 久久激情五月激情| 亚洲婷婷综合久久一本伊一区| 欧洲精品在线观看| 国产一区二区不卡| 亚洲美女视频在线观看| 777久久久精品| 成人午夜伦理影院| 三级在线观看一区二区| 欧美经典三级视频一区二区三区| 在线观看一区日韩| 丰满白嫩尤物一区二区| 日韩中文字幕av电影| 精品久久国产老人久久综合| 欧美日韩精品一区二区三区四区 | 国产一区二区三区在线观看免费 | 69堂成人精品免费视频| 高清不卡一二三区| 日本特黄久久久高潮| 亚洲最大的成人av| 亚洲精品免费播放| 91在线一区二区三区| 日韩主播视频在线| 一区二区三区视频在线观看| 国产欧美视频在线观看| 久久婷婷国产综合国色天香| 欧美日韩黄视频| 欧美日韩国产大片| 欧美日韩不卡在线| 福利一区福利二区| 极品美女销魂一区二区三区免费| 亚洲国产日日夜夜| 久久在线观看免费| 欧美剧在线免费观看网站| 欧美精品免费视频| 久久蜜桃一区二区| 国产毛片精品视频| 激情久久久久久久久久久久久久久久| 亚洲欧美电影院| 中文字幕日本乱码精品影院| 亚洲少妇30p| 男女视频一区二区| 成人av影视在线观看| 91成人看片片| 国产午夜精品美女毛片视频| 国产精品国产三级国产专播品爱网| 综合欧美一区二区三区|