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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pmp_audio_driver.c

?? 嵌入式系統下的文件管理處理,和基本圖片jpg格式處理原代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

UINT16 SPMP_AUDIO_Stop( void )
{
	UINT16 err;

	// lanzhu@[12/26/2006]
	err = SPMP_SendSignal((UINT16)MCATCH_CMD_AUDIO_PLAY_STOP, (UINT8 *)NULL, (UINT16)NULL);

	// 如果已經成功, 還需要判斷是否AUDIO TASK 已經真正結束
	if ( !err ) 
	{
		// 檢測結束標志, 直到AUDIO TASK 真正結束	
		while ( !SPMP_AUDIO_GetOverFlag() ) 
		{
			osTimeDly( AUDIO_OVER_DELAY );
			
#ifdef QLZ_DEBUG_0208
			sio_printf("\r\n ---- AUDIO 沒有結束, 等待一下!!!\r\n");
#endif			
		}

#ifdef QLZ_DEBUG_0208
	sio_printf("\r\n ---- AUDIO 已經真正結束了!\r\n");
#endif

	}

	// 返回成功
	return err;
}

/************************************************************************/
/* audio pause
  input:
  output:
			0 成功, 非0值失敗
  func:
  note:
                                                                        */
/************************************************************************/
UINT16 SPMP_AUDIO_Pause( void )
{
	// 進行音量的設定
	return	SPMP_SendSignal((UINT16)MCATCH_CMD_AUDIO_PAUSE, (UINT8 *)NULL, (UINT16)NULL);
}

/************************************************************************/
/* audio resume
  input:
			void
  output:
			0 成功, 非0值失敗
  func:
  note:
                                                                        */
/************************************************************************/
UINT16 SPMP_AUDIO_Resume( void )
{
	// 進行音量的設定
	return SPMP_SendSignal((UINT16)MCATCH_CMD_AUDIO_RESUME, (UINT8 *)NULL, (UINT16)NULL);
}

/************************************************************************/
/* 設定輸出的音量值
  input:
			UINT16 OutputValue
  output:
			0 成功, 非0值失敗
  func:
			設定 Codec, 啟動MP3 的播放
  note:
                                                                        */
/************************************************************************/
UINT16 SPMP_AUDIO_SetOutputValue( UINT16 OutputValue )
{
	UINT16 value,err;

	value = OutputValue;

	// 判斷輸入的參數是否越界
	if (value > OUTPUT_VALUE_MAX ) {
		value = OUTPUT_VALUE_MAX;
	}

#ifdef QLZ_DEBUG_0127
	sio_printf("\r\n ++++++++ 音量設定 ======= %d \r\n", OutputValue);
#endif
	
	// 進行音量的設定
	err = SPMP_SendSignal((UINT16)MCATCH_CMD_AUDIO_VOLUME_SET,
						(UINT8 *)&(value), 
						(UINT16)sizeof(value));
	// 返回成功
	return err;
}


extern void SPMP_Codec_ResetFlag( void );
extern void SPMP_AUDIO_SetCodec( void );

/*
 *	reset codec flag
 */
void SPMP_Codec_ResetFlag( void )
{
	gCodecFlag = 0x00;
	return;
}

/*
 *	get codec flag
 */
static UINT16 get_codec_flag( void )
{
	return gCodecFlag;
}


/************************************************************************/
/*			進行CODEC 的設置
  input:
			void 
  output:
			void 
  function:
			進行CODEC 的設置
  history:
			[01/29/2007]
			發現用戶通過界面第一次發生時, 還可以從SPEAKER 中聽到爆音
                                                                        */
/************************************************************************/
void SPMP_AUDIO_SetCodec( void )
{
	if ( get_codec_flag() ) 
	{
		return;
	}

#ifdef QLZ_DEBUG_0129
	sio_printf("\r\n -- 進行CODEC 的真正設置!");
#endif

	gCodecFlag ++;

	if( 1==SPMP_SpeakOutGet() )
	{
#ifdef QLZ_DEBUG_0129
	sio_printf("\r\n -- 全通道設置!!!!");
#endif

		audCodecSet(audioAppTbl, sizeof(audioAppTbl));		
	}
	else
	{
#ifdef QLZ_DEBUG_0129
	sio_printf("\r\n -- 只有耳機,沒有SPEAKER!");
#endif

		audCodecSet(audioAppTbl_t, sizeof(audioAppTbl_t));		
	}

	return;
}

