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

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

?? mat_lib.c

?? MELPe 1200 bps, fixed point
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*

2.4 kbps MELP Proposed Federal Standard speech coder

Fixed-point C code, version 1.0

Copyright (c) 1998, Texas Instruments, Inc.

Texas Instruments has intellectual property rights on the MELP
algorithm.	The Texas Instruments contact for licensing issues for
commercial and non-government use is William Gordon, Director,
Government Contracts, Texas Instruments Incorporated, Semiconductor
Group (phone 972 480 7442).

The fixed-point version of the voice codec Mixed Excitation Linear
Prediction (MELP) is based on specifications on the C-language software
simulation contained in GSM 06.06 which is protected by copyright and
is the property of the European Telecommunications Standards Institute
(ETSI). This standard is available from the ETSI publication office
tel. +33 (0)4 92 94 42 58. ETSI has granted a license to United States
Department of Defense to use the C-language software simulation contained
in GSM 06.06 for the purposes of the development of a fixed-point
version of the voice codec Mixed Excitation Linear Prediction (MELP).
Requests for authorization to make other use of the GSM 06.06 or
otherwise distribute or modify them need to be addressed to the ETSI
Secretariat fax: +33 493 65 47 16.

*/

/* mat_lib.c: Matrix and vector manipulation library                          */

#include <stdlib.h>
#include <assert.h>

#include "sc1200.h"
#include "mathhalf.h"
#include "mat_lib.h"

/***************************************************************************
 *
 *	 FUNCTION NAME: v_add
 *
 *	 PURPOSE:
 *
 *	   Perform the addition of the two 16 bit input vector with
 *	   saturation.
 *
 *	 INPUTS:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) vector whose
 *					   values fall in the range
 *					   0xffff 8000 <= vec1 <= 0x0000 7fff.
 *
 *	   vec2 		   16 bit short signed integer (Shortword) vector whose
 *					   values falls in the range
 *					   0xffff 8000 <= vec2 <= 0x0000 7fff.
 *
 *	   n			   size of input vectors.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) vector whose
 *					   values fall in the range
 *					   0xffff 8000 <= vec1[] <= 0x0000 7fff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Perform the addition of the two 16 bit input vectors with
 *	   saturation.
 *
 *	   vec1 = vec1 + vec2
 *
 *	   vec1[] is set to 0x7fff if the operation results in an
 *	   overflow.  vec1[] is set to 0x8000 if the operation results
 *	   in an underflow.
 *
 *	 KEYWORDS: add, addition
 *
 *************************************************************************/

Shortword *v_add(Shortword vec1[], const Shortword vec2[], Shortword n)
{
	register Shortword	i;


	for (i = 0; i < n; i++){
		*vec1 = add(*vec1, *vec2);
		vec1 ++;
		vec2 ++;
	}
	return(vec1 - n);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: L_v_add
 *
 *	 PURPOSE:
 *
 *	   Perform the addition of the two 32 bit input vector with
 *	   saturation.
 *
 *	 INPUTS:
 *
 *	   L_vec1		   32 bit long signed integer (Longword) vector whose
 *					   values fall in the range
 *					   0x8000 0000 <= L_vec1 <= 0x7fff ffff.
 *
 *	   L_vec2		   32 bit long signed integer (Longword) vector whose
 *					   values falls in the range
 *					   0x8000 0000 <= L_vec2 <= 0x7fff ffff.
 *
 *	   n			   size of input vectors.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   L_vec1		   32 bit long signed integer (Longword) vector whose
 *					   values fall in the range
 *					   0x8000 0000 <= L_vec1[] <= 0x7fff ffff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Perform the addition of the two 32 bit input vectors with
 *	   saturation.
 *
 *	   L_vec1 = L_vec1 + L_vec2
 *
 *	   L_vec1[] is set to 0x7fff ffff if the operation results in an
 *	   overflow.  L_vec1[] is set to 0x8000 0000 if the operation results
 *	   in an underflow.
 *
 *	 KEYWORDS: add, addition
 *
 *************************************************************************/

Longword *L_v_add(Longword L_vec1[], Longword L_vec2[], Shortword n)
{
	register Shortword	i;


	for (i = 0; i < n; i++){
		*L_vec1 = L_add(*L_vec1, *L_vec2);
		L_vec1 ++;
		L_vec2 ++;
	}
	return(L_vec1 - n);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: v_equ
 *
 *	 PURPOSE:
 *
 *	   Copy the contents of one 16 bit input vector to another
 *
 *	 INPUTS:
 *
 *	   vec2 		   16 bit short signed integer (Shortword) vector whose
 *					   values falls in the range
 *					   0xffff 8000 <= vec2 <= 0x0000 7fff.
 *
 *	   n			   size of input vector
 *
 *	 OUTPUTS:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) vector whose
 *					   values fall in the range
 *					   0xffff 8000 <= vec1 <= 0x0000 7fff.
 *
 *	 RETURN VALUE:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) vector whose
 *					   values fall in the range
 *					   0xffff 8000 <= vec1[] <= 0x0000 7fff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Copy the contents of one 16 bit input vector to another
 *
 *	   vec1 = vec2
 *
 *	 KEYWORDS: equate, copy
 *
 *************************************************************************/
