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

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

?? mathhalf.c

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

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.

*/

#include <stdlib.h>
#include <stdio.h>

#include "sc1200.h"
#include "constant.h"
#include "mathhalf.h"
#include "mathdp31.h"
#include "global.h"
#include "math.h"
#include "macro.h"

/***************************************************************************
 *
 *	 File Name:  mathhalf.c
 *
 *	 Purpose:  Contains functions which implement the primitive
 *	   arithmetic operations.
 *
 *		The functions in this file are listed below.  Some of them are
 *		defined in terms of other basic operations.  One of the
 *		routines, saturate() is static.  This is not a basic
 *		operation, and is not reference outside the scope of this
 *		file.
 *
 *
 *		 abs_s()
 *		 add()
 *		 divide_s()
 *		 extract_h()
 *		 extract_l()
 *		 L_abs()
 *		 L_add()
 *		 L_deposit_h()
 *		 L_deposit_l()
 *		 L_mac()
 *		 L_msu()
 *		 L_mult()
 *		 L_negate()
 *		 L_shift_r()
 *		 L_shl()
 *		 L_shr()
 *		 L_sub()
 *		 mac_r()
 *		 msu_r()
 *		 mult()
 *		 negate()
 *		 norm_l()
 *		 norm_s()
 *		 round()
 *		 saturate()
 *		 shift_r()
 *		 shl()
 *		 shr()
 *		 sub()
 *
 **************************************************************************/

/***************************************************************************
 *
 *	 FUNCTION NAME: saturate
 *
 *	 PURPOSE:
 *
 *	   Limit the 32 bit input to the range of a 16 bit word.
 *
 *
 *	 INPUTS:
 *
 *	   L_var1
 *					   32 bit long signed integer (Longword) whose value
 *					   falls in the range
 *					   0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   swOut
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range
 *					   0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *	 KEYWORDS: saturation, limiting, limit, saturate, 16 bits
 *
 *************************************************************************/

