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

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

?? sc1200.c

?? MELPe 1200 bps, fixed point
?? C
字號:
/* ================================================================== */
/*                                                                    */ 
/*    Microsoft Speech coder     ANSI-C Source Code                   */
/*    SC1200 1200 bps speech coder                                    */
/*    Fixed Point Implementation      Version 7.0                     */
/*    Copyright (C) 2000, Microsoft Corp.                             */
/*    All rights reserved.                                            */
/*                                                                    */ 
/* ================================================================== */

/* ========================================= */
/* melp.c: Mixed Excitation LPC speech coder */
/* ========================================= */

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

#include "sc1200.h"
#include "mat_lib.h"
#include "global.h"
#include "macro.h"
#include "mathhalf.h"
#include "dsp_sub.h"
#include "melp_sub.h"
#include "constant.h"
#include "math_lib.h"
#include "math.h"
#include "transcode.h"

#if NPP
#include "npp.h"
#endif

#define X05_Q7				64         /* 0.5 * (1 << 7) */
#define THREE_Q7			384        /* 3 * (1 << 7) */

/* ====== External memory ====== */

Shortword	mode;
Shortword   chwordsize;

/* ========== Static definations ========== */

#define PROGRAM_NAME			"SC1200 1200 bps speech coder"
#define PROGRAM_VERSION			"Version 7 / 42 Bits"
#define PROGRAM_DATE			"10/25/2000"

/* ========== Static Variables ========== */

char in_name[100], out_name[100];

/* ========== Local Private Prototypes ========== */

static void		parseCommandLine(int argc, char *argv[]);
static void		printHelpMessage(char *argv[]);