Shortword *v_equ(Shortword vec1[], const Shortword vec2[], Shortword n)
{
	register Shortword	i;


	for (i = 0; i < n; i++){
		*vec1 = *vec2;
		vec1 ++;
		vec2 ++;
	}
	return(vec1 - n);
}

/***************************************************************************
 *
 *	 FUNCTION NAME: v_equ_shr
 *
 *	 PURPOSE:
 *
 *	   Copy the contents of one 16 bit input vector to another with shift
 *
 *	 INPUTS:
 *
 *	   vec2 		   16 bit short signed integer (Shortword) vector whose
 *					   values falls in the range
 *					   0xffff 8000 <= vec2 <= 0x0000 7fff.
 *	   scale		   right shift factor
 *	   n			   size of input vector
 *
 *	 OUTPUTS:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) vector whose
 *					   values fall in the range
 *					   0xffff 8000 <= vec1 <= 0x0000 7fff.
 *
 *	 RETURN VALUE:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) vector whose
 *					   values fall in the range
 *					   0xffff 8000 <= vec1[] <= 0x0000 7fff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Copy the contents of one 16 bit input vector to another with shift
 *
 *	   vec1 = vec2>>scale
 *
 *	 KEYWORDS: equate, copy
 *
 *************************************************************************/

Shortword *v_equ_shr(Shortword vec1[], Shortword vec2[], Shortword scale,
					 Shortword n)
{
	register Shortword	i;


	for (i = 0; i < n; i++){
		*vec1 = shr(*vec2, scale);
		vec1 ++;
		vec2 ++;
	}
	return(vec1 - n);
}

/***************************************************************************
 *
 *	 FUNCTION NAME: L_v_equ
 *
 *	 PURPOSE:
 *
 *	   Copy the contents of one 32 bit input vector to another
 *
 *	 INPUTS:
 *
 *	   L_vec2		   32 bit long signed integer (Longword) vector whose
 *					   values falls in the range
 *					   0x8000 0000 <= L_vec2 <= 0x7fff ffff.
 *
 *	   n			   size of input vector
 *
 *	 OUTPUTS:
 *
 *	   L_vec1		   32 bit long signed integer (Longword) vector whose
 *					   values fall in the range
 *					   0x8000 0000 <= L_vec1 <= 0x7fff ffff.
 *
 *	 RETURN VALUE:
 *
 *	   L_vec1		   32 bit long signed integer (Longword) vector whose
 *					   values fall in the range
 *					   0x8000 0000 <= L_vec1[] <= 0x7fff ffff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Copy the contents of one 32 bit input vector to another
 *
 *	   vec1 = vec2
 *
 *	 KEYWORDS: equate, copy
 *
 *************************************************************************/

