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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wavefs44.c

?? DVD轉(zhuǎn)換到AVI的源代碼
?? C
字號:
/* 
 *	Copyright (c) 2000 by WTC
 *
 *  This file is part of WAVEFS44, a free sound sampling rate converter
 *	
 *  WAVEFS44 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, or (at your option)
 *  any later version.
 *   
 *  WAVEFS44 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 GNU Make; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
 *
 */

#include "global.h"
#include <math.h>

#define M_PI		3.1415926535897932384626433832795
#define ISRM		147
#define OSRM		160
#define WINSIZ		16384
#define MAXFIRODR	65535
#define ALPHA		10.0

typedef struct {
	short l;
	short r;
}	SmplData;

static int firodr[5] = {0, 4095, 12287, 24575, 32767};
static int lpfcof[5] = {0, 19400, 21200, 21400, 21600};
static unsigned char FQ44100[6] = {0x44, 0xac, 0x00, 0x00, 0x10, 0xb1};

static int sptr, sptrr, eptr, eptrr, ismd, ismr, winpos, iptr, firodrv;
static double hfir[MAXFIRODR+1];
static double suml, sumr, frqc, frqs, regv, wfnc, divisor, hgain;
static SmplData smpld[WINSIZ*2], smplo, *spp;

static double bessel0(double);
static void DownKernel(FILE *file);

void InitialSRC()
{
	int i;

	frqs = 44100*OSRM;					// virtual high sampling rate
	frqc = lpfcof[SRC_Flag];			// cutoff freq.
	firodrv = firodr[SRC_Flag];			// FIR order = firodrv*2+1

	divisor = bessel0(ALPHA);
	hgain = (2.0*ISRM*frqc)/frqs;
	hfir[0] = hgain;

	for (i=1; i<=firodrv; i++)
	{
		regv = (double)(i*i)/(firodrv*firodrv);
		wfnc = bessel0(sqrt(1.0-regv)*ALPHA)/divisor;
		regv = (2.0*M_PI*frqc*i)/frqs;
		hfir[i] = (hgain*sin(regv)*wfnc)/regv;
	}

	ismd=OSRM/ISRM;
	ismr=OSRM%ISRM;

	sptr = -(firodrv/ISRM);
	sptrr = -(firodrv%ISRM);
	eptr = firodrv/ISRM;
	eptrr = firodrv%ISRM;

	ZeroMemory(smpld, sizeof(smpld));

	winpos = 0;
	iptr = 0;
}

void Wavefs44(FILE *file, int size, unsigned char *buffer)
{
	if (winpos < WINSIZ)
	{
		if ((winpos + (size>>2)) < WINSIZ)
			memcpy(&smpld[winpos], buffer, size);
		else
		{
			memcpy(&smpld[winpos], buffer, (WINSIZ-winpos)<<2);
			DownKernel(file);
			memcpy(&smpld[WINSIZ], buffer+((WINSIZ-winpos)<<2), size-((WINSIZ-winpos)<<2));
		}
		winpos += size>>2;
	}
	else
	{
		if ((winpos + (size>>2)) < (WINSIZ<<1))
		{
			memcpy(&smpld[winpos], buffer, size);
			winpos += size>>2;
		}
		else
		{
			memcpy(&smpld[winpos], buffer, ((WINSIZ<<1)-winpos)<<2);
			DownKernel(file);
			memcpy(&smpld[0], buffer+(((WINSIZ<<1)-winpos)<<2), size-(((WINSIZ<<1)-winpos)<<2));
			winpos += (size>>2) - (WINSIZ<<1);
		}
	}
}

void EndSRC(FILE *file)
{
	int i;

	if (winpos < WINSIZ)
	{
		for (i=WINSIZ-1; i>=winpos; i--)
		{
			smpld[i].l = 0;
			smpld[i].r = 0;
		}

		DownKernel(file);
	}
	else
	{
		for (i=WINSIZ-1; i>=winpos; i--)
		{
			smpld[WINSIZ+i].l = 0;
			smpld[WINSIZ+i].r = 0;
		}

		DownKernel(file);
	}
}