/************************************************************************/
/*		使能 SPEAKER

  input:
			void
  output:
			void 
  func:
			判斷用戶是否設定打開SPEAKER 的功放, 判斷當前是否有耳機
			如果用戶使能了功放, 并且沒有耳機, 打開 SPEAKER 的功放
  history:
			[01/27/2007] lanzhu 發現沒有考慮到耳機一直插入的狀況, 
			添加對耳機插入的判斷
			FIX: mantis bug 6769

			[01/27/2007] lanzhu 添加 發聲標志的設置	
			[01/29/2007] lanzhu 考慮到不同的TASK 在時間上沖突, 完善了該機制 
                                                                        */
/************************************************************************/
void SPMP_SPEAKER_ENABLE( void )
{
	UINT16 i;
	
#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n >>> SPKER ENABLE!\r\n");	
#endif


	gSoundFlag  = (BIT_USER_FLAG | BIT_SOUND_FLAG);

	i =  SPMP_SpeakOutGet();
	// 只取決于用戶的設定和當時耳機的狀態
	if ( i && ( HEADPHONE_OUT == SPMP_Get_HPStatus() ) ){
		SPMP_Speaker_Set(i);
	}

#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n <<< SPKER ENABLE!\r\n");	
#endif
	

	return;
}

/*
 *	
 */
void SPMP_SPEAKER_ENABLE_EX( void )
{
	UINT16 i;	

#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n >>> SPKER ENABLE  EX!\r\n");	
#endif
	

	gSoundFlag |= BIT_SOUND_FLAG;

	i =  SPMP_SpeakOutGet();
	// 只取決于用戶的設定和當時耳機的狀態
	if ( i && ( HEADPHONE_OUT == SPMP_Get_HPStatus() ) ){
		SPMP_Speaker_Set(i);
	}

#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n <<< SPKER ENABLE  EX!\r\n");	
#endif
	

	return;
}

/************************************************************************/
/*		關閉 SPEAKER 的功放
 
  input:
			void
  output:
			void 
  func:
  history:
			[01/27/2007] 添加了一個判斷條件, 對耳機進行檢測
			
			[01/29/2007] 添加 不同任務之間使用該函數的完善機制

                                                                        */
/************************************************************************/
void SPMP_SPEAKER_DISABLE( void )
{
	UINT16 i;

#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n >>> SPKER DISABLE!\r\n");	
#endif
	

	gSoundFlag = 0x00;		// lanzhu add @[01/27/2007] 
	i =  SPMP_SpeakOutGet();

#ifdef QLZ_DEBUG_0206
	sio_printf(" i = 0x%x\r\n", i);	
#endif
	
	// 只取決于當前用戶的設定和當時耳機的狀態
	if ( i && (HEADPHONE_OUT == SPMP_Get_HPStatus() ) )
	{
		SPMP_Speaker_Set( 0x00 );
	}

#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n <<< SPKER DISABLE!\r\n");	
#endif

	return;	
}

/************************************************************************/
/*			按鍵音使用的關閉SPEAKER 的函數
  input:
			void 
  output:
			void 
  func:
			在播放按鍵音完成后, 關閉SPEAKER 的功放
                                                                        */
/************************************************************************/

void SPMP_SPEAKER_DISABLE_EX( void )
{
	UINT16 i;

#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n >>> SPKER DISABLE EX!\r\n");	
#endif

	if( gSoundFlag == (BIT_USER_FLAG |BIT_SOUND_FLAG) )	
	{
#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n --- dis speak just ret!\r\n");
#endif
		return;
	}

	// [02/06/2007] lanzhu add  fix mantis bug 7342
	if( HEADPHONE_OUT == SPMP_Get_HPStatus()){
		SPMP_Speaker_Set( 0x00 );
	}

#ifdef QLZ_DEBUG_0206
	sio_printf("\r\n <<< SPKER DISABLE EX!\r\n");	
#endif
	

	return;	
}

/*
 *	
 */
UINT16 SPMP_Get_SoundFlag( void )
{
	return (gSoundFlag&BIT_SOUND_FLAG);
}

/************************************************************************/
/* MP3 playback start

  input:
			void
  output:
			0 成功, 非0值失敗
  func:
			設定 Codec, 啟動MP3 的播放
  note:
			[01/29/2007] 發現每次進行音頻播放時, 有CODEC 的設置動作,
						 不需要這樣做.
                                                                        */
/************************************************************************/
static UINT16 mp3_playback_start( void )
{
	AUDIO_PLAY_ATTR audAttr;

	// [01/29/2007] lanzhu marked 
	//SPMP_AUDIO_SetCodec( );	// 進行CODEC 的設置	

	// 設定播放的屬性
	memset(&audAttr, 0x00, sizeof(audAttr));
	audAttr.startSecond = 0;
	audAttr.audioCodec.codectype = MCATCH_AUDIO_CODEC_INTERNAL;

	// 啟動音頻播放
	return SPMP_SendSignal_T(	(UINT16)MCATCH_CMD_AUDIO_PLAY_START,
									(UINT8 *)&(audAttr), 
									(UINT16)sizeof(AUDIO_PLAY_ATTR));
}