Longword *L_v_equ(Longword L_vec1[], Longword L_vec2[], Shortword n)
{
	register Shortword	i;


	for (i = 0; i < n; i++){
		*L_vec1 = *L_vec2;
		L_vec1 ++;
		L_vec2 ++;
	}
	return(L_vec1 - n);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: v_inner
 *
 *	 PURPOSE:
 *
 *	   Compute the inner product of two 16 bit input vectors
 *	   with saturation and truncation.	Output is a 16 bit number.
 *
 *	 INPUTS:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= vec1 <= 0x0000 7fff.
 *
 *	   vec2 		   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= vec2 <= 0x0000 7fff.
 *
 *	   n			   size of input vectors
 *
 *	   qvec1		   Q value of vec1
 *
 *	   qvec2		   Q value of vec2
 *
 *	   qout 		   Q value of output
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   innerprod	   16 bit short signed integer (Shortword) whose value
 *					   falls in the range
 *					   0xffff 8000 <= innerprod <= 0x0000 7fff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Compute the inner product of the two 16 bit input vectors.
 *	   The output is a 16 bit number.
 *
 *	 KEYWORDS: inner product
 *
 *************************************************************************/

Shortword v_inner(Shortword vec1[], Shortword vec2[], Shortword n,
				  Shortword qvec1, Shortword qvec2, Shortword qout)
{
	register Shortword	i;
	Shortword	innerprod;
	Longword	L_temp;


	L_temp = 0;
	for (i = 0; i < n; i++){
		L_temp = L_mac(L_temp, *vec1, *vec2);
		vec1 ++;
		vec2 ++;
	}

	/* (qvec1 + qvec2 + 1) is the Q value from L_mult(vec1[i], vec2[i]), and  */
	/* also that for L_temp.  To make it Q qout, L_shl() it by                */
	/* (qout - (qvec1 + qvec2 + 1)).  To return only a Shortword, use         */
	/* extract_h() after L_shl() by 16.                                       */

	innerprod = extract_h(L_shl(L_temp,
								(Shortword) (qout - ((qvec1 + qvec2 + 1) -
											 16))));
	return(innerprod);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: L_v_inner
 *
 *	 PURPOSE:
 *
 *	   Compute the inner product of two 16 bit input vectors
 *	   with saturation and truncation.	Output is a 32 bit number.
 *
 *	 INPUTS:
 *
 *	   vec1 		   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= vec1 <= 0x0000 7fff.
 *
 *	   vec2 		   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= vec2 <= 0x0000 7fff.
 *
 *	   n			   size of input vectors
 *
 *	   qvec1		   Q value of vec1
 *
 *	   qvec2		   Q value of vec2
 *
 *	   qout 		   Q value of output
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   L_innerprod	   32 bit long signed integer (Longword) whose value
 *					   falls in the range
 *					   0x8000 0000 <= L_innerprod <= 0x7fff ffff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Compute the inner product of the two 16 bit vectors
 *	   The output is a 32 bit number.
 *
 *	 KEYWORDS: inner product
 *
 *************************************************************************/

Longword L_v_inner(Shortword vec1[], Shortword vec2[], Shortword n,
				   Shortword qvec1, Shortword qvec2, Shortword qout)
{
	register Shortword	i;
	Shortword	shift;
	Longword	L_innerprod, L_temp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产aⅴ精品一区二区三区色成熟| 亚洲va韩国va欧美va| 欧美在线视频全部完| 久久97超碰国产精品超碰| 椎名由奈av一区二区三区| 一区二区三区在线观看视频| 免费成人在线观看| 91浏览器入口在线观看| 欧美日韩中文字幕一区| 久久 天天综合| 日韩一区二区在线观看视频播放| 96av麻豆蜜桃一区二区| 激情欧美一区二区三区在线观看| 亚洲国产欧美一区二区三区丁香婷| 日本一区二区三区在线观看| 337p亚洲精品色噜噜| 91成人免费网站| 91色婷婷久久久久合中文| 国产资源在线一区| 欧美一二三四在线| 一区二区三区四区高清精品免费观看| 成人国产精品免费| 日韩一级完整毛片| av午夜精品一区二区三区| 国产精品456露脸| 经典三级在线一区| 美国精品在线观看| 日韩精品电影在线| 午夜精品爽啪视频| 亚洲与欧洲av电影| 亚洲一线二线三线久久久| 亚洲精品久久久蜜桃| 136国产福利精品导航| 国产精品久久久久久福利一牛影视 | 国产三级欧美三级日产三级99| 欧美一区三区四区| 91精品国产综合久久久久久漫画| 精品视频在线视频| 欧美精品v国产精品v日韩精品| 欧美性猛片aaaaaaa做受| 欧美色电影在线| 欧美精品一卡二卡| 91精品欧美福利在线观看| 3atv在线一区二区三区| 欧美一区二区观看视频| 日韩精品一区二区三区在线播放| 欧美一二三四区在线| 日韩欧美电影一二三| 欧美精品一区二区在线观看| 精品欧美一区二区在线观看| 欧美精品一区二区高清在线观看| 欧美哺乳videos| 成人午夜视频网站| 97se亚洲国产综合自在线观| 91成人国产精品| 在线不卡a资源高清| 国产成人在线视频网站| av电影天堂一区二区在线| 在线精品视频小说1| 欧美一区二区视频观看视频| 精品99久久久久久| 国产精品久久久久毛片软件| 亚洲一区二区三区三| 毛片av一区二区| 国产不卡视频在线播放| 91免费国产视频网站| 欧美日韩一级黄| 久久综合九色综合欧美就去吻 | 国产·精品毛片| 久久久美女艺术照精彩视频福利播放| 激情综合网天天干| 一区二区三区中文字幕精品精品 | 在线视频你懂得一区| 精品一区二区在线观看| 亚洲精品中文字幕在线观看| 欧美怡红院视频| 91九色02白丝porn| 亚洲精品一区二区三区福利| 中文字幕日韩一区| 奇米色777欧美一区二区| 亚洲最新视频在线播放| 欧美日韩三级一区二区| 成人午夜碰碰视频| 蜜桃在线一区二区三区| 亚洲免费在线看| 国产亚洲综合av| 91精品国产一区二区三区香蕉| 高清不卡在线观看av| 亚洲成av人片一区二区梦乃| 中文字幕一区二区三区色视频| 精品久久久网站| 在线播放亚洲一区| 91久久精品国产91性色tv| 亚洲成人免费电影| 久久se精品一区二区| 一本一本久久a久久精品综合麻豆| 日韩三级精品电影久久久| 亚洲人123区| 国产白丝精品91爽爽久久| 欧美喷潮久久久xxxxx| 中文字幕欧美区| 久久99最新地址| 欧美理论片在线| 夜夜爽夜夜爽精品视频| 懂色av一区二区三区免费观看| 在线电影欧美成精品| 亚洲综合av网| av在线一区二区| 久久久久久久性| 欧美aⅴ一区二区三区视频| 91免费在线看| 国产精品沙发午睡系列990531| 美国十次综合导航| 欧美日韩性生活| 亚洲最新在线观看| 色综合久久九月婷婷色综合| 国产精品久久久久影院色老大| 免费成人在线播放| 91麻豆精品国产无毒不卡在线观看| 亚洲欧美日韩国产成人精品影院| 国产成人av一区二区| 欧美videos大乳护士334| 婷婷综合在线观看| 欧美亚州韩日在线看免费版国语版| 国产精品免费丝袜| 成人听书哪个软件好| 国产女人aaa级久久久级 | 国产精品免费视频观看| 国产成人综合自拍| 日韩vs国产vs欧美| 久久亚区不卡日本| 久久精品噜噜噜成人av农村| 精品国产乱码久久久久久图片| 久久成人麻豆午夜电影| 国产精品三级电影| 色播五月激情综合网| 精品嫩草影院久久| 国产精品一区二区在线观看不卡| 久久九九99视频| 欧美一区二区二区| 亚洲国产精品久久人人爱蜜臀| 国产精品亚洲а∨天堂免在线| 精品国产人成亚洲区| 精品午夜久久福利影院| 精品国产欧美一区二区| 激情文学综合网| 国产日本亚洲高清| 成人av电影免费在线播放| 亚洲美女一区二区三区| 欧美丝袜丝交足nylons| 日韩黄色在线观看| 欧美成人video| 国产乱人伦精品一区二区在线观看| 久久久久久影视| 成人涩涩免费视频| 亚洲免费毛片网站| 欧美日韩一区二区三区免费看| 日韩成人dvd| 久久久三级国产网站| 91啪九色porn原创视频在线观看| 亚洲国产成人av网| 精品国产一区二区三区久久影院| 成人免费av资源| 欧美一区二区三区在线观看视频| 奇米影视在线99精品| 欧美韩日一区二区三区| 欧美最猛性xxxxx直播| 秋霞午夜鲁丝一区二区老狼| 久久精品男人天堂av| 色94色欧美sute亚洲线路二 | 午夜私人影院久久久久| 懂色av一区二区在线播放| 日韩一级欧美一级| 亚洲午夜电影网| 亚洲一区二区三区在线播放| 在线观看日韩av先锋影音电影院| 精品久久久久久久久久久久久久久 | 不卡一卡二卡三乱码免费网站| 一区二区三区在线观看视频| 欧美成人精品福利| 北条麻妃一区二区三区| 五月天欧美精品| 中文字幕精品一区二区三区精品| 欧美日韩综合一区| 欧美日韩精品一区二区| 一区二区三区四区蜜桃| 色88888久久久久久影院野外 | 亚洲欧美日韩中文播放| 欧美精品v日韩精品v韩国精品v| 国产成人丝袜美腿| 婷婷丁香久久五月婷婷| 国产精品久久久久精k8| 欧美xxxxx裸体时装秀| 在线免费观看视频一区| 国产精品99久久不卡二区| 日韩vs国产vs欧美| 亚洲影视资源网| 中文字幕一区二| 久久久久9999亚洲精品| 欧美一区二区精品久久911|