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

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

?? audio.c

?? dvr
?? C
字號:
/*
********************************************************************************
*
* Copyright 2002, Vineyard Technologies, Inc.
*
* Filename 	: audio.c
* Programmer: Steve KyeongHyeon Lee
* Created 	: 2003/08/20
* Modified 	:
*
* Description :
********************************************************************************
*/

#include "types.h"

/*
###############################################################################
File Include Section
###############################################################################
*/
#include "8052reg.h"
#include <stdio.h>
#include <absacc.h>
#include "gio.h"
#include "i2c.h"
#include "audio.h"

//==============================================================================
// Audio Register in FPGA
//==============================================================================

#define AUDIO_INT_REGISTER XBYTE[0x8000]
// bit0: (R) Only used in REC-AUDIO mode, reading this bit will clear audio interrupt at audio FPGA
// bit0: (W) Writing 0 will enable audio block in G1P
	#define AUD_B0_ENALBE		0x00

#define AUDIO_BUS_REGISTER XBYTE[0x8001]
// bit0: (R/W) 	0 -> Audio FPGA release IDE bus (automatically by FPGA)
//				1 -> Audio FPGA handle IDE bus to read or write
// bit1: (W)	0 -> Recoding audio into HDD
//				1 -> Decoding audio from HDD
	#define AUD_B0_AUDIO_IDE	0x01

#define AUDIO_PLAY_REGISTER XBYTE[0x8002]
// bit0: (R/W)	0 -> Audio Recoding Mode Enable
//				1 -> Audio Decoding Mode Enable
// bit1: (R/W)	When READ -> Only in Audio Recording mode, audio interrupt status bit
//				When WRITE-> Only in Audio Recording mode, toggling this bit make jpeg_header flag in FGPA clear
//				Actually, this bit is generated by audio FPGA and used by FPGA,
//				but this bit MUST be cleared by firmware by toggling (1->0).
	#define AUD_B0_MD_RECORD	0x00
	#define AUD_B0_MD_PLAY		0x01
	#define AUD_B1_CLEAR_H		0x02

#define AUDIO_START_REGISTER XBYTE[0x8003]
// bit0: (R/W)	0 -> FPGA audio part reset (every internal variables are cleared
//				1 -> start audio recording or playing (make audio FPGA interrupt)
// bit1: (R/W)	When READ and it is 1 --> audio FPGA is playing audio data and firmware code MUST not activate VIDEO decoding
//									0 --> audio FPGA is not playing any audio data
//				When WRITE, 1 --> FF mode set for FPGA to skip audio packet
//							0 --> Audio FPGA is doing normal audio playing.
	#define AUD_B0_START		0x01
	#define AUD_B0_RESET		0x00
	#define AUD_B1_SKIP			0x02
	#define AUD_B1_BUSY			0x02


u8 gv_audio_reg_play=0;
u8 gv_audio_run=0;
u8 gv_audio_IDE_busy=0;
u8 gv_audif = FALSE;

extern void hdd_pre_write(u8 aud_rec_intr);

void _audioif_clear_IDE_request(void)
{
	delay_time(G1REC4KTIME,1);
	hdd_pre_write(1);
	audioif_get_IDE(0x00);
	delay_time(G1REC4KTIME,1);
	// We don't need to release audio IDE because audio part of G1P release IDE automatically
}

/*
###############################################################################
Reset all of the internal variables in audio FPGA
###############################################################################
*/
void audioif_reset(void)
{
	// clear global variables
	gv_audio_reg_play = 0;
	gv_audio_run = 0;
	gv_audio_IDE_busy = 0;

	if(!gv_audif) return;

#ifdef DEBUG_AUDIOIF
	printf("\n\raudioif_reset");
#endif
	audio_enable();
	
	// check audio record intrrupt is pending
	if(AUDIO_PLAY_REGISTER & 0x02) 
	// audio interrupt happen but caller of this function want to stop recording.
	// So we have to give a change to audio block to write audio data onto IDE bus
	{
		_audioif_clear_IDE_request();
	}	
	
	AUDIO_INT_REGISTER = AUD_B0_ENALBE; // G1P
	AUDIO_START_REGISTER = AUD_B0_RESET;
	delay_time(10,1);
	AUDIO_PLAY_REGISTER  = AUD_B0_MD_RECORD;
	dv03_enable();

}