/****************************************************************************
**
** Function:        main
**
** Description:     The main function of the speech coder
**
** Arguments:
**
**  int     argc    ---- number of command line parameters
**  char    *argv[] ---- command line parameters
**
** Return value:    None
**
*****************************************************************************/
int main(int argc, char *argv[])
{
	Longword	length;
	Shortword	speech_in[BLOCK], speech_out[BLOCK];
	Shortword	bitBufSize, bitBufSize12, bitBufSize24;
                                          /* size of the bitstream buffer */
	BOOLEAN		eof_reached = FALSE;
	FILE	*fp_in, *fp_out;

	/* ====== Get input parameters from command line ====== */
	parseCommandLine(argc, argv);

	/* ====== Open input, output, and parameter files ====== */
	if ((fp_in = fopen(in_name,"rb")) == NULL){
		fprintf(stderr, "  ERROR: cannot read file %s.\n", in_name);
		exit(1);
	}
	if ((fp_out = fopen(out_name,"wb")) == NULL){
		fprintf(stderr, "  ERROR: cannot write file %s.\n", out_name);
		exit(1);
	}

	/* ====== Initialize MELP analysis and synthesis ====== */
	if (rate == RATE2400)
		frameSize = (Shortword) FRAME;
	else
		frameSize = (Shortword) BLOCK;
	/* Computing bit=Num = rate * frameSize / FSAMP.  Note that bitNum        */
	/* computes the number of bytes written to the channel and it has to be   */
	/* exact.  We first carry out the division and then have the multiplica-  */
	/* tion with rounding.                                                    */
    bitNum12 = 81;
    bitNum24 = 54;
    if( chwordsize == 8 ){
        // packing the bitstream
        bitBufSize12 = 11;
        bitBufSize24 = 7;
    }else if( chwordsize == 6 ){
        bitBufSize12 = 14;
        bitBufSize24 = 9;
    }else{
        fprintf(stderr,"Channel word size is wrong!\n");
        exit(-1);
    }

    if (rate == RATE2400){
		frameSize = FRAME;
		bitBufSize = bitBufSize24;
	} else {
		frameSize = BLOCK;
		bitBufSize = bitBufSize12;
	}

	if (mode != SYNTHESIS)
		melp_ana_init();
	if (mode != ANALYSIS)
		melp_syn_init();


	/* ====== Run MELP coder on input signal ====== */

	frame_count = 0;
	eof_reached = FALSE;
	while (!eof_reached){
		fprintf(stderr, "Frame = %ld\r", frame_count);

		if (mode == DOWN_TRANS){
			/* --- Read 2.4 channel input --- */
            if( chwordsize == 8 ){
			    length = fread(chbuf, sizeof(unsigned char),
						   (bitBufSize24*NF), fp_in);
            }else{
    			int i, readNum;
				unsigned int bitData;
				for(i = 0; i < bitBufSize24*NF; i++){
					readNum = fread(&bitData,sizeof(unsigned int),1,fp_in);
					if( readNum != 1 )	break;
					chbuf[i] = (unsigned char)bitData;
				}	
				length = i;		
            }

			if (length < (bitBufSize24*NF)){
				eof_reached = TRUE;
				break;
			}
			transcode_down();
			/* --- Write 1.2 channel output --- */
            if( chwordsize == 8 ){
			    fwrite(chbuf, sizeof(unsigned char), bitBufSize12, fp_out);
            }else{
				int i;
				unsigned int bitData;
				for(i = 0; i < bitBufSize12; i++){
					bitData = (unsigned int)(chbuf[i]);
					fwrite(&bitData, sizeof(unsigned int), 1, fp_out);
				}
			}
		} else if (mode == UP_TRANS){
			/* --- Read 1.2 channel input --- */
            if( chwordsize == 8 ){
			    length = fread(chbuf, sizeof(unsigned char), bitBufSize12, fp_in);
            }else{
    			int i, readNum;
				unsigned int bitData;
				for(i = 0; i < bitBufSize12; i++){
					readNum = fread(&bitData,sizeof(unsigned int),1,fp_in);
					if( readNum != 1 )	break;
					chbuf[i] = (unsigned char)bitData;
				}	
				length = i;		
            }

			if (length < bitBufSize12){
				eof_reached = TRUE;
				break;
			}
			transcode_up();
			/* --- Write 2.4 channel output --- */
            if( chwordsize == 8 ){
			    fwrite(chbuf, sizeof(unsigned char), (bitBufSize24*NF), fp_out);
            }else{
				int i;
				unsigned int bitData;
				for(i = 0; i < bitBufSize24*NF; i++){
					bitData = (unsigned int)(chbuf[i]);
					fwrite(&bitData, sizeof(unsigned int), 1, fp_out);
				}
			}

		} else {
			/* Perform MELP analysis */
			if (mode != SYNTHESIS){
				/* read input speech */
				length = readbl(speech_in, fp_in, frameSize);
				if (length < frameSize){
					v_zap(&speech_in[length], (Shortword) (FRAME - length));
					eof_reached = TRUE;
				}

				/* ---- Noise Pre-Processor ---- */
#if NPP
				if (rate == RATE1200){
					npp(speech_in, speech_in);
					npp(&(speech_in[FRAME]), &(speech_in[FRAME]));
					npp(&(speech_in[2*FRAME]), &(speech_in[2*FRAME]));
				} else
					npp(speech_in, speech_in);
#endif
				analysis(speech_in, melp_par);

				/* ---- Write channel output if needed ---- */
                if (mode == ANALYSIS){
                    if( chwordsize == 8 ){
					    fwrite(chbuf, sizeof(unsigned char), bitBufSize, fp_out);
                    }else{
        				int i;
		        		unsigned int bitData;
				        for(i = 0; i < bitBufSize; i++){
					        bitData = (unsigned int)(chbuf[i]);
					        fwrite(&bitData, sizeof(unsigned int), 1, fp_out);
				        }
			        }
                }
			}

			/* ====== Perform MELP synthesis (skip first frame) ====== */
			if (mode != ANALYSIS){

				/* Read channel input if needed */
				if (mode == SYNTHESIS){
                    if( chwordsize == 8 ){
					    length = fread(chbuf, sizeof(unsigned char), bitBufSize,
						    		   fp_in);
                    }else{
    		        	int i, readNum;
        				unsigned int bitData;
		        		for(i = 0; i < bitBufSize; i++){
				        	readNum = fread(&bitData,sizeof(unsigned int),1,fp_in);
        					if( readNum != 1 )	break;
		        			chbuf[i] = (unsigned char)bitData;
				        }	
        				length = i;		
                    }
					if (length < bitBufSize){
						eof_reached = TRUE;
						break;
					}
				}
				synthesis(melp_par, speech_out);
				writebl(speech_out, fp_out, frameSize);
			}
		}
		frame_count ++;
	}

	fclose(fp_in);
	fclose(fp_out);
	fprintf(stderr, "\n\n");

	return(0);
}