BOOL CheckWAV()
{
	HMMIO hmmio;
	MMCKINFO mmckinfoParent;
	MMCKINFO mmckinfoSubchunk;
	WAVEFORMAT pFormat;

	int FmtSize, Error_Flag = 0;

	hmmio = mmioOpen(szInput, NULL, MMIO_READ);

	mmckinfoParent.fccType = mmioFOURCC('W','A','V','E'); 
	if (mmioDescend(hmmio, (LPMMCKINFO) &mmckinfoParent, NULL, MMIO_FINDRIFF))
		Error_Flag = 1;

	mmckinfoSubchunk.ckid = mmioFOURCC('f','m','t',' '); 
	if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK)) 
		Error_Flag = 1;

	FmtSize = mmckinfoSubchunk.cksize;

	if (mmioRead(hmmio, (HPSTR) &pFormat, FmtSize) != FmtSize)
		Error_Flag = 1;
 
	if (pFormat.wFormatTag!=WAVE_FORMAT_PCM || pFormat.nChannels!=2 || pFormat.nBlockAlign!=4 ||
		(pFormat.nSamplesPerSec!=48000 && pFormat.nSamplesPerSec!=44100))
		Error_Flag = 1;

	mmioAscend(hmmio, &mmckinfoSubchunk, 0);

	mmckinfoSubchunk.ckid = mmioFOURCC('d','a','t','a'); 
	if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK)) 
		Error_Flag = 1;

	mmioClose(hmmio, 0);

	if (Error_Flag)
		return FALSE;
	else
		return TRUE;
}