/*
###############################################################################
Start audio recording/playing
Input: mode
	0x00 for recording
	0x01 for playing
###############################################################################
*/
void audioif_start(u8 mode)
{
	if(!gv_audif) return;
	
#ifdef DEBUG_AUDIOIF
	printf("\n\raudioif_start(%d)", (int)mode);
#endif

	audio_enable();
	AUDIO_START_REGISTER = AUD_B0_RESET; // Clear Internal Buffer and variable
	delay_time(30,1);
	AUDIO_PLAY_REGISTER = mode;
	AUDIO_START_REGISTER = AUD_B0_START;
	delay_time(30,1);
	dv03_enable();
	
}


/*
###############################################################################
Return audio play register value
###############################################################################
*/
u8 audioif_get_regPLAY(void)
{
	xdata u8 ret;

	if(!gv_audif) return 0;
#ifdef DEBUG_AUDIOIF
	printf("\n\raudioif_get_regPLAY");
#endif
	audio_enable();
	ret = AUDIO_PLAY_REGISTER;
	dv03_enable();
	return ret;
}
/*
###############################################################################
Clear the internal flag [jpeg_header_flag] in audio FPGA.
This function will be called every interrupt.
Input:
		mode : 0x00 in recording mode
			   0x01 in playing mode
###############################################################################
*/
void audioif_clear_internal_flag(u8 mode)
{
	if(!gv_audif) return;
#ifdef DEBUG_AUDIOIF
	printf("\n\raudioif_clear_internal_flag(%d)", (int)mode);
#endif
	audio_enable();
	AUDIO_PLAY_REGISTER = AUD_B1_CLEAR_H | mode;
	delay_time(3,1);
	AUDIO_PLAY_REGISTER = mode;
	dv03_enable();
}

/*
###############################################################################
Start transferring audio data from/to HDD using IDE bus
Input:
		mode : 0x00 in recording mode
			   0x02 in playing mode
###############################################################################
*/
void audioif_get_IDE(u8 mode)
{
	if(!gv_audif) return;
	audio_enable();
	AUDIO_BUS_REGISTER = mode | AUD_B0_AUDIO_IDE;
	dv03_enable();
}

/*
void audioif_release_IDE(u8 mode)
{
	if(!gv_audif) return;
	audio_enable();
	AUDIO_BUS_REGISTER = mode;
	dv03_enable();
}
*/

/*
###############################################################################
Clear audio itnerrupt by reading audio interrupt register
###############################################################################
*/
u8 audioif_clear_interrupt(void)
{
	xdata u8 ret;

	if(!gv_audif) return 0;

	audio_enable();

	ret = AUDIO_INT_REGISTER;

	dv03_enable();
	return ret;
}


/*
###############################################################################
Stop audio recording/playing
###############################################################################
*/
void audioif_skip_mode(void)
{
	if(!gv_audif) return;
#ifdef DEBUG_AUDIOIF
	printf("\n\raudioif_skip_mode");
#endif
	audio_enable();
	AUDIO_START_REGISTER = AUD_B1_SKIP | AUD_B0_RESET;
	dv03_enable();

	gv_audio_run = 0;
}

/*
###############################################################################
Check audio FPGA is busy
###############################################################################
*/
u8 audioif_IDE_busy(void)
{
	xdata u8 ret;

	if(!gv_audif) return 0;

	audio_enable();
	ret = (AUDIO_START_REGISTER & AUD_B1_BUSY)>>1;
	dv03_enable();
	return ret;
}




