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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sbctester.c

?? SBC 編碼解碼算法,用C語(yǔ)言實(shí)現(xiàn),不依賴(lài)與任何平臺(tái),用語(yǔ)語(yǔ)音通訊等方面.
?? C
字號(hào):
/* * *  Bluetooth low-complexity, subband codec (SBC) library * *  Copyright (C) 2007  Marcel Holtmann <marcel@holtmann.org> *  Copyright (C) 2007  Frederic Dalleau <fdalleau@free.fr> * * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA * */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <stdlib.h>#include <sndfile.h>#include <math.h>#include <string.h>#define MAXCHANNELS 2#define DEFACCURACY 7static double sampletobits(short sample16, int verbose){	double bits = 0;	unsigned short bit;	int i;	if (verbose)		printf("===> sampletobits(%hd, %04hX)\n", sample16, sample16);	/* Bit 0 is MSB */	if (sample16 < 0)		bits = -1;	if (verbose)		printf("%d", (sample16 < 0) ? 1 : 0);	/* Bit 15 is LSB */	for (i = 1; i < 16; i++) {		bit = (unsigned short) sample16;		bit >>= 15 - i;		bit %= 2;		if (verbose)			printf("%d", bit);		if (bit)			bits += (1.0 / pow(2.0, i));	}	if (verbose)		printf("\n");	return bits;}static int calculate_rms_level(SNDFILE * sndref, SF_INFO * infosref,				SNDFILE * sndtst, SF_INFO * infostst,						int accuracy, char *csvname){	short refsample[MAXCHANNELS], tstsample[MAXCHANNELS];	double refbits, tstbits;	double rms_accu[MAXCHANNELS];	double rms_level[MAXCHANNELS];	double rms_limit = 1.0 / (pow(2.0, accuracy - 1) * pow(12.0, 0.5));	FILE *csv = NULL;	int i, j, r1, r2, verdict;	if (csvname)		csv = fopen(csvname, "wt");	if (csv) {		fprintf(csv, "num;");		for (j = 0; j < infostst->channels; j++)			fprintf(csv, "ref channel %d;tst channel %d;", j, j);		fprintf(csv, "\r\n");	}	sf_seek(sndref, 0, SEEK_SET);	sf_seek(sndtst, 0, SEEK_SET);	memset(rms_accu, 0, sizeof(rms_accu));	memset(rms_level, 0, sizeof(rms_level));	for (i = 0; i < infostst->frames; i++) {		if (csv)			fprintf(csv, "%d;", i);		r1 = sf_read_short(sndref, refsample, infostst->channels);		if (r1 != infostst->channels) {			printf("Failed to read reference data: %s "					"(r1=%d, channels=%d)",					sf_strerror(sndref), r1,					infostst->channels);			if (csv)				fclose(csv);			return -1;		}		r2 = sf_read_short(sndtst, tstsample, infostst->channels);		if (r2 != infostst->channels) {			printf("Failed to read test data: %s "					"(r2=%d, channels=%d)\n",					sf_strerror(sndtst), r2,					infostst->channels);			if (csv)				fclose(csv);			return -1;		}		for (j = 0; j < infostst->channels; j++) {			if (csv)				fprintf(csv, "%d;%d;", refsample[j],						tstsample[j]);			refbits = sampletobits(refsample[j], 0);			tstbits = sampletobits(tstsample[j], 0);			rms_accu[j] += pow(tstbits - refbits, 2.0);		}		if (csv)			fprintf(csv, "\r\n");	}	printf("Limit: %f\n", rms_limit);	for (j = 0; j < infostst->channels; j++) {		printf("Channel %d\n", j);		printf("Accumulated %f\n", rms_accu[j]);		rms_accu[j] /= (double) infostst->frames;		printf("Accumulated / %f = %f\n", (double) infostst->frames,				rms_accu[j]);		rms_level[j] = sqrt(rms_accu[j]);		printf("Level = %f (%f x %f = %f)\n",				rms_level[j], rms_level[j], rms_level[j],						rms_level[j] * rms_level[j]);	}	verdict = 1;	for (j = 0; j < infostst->channels; j++) {		printf("Channel %d: %f\n", j, rms_level[j]);		if (rms_level[j] > rms_limit)			verdict = 0;	}	printf("%s return %d\n", __FUNCTION__, verdict);	return verdict;}static int check_absolute_diff(SNDFILE * sndref, SF_INFO * infosref,				SNDFILE * sndtst, SF_INFO * infostst,				int accuracy){	short refsample[MAXCHANNELS], tstsample[MAXCHANNELS];	short refmax[MAXCHANNELS], tstmax[MAXCHANNELS];	double refbits, tstbits;	double rms_absolute = 1.0 / (pow(2, accuracy - 2));	double calc_max[MAXCHANNELS];	int calc_count = 0;	short r1, r2;	double cur_diff;	int i, j, verdict;	memset(&refmax, 0, sizeof(refmax));	memset(&tstmax, 0, sizeof(tstmax));	memset(&calc_max, 0, sizeof(calc_max));	memset(&refsample, 0, sizeof(refsample));	memset(&tstsample, 0, sizeof(tstsample));	sf_seek(sndref, 0, SEEK_SET);	sf_seek(sndtst, 0, SEEK_SET);	verdict = 1;	printf("Absolute max: %f\n", rms_absolute);	for (i = 0; i < infostst->frames; i++) {		r1 = sf_read_short(sndref, refsample, infostst->channels);		if (r1 != infostst->channels) {			printf("Failed to read reference data: %s "					"(r1=%d, channels=%d)",					sf_strerror(sndref), r1,					infostst->channels);			return -1;		}		r2 = sf_read_short(sndtst, tstsample, infostst->channels);		if (r2 != infostst->channels) {			printf("Failed to read test data: %s "					"(r2=%d, channels=%d)\n",					sf_strerror(sndtst), r2,					infostst->channels);			return -1;		}		for (j = 0; j < infostst->channels; j++) {			refbits = sampletobits(refsample[j], 0);			tstbits = sampletobits(tstsample[j], 0);			cur_diff = fabs(tstbits - refbits);			if (cur_diff > rms_absolute) {				calc_count++;				/* printf("Channel %d exceeded : fabs(%f - %f) = %f > %f\n", j, tstbits, refbits, cur_diff, rms_absolute); */				verdict = 0;			}			if (cur_diff > calc_max[j]) {				calc_max[j] = cur_diff;				refmax[j] = refsample[j];				tstmax[j] = tstsample[j];			}		}	}	for (j = 0; j < infostst->channels; j++) {		printf("Calculated max: %f (%hd-%hd=%hd)\n",			calc_max[j], tstmax[j], refmax[j],			tstmax[j] - refmax[j]);	}	printf("%s return %d\n", __FUNCTION__, verdict);	return verdict;}static void usage(){	printf("SBC conformance test ver %s\n", VERSION);	printf("Copyright (c) 2007 Marcel Holtmann\n");	printf("Copyright (c) 2007 Frederic Dalleau\n\n");	printf("Usage:\n"		"\tsbctester reference.wav checkfile.wav\n"		"\tsbctester integer\n"		"\n");	printf("To test the encoder:\n");	printf("\tUse a reference codec to encode original.wav to reference.sbc\n");	printf("\tUse sbcenc to encode original.wav to checkfile.sbc\n");	printf("\tDecode both file using the reference decoder\n");	printf("\tRun sbctester with these two wav files to get the result\n\n");	printf("\tA file called out.csv is generated to use the data in a\n");	printf("\tspreadsheet application or database.\n\n");}int main(int argc, char *argv[]){	SNDFILE *sndref = NULL;	SNDFILE *sndtst = NULL;	SF_INFO infosref;	SF_INFO infostst;	char *ref;	char *tst;	int pass_rms, pass_absolute, pass, accuracy;	if (argc == 2) {		double db;		printf("Test sampletobits\n");		db = sampletobits((short) atoi(argv[1]), 1);		printf("db = %f\n", db);		exit(0);	}	if (argc < 3) {		usage();		exit(1);	}	ref = argv[1];	tst = argv[2];	printf("opening reference %s\n", ref);	sndref = sf_open(ref, SFM_READ, &infosref);	if (!sndref) {		printf("Failed to open reference file\n");		exit(1);	}	printf("opening testfile %s\n", tst);	sndtst = sf_open(tst, SFM_READ, &infostst);	if (!sndtst) {		printf("Failed to open test file\n");		sf_close(sndref);		exit(1);	}	printf("reference:\n\t%d frames,\n\t%d hz,\n\t%d channels\n",		(int) infosref.frames, (int) infosref.samplerate,		(int) infosref.channels);	printf("testfile:\n\t%d frames,\n\t%d hz,\n\t%d channels\n",		(int) infostst.frames, (int) infostst.samplerate,		(int) infostst.channels);	/* check number of channels */	if (infosref.channels > 2 || infostst.channels > 2) {		printf("Too many channels\n");		goto error;	}	/* compare number of samples */	if (infosref.samplerate != infostst.samplerate ||				infosref.channels != infostst.channels) {		printf("Cannot compare files with different charasteristics\n");		goto error;	}	accuracy = DEFACCURACY;	printf("Accuracy: %d\n", accuracy);	/* Condition 1 rms level */	pass_rms = calculate_rms_level(sndref, &infosref, sndtst, &infostst,					accuracy, "out.csv");	if (pass_rms < 0)		goto error;	/* Condition 2 absolute difference */	pass_absolute = check_absolute_diff(sndref, &infosref, sndtst,						&infostst, accuracy);	if (pass_absolute < 0)		goto error;	/* Verdict */	pass = pass_rms && pass_absolute;	printf("Verdict: %s\n", pass ? "pass" : "fail");	return 0;error:	sf_close(sndref);	sf_close(sndtst);	exit(1);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色999日韩国产欧美一区二区| 精品久久国产老人久久综合| av一区二区不卡| 国产盗摄女厕一区二区三区| 精品一二三四区| 国产最新精品免费| 国产最新精品精品你懂的| 极品美女销魂一区二区三区免费| 久久99深爱久久99精品| 久久91精品久久久久久秒播| 久久99精品一区二区三区| 美女性感视频久久| 国产乱子伦视频一区二区三区| 韩国一区二区在线观看| 国产精品一区二区黑丝| 国产精品91一区二区| 丁香激情综合五月| 91美女精品福利| 欧美性猛交xxxx黑人交| 欧美精品在线一区二区三区| 日韩亚洲欧美成人一区| 久久蜜桃一区二区| 日韩毛片一二三区| 亚洲成人你懂的| 久久精品99国产精品日本| 国产成人综合精品三级| 99re在线视频这里只有精品| 欧美午夜理伦三级在线观看| 欧美肥胖老妇做爰| 久久精品无码一区二区三区| 国产精品对白交换视频| 性做久久久久久免费观看| 久久国产三级精品| av不卡在线播放| 欧美精品自拍偷拍动漫精品| 久久色.com| 亚洲美女一区二区三区| 青青草国产成人99久久| 成人美女视频在线看| 欧美午夜精品一区二区三区| 精品国精品自拍自在线| 国产精品嫩草久久久久| 亚洲小说欧美激情另类| 国产一区二区毛片| 色综合久久久久久久久久久| 8x福利精品第一导航| 国产日韩在线不卡| 亚洲高清在线视频| 国产成人精品一区二区三区网站观看| 一本色道a无线码一区v| 日韩欧美国产综合| 亚洲日本电影在线| 久久99精品久久只有精品| 91香蕉视频在线| 欧美成人精品高清在线播放| 怡红院av一区二区三区| 激情综合色综合久久| 91蜜桃传媒精品久久久一区二区| 日韩午夜三级在线| 亚洲靠逼com| 国产精品99久| 91精品欧美一区二区三区综合在| 国产精品久久久久久久久图文区| 天天影视网天天综合色在线播放| 成人av动漫在线| 精品久久人人做人人爽| 亚洲精品国产成人久久av盗摄| 国产伦精品一区二区三区在线观看| 欧美另类z0zxhd电影| 国产精品嫩草久久久久| 国产一区亚洲一区| 欧美日韩免费观看一区三区| 国产精品福利一区| 国产精品亚洲成人| 欧美xxxxx裸体时装秀| 亚洲韩国一区二区三区| av一区二区不卡| 国产日韩三级在线| 国产在线精品一区二区三区不卡 | 国产一区二区三区在线观看免费| 欧美精品三级在线观看| 亚洲一区二区三区精品在线| 成人深夜视频在线观看| 日韩免费一区二区| 日韩精品色哟哟| 欧美日韩精品一区二区| 亚洲女同ⅹxx女同tv| 成人黄色小视频| 国产视频视频一区| 国内久久精品视频| 日韩欧美美女一区二区三区| 亚洲色欲色欲www| www.欧美精品一二区| 国产精品网站在线播放| 污片在线观看一区二区| 欧美日韩一区中文字幕| 亚洲欧洲av一区二区三区久久| 国产精品自拍av| 久久久久97国产精华液好用吗 | 91成人看片片| 亚洲免费在线播放| 95精品视频在线| 亚洲精品国产无套在线观| 在线精品视频免费播放| 一区二区三区在线观看网站| 在线观看日韩国产| 亚洲高清免费观看高清完整版在线观看| 99视频一区二区| 一区二区三区鲁丝不卡| 欧美日韩精品二区第二页| 一区二区日韩av| 91免费视频网址| 亚洲男女一区二区三区| 99久久99久久精品国产片果冻| 中文字幕在线不卡| 成人avav影音| 国产精品国产a级| eeuss鲁片一区二区三区在线观看| 欧美mv和日韩mv的网站| 日韩av一区二| 91精品综合久久久久久| 亚洲成av人片观看| 91精品国产乱| 国产精品一卡二卡在线观看| 久久婷婷国产综合精品青草| 国产麻豆视频精品| 国产精品美女一区二区三区| av高清久久久| 亚洲最大成人综合| 欧美三区在线观看| 日韩精品亚洲专区| 日韩视频永久免费| 国产一区二区三区蝌蚪| 亚洲色图欧美激情| 欧美少妇一区二区| 秋霞国产午夜精品免费视频| 欧美sm极限捆绑bd| 国产精品综合av一区二区国产馆| 国产精品久久久久久妇女6080| 成人久久18免费网站麻豆 | 93久久精品日日躁夜夜躁欧美| 亚洲视频在线一区| 91成人免费网站| 婷婷开心激情综合| 国产欧美视频在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲乱码国产乱码精品精可以看| 欧美三级午夜理伦三级中视频| 视频一区视频二区中文| 国产精品久久久久7777按摩| 91精彩视频在线| 日本中文字幕一区| 国产日本欧美一区二区| www.日韩av| 激情图区综合网| 亚洲欧美另类在线| 欧美日韩国产高清一区二区| 麻豆精品在线播放| 亚洲精品大片www| 欧美mv和日韩mv的网站| 99视频在线精品| 青青草国产精品97视觉盛宴| 久久久久久久久一| 91精品国产一区二区三区香蕉| 国产精品一区二区男女羞羞无遮挡| 国产精品久久久久久妇女6080| 欧美伦理影视网| 国产成人av电影在线观看| 首页国产欧美日韩丝袜| 国产精品欧美一级免费| 欧美日韩国产综合一区二区| 国产精品一二二区| 久久精品噜噜噜成人88aⅴ| 亚洲人成网站色在线观看| 日韩区在线观看| 成人精品小蝌蚪| 亚洲尤物在线视频观看| 国产精品视频你懂的| 欧美精品在线观看播放| 国产大陆亚洲精品国产| 午夜精品久久久久久不卡8050| 欧美日韩国产123区| 91在线精品秘密一区二区| 欧美aaaaaa午夜精品| 国产三级精品在线| 欧美精选午夜久久久乱码6080| jlzzjlzz国产精品久久| 风间由美中文字幕在线看视频国产欧美| 亚洲五码中文字幕| 亚洲欧美综合色| 精品视频一区二区不卡| 国产激情视频一区二区三区欧美| 精品一二三四区| 日韩福利电影在线观看| 一区二区三区中文免费| 国产精品久久久久久久浪潮网站| 亚洲国产精品二十页| 日韩精品专区在线影院观看| 欧美嫩在线观看| 91福利精品视频|