void Wavefs44File(int delay, int now, int total)
{
	FILE *WaveIn, *WaveOut;
	int i, DataSize, WaveInPos, rsize, wsize = 0;

	HMMIO hmmio;
	MMIOINFO mmioinfo;
	MMCKINFO mmckinfoParent;
	MMCKINFO mmckinfoSubchunk;
	WAVEFORMAT pFormat;

	Sound_Max = 1;
	SetDlgItemText(hDlg, IDC_DEBUG, szBlank);

	hmmio = mmioOpen(szInput, NULL, MMIO_READ);

	mmckinfoParent.fccType = mmioFOURCC('W','A','V','E'); 
	mmioDescend(hmmio, (LPMMCKINFO) &mmckinfoParent, NULL, MMIO_FINDRIFF);

	mmckinfoSubchunk.ckid = mmioFOURCC('f','m','t',' '); 
	mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK);

	mmioRead(hmmio, (HPSTR) &pFormat, mmckinfoSubchunk.cksize); 
	mmioAscend(hmmio, &mmckinfoSubchunk, 0);

	mmckinfoSubchunk.ckid = mmioFOURCC('d','a','t','a'); 
	mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK);

	DataSize = mmckinfoSubchunk.cksize; 
	mmioGetInfo(hmmio, &mmioinfo, 0);
	WaveInPos =	mmioinfo.lDiskOffset;

	if (SRC_Flag || pFormat.nSamplesPerSec==44100)
		sprintf(szBuffer, "%s 44.1KHz", szOutput);
	else
		sprintf(szBuffer, "%s 48KHz", szOutput);

	sprintf(pcm.filename, "%s DELAY %dms compensated.wav", szBuffer, delay);
	WaveOut = fopen(pcm.filename, "wb");

	fwrite(WAVHeader, sizeof(WAVHeader), 1, WaveOut);

	if (SRC_Flag || pFormat.nSamplesPerSec==44100)
		DownWAV(WaveOut);

	if (delay > 0)
	{
		if (SRC_Flag || pFormat.nSamplesPerSec==44100)
		{
			for (i=0; i<((int)(176.4*delay)>>2)<<2; i++)
				fputc(*szBlank, WaveOut);

			wsize += ((int)(176.4*delay)>>2)<<2;
		}
		else
		{
			for (i=0; i<delay*192; i++)
				fputc(*szBlank, WaveOut);

			wsize += delay*192;
		}
	}
	else
	{
		if (pFormat.nSamplesPerSec==44100)
		{
			if (((int)(-176.4*delay)>>2)<<2 > DataSize)
				goto THE_END;
			else
			{
				WaveInPos += ((int)(-176.4*delay)>>2)<<2;
				DataSize -= ((int)(-176.4*delay)>>2)<<2;
			}
		}
		else
		{
			if (-192*delay > DataSize)
				goto THE_END;
			else
			{
				WaveInPos += -192*delay;
				DataSize -= -192*delay;
			}
		}
	}

	WaveIn = fopen(szInput, "rb");

	if (SRC_Flag && pFormat.nSamplesPerSec==48000)
	{
		InitialSRC();

		fseek(WaveIn, WaveInPos, SEEK_SET);
		rsize = DataSize;

		process.op = timeGetTime();

		while (rsize > 0)
		{
			if (Stop_Flag)
				break;

			if (rsize < (WINSIZ<<2))
			{
				for (i=WINSIZ-1; i>=(rsize>>2); i--)
				{
					smpld[winpos+i].l = 0;
					smpld[winpos+i].r = 0;
				}

				fread(&smpld[winpos], rsize, 1, WaveIn);
				rsize = 0;
			}
			else
			{
				fread(&smpld[winpos], WINSIZ<<2, 1, WaveIn);
				rsize -= (WINSIZ<<2);
			}

			DownKernel(WaveOut);

			winpos = (winpos > 0) ? 0 : WINSIZ;

			process.ed = timeGetTime();
			process.elapsed = (process.ed-process.op)/1000;
			process.percent = (float)(100.0*(DataSize-rsize)/DataSize);
			process.remain = (int)((process.ed-process.op)*(100.0-process.percent)/process.percent)/1000;

			if (Statistics_Flag)
			{
				sprintf(szBuffer, "%d:%02d:%02d", process.elapsed/3600, (process.elapsed%3600)/60, process.elapsed%60);
				SetDlgItemText(hDlg, IDC_ELAPSED, szBuffer);

				sprintf(szBuffer, "%d:%02d:%02d", process.remain/3600, (process.remain%3600)/60, process.remain%60);
				SetDlgItemText(hDlg, IDC_REMAIN, szBuffer);

				sprintf(szBuffer, "%d / %d", now, total);
				SetDlgItemText(hDlg, IDC_NUMBER, szBuffer);
			}

			SendMessage(hTrack, TBM_SETPOS, (WPARAM) TRUE, (int)(process.percent*TRACK_PITCH/100));
		}

		DataSize = (int)(0.91875*(DataSize-rsize));

		Normalize(NULL, 44+wsize, pcm.filename, WaveOut, 44+wsize, DataSize);
	}
	else
		Normalize(WaveIn, WaveInPos, NULL, WaveOut, 44+wsize, DataSize);

	wsize += DataSize;

THE_END:
	EndWAV(WaveOut, wsize);
	mmioClose(hmmio, 0);
	_fcloseall();
}

void EndWAV(FILE *file, int size)
{
	fseek(file, 40, SEEK_SET);
	fwrite(&size, sizeof(int), 1, file);
	size += 36;
	fseek(file, 4, SEEK_SET);
	fwrite(&size, sizeof(int), 1, file);
}

void DownWAV(FILE *file)
{
	fseek(file, 24, SEEK_SET);
	fwrite(FQ44100, sizeof(FQ44100), 1, file);
	fseek(file, 44, SEEK_SET);
}