/************************************************************************/
/*  獲得音頻信息的指針
  input:
			void 
  output:
			地址指針
  func:
			獲得 Audio 的地址指針
                                                                        */
/************************************************************************/
static UINT8 * ret_audio_buf_ptr( void )
{
	return gpAudDataBuf;
}


/************************************************************************/
/*			設定AUDIO 結束標志
  input:
			flag	[in]	UINT16 
							0		沒有結束
							非0	值  已經結束 
  output:
			0 成功, 非0值失敗
  func:
			設定AUDIO 結束標志
  note:
			用于AUDIO PLAY 的真正結束, 以此來在2個AP之間擊西寧動作的協調
                                                                        */
/************************************************************************/
UINT16 SPMP_AUDIO_SetOverFlag( UINT16 flag )
{
	// 首先將該位復位為空
	gAudioOverFlag &= ~AUDIO_OVER_MASK;

	if ( flag ) 
	{
#ifdef QLZ_DEBUG_0208
		sio_printf("\r\n  設定 AUDIO 真正結束 \r\n");	
#endif
		gAudioOverFlag |= AUDIO_OVER_MASK;		
	}

	return	APP_DRV_OK;
}

/************************************************************************/
/*			獲得AUDIO 結束標志
  input:
			void 
  output:
			0			還沒有結束
			非0值		已經真正結束
  func:
			通過此標志判斷 AUDIO 的動作是否真正結束
  note:
                                                                        */
/************************************************************************/
UINT16 SPMP_AUDIO_GetOverFlag( void )
{
#ifdef QLZ_DEBUG_0208
	sio_printf("\r\n Over Flag = 0x%x\r\n", gAudioOverFlag);
#endif

	// 目前只使用 BIT0 來進行是否結束的標志
	return (gAudioOverFlag & AUDIO_OVER_MASK);
}


/*
	[03/07/2007] lanzhu add 	
	input:
		speaker_flag [in] 	0      ear phone 
				    	非0 值 speaker 
	output:
		void 	

	func:
		用于切換耳機和SPEAKER 
 */

void SPMP_AUDIO_SetCodecPath( UINT16 speaker_flag )
{
	if(speaker_flag)
	{
		audCodecSet(audioAppTbl, sizeof(audioAppTbl));				
	}	
	else{
		audCodecSet(audioAppTbl_t, sizeof(audioAppTbl_t));			
	}		
	return;
}







