亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
在线亚洲+欧美+日本专区| 一区二区三区在线观看动漫| 日本不卡高清视频| 欧美日韩小视频| 美女脱光内衣内裤视频久久网站| 欧美日韩国产天堂| 麻豆91免费观看| 亚洲欧洲国产日本综合| 99精品视频在线播放观看| 一区二区三区精品| 久久精子c满五个校花| 欧美专区在线观看一区| 国产一区二区三区最好精华液| 国产精品福利一区| 久久亚洲春色中文字幕久久久| 91亚洲男人天堂| 色视频一区二区| 成年人网站91| 成人午夜免费电影| 亚洲国产三级在线| 亚洲男人电影天堂| 亚洲日本在线天堂| 国产精品久久久久影院亚瑟| 久久午夜免费电影| 精品久久久久久久一区二区蜜臀| 色婷婷精品大在线视频| 成人午夜在线免费| 成人高清免费观看| 99久久伊人网影院| 成人av电影在线播放| 波多野结衣91| 99久久久国产精品| 欧美中文字幕久久| 91亚洲国产成人精品一区二三| 丰满白嫩尤物一区二区| 成人91在线观看| 国产成人综合视频| www.成人在线| 欧美在线观看视频一区二区 | 亚洲午夜电影在线| 久久精品国产色蜜蜜麻豆| 国产成人免费视频网站| 不卡欧美aaaaa| 7777精品久久久大香线蕉| 久久综合色播五月| 中文一区二区在线观看| 一区二区三区四区高清精品免费观看 | 精品综合免费视频观看| 国产成人在线观看免费网站| 26uuu国产在线精品一区二区| aaa亚洲精品一二三区| 99久久99久久精品免费看蜜桃| 日韩精品一区二区三区四区| 日韩高清不卡一区二区三区| 久久99热狠狠色一区二区| 99久久国产综合精品女不卡| 欧美高清视频一二三区| 国产精品污www在线观看| 日本中文在线一区| fc2成人免费人成在线观看播放| 在线不卡欧美精品一区二区三区| 久久免费午夜影院| 日韩精品亚洲专区| 色悠久久久久综合欧美99| 972aa.com艺术欧美| 国产欧美一区二区三区在线看蜜臀| 亚洲国产中文字幕在线视频综合| 成人高清视频免费观看| 久久婷婷综合激情| av在线综合网| 一区在线观看视频| 成人av在线一区二区三区| 精品国产免费人成电影在线观看四季| 亚洲三级免费观看| 欧美日韩亚洲不卡| 久久精品国产99| 国产精品久久午夜| 久久久久久久久97黄色工厂| 日韩中文欧美在线| 国内精品视频666| 亚洲综合在线电影| 日韩一区在线免费观看| 精品国产91九色蝌蚪| 91色视频在线| 国产一级精品在线| 亚洲国产成人av网| 久久综合国产精品| 91伊人久久大香线蕉| 精品一区二区三区视频在线观看| 欧亚洲嫩模精品一区三区| 国内不卡的二区三区中文字幕| 中文字幕视频一区| 日韩欧美在线123| 欧美亚洲国产怡红院影院| aaa国产一区| 黄色小说综合网站| 亚洲综合丝袜美腿| 国产精品久久午夜| 国产精品视频在线看| 精品国产91久久久久久久妲己| 欧美性受极品xxxx喷水| 91在线视频观看| 国产91精品露脸国语对白| 日本一道高清亚洲日美韩| 亚洲欧美另类久久久精品2019| 精品国产免费视频| 欧美一区二区三区在线看| 不卡一区中文字幕| 91蜜桃视频在线| 99re成人精品视频| 成人性色生活片免费看爆迷你毛片| 免费一区二区视频| 国产一区二区不卡在线| 91香蕉国产在线观看软件| 欧美视频一区二区| 久久精品人人做人人爽97| 亚洲精品福利视频网站| 亚洲欧美日韩国产一区二区三区| 精品久久久久久亚洲综合网| 日韩免费电影一区| 国产精品毛片久久久久久| 中文一区二区在线观看| 亚洲视频在线观看一区| 亚洲激情男女视频| 免费观看在线综合色| 国产麻豆精品在线观看| 色哟哟在线观看一区二区三区| 欧洲亚洲精品在线| 欧美喷水一区二区| 久久色在线视频| 成人欧美一区二区三区| 中文字幕精品—区二区四季| 日韩伦理免费电影| 蜜桃av一区二区在线观看| 国产91色综合久久免费分享| 国产精品亚洲人在线观看| 一本色道**综合亚洲精品蜜桃冫| 欧美一级免费大片| 亚洲色图视频免费播放| 国内精品写真在线观看| 欧美日韩大陆在线| 亚洲色欲色欲www| 久久9热精品视频| 欧美午夜一区二区三区| 国产精品女主播av| 国产麻豆精品在线观看| 日韩欧美综合一区| 亚洲精品免费电影| 91啪九色porn原创视频在线观看| 欧美成人一级视频| 蜜臀av一区二区在线观看| 欧美日韩三级在线| 亚洲激情一二三区| 91麻豆国产香蕉久久精品| 国产亚洲福利社区一区| 中文字幕一区二区5566日韩| 中文字幕中文字幕一区| 北岛玲一区二区三区四区| 国产精品短视频| 92国产精品观看| 中文字幕在线不卡国产视频| 国产精品影视在线| 国产女人18毛片水真多成人如厕 | 91精品国产综合久久精品| 中文字幕一区在线观看视频| 欧美日韩和欧美的一区二区| 欧美精品一区二区三区在线 | 婷婷国产在线综合| 欧美日韩高清在线播放| 免费人成精品欧美精品| 国产精品视频免费| 欧美日韩不卡一区| 韩国av一区二区| 色综合亚洲欧洲| 午夜久久久久久电影| 欧美国产在线观看| 欧美日韩1234| 91美女在线看| 精品一区二区免费看| 亚洲精选在线视频| 久久这里只精品最新地址| 成人一区在线观看| 日韩电影一二三区| 亚洲午夜一区二区| 国产精品久久久久久久岛一牛影视| 欧美午夜宅男影院| av电影天堂一区二区在线| 久久99国内精品| 久久精品久久99精品久久| 无码av免费一区二区三区试看| 中文字幕日本不卡| 精品国产一区久久| 在线影院国内精品| 一区二区在线观看免费视频播放| 日韩一本二本av| 4438x成人网最大色成网站| 欧美亚洲高清一区| 欧美精品乱码久久久久久按摩| 色哟哟一区二区三区| 欧美性猛交xxxxxx富婆|