/****************************************************************************
**
** Function:        parseCommandLine
**
** Description:     Translate command line parameters
**
** Arguments:
**
**  int     argc    ---- number of command line parameters
**  char    *argv[] ---- command line parameters
**
** Return value:    None
**
*****************************************************************************/
static void		parseCommandLine(int argc, char *argv[])
{
	register Shortword	i;
	BOOLEAN		error_flag = FALSE;

	if (argc < 2)
		error_flag = TRUE;

	/* Setting default values. */
	mode = ANA_SYN;
	rate = RATE2400;
    chwordsize = 8;         // this is for packed bitstream
	in_name[0] = '\0';
	out_name[0] = '\0';

	for (i = 1; i < argc; i++){
		if ((strncmp(argv[i], "-h", 2 ) == 0) ||
			(strncmp(argv[i], "-help", 5) == 0)){
			printHelpMessage(argv);
			exit(0);
		} else if ((strncmp(argv[i], "-a", 2)) == 0)
			mode = ANALYSIS;
		else if ((strncmp(argv[i], "-s", 2)) == 0)
			mode = SYNTHESIS;
		else if ((strncmp(argv[i], "-l", 2)) == 0)
			rate = RATE1200;
		else if ((strncmp(argv[i], "-u", 2)) == 0)
			mode = UP_TRANS;
		else if ((strncmp(argv[i], "-d", 2)) == 0)
			mode = DOWN_TRANS;
		else if ((strncmp(argv[i], "-i", 2)) == 0){
			i++;
			if (i < argc)
				strcpy(in_name, argv[i]);
			else
				error_flag = TRUE;
		} else if ((strncmp(argv[i], "-o", 2)) == 0){
			i++;
			if (i < argc)
				strcpy(out_name, argv[i]);
			else
				error_flag = TRUE;
		} else if ((strncmp(argv[i], "-p", 2)) == 0){
            // for backword compatibility with 2.4 kbps MELP ref. coder
			chwordsize = 6;
		} else
			error_flag = TRUE;
	}

	if ((in_name[0] == '\0') || (out_name[0] == '\0'))
		error_flag = TRUE;

	if (error_flag){
		printHelpMessage(argv);
		exit(1);
	}

	fprintf(stderr, "\n\n\t%s %s, %s\n\n", PROGRAM_NAME, PROGRAM_VERSION,
			PROGRAM_DATE);
	switch (mode){
	case ANA_SYN:
	case ANALYSIS:
	case SYNTHESIS:
		if (rate == RATE2400)
			fprintf(stderr, " ---- 2.4kbps mode.\n");
		else
			fprintf(stderr, " ---- 1.2kbps mode.\n");
		break;
	}
	switch (mode){
	case ANA_SYN:
		fprintf(stderr, " ---- Analysis and Synthesis.\n"); break;
	case ANALYSIS:
		fprintf(stderr, " ---- Analysis only.\n"); break;
	case SYNTHESIS:
		fprintf(stderr, " ---- Synthesis only.\n"); break;
	case UP_TRANS:
		fprintf(stderr, " ---- Transcoding from 1.2kbps to 2.4kbps.\n"); break;
	case DOWN_TRANS:
		fprintf(stderr, " ---- Transcoding from 2.4kbps to 1.2kbps.\n"); break;
	}

	fprintf(stderr, " ---- input from %s.\n", in_name);
	fprintf(stderr, " ---- output to %s.\n", out_name);
}