?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区在线视频观看| 国产精品免费av| 99久久精品国产一区二区三区| 亚洲在线观看免费| 国产日韩欧美不卡| 欧美一区二区三级| 在线观看亚洲成人| 成人激情开心网| 激情五月婷婷综合| 午夜视频在线观看一区| 最新国产成人在线观看| 国产视频一区二区在线观看| 91精品久久久久久久99蜜桃| 色爱区综合激月婷婷| 成人性生交大片免费看中文网站| 免费成人在线观看视频| 亚洲v精品v日韩v欧美v专区| ●精品国产综合乱码久久久久| 久久麻豆一区二区| 精品国产网站在线观看| 91精品国产全国免费观看| 在线观看不卡一区| 91久久精品一区二区三| 99久久精品国产精品久久| 国产福利精品导航| 国产精品一区二区三区99| 国产做a爰片久久毛片| 免费成人结看片| 日本一区中文字幕 | 亚洲成人av一区二区三区| 综合精品久久久| 国产精品免费aⅴ片在线观看| 国产人久久人人人人爽| 中文字幕免费观看一区| 国产午夜精品久久久久久久| 久久精品一区蜜桃臀影院| 精品福利在线导航| 久久婷婷国产综合国色天香| 欧美成人高清电影在线| 精品国产区一区| 久久精品一二三| 中文字幕精品一区二区三区精品 | 欧美大度的电影原声| 日韩欧美一区在线| 欧美xfplay| 久久久久久久电影| 中文字幕欧美三区| 亚洲欧美经典视频| 亚洲高清免费在线| 男人的j进女人的j一区| 九九**精品视频免费播放| 国产精品18久久久久久久久 | 中文字幕中文字幕在线一区| 欧美国产一区二区| 自拍偷自拍亚洲精品播放| 亚洲精品少妇30p| 五月激情丁香一区二区三区| 久久精品国产77777蜜臀| 国产资源在线一区| 波多野结衣的一区二区三区| 在线欧美日韩精品| 日韩一区二区三区四区| 视频一区国产视频| 免费久久99精品国产| 国产精品99久久久久久似苏梦涵| 成人午夜伦理影院| 欧美中文字幕一区二区三区| 日韩久久久久久| 国产欧美一区二区三区鸳鸯浴 | 国产成人精品一区二区三区四区| 成人性色生活片免费看爆迷你毛片| 99久久久免费精品国产一区二区| 欧美日韩一区精品| 久久综合色8888| 亚洲女子a中天字幕| 天天色综合天天| 国产.精品.日韩.另类.中文.在线.播放| 波多野结衣精品在线| 欧美放荡的少妇| 中文av一区特黄| 午夜精品久久久久久不卡8050| 国产精品一区二区三区网站| 欧美亚洲综合久久| 久久亚洲免费视频| 亚洲一区二区免费视频| 久久99久久99| 欧美性色黄大片手机版| 国产欧美日韩在线| 亚洲国产aⅴ天堂久久| 成人中文字幕电影| 92精品国产成人观看免费| 美女视频一区二区三区| 高清免费成人av| 欧美日韩成人在线| 国产精品家庭影院| 久久精品国产精品青草| 在线免费观看一区| 日本一区免费视频| 天堂在线一区二区| 色哟哟亚洲精品| 久久久777精品电影网影网 | 在线观看日韩一区| 国产情人综合久久777777| 日韩电影在线一区二区| 日韩三级精品电影久久久| 亚洲欧洲美洲综合色网| 国产一区啦啦啦在线观看| 欧美性猛交一区二区三区精品| 国产精品素人一区二区| 美女性感视频久久| 欧美日韩一二三区| 亚洲在线一区二区三区| 成人18视频日本| 久久久国产精品不卡| 美女视频黄 久久| 欧美久久久久久久久中文字幕| 亚洲欧美国产三级| av在线综合网| 欧美国产精品中文字幕| 激情成人综合网| 欧美变态tickle挠乳网站| 丝袜美腿亚洲一区二区图片| 欧美亚洲国产bt| 亚洲一区二区在线观看视频 | 欧美日韩国产bt| 亚洲精品成人精品456| www.在线成人| 国产精品久久久久aaaa樱花| 国产成人免费xxxxxxxx| 久久精品夜夜夜夜久久| 国产sm精品调教视频网站| 国产目拍亚洲精品99久久精品| 国产一区不卡精品| 国产日产精品一区| 成人h版在线观看| 亚洲天堂成人网| 91成人在线免费观看| 一区二区三区欧美久久| 欧美亚洲另类激情小说| 亚洲成人一区二区| 91精品国产91久久久久久一区二区| 天堂成人国产精品一区| 4438x成人网最大色成网站| 日韩国产欧美视频| 日韩女优av电影| 国产精品99久久久久久有的能看| 国产欧美日本一区视频| 成人app网站| 亚洲线精品一区二区三区| 欧美三片在线视频观看| 日韩经典中文字幕一区| 日韩西西人体444www| 国产精品自拍一区| 中文字幕一区二区三区在线观看 | 欧美电影精品一区二区| 国产一区二区福利| 国产精品麻豆一区二区| 26uuu精品一区二区三区四区在线| 国产精品国产精品国产专区不片| 成人国产精品免费| 亚洲精品国产一区二区精华液| 欧美最猛性xxxxx直播| 男女性色大片免费观看一区二区| 日韩精品一区二区三区swag | 色呦呦网站一区| 天天亚洲美女在线视频| 久久免费视频一区| 91色婷婷久久久久合中文| 偷偷要91色婷婷| 国产午夜久久久久| 91精品1区2区| 精品一区二区三区在线观看| 国产精品美女一区二区三区| 欧美午夜片在线观看| 国产乱人伦精品一区二区在线观看| 综合激情成人伊人| 欧美r级电影在线观看| 99久免费精品视频在线观看| 五月婷婷久久综合| 国产女主播一区| 91麻豆精品91久久久久同性| 国产91富婆露脸刺激对白| 亚洲国产精品久久久久秋霞影院 | 中文字幕不卡三区| 欧美日韩高清一区二区三区| 国产一区二区影院| 亚洲韩国一区二区三区| 久久欧美一区二区| 欧美日韩免费电影| 成人成人成人在线视频| 免费一级片91| 亚洲乱码日产精品bd| 久久久欧美精品sm网站| 欧美影院一区二区| 国产91在线看| 久久99精品久久久| 亚洲成人黄色小说| 亚洲美女屁股眼交| 国产日韩精品久久久| 欧美变态口味重另类|