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

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

?? ixj-redhat.c

?? mgcp協議源代碼。支持多種編碼:g711
?? C
?? 第 1 頁 / 共 5 頁
字號:
		if (write_retval != -EFAULT) {			ixj_PostWrite(j, 0L);			j->write_buffer_wp += count;			j->write_buffers_empty--;		}		break;	case NOPOST:		write_retval = ixj_write(file_p, buf, count, ppos);		if (write_retval != -EFAULT) {			j->write_buffer_wp += count;			j->write_buffers_empty--;		}		break;	case POSTONLY:		ixj_PostWrite(j, 0L);		break;	default:		write_retval = pre_retval;	}	return write_retval;}static void ixj_read_frame(int board){	int cnt, dly;	IXJ *j = &ixj[board];	if (j->read_buffer) {		for (cnt = 0; cnt < j->rec_frame_size * 2; cnt += 2) {			if (!(cnt % 16) && !IsRxReady(board)) {				dly = 0;				while (!IsRxReady(board)) {					if (dly++ > 5) {						dly = 0;						break;					}					udelay(10);				}			}			// Throw away word 0 of the 8021 compressed format to get standard G.729.			if (j->rec_codec == G729 && (cnt == 0 || cnt == 5 || cnt == 10)) {				inb_p(j->DSPbase + 0x0E);				inb_p(j->DSPbase + 0x0F);			}			*(j->read_buffer + cnt) = inb_p(j->DSPbase + 0x0E);			*(j->read_buffer + cnt + 1) = inb_p(j->DSPbase + 0x0F);		}#ifdef PERFMON_STATS		++j->framesread;#endif		if (j->intercom != -1) {			if (IsTxReady(j->intercom)) {				for (cnt = 0; cnt < j->rec_frame_size * 2; cnt += 2) {					if (!(cnt % 16) && !IsTxReady(board)) {						dly = 0;						while (!IsTxReady(board)) {							if (dly++ > 5) {								dly = 0;								break;							}							udelay(10);						}					}					outb_p(*(j->read_buffer + cnt), ixj[j->intercom].DSPbase + 0x0C);					outb_p(*(j->read_buffer + cnt + 1), ixj[j->intercom].DSPbase + 0x0D);				}#ifdef PERFMON_STATS				++ixj[j->intercom].frameswritten;#endif			}		} else {			j->read_buffer_ready = 1;			wake_up_interruptible(&j->read_q);	// Wake any blocked readers			wake_up_interruptible(&j->poll_q);	// Wake any blocked selects			if (j->async_queue)			    kill_fasync(ixj[board].async_queue, SIGIO, POLL_IN);		}	}}static void ixj_write_frame(int board){	int cnt, frame_count, dly;	BYTES blankword;	IXJ *j = &ixj[board];	frame_count = 0;	if (j->write_buffer && j->write_buffers_empty < 2) {		if (j->write_buffer_wp > j->write_buffer_rp) {			frame_count =			    (j->write_buffer_wp - j->write_buffer_rp) / (j->play_frame_size * 2);		}		if (j->write_buffer_rp > j->write_buffer_wp) {			frame_count =			    (j->write_buffer_wp - j->write_buffer) / (j->play_frame_size * 2) +			    (j->write_buffer_end - j->write_buffer_rp) / (j->play_frame_size * 2);		}		if (frame_count >= 1) {			if (j->ver.low == 0x12 && j->play_mode && j->flags.play_first_frame) {				switch (j->play_mode) {				case PLAYBACK_MODE_ULAW:				case PLAYBACK_MODE_ALAW:					blankword.low = blankword.high = 0xFF;					break;				case PLAYBACK_MODE_8LINEAR:				case PLAYBACK_MODE_16LINEAR:					blankword.low = blankword.high = 0x00;					break;				case PLAYBACK_MODE_8LINEAR_WSS:					blankword.low = blankword.high = 0x80;					break;				}				for (cnt = 0; cnt < 16; cnt++) {					if (!(cnt % 16) && !IsTxReady(board)) {						dly = 0;						while (!IsTxReady(board)) {							if (dly++ > 5) {								dly = 0;								break;							}							udelay(10);						}					}					outb_p((blankword.low), j->DSPbase + 0x0C);					outb_p((blankword.high), j->DSPbase + 0x0D);				}				j->flags.play_first_frame = 0;			}			for (cnt = 0; cnt < j->play_frame_size * 2; cnt += 2) {				if (!(cnt % 16) && !IsTxReady(board)) {					dly = 0;					while (!IsTxReady(board)) {						if (dly++ > 5) {							dly = 0;							break;						}						udelay(10);					}				}// Add word 0 to G.729 frames for the 8021.  Right now we don't do VAD/CNG 				// so all frames are type 1.				if (j->play_codec == G729 && (cnt == 0 || cnt == 5 || cnt == 10)) {					outb_p(0x01, j->DSPbase + 0x0C);					outb_p(0x00, j->DSPbase + 0x0D);				}				outb_p(*(j->write_buffer_rp + cnt), j->DSPbase + 0x0C);				outb_p(*(j->write_buffer_rp + cnt + 1), j->DSPbase + 0x0D);				*(j->write_buffer_rp + cnt) = 0;				*(j->write_buffer_rp + cnt + 1) = 0;			}			j->write_buffer_rp += j->play_frame_size * 2;			if (j->write_buffer_rp >= j->write_buffer_end) {				j->write_buffer_rp = j->write_buffer;			}			j->write_buffers_empty++;			wake_up_interruptible(&j->write_q);	// Wake any blocked writers			wake_up_interruptible(&j->poll_q);	// Wake any blocked selects			if (j->async_queue)			    kill_fasync(ixj[board].async_queue, SIGIO, POLL_IN);#ifdef PERFMON_STATS			++j->frameswritten;#endif		}	} else {		j->drybuffer++;	}}static int idle(int board){	IXJ *j = &ixj[board];	if (ixj_WriteDSPCommand(0x0000, board))		// DSP Idle		return 0;	if (j->ssr.high || j->ssr.low)		return 0;	else		return 1;}static int set_base_frame(int board, int size){	unsigned short cmd;	int cnt;	IXJ *j = &ixj[board];	aec_stop(board);	for (cnt = 0; cnt < 10; cnt++) {		if (idle(board))			break;	}	if (j->ssr.high || j->ssr.low)		return -1;	if (j->dsp.low != 0x20) {		switch (size) {		case 30:			cmd = 0x07F0;			/* Set Base Frame Size to 240 pg9-10 8021 */			break;		case 20:			cmd = 0x07A0;			/* Set Base Frame Size to 160 pg9-10 8021 */			break;		case 10:			cmd = 0x0750;			/* Set Base Frame Size to 80 pg9-10 8021 */			break;		default:			return -1;		}	} else {		if (size == 30)			return size;		else			return -1;	}	if (ixj_WriteDSPCommand(cmd, board)) {		j->baseframe.high = j->baseframe.low = 0xFF;		return -1;	} else {		j->baseframe.high = j->ssr.high;		j->baseframe.low = j->ssr.low;	}	return size;}static int set_rec_codec(int board, int rate){	int retval = 0;	IXJ *j = &ixj[board];	j->rec_codec = rate;	switch (rate) {	case G723_63:		if (j->ver.low != 0x12 || ixj_convert_loaded) {			j->rec_frame_size = 12;			j->rec_mode = 0;		} else {			retval = 1;		}		break;	case G723_53:		if (j->ver.low != 0x12 || ixj_convert_loaded) {			j->rec_frame_size = 10;			j->rec_mode = 0;		} else {			retval = 1;		}		break;	case TS85:		if (j->dsp.low == 0x20 || j->flags.ts85_loaded) {			j->rec_frame_size = 16;			j->rec_mode = 0;		} else {			retval = 1;		}		break;	case TS48:		if (j->ver.low != 0x12 || ixj_convert_loaded) {			j->rec_frame_size = 9;			j->rec_mode = 0;		} else {			retval = 1;		}		break;	case TS41:		if (j->ver.low != 0x12 || ixj_convert_loaded) {			j->rec_frame_size = 8;			j->rec_mode = 0;		} else {			retval = 1;		}		break;	case G728:		if (j->dsp.low != 0x20) {			j->rec_frame_size = 48;			j->rec_mode = 0;		} else {			retval = 1;		}		break;	case G729:		if (j->dsp.low != 0x20) {			if (!j->flags.g729_loaded) {				retval = 1;				break;			}			switch (j->baseframe.low) {			case 0xA0:				j->rec_frame_size = 10;				break;			case 0x50:				j->rec_frame_size = 5;				break;			default:				j->rec_frame_size = 15;				break;			}			j->rec_mode = 0;		} else {			retval = 1;		}		break;	case ULAW:		switch (j->baseframe.low) {		case 0xA0:			j->rec_frame_size = 80;			break;		case 0x50:			j->rec_frame_size = 40;			break;		default:			j->rec_frame_size = 120;			break;		}		j->rec_mode = 4;		break;	case ALAW:		switch (j->baseframe.low) {		case 0xA0:			j->rec_frame_size = 80;			break;		case 0x50:			j->rec_frame_size = 40;			break;		default:			j->rec_frame_size = 120;			break;		}		j->rec_mode = 4;		break;	case LINEAR16:		switch (j->baseframe.low) {		case 0xA0:			j->rec_frame_size = 160;			break;		case 0x50:			j->rec_frame_size = 80;			break;		default:			j->rec_frame_size = 240;			break;		}		j->rec_mode = 5;		break;	case LINEAR8:		switch (j->baseframe.low) {		case 0xA0:			j->rec_frame_size = 80;			break;		case 0x50:			j->rec_frame_size = 40;			break;		default:			j->rec_frame_size = 120;			break;		}		j->rec_mode = 6;		break;	case WSS:		switch (j->baseframe.low) {		case 0xA0:			j->rec_frame_size = 80;			break;		case 0x50:			j->rec_frame_size = 40;			break;		default:			j->rec_frame_size = 120;			break;		}		j->rec_mode = 7;		break;	default:		j->rec_frame_size = 0;		j->rec_mode = -1;		if (j->read_buffer) {			kfree(j->read_buffer);			j->read_buffer = NULL;			j->read_buffer_size = 0;		}		retval = 1;		break;	}	return retval;}static int ixj_record_start(int board){	unsigned short cmd = 0x0000;	IXJ *j = &ixj[board];	if (j->read_buffer) {		ixj_record_stop(board);	}	if (!j->rec_mode) {		switch (j->rec_codec) {		case G723_63:			cmd = 0x5131;			break;		case G723_53:			cmd = 0x5132;			break;		case TS85:			cmd = 0x5130;	// TrueSpeech 8.5			break;		case TS48:			cmd = 0x5133;	// TrueSpeech 4.8			break;		case TS41:			cmd = 0x5134;	// TrueSpeech 4.1			break;		case G728:			cmd = 0x5135;			break;		case G729:			cmd = 0x5136;			break;		default:			return 1;		}		if (ixj_WriteDSPCommand(cmd, board))			return -1;	}	if (!j->read_buffer) {		if (!j->read_buffer)			j->read_buffer = kmalloc(j->rec_frame_size * 2, GFP_ATOMIC);		if (!j->read_buffer) {			printk("Read buffer allocation for ixj board %d failed!\n", board);			return -ENOMEM;		}	}	j->read_buffer_size = j->rec_frame_size * 2;	if (ixj_WriteDSPCommand(0x5102, board))		// Set Poll sync mode		return -1;	switch (j->rec_mode) {	case 0:		cmd = 0x1C03;	// Record C1		break;	case 4:		if (j->ver.low == 0x12) {			cmd = 0x1E03;	// Record C1		} else {			cmd = 0x1E01;	// Record C1		}		break;	case 5:		if (j->ver.low == 0x12) {			cmd = 0x1E83;	// Record C1		} else {			cmd = 0x1E81;	// Record C1		}		break;	case 6:		if (j->ver.low == 0x12) {			cmd = 0x1F03;	// Record C1		} else {			cmd = 0x1F01;	// Record C1		}		break;	case 7:		if (j->ver.low == 0x12) {			cmd = 0x1F83;	// Record C1		} else {			cmd = 0x1F81;	// Record C1		}		break;	}	if (ixj_WriteDSPCommand(cmd, board))		return -1;	return 0;}static void ixj_record_stop(int board){	IXJ *j = &ixj[board];	if (j->read_buffer) {		kfree(j->read_buffer);		j->read_buffer = NULL;		j->read_buffer_size = 0;	}	if (j->rec_mode > -1) {		ixj_WriteDSPCommand(0x5120, board);		j->rec_mode = -1;	}}static void ixj_vad(int board, int arg){	if (arg)		ixj_WriteDSPCommand(0x513F, board);	else		ixj_WriteDSPCommand(0x513E, board);}static void set_rec_depth(int board, int depth){	if (depth > 60)		depth = 60;	if (depth < 0)		depth = 0;	ixj_WriteDSPCommand(0x5180 + depth, board);}static void set_rec_volume(int board, int volume){	ixj_WriteDSPCommand(0xCF03, board);	ixj_WriteDSPCommand(volume, board);}static int get_rec_level(int board){	IXJ *j = &ixj[board];	ixj_WriteDSPCommand(0xCF88, board);	return j->ssr.high << 8 | j->ssr.low;}static void ixj_aec_start(int board, int level){	IXJ *j = &ixj[board];	j->aec_level = level;	if (!level) {		ixj_WriteDSPCommand(0xB002, board);	} else {		if (j->rec_codec == G729 || j->play_codec == G729) {			ixj_WriteDSPCommand(0xE022, board);	// Move AEC filter buffer			ixj_WriteDSPCommand(0x0300, board);		}		ixj_WriteDSPCommand(0xB001, board);	// AEC On		ixj_WriteDSPCommand(0xE013, board);	// Advanced AEC C1		switch (level) {		case AEC_LOW:			ixj_WriteDSPCommand(0x0000, board);	// Advanced AEC C2 = off			ixj_WriteDSPCommand(0xE011, board);			ixj_WriteDSPCommand(0xFFFF, board);			break;		case AEC_MED:			ixj_WriteDSPCommand(0x0600, board);	// Advanced AEC C2 = on medium

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲国产中文字幕欧美| 午夜日韩在线电影| 亚洲国产成人av好男人在线观看| 蜜臀久久99精品久久久久宅男| 成人不卡免费av| 精品国产欧美一区二区| 亚洲精品一二三四区| 国产成人精品亚洲午夜麻豆| 欧美日韩成人综合| 中文字幕五月欧美| 久久99精品久久久久婷婷| 色丁香久综合在线久综合在线观看| 日韩精品一区二区三区视频在线观看| 亚洲精品福利视频网站| 成人一区二区在线观看| 精品国产凹凸成av人网站| 石原莉奈在线亚洲二区| 在线免费观看视频一区| 亚洲国产精品99久久久久久久久| 热久久国产精品| 欧美丰满美乳xxx高潮www| 一区二区三区免费网站| 97se亚洲国产综合自在线| 国产日产欧产精品推荐色| 久久99蜜桃精品| 欧美一级片免费看| 日韩精品亚洲一区二区三区免费| 在线观看视频一区二区欧美日韩 | 国产一区二区三区日韩| 欧美精品在线观看播放| 亚洲成人在线观看视频| 欧美综合亚洲图片综合区| 中文字幕人成不卡一区| 国产成人福利片| 国产精品网曝门| 99久久精品情趣| 国产精品短视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 成人成人成人在线视频| 欧美国产精品劲爆| 成人不卡免费av| 日韩久久一区二区| 欧美亚洲一区二区三区四区| 亚洲成av人片一区二区三区| 8x8x8国产精品| 另类欧美日韩国产在线| 久久久久久久久久久久久女国产乱| 韩国精品在线观看| 中文欧美字幕免费| 91蜜桃网址入口| 亚洲一区二区三区免费视频| 欧美久久久影院| 玖玖九九国产精品| 国产精品热久久久久夜色精品三区| 成人国产精品视频| 亚洲狼人国产精品| 欧美高清一级片在线| 激情久久五月天| 国产精品福利一区二区三区| 欧美三级在线视频| 国产一区三区三区| 亚洲人成人一区二区在线观看| 在线免费不卡电影| 久久99精品视频| 亚洲欧美国产77777| 4438x亚洲最大成人网| 国产伦精品一区二区三区免费迷 | 欧美精品色综合| 国产一区二区按摩在线观看| 亚洲靠逼com| 日韩欧美www| 色婷婷久久综合| 日本麻豆一区二区三区视频| 欧美极品少妇xxxxⅹ高跟鞋| 欧美视频在线一区二区三区| 国产一区二区三区电影在线观看| 一区二区三区在线观看欧美| 欧美一卡二卡在线| 91免费在线看| 精彩视频一区二区| 亚洲伦在线观看| 久久女同性恋中文字幕| 精品视频全国免费看| 成人午夜电影久久影院| 青青青爽久久午夜综合久久午夜| 国产精品传媒入口麻豆| 日韩精品中文字幕在线一区| 欧美色视频在线| 成人午夜免费电影| 国产一区二区久久| 免费日本视频一区| 亚洲成人av一区| 亚洲国产精品自拍| 久久久久久久久97黄色工厂| 欧美视频在线不卡| 99久久综合国产精品| 精品亚洲免费视频| 天天av天天翘天天综合网色鬼国产| 国产人成亚洲第一网站在线播放 | 欧美电视剧在线观看完整版| 欧洲精品视频在线观看| 成人精品小蝌蚪| 国产资源在线一区| 秋霞午夜鲁丝一区二区老狼| 一区二区三区精品视频在线| 国产精品夫妻自拍| 国产精品污www在线观看| 久久久久久久久久久久久女国产乱| 欧美美女黄视频| 欧美日韩亚洲另类| 欧美伊人久久大香线蕉综合69| 99久久精品国产一区二区三区| 国产精品一线二线三线| 国产麻豆精品视频| 国产伦理精品不卡| 国产成人一区在线| 成人丝袜视频网| 不卡视频一二三四| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 麻豆精品一区二区综合av| 午夜精品福利在线| 蜜臀精品一区二区三区在线观看 | 国模套图日韩精品一区二区| 青青草91视频| 韩国一区二区在线观看| 久久66热re国产| 欧美在线一区二区三区| 欧美色综合影院| 91 com成人网| 欧美精品一区二区三区蜜臀| 久久久久久久久久久久电影 | 最近中文字幕一区二区三区| 国产精品久久久久久久久搜平片| 一区免费观看视频| 亚洲一区视频在线| 男人操女人的视频在线观看欧美| 美女视频第一区二区三区免费观看网站| 日本亚洲免费观看| 激情综合色播五月| 粉嫩av一区二区三区在线播放| 91网站黄www| 欧美精品日韩一区| 国产亚洲福利社区一区| 中文字幕中文字幕一区| 亚洲主播在线播放| 久久精品99国产精品| 国产揄拍国内精品对白| 91看片淫黄大片一级| 777午夜精品视频在线播放| 精品国产乱码久久久久久1区2区 | 久久久久国产一区二区三区四区| 国产精品三级av| 五月激情丁香一区二区三区| 激情成人综合网| 91网址在线看| 日韩欧美综合在线| 中文字幕日本乱码精品影院| 日韩精品一区第一页| 成人激情午夜影院| 91精品国产黑色紧身裤美女| 国产精品私房写真福利视频| 亚洲国产精品一区二区www| 国产最新精品精品你懂的| 色天天综合久久久久综合片| 欧美v日韩v国产v| 亚洲精品写真福利| 国模无码大尺度一区二区三区| 91国偷自产一区二区开放时间| 欧美成人三级电影在线| 九色综合狠狠综合久久| 91国偷自产一区二区开放时间| 久久亚洲捆绑美女| 亚洲国产一区在线观看| 国产精品小仙女| 日韩欧美在线观看一区二区三区| 亚洲女同女同女同女同女同69| 麻豆精品久久精品色综合| 日本伦理一区二区| 国产午夜精品在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 在线观看免费成人| 国产精品久久久久婷婷二区次| 极品美女销魂一区二区三区免费| 欧美亚洲国产一区在线观看网站| 国产精品视频你懂的| 国产一区二区主播在线| 精品黑人一区二区三区久久| 亚洲成人先锋电影| 在线区一区二视频| 亚洲少妇中出一区| www.视频一区| 国产精品人成在线观看免费| 国产成人日日夜夜| 国产亚洲精品福利| 国产sm精品调教视频网站| ww久久中文字幕| 国产精品影视在线| 久久九九影视网| 丁香婷婷综合色啪| 国产欧美精品一区aⅴ影院|