/*
###############################################################################
Initialize audio chip
###############################################################################
*/
void audioif_chip_init(void)
{
	if(!gv_audif) return;
#ifdef DEBUG_AUDIOIF
	printf("\n\raudioif_chip_init");
#endif
	i2c_pkt_write(0xe2, 0x00, 0x99);
	i2c_pkt_write(0xe2, 0x01, 0x91); /* 0x93 */
	i2c_pkt_write(0xe2, 0x02, 0x58);
	i2c_pkt_write(0xe2, 0x03, 0x60);

	// default value of TLV320AIC1110 audio codec chip
	// offset	value
	// 0x00		0xf6
	// 0x01		0x02
	// 0x02		0x40
	// 0x03		0xa0
	// 0x04		0x00
	// 0x05		0x00
	// 0x06		0x00
}

/*
###############################################################################
Mute audio chip
###############################################################################
*/
void audioif_mute(u8 flag)
{
	if(!gv_audif) return;
#ifdef DEBUG_AUDIOIF
	printf("\n\raudioif_mute(%d)", (int)flag);
#endif
	i2c_pkt_write(0xe2, 0x00, (flag)?0x9D:0x99);
}


//###############################################################################
//change audio source channel
//###############################################################################
#ifdef USE_4954_GP
extern BYTE Val_EPROM_AUDIO_CH;
#include "cs4954.h"
void audio_ch_sel(void)
{
    #ifdef USE_4954
	cs4954_write(0x0A,Val_EPROM_AUDIO_CH&0x03);
    #endif

#ifdef DEBUG_4AUD
	printf("\r\nSET AUDIO CH : 0x%02X (0x%02X)",
		(WORD)Val_EPROM_AUDIO_CH&0x03,
		(WORD)cs4954_read(0x0A)
		);
#endif
}
#endif


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品少妇一区二区三区| 中文字幕精品—区二区四季| 偷拍一区二区三区四区| 在线视频你懂得一区| 亚洲视频网在线直播| 91久久精品一区二区| 亚洲午夜电影网| 欧美精品电影在线播放| 亚洲成人激情av| 国产精品1区2区3区| proumb性欧美在线观看| 99久久精品免费观看| 色综合久久久久综合99| 欧美视频在线观看一区二区| 欧美主播一区二区三区美女| 欧美亚洲综合色| 欧美成人三级在线| 国产精品传媒入口麻豆| 蜜桃视频一区二区三区| 色综合欧美在线视频区| 亚洲一区免费在线观看| 欧美日韩成人综合| 国产精品综合久久| 亚洲女爱视频在线| 精品久久久久久最新网址| 国产成人av电影免费在线观看| 亚洲欧美综合网| 911精品产国品一二三产区| 国产精品99久久不卡二区| 一区二区三区av电影| 337p粉嫩大胆噜噜噜噜噜91av| 99精品国产99久久久久久白柏| 天使萌一区二区三区免费观看| 国产午夜精品美女毛片视频| 欧美在线观看视频一区二区三区| 免费看精品久久片| 五月婷婷综合激情| 国产视频一区二区在线观看| 欧美三级电影在线看| 不卡电影一区二区三区| 蜜臀av国产精品久久久久| 亚洲欧美日韩电影| 中文字幕av一区二区三区高| 7777精品伊人久久久大香线蕉| eeuss鲁一区二区三区| 免费成人在线播放| 亚洲综合免费观看高清完整版| 亚洲精品一区二区三区蜜桃下载| 欧美在线高清视频| 91在线你懂得| 国产成人精品免费视频网站| 日本强好片久久久久久aaa| 亚洲女厕所小便bbb| 中文字幕乱码亚洲精品一区| 欧美成人乱码一区二区三区| 欧美日韩久久一区| 91国内精品野花午夜精品| 成人手机在线视频| 国产美女精品一区二区三区| 热久久久久久久| 69久久99精品久久久久婷婷| 日本亚洲免费观看| 亚洲日本在线看| 欧美在线视频你懂得| 日韩国产精品91| 精品久久一区二区| 91一区在线观看| 亚洲成人第一页| 精品黑人一区二区三区久久| 粉嫩av一区二区三区在线播放| ...av二区三区久久精品| 777久久久精品| 亚洲一区二区在线免费看| 亚洲视频在线一区二区| 国产精品毛片大码女人| 久久久精品免费网站| 久久综合久久久久88| 日韩午夜电影av| 日韩欧美国产不卡| 欧美大胆人体bbbb| 日韩欧美一二区| 欧美变态口味重另类| 久久影院视频免费| 久久免费国产精品| 久久精品一区四区| 国产精品污www在线观看| 欧美激情在线看| 17c精品麻豆一区二区免费| 18涩涩午夜精品.www| 一区二区三区中文字幕在线观看| 亚洲国产精品久久不卡毛片| 一级精品视频在线观看宜春院| 亚洲国产另类av| 蜜臀av一级做a爰片久久| 精品无人码麻豆乱码1区2区 | 欧美性淫爽ww久久久久无| 91国在线观看| 制服.丝袜.亚洲.另类.中文| 精品国产网站在线观看| 国产精品丝袜黑色高跟| 一区二区三区中文字幕| 奇米影视一区二区三区| 国产精品18久久久久| 91一区二区三区在线播放| 欧美日韩一级视频| 精品国产亚洲在线| 亚洲欧美日韩国产成人精品影院| 日韩中文字幕区一区有砖一区| 精品在线观看视频| 91在线国产福利| 欧美一卡二卡在线观看| 欧美激情综合五月色丁香| 一区二区三区毛片| 美国精品在线观看| 欧美另类高清zo欧美| 亚洲国产岛国毛片在线| 久久精品国产999大香线蕉| 黑人精品欧美一区二区蜜桃| 国产91在线|亚洲| 欧美三级日韩在线| 日韩午夜在线观看| 国产性天天综合网| 亚洲香肠在线观看| 韩国中文字幕2020精品| 色综合久久久网| 国产精品久久久久aaaa樱花 | 精品国产91亚洲一区二区三区婷婷| 久久先锋影音av鲁色资源| 亚洲精品乱码久久久久久黑人| 麻豆精品视频在线观看| 色综合天天性综合| 久久久亚洲欧洲日产国码αv| 亚洲一区二区三区在线看| 国产精品1024| 91精品视频网| 亚洲激情网站免费观看| 国产精品亚洲综合一区在线观看| 欧美日韩一级片网站| 国产精品成人免费| 极品瑜伽女神91| 欧美日韩成人在线| 日本va欧美va瓶| 在线看一区二区| 国产精品色一区二区三区| 久久精品免费观看| 欧美日韩视频一区二区| 亚洲天堂2016| 成人精品一区二区三区四区| 日韩一区二区在线观看视频| 怡红院av一区二区三区| gogogo免费视频观看亚洲一| 欧美极品xxx| 国产精品一区二区在线看| 欧美大片在线观看一区| 日韩精品亚洲一区二区三区免费| 97精品久久久久中文字幕 | 日韩一区二区精品| 亚洲午夜久久久久中文字幕久| 一本大道久久a久久精二百| 国产精品热久久久久夜色精品三区 | 欧美精品一区二区三区在线播放| 亚洲精品免费在线| 91豆麻精品91久久久久久| 亚洲欧洲av在线| 91视频com| 国产精品网站在线播放| 国产一区二区三区久久悠悠色av| 欧美三级视频在线播放| 国产一区二区在线观看视频| 国产精品乱人伦| 婷婷开心激情综合| 国产色婷婷亚洲99精品小说| 粉嫩一区二区三区性色av| 亚洲成av人片在www色猫咪| 国产色产综合产在线视频 | 国产自产高清不卡| 中文字幕中文字幕一区二区| 欧美日韩精品一区二区三区 | 亚洲欧美一区二区在线观看| 奇米精品一区二区三区在线观看| 69堂国产成人免费视频| 久久精品国产精品亚洲精品| 精品成人私密视频| 国产精品综合视频| 亚洲色图色小说| 日本韩国一区二区三区视频| 亚洲综合色丁香婷婷六月图片| 在线成人免费观看| 国内一区二区视频| 国产精品色哟哟| 欧美在线播放高清精品| 奇米影视在线99精品| 欧美一级在线视频| 国产成人午夜电影网| 亚洲欧洲日韩一区二区三区| 欧美系列亚洲系列| 精品一区二区三区在线播放视频| 国产欧美1区2区3区| 欧美另类videos死尸| 激情六月婷婷久久|