/****************************************************************************
**
** Function:        printHelpMessage
**
** Description:     Print Command Line Usage
**
** Arguments:
**
** Return value:    None
**
*****************************************************************************/
static void		printHelpMessage(char *argv[])
{
	fprintf(stderr, "\n\n\t%s %s, %s\n\n", PROGRAM_NAME, PROGRAM_VERSION,
			PROGRAM_DATE);
	fprintf(stdout, "Usage:\n");
	fprintf(stdout, "\t%s [-l] [-asudp] -i infile -o outfile\n", argv[0]);
	fprintf(stdout, "\t\tdefault: Analysis/Synthesis at 2.4kbps\n");
	fprintf(stdout, "\t\t-a --analysis\tAnalysis only\n");
	fprintf(stdout, "\t\t-s --synthesis\tSynthesis only\n");
	fprintf(stdout, "\t\t-l --low rate\t1.2kbps coding\n\n");
	fprintf(stdout, "\t\t-u --transcoder from 1.2kbps to 2.4kpbs\n");
	fprintf(stdout, "\t\t-d --transcoder from 2.4kbps to 1.2kbps\n");
    fprintf(stdout, "\t\t-p --using unpacked bitstream for backward compatibility\n\n");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆精品视频| 99国产精品久久久久| 不卡电影免费在线播放一区| 欧美疯狂做受xxxx富婆| 欧美精品一区二区三区蜜臀| 亚洲欧美色综合| 中文字幕第一区| 九色综合国产一区二区三区| 在线视频你懂得一区| 久久久亚洲精品一区二区三区 | 亚洲一区在线观看免费| 国产在线播放一区二区三区| 91福利资源站| 成人免费视频在线观看| 久久99久久99| 日韩一级片在线播放| 亚洲一区欧美一区| 91蜜桃传媒精品久久久一区二区| wwwwxxxxx欧美| 久久99精品国产.久久久久久| 欧美日韩一区二区欧美激情| 色综合久久88色综合天天6| 久久久久久毛片| 久久国产精品色婷婷| 欧美一级专区免费大片| 午夜精品久久久久久久久久久| 色婷婷精品久久二区二区蜜臀av| 国产精品网站在线观看| 国产一区二区免费看| 精品欧美一区二区久久 | 国产麻豆成人传媒免费观看| 精品久久人人做人人爱| 麻豆专区一区二区三区四区五区| 久久激五月天综合精品| 91精品在线免费| 男女男精品视频| 欧美va天堂va视频va在线| 久久电影网站中文字幕| 日韩免费视频线观看| 黄色精品一二区| 久久久久久久久蜜桃| 国产成人综合亚洲网站| 欧美激情一区二区| 欧美日韩另类一区| 五月婷婷久久丁香| 日韩三级免费观看| 精品国产第一区二区三区观看体验| 蜜臀av性久久久久蜜臀aⅴ流畅| 91精品国产综合久久香蕉的特点 | 大胆亚洲人体视频| 亚洲欧洲性图库| 色婷婷综合久久久| 亚洲一区二区3| 欧美成人在线直播| 夫妻av一区二区| 一区二区不卡在线播放 | 国产精品污www在线观看| av不卡免费电影| 午夜精品久久久久| www国产精品av| 91麻豆成人久久精品二区三区| 亚洲一区视频在线| www激情久久| 色偷偷88欧美精品久久久| 日韩av成人高清| 国产精品乱码人人做人人爱| 91福利国产精品| 国产在线播放一区三区四| 亚洲精品高清视频在线观看| 91精品国产高清一区二区三区蜜臀| 国产二区国产一区在线观看| 亚洲综合在线电影| 久久人人97超碰com| 91久久香蕉国产日韩欧美9色| 日本亚洲视频在线| 亚洲男帅同性gay1069| 日韩一区二区三区视频| 91香蕉国产在线观看软件| 另类调教123区| 一区二区免费在线| 欧美国产精品一区二区三区| 欧美男男青年gay1069videost| 国产精品系列在线播放| 丝袜诱惑亚洲看片| 中文字幕中文在线不卡住| 日韩片之四级片| 91国内精品野花午夜精品 | 麻豆极品一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 日本不卡一二三| 一区二区三区成人| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美人与z0zoxxxx视频| av动漫一区二区| 国产69精品一区二区亚洲孕妇| 蜜臀av性久久久久蜜臀aⅴ流畅 | 香蕉影视欧美成人| ...av二区三区久久精品| 久久精品一区二区三区四区| 韩国av一区二区三区四区| 亚洲成人精品一区二区| 洋洋成人永久网站入口| 亚洲日本中文字幕区| 国产精品电影一区二区| 久久久久久久国产精品影院| 欧美疯狂性受xxxxx喷水图片| 欧美三日本三级三级在线播放| 97精品电影院| 99r国产精品| 99久久精品99国产精品| 成人av一区二区三区| 亚洲欧洲日韩女同| 国产精品成人免费精品自在线观看| 久久中文娱乐网| 久久久五月婷婷| 日本一区二区高清| 中文字幕不卡三区| 国产精品久久午夜夜伦鲁鲁| 日本一区二区视频在线观看| 国产欧美一二三区| 国产精品乱子久久久久| ㊣最新国产の精品bt伙计久久| 亚洲欧美偷拍另类a∨色屁股| 亚洲精品欧美二区三区中文字幕| 亚洲免费av高清| 午夜激情一区二区三区| 欧美精品一区二区三区四区 | 成人一区在线观看| aaa欧美大片| 91福利视频久久久久| 欧美久久久久久蜜桃| 日韩欧美一级特黄在线播放| 欧美精品一区二区蜜臀亚洲| 久久众筹精品私拍模特| 日韩欧美一卡二卡| 精品人伦一区二区色婷婷| 国产色91在线| 亚洲素人一区二区| 欧美v国产在线一区二区三区| 国产色综合久久| 亚洲自拍偷拍欧美| 日本亚洲最大的色成网站www| 夜夜亚洲天天久久| 日一区二区三区| 国产一区二区三区观看| 国模一区二区三区白浆| caoporn国产精品| 日本久久电影网| 欧美日韩和欧美的一区二区| 久久综合久久鬼色| 国产精品久久国产精麻豆99网站| 1000部国产精品成人观看| 亚洲成人综合视频| 国内不卡的二区三区中文字幕 | 一本色道久久综合精品竹菊| 在线免费观看日本一区| 3d动漫精品啪啪| 最新欧美精品一区二区三区| 欧美极品xxx| 另类小说欧美激情| 欧美在线免费视屏| 日韩欧美你懂的| 亚洲综合偷拍欧美一区色| 久久国产精品色婷婷| 色综合天天综合给合国产| 日韩欧美亚洲国产精品字幕久久久| 久久久久国产成人精品亚洲午夜| 一级女性全黄久久生活片免费| 久久精品国产一区二区三区免费看| 国产99久久精品| 精品少妇一区二区三区视频免付费| 国产人伦精品一区二区| 午夜视频一区二区三区| 日韩激情视频在线观看| 色视频欧美一区二区三区| 国产乱码精品一区二区三区av| 91在线播放网址| 91.麻豆视频| 亚洲综合色噜噜狠狠| 国产一区二区精品久久99| 欧美午夜电影一区| 欧美日韩在线直播| 中文字幕精品一区二区三区精品| 亚洲在线中文字幕| 国产激情一区二区三区四区| 日韩一区二区免费视频| 亚洲免费av在线| 国产成人免费视频网站| 一本久道中文字幕精品亚洲嫩| 国产丝袜欧美中文另类| 婷婷开心久久网| 91久久精品一区二区| 国产精品少妇自拍| 精彩视频一区二区三区| 欧美日本在线看| 亚洲欧美日韩一区| 欧洲一区二区三区免费视频| 国产午夜精品一区二区三区嫩草| 亚洲二区在线视频| 色8久久精品久久久久久蜜|