static Shortword saturate(Longword L_var1)
{
	Shortword	swOut;

	if (L_var1 > SW_MAX){
		swOut = SW_MAX;
		inc_saturation();
	} else if (L_var1 < SW_MIN){
		swOut = SW_MIN;
		inc_saturation();
	} else
		swOut = (Shortword) L_var1;              /* automatic type conversion */
	return (swOut);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: divide_s
 *
 *	 PURPOSE:
 *
 *	   Divide var1 by var2.  Note that both must be positive, and
 *	   var1 >= var2.  The output is set to 0 if invalid input is
 *	   provided.
 *
 *	 INPUTS:
 *
 *	   var1
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *	   var2
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= var2 <= 0x0000 7fff.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   swOut
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range
 *					   0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *	 IMPLEMENTATION:
 *
 *	   In the case where var1==var2 the function returns 0x7fff.  The output
 *	   is undefined for invalid inputs.  This implementation returns zero
 *	   and issues a warning via stdio if invalid input is presented.
 *
 *	 KEYWORDS: divide
 *
 *************************************************************************/

Shortword divide_s(Shortword var1, Shortword var2)
{
	Longword	L_div;
	Shortword	swOut;

	if (var1 < 0 || var2 < 0 || var1 > var2){
		/* undefined output for invalid input into divide_s() */
		return ((Shortword) 0);
	}

	if (var1 == var2)
		return ((Shortword) 0x7fff);

	L_div = ((0x00008000L * (Longword) var1) / (Longword) var2);
	swOut = saturate(L_div);
	return(swOut);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: L_deposit_l
 *
 *	 PURPOSE:
 *
 *	   Put the 16 bit input into the 16 LSB's of the output Longword with
 *	   sign extension i.e. the top 16 bits are set to either 0 or 0xffff.
 *
 *	 INPUTS:
 *
 *	   var1
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   L_Out
 *					   32 bit long signed integer (Longword) whose value
 *					   falls in the range
 *					   0xffff 8000 <= L_var1 <= 0x0000 7fff.
 *
 *	 KEYWORDS: deposit, assign
 *
 *************************************************************************/

Longword L_deposit_l(Shortword var1)
{
	Longword	L_Out;

	L_Out = var1;
	return(L_Out);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: L_deposit_h
 *
 *	 PURPOSE:
 *
 *	   Put the 16 bit input into the 16 MSB's of the output Longword.  The
 *	   LS 16 bits are zeroed.
 *
 *	 INPUTS:
 *
 *	   var1
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   L_Out
 *					   32 bit long signed integer (Longword) whose value
 *					   falls in the range
 *					   0x8000 0000 <= L_var1 <= 0x7fff 0000.
 *
 *
 *	 KEYWORDS: deposit, assign, fractional assign
 *
 *************************************************************************/

Longword L_deposit_h(Shortword var1)
{
	Longword	L_var2;

	L_var2 = (Longword) var1 << 16;
	return(L_var2);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: extract_l
 *
 *	 PURPOSE:
 *
 *	   Extract the 16 LS bits of a 32 bit Longword.  Return the 16 bit
 *	   number as a Shortword.  The upper portion of the input Longword
 *	   has no impact whatsoever on the output.
 *
 *	 INPUTS:
 *
 *	   L_var1
 *					   32 bit long signed integer (Longword) whose value
 *					   falls in the range
 *					   0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   swOut
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range
 *					   0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *
 *	 KEYWORDS: extract, assign
 *
 *************************************************************************/

Shortword extract_l(Longword L_var1)
{
	Shortword	var2;

	var2 = (Shortword) (0x0000ffffL & L_var1);
	return(var2);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: extract_h
 *
 *	 PURPOSE:
 *
 *	   Extract the 16 MS bits of a 32 bit Longword.  Return the 16 bit
 *	   number as a Shortword.  This is used as a "truncation" of a fractional
 *	   number.
 *
 *	 INPUTS:
 *
 *	   L_var1
 *					   32 bit long signed integer (Longword) whose value
 *					   falls in the range
 *					   0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   swOut
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range
 *					   0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *	 IMPLEMENTATION:
 *
 *	 KEYWORDS: assign, truncate
 *
 *************************************************************************/

Shortword extract_h(Longword L_var1)
{
	Shortword	var2;

	var2 = (Shortword) (0x0000ffffL & (L_var1 >> 16));
	return(var2);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: round
 *
 *	 PURPOSE:
 *
 *	   Round the 32 bit Longword into a 16 bit shortword with saturation.
 *
 *	 INPUTS:
 *
 *	   L_var1
 *					   32 bit long signed integer (Longword) whose value
 *					   falls in the range
 *					   0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *	 OUTPUTS:
 *
 *	   none
 *
 *	 RETURN VALUE:
 *
 *	   swOut
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range
 *					   0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *	 IMPLEMENTATION:
 *
 *	   Perform a two's complement round on the input Longword with
 *	   saturation.
 *
 *	   This is equivalent to adding 0x0000 8000 to the input.  The
 *	   result may overflow due to the add.	If so, the result is
 *	   saturated.  The 32 bit rounded number is then shifted down
 *	   16 bits and returned as a Shortword.
 *
 *
 *	 KEYWORDS: round
 *
 *************************************************************************/

Shortword round(Longword L_var1)
{
	Longword	L_Prod;
	Shortword	var2;

	L_Prod = L_add(L_var1, 0x00008000L);                         /* round MSP */
	var2 = extract_h(L_Prod);
	return(var2);
}


/***************************************************************************
 *
 *	 FUNCTION NAME: negate
 *
 *	 PURPOSE:
 *
 *	   Negate the 16 bit input. 0x8000's negated value is 0x7fff.
 *
 *	 INPUTS:
 *
 *	   var1
 *					   16 bit short signed integer (Shortword) whose value
 *					   falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *
 *	 OUTPUTS:
 *
 *	   none
 *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人与性动xxxx| 欧美午夜电影一区| 91精品国产乱码久久蜜臀| 国产婷婷一区二区| 五月开心婷婷久久| 99re这里只有精品视频首页| 日韩精品一区在线观看| 一区二区三区精品视频| 成人禁用看黄a在线| 精品国内二区三区| 日韩国产高清在线| 欧美性受xxxx黑人xyx性爽| 欧美激情一区二区三区不卡| 蜜桃精品视频在线| 欧美日韩国产首页| 亚洲精品美国一| 国产sm精品调教视频网站| 日韩一级免费观看| 五月天亚洲婷婷| 欧美在线免费播放| 亚洲精品va在线观看| 成人av集中营| 国产三级欧美三级日产三级99 | 911国产精品| 一区二区三区成人在线视频| 成人教育av在线| 国产视频在线观看一区二区三区| 久久国产精品露脸对白| 8x福利精品第一导航| 亚洲国产精品一区二区久久恐怖片| 色综合一区二区| 中文字幕综合网| 99视频国产精品| 国产精品人妖ts系列视频| 国产99久久久国产精品免费看| 欧美刺激午夜性久久久久久久| 日韩综合小视频| 欧美精品日韩精品| 午夜精彩视频在线观看不卡| 欧美日韩在线播放三区四区| 亚洲电影一区二区三区| 欧美在线一区二区三区| 亚洲一区二区三区四区中文字幕| 91久久免费观看| 亚洲一级电影视频| 欧美日韩国产首页| 日本不卡的三区四区五区| 7777精品伊人久久久大香线蕉超级流畅| 亚洲丶国产丶欧美一区二区三区| 欧美三级三级三级爽爽爽| 亚洲午夜私人影院| 91麻豆精品国产自产在线观看一区| 视频一区二区三区入口| 欧美一区二区三区婷婷月色| 免费xxxx性欧美18vr| 91精品婷婷国产综合久久性色 | 国产精品毛片a∨一区二区三区| 国产精品一二二区| 国产精品久久久久久久久免费丝袜 | 韩国av一区二区三区| 26uuu另类欧美亚洲曰本| 国产乱对白刺激视频不卡| 中文字幕成人网| 91免费看片在线观看| 亚洲一区二区三区在线| 制服丝袜亚洲播放| 狠狠色狠狠色综合日日91app| 久久精品日韩一区二区三区| 成人精品视频一区| 亚洲欧美另类小说视频| 欧美色男人天堂| 久久精品久久久精品美女| 国产性做久久久久久| 91啪亚洲精品| 午夜精品久久久久久不卡8050| 日韩精品一区二区三区在线观看 | 亚洲国产成人av| 精品美女在线播放| www.综合网.com| 亚洲国产精品久久久久婷婷884 | 91精品国产综合久久蜜臀| 久久99蜜桃精品| 国产精品美女久久久久久2018| 91久久一区二区| 久久精品国产成人一区二区三区| 欧美国产日韩亚洲一区| 欧美在线看片a免费观看| 韩国一区二区三区| 亚洲另类在线视频| 日韩欧美第一区| va亚洲va日韩不卡在线观看| 性做久久久久久免费观看欧美| 国产亚洲欧美激情| 欧美中文字幕不卡| 国产米奇在线777精品观看| 亚洲精品国产精华液| 欧美电视剧免费全集观看| 99国产精品久| 激情综合亚洲精品| 亚洲精品美国一| 国产亚洲精久久久久久| 欧美日韩久久一区二区| 国产999精品久久久久久| 亚洲成人一二三| 国产欧美1区2区3区| 欧美日韩国产乱码电影| av一区二区三区| 美美哒免费高清在线观看视频一区二区| 国产精品福利影院| 日韩欧美精品三级| 欧美亚洲日本一区| 国产精品99久久久久久有的能看| 午夜伦欧美伦电影理论片| 国产精品福利一区二区三区| 欧美成人video| 欧美丝袜丝nylons| 北条麻妃一区二区三区| 极品美女销魂一区二区三区免费| 亚洲国产aⅴ成人精品无吗| 欧美激情中文字幕| 欧美大片在线观看一区二区| 欧美性猛交一区二区三区精品| 国产成人av影院| 日本女优在线视频一区二区| 亚洲精品国产成人久久av盗摄| 久久精子c满五个校花| 欧美美女网站色| 色av成人天堂桃色av| 成人看片黄a免费看在线| 精品一区二区三区不卡 | 亚洲人一二三区| 国产欧美一区二区精品婷婷| 日韩一区二区在线免费观看| 欧美视频日韩视频在线观看| 成人av集中营| 国产成人精品www牛牛影视| 久久国产精品免费| 日韩av网站在线观看| 亚洲第一在线综合网站| 樱花草国产18久久久久| 国产精品久久网站| 国产日本欧洲亚洲| 精品国产凹凸成av人导航| 欧美一区二区在线不卡| 欧美日精品一区视频| 色猫猫国产区一区二在线视频| 成人精品免费看| 国产高清久久久久| 国产一区二区网址| 国产精品夜夜嗨| 国产麻豆精品在线观看| 久久99国产精品久久99| 麻豆国产精品官网| 美女在线观看视频一区二区| 麻豆91精品91久久久的内涵| 青青草91视频| 老司机免费视频一区二区| 免费av网站大全久久| 免费观看久久久4p| 青青草精品视频| 秋霞av亚洲一区二区三| 美日韩一级片在线观看| 久久疯狂做爰流白浆xx| 久久成人久久爱| 国产在线精品一区二区不卡了| 精品系列免费在线观看| 韩国女主播成人在线观看| 国产九色精品成人porny| 国产成人精品亚洲777人妖 | 国产一区二区导航在线播放| 精品无码三级在线观看视频 | 亚洲一级不卡视频| 偷拍日韩校园综合在线| 青青草97国产精品免费观看无弹窗版| 免费成人在线观看视频| 激情综合色播激情啊| 处破女av一区二区| 99国产一区二区三精品乱码| 91碰在线视频| 欧美午夜一区二区| 91精品国产黑色紧身裤美女| 在线不卡欧美精品一区二区三区| 欧美一级xxx| 国产丝袜欧美中文另类| 亚洲视频香蕉人妖| 午夜日韩在线观看| 精品一区二区三区视频| 成人午夜电影小说| 欧美亚洲动漫另类| 日韩一卡二卡三卡国产欧美| 久久影院电视剧免费观看| 国产精品色在线| 一区二区三区精品视频| 蜜臀久久久久久久| 懂色av噜噜一区二区三区av| 一本一本久久a久久精品综合麻豆| 欧美色视频在线| 国产亚洲精品资源在线26u| 亚洲人精品一区| 免费在线观看一区|