static void DownKernel(FILE *file)
{
	int i, j, l;

	iptr += WINSIZ;

	while (iptr > eptr)
	{
		suml = 0;
		sumr = 0;
		j = -firodrv-sptrr;

		for (i=sptr; i<=eptr; i++, j+=ISRM)
		{
			l = j > 0 ? j : -j;

			spp = &smpld[i & ((WINSIZ<<1)-1)];
			hgain = hfir[l];
			suml += hgain * spp->l;
			sumr += hgain * spp->r;
		}

		if (suml > 32767)
			smplo.l = 32767;
		else if (suml > 0)
			smplo.l = (short)(suml+0.5);
		else if (suml > -32768)
			smplo.l = (short)(suml-0.5);
		else
			smplo.l = -32768;

		if (sumr > 32767)
			smplo.r = 32767;
		else if (sumr > 0)
			smplo.r = (short)(sumr+0.5);
		else if (sumr > -32768)
			smplo.r = (short)(sumr-0.5);
		else
			smplo.r = -32768;

		if (Sound_Max < smplo.l)
			Sound_Max = smplo.l; 
		else if (Sound_Max < -smplo.l)
			Sound_Max = -smplo.l; 

		if (Sound_Max < smplo.r)
			Sound_Max = smplo.r; 
		else if (Sound_Max < -smplo.r)
			Sound_Max = -smplo.r; 

		fwrite(&smplo, sizeof(SmplData), 1, file);

		sptr += ismd;
		sptrr += ismr;
		if (sptrr>0)
		{
			sptrr -= ISRM;
			sptr++;
		}

		eptr += ismd;
		eptrr += ismr;
		if (eptrr>=ISRM)
		{
			eptrr -= ISRM;
			eptr++;
		}
	}
}

static double bessel0(double x)
{
	double value = 1.0, step = 1.0, part = x/2;

	while (part > 1.0E-10)
	{
		value += part*part;
		step += 1.0;
		part = (part*x)/(2.0*step);
	}

	return value;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本丶国产丶欧美色综合| 精品黑人一区二区三区久久| 国产欧美一区二区精品性色| 免费人成黄页网站在线一区二区| 欧美一区二区三区四区高清| 日本三级亚洲精品| 欧美一区2区视频在线观看| 日韩va欧美va亚洲va久久| 日韩一区二区三区免费看 | 精品久久久久久亚洲综合网| 精彩视频一区二区| 亚洲综合色视频| 欧美午夜片在线看| 美女脱光内衣内裤视频久久网站| 欧美成人一区二区三区片免费| 国产最新精品免费| 中文字幕综合网| 欧美日韩国产一区| 国产真实乱对白精彩久久| 国产精品色噜噜| 欧美日韩一二三| 国产自产视频一区二区三区| 国产精品色哟哟| 欧美精品久久久久久久多人混战| 久久精品国产色蜜蜜麻豆| 国产精品伦理在线| 欧美日韩激情在线| 岛国精品在线播放| 午夜成人在线视频| 久久精品在线观看| 欧美人伦禁忌dvd放荡欲情| 国产激情一区二区三区| 一区二区三区高清不卡| 26uuu另类欧美| 欧美亚洲国产一卡| 国产99精品视频| 日韩黄色片在线观看| 国产精品日韩成人| 日韩一区二区三区av| 99精品视频在线观看| 麻豆精品在线看| 国产亚洲1区2区3区| 欧美视频你懂的| 99视频在线精品| 韩国女主播成人在线| 亚洲高清视频中文字幕| 国产精品丝袜久久久久久app| 91精品婷婷国产综合久久竹菊| av一区二区三区在线| 国模套图日韩精品一区二区| 最好看的中文字幕久久| 精品一区二区三区的国产在线播放| 国产精品午夜久久| 久久99精品视频| 午夜欧美大尺度福利影院在线看| 成人网在线播放| 精品国产91乱码一区二区三区| 欧美专区在线观看一区| 黄色精品一二区| 麻豆成人免费电影| 午夜免费欧美电影| 尤物在线观看一区| 亚洲欧洲精品一区二区精品久久久 | 色婷婷精品久久二区二区蜜臀av| 裸体一区二区三区| va亚洲va日韩不卡在线观看| 日韩欧美中文字幕一区| 亚洲国产视频直播| 亚洲美女一区二区三区| 欧美高清在线视频| 国产女人aaa级久久久级| 秋霞午夜av一区二区三区| 亚洲国产成人av| 亚洲小说春色综合另类电影| 亚洲欧美偷拍另类a∨色屁股| 国产精品午夜在线观看| 国产欧美1区2区3区| 国产偷国产偷精品高清尤物| 精品国产a毛片| 久久久www免费人成精品| 2欧美一区二区三区在线观看视频| 欧美不卡视频一区| 久久在线免费观看| 久久嫩草精品久久久精品一| 久久久精品日韩欧美| 国产亚洲欧美在线| 粉嫩嫩av羞羞动漫久久久| 国产精品影视在线观看| 国产精品996| 成人午夜av电影| 91视频观看视频| 欧美性一二三区| 69久久夜色精品国产69蝌蚪网| 久久99热国产| 风间由美中文字幕在线看视频国产欧美| 久久99精品国产麻豆不卡| 国产乱子轮精品视频| 成人性生交大片免费看中文| 99视频在线精品| 欧美伦理电影网| 精品伦理精品一区| 国产乱码精品一区二区三区忘忧草 | 69精品人人人人| 欧美日本国产视频| 日韩欧美成人激情| 日本一区二区三区高清不卡| 国产精品美女久久久久高潮| 亚洲人成精品久久久久久| 亚洲1区2区3区4区| 九九精品一区二区| 伊人一区二区三区| 三级亚洲高清视频| 国产aⅴ综合色| 在线观看av不卡| 精品国产a毛片| 欧日韩精品视频| 激情六月婷婷久久| 一区二区三区美女| 麻豆91精品视频| 91香蕉视频污| 日韩精品在线看片z| 国产精品久久一卡二卡| 日韩精品一区第一页| 国产成人av一区二区| 欧美性大战久久| 久久久99免费| 日日夜夜精品视频免费 | 波多野结衣中文字幕一区| 欧美性视频一区二区三区| 久久嫩草精品久久久精品一| 欧日韩精品视频| 欧美成人女星排行榜| 亚洲成人黄色影院| av在线不卡电影| 久久精品国产在热久久| 91国在线观看| 国产在线乱码一区二区三区| 欧美亚洲国产一区二区三区va| 国产一区二区电影| 欧美日韩一区二区在线观看视频| 国产精品无人区| 日韩不卡一区二区三区| 在线观看视频一区| 国产精品国产三级国产普通话蜜臀 | 日韩精品每日更新| 欧美综合久久久| 成人久久久精品乱码一区二区三区 | 亚洲免费在线观看视频| 久久精品理论片| 欧美一级片免费看| 91免费看`日韩一区二区| 国产精品一区二区果冻传媒| 欧美一区二视频| 欧美视频在线播放| 色综合激情久久| 国产高清久久久| 国产最新精品精品你懂的| 欧美日韩一本到| 色婷婷综合激情| 国产欧美日韩精品一区| 国产日韩高清在线| 国产亚洲福利社区一区| 免费高清成人在线| 青青草视频一区| 免费在线视频一区| 青青草国产精品亚洲专区无| 秋霞电影网一区二区| 欧美精品三级在线观看| 在线观看免费一区| 日韩一区欧美小说| 丁香啪啪综合成人亚洲小说 | 日本不卡视频在线| 欧美精品v国产精品v日韩精品| 亚洲已满18点击进入久久| 亚洲一区二区三区四区五区黄| 欧美综合亚洲图片综合区| 欧美久久高跟鞋激| 奇米影视一区二区三区小说| 日韩午夜小视频| 久久99国产精品尤物| 国产成人夜色高潮福利影视| 国产三级精品在线| 不卡区在线中文字幕| 亚洲欧洲精品一区二区精品久久久 | 欧美变态tickling挠脚心| 欧美va日韩va| 国产老妇另类xxxxx| 国产精品88888| 成人欧美一区二区三区视频网页| eeuss鲁一区二区三区| 亚洲午夜在线观看视频在线| 日韩电影在线免费看| 久久综合一区二区| 国产成+人+日韩+欧美+亚洲| 国产精品美女视频| 欧美日韩1234| 狠狠色狠狠色综合日日91app| 风间由美一区二区av101| 亚洲女人****多毛耸耸8| 制服.丝袜.亚洲.中文.综合|