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

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

?? wavein.cs

?? 該即時通訊系統系統能夠實現像QQ一樣的通訊功能
?? CS
字號:
using System;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace LanMsg.AV
{
	/// <summary>
	/// WaveIn 的摘要說明。
	/// </summary>
	/// 
	public delegate void WaveBufferEventHandler(object sender,WAVEHDR hdr);

	public class WaveIn
	{
		bool m_running;
		int m_index;
		IntPtr m_in;
		waveProc m_incb;
		WAVEFORMATEX m_fmt;
		WAVEHDR[] m_hs;
		GCHandle[] gchs;
		IntPtr[] datas;
		public event WaveErrorEventHandler WaveInError;
		public event WaveBufferEventHandler WaveCaptured;
		public WaveIn(int index,WAVEFORMATEX format,int buffersize,int buffer_count)
		{
			this.m_fmt=format;
			this.m_index=index;
			m_incb=new waveProc(this.waveInProc);
			Debug.Assert(buffer_count>0 && buffer_count<65535);
			
			this.m_hs=new WAVEHDR[buffer_count];
			this.gchs=new GCHandle[buffer_count];
		//	this.datas=new IntPtr[buffer_count];
			for(int i=0;i<buffer_count;i++)
			{
				gchs[i]=GCHandle.Alloc(new byte[buffersize],GCHandleType.Pinned);
			//	this.datas[i]=Marshal.AllocCoTaskMem(buffer_count);
				WAVEHDR hdr=new WAVEHDR();
				hdr.dwBufferLength=buffersize;
				hdr.lpData=this.gchs[i].AddrOfPinnedObject();
				hdr.dwUser=i;
				this.m_hs[i]=hdr;
			}
			CheckError(waveInOpen(ref m_in,m_index,ref m_fmt,m_incb,0,0x00030000));
			CheckError(waveInStart(m_in));
		}
		~WaveIn()
		{
			waveInClose(this.m_in);
			if(this.datas==null)return;
			for(int i=0;i<this.m_hs.Length;i++)
			{
				try
				{
					Marshal.FreeCoTaskMem(this.datas[i]);
				}
				catch
				{
				}
			}
		}
		public WAVEFORMATEX WAVEFORMATEX
		{
			get{return this.m_fmt;}
		}
		public void Start()
		{
			if(this.m_running)throw(new AVException("正在錄音"));
			for(int i=0;i<this.m_hs.Length;i++)
			{
				this.AddBuffer(ref this.m_hs[i]);
			}
			
			m_running=true;
		}
		public void Reset()
		{
			if(this.m_running)
			{
				m_running=false;
				CheckError(waveInReset(this.m_in));
			}
		}
		public void Stop()
		{
			m_running=false;
		/*	System.Threading.Thread.Sleep(100);
			if(this.m_in!=IntPtr.Zero)
			{
				CheckError(waveInClose(this.m_in));
			}*/
		}
		private void waveInProc(IntPtr hwi,int uMsg,int dwInstance,ref WAVEHDR hdr,int dwParam2)
		{
			switch(uMsg)
			{
				case WIM_OPEN:
					break;
				case WIM_DATA:
					try
					{
						CheckError(waveInUnprepareHeader(m_in,ref hdr,Marshal.SizeOf(typeof(WAVEHDR))));
						//	AddBuffer(ref hdr);
						if(this.m_running)
						{
							if(this.WaveCaptured!=null)this.WaveCaptured(this,hdr);
							this.AddBuffer(ref hdr);
						}
					}
					catch(AVException e)
					{
						m_running=false;
						if(this.WaveInError!=null)this.WaveInError(this,e);
					}
					catch(System.Exception ex)
					{
						System.Windows.Forms.MessageBox.Show(ex.Message+":"+ex.StackTrace);
						this.m_running=false;
					}
					break;
				case WIM_CLOSE:
					break;
			}
		}
		private void AddBuffer(ref WAVEHDR hdr)
		{
			hdr.dwBytesRecorded=0;
			hdr.dwFlags=0;
			hdr.lpNext=0;
			hdr.reserved=0;
			CheckError(waveInPrepareHeader(m_in,ref hdr,Marshal.SizeOf(hdr)));
			CheckError(waveInAddBuffer(m_in,ref hdr,System.Runtime.InteropServices.Marshal.SizeOf(typeof(WAVEHDR))));
		}

		#region
		const int sampleCoef=1;
		static double constraint(byte v)
		{
			return v * sampleCoef;
		}


		public static void Smooth(byte[] input, byte[] output, int length,
			double smoothness/* = 0.8*/, int scale /*= 100*/)
		{
			double a = 1.0 - (2.4 / scale);
			double b = smoothness;
			double acoef = a;
			double bcoef = a * b;
			double ccoef = a * b * b;
			double mastergain = 1.0 / (-1.0 / (Math.Log(a) + 2.0 * Math.Log(b)) +
				2.0 / (Math.Log(a) + Math.Log(b)) - 1.0 / Math.Log(a));
			double again = mastergain;
			double bgain = mastergain * (Math.Log(a * b * b) * (Math.Log(a) - Math.Log(a * b)) /
				((Math.Log(a * b * b) - Math.Log(a * b)) * Math.Log(a * b))
				- Math.Log(a) / Math.Log(a * b));
			double cgain = mastergain * (-(Math.Log(a) - Math.Log(a * b)) /
				(Math.Log(a * b * b) - Math.Log(a * b)));

			double areg = 0;
			double breg = 0;
			double creg = 0;

			//第一次循環,取得reg的平均值
			for (int j = 0; j < length; ++j)
			{
				double v = constraint(input[j]);

				areg = acoef * areg + v;
				breg = bcoef * breg + v;
				creg = ccoef * creg + v;
			}

			//得到基音
			double _base = again * areg + bgain * breg + cgain * creg;
			output[0] = (byte)_base;

			//用基音作為其始作循環得到其他數據
			for (int i = 1; i < length; ++i)
			{
				int v =(int)constraint(input[i - 1]);

				areg = acoef * areg + v;
				breg = bcoef * breg + v;
				creg = ccoef * creg + v;

				output[i] =(byte)( again * areg + bgain * breg + cgain * creg - _base);
			}
		}
		#endregion
		public void CheckError(int result)
		{
			if(result!=0)
			{
				StringBuilder sb=new StringBuilder(128);
				waveInGetErrorTextA(result,sb,128);
				throw(new AVException(sb.ToString(),result));
			}
		}
		#region
		private const int MM_WIM_OPEN         =0x3BE;           /* waveform input */
		private const int MM_WIM_CLOSE        =0x3BF;
		private const int MM_WIM_DATA         =0x3C0;

		private const int MM_MIM_OPEN         =0x3C1;           /* MIDI input */
		private const int MM_MIM_CLOSE        =0x3C2;
		private const int MM_MIM_DATA         =0x3C3;
		private const int MM_MIM_LONGDATA     =0x3C4;
		private const int MM_MIM_ERROR        =0x3C5;
		private const int MM_MIM_LONGERROR    =0x3C6;

		private const int MM_MOM_OPEN         =0x3C7;           /* MIDI output */
		private const int MM_MOM_CLOSE        =0x3C8;
		private const int MM_MOM_DONE         =0x3C9;

		private const int WIM_OPEN        =MM_WIM_OPEN;
		private const int WIM_CLOSE       =MM_WIM_CLOSE;
		private const int WIM_DATA        =MM_WIM_DATA;

		[DllImport("winmm.dll")]
		private extern static int waveInGetDevCapsA(int uDeviceID,ref WAVEINCAPSA pwic,int cbwic);
		[DllImport("winmm.dll")]
		private extern static int waveInGetDevCapsW(int uDeviceID,ref WAVEINCAPSW pwic,int cbwic);


		[DllImport("winmm.dll")]
		private extern static int waveInOpen(ref IntPtr phwi, int uDeviceID,
			ref WAVEFORMATEX pwfx,waveProc dwCallback, int dwInstance, int fdwOpen);

		[DllImport("winmm.dll")]
		private extern static int waveInClose( IntPtr hwi);
		[DllImport("winmm.dll")]
		private extern static int waveInPrepareHeader( IntPtr hwi,ref WAVEHDR pwh, int cbwh);
		[DllImport("winmm.dll")]
		private extern static int waveInUnprepareHeader( IntPtr hwi,ref WAVEHDR pwh, int cbwh);
		[DllImport("winmm.dll",PreserveSig=true)]
		private extern static int waveInAddBuffer( IntPtr hwi,ref WAVEHDR pwh, int cbwh);
		[DllImport("winmm.dll")]
		private extern static int waveInStart( IntPtr hwi);
		[DllImport("winmm.dll")]
		private extern static int waveInStop( IntPtr hwi);
		[DllImport("winmm.dll")]
		private extern static int waveInReset( IntPtr hwi);
		[DllImport("winmm.dll")]
		private extern static int waveInGetID( IntPtr hwi, int puDeviceID);
		[DllImport("winmm.dll")]
		private extern static int waveInGetErrorTextA(int mmrError,StringBuilder pszText, int cchText);
		[DllImport("winmm.dll")]
		private extern static int waveInGetErrorTextW(int mmrError,StringBuilder pszText, int cchText);
		[DllImport("winmm.dll")]
		private extern static int waveInGetNumDevs(); 
		#endregion

	}
	public delegate void WaveErrorEventHandler(object sender,AVException e);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
●精品国产综合乱码久久久久 | 午夜欧美大尺度福利影院在线看 | 中文字幕免费在线观看视频一区| 美女网站色91| 欧美va天堂va视频va在线| 日韩一区在线看| 在线影视一区二区三区| 婷婷综合另类小说色区| 日韩一级高清毛片| 国产毛片精品视频| 国产精品不卡视频| 91福利社在线观看| 日本欧美一区二区| 欧美激情一区不卡| 欧洲在线/亚洲| 九色综合狠狠综合久久| 欧美国产精品一区二区| 欧美综合亚洲图片综合区| 奇米888四色在线精品| 久久久久久久网| 日本高清成人免费播放| 美女一区二区在线观看| 久久久久久久综合日本| 色吧成人激情小说| 久草这里只有精品视频| 亚洲图片欧美激情| 欧美成人a∨高清免费观看| 成人一区二区三区中文字幕| 一卡二卡三卡日韩欧美| 国产乱码精品1区2区3区| 国产白丝网站精品污在线入口| 日韩美女精品在线| 欧美一区二区人人喊爽| 一片黄亚洲嫩模| 精品国产乱码久久久久久久久| 成人av在线网站| 久久激情综合网| 亚洲丝袜另类动漫二区| 欧美videofree性高清杂交| 色婷婷综合久色| 久久97超碰国产精品超碰| 亚洲欧美另类小说| 国产欧美视频在线观看| 一区二区欧美在线观看| 久久精品一区二区三区不卡牛牛| 91在线无精精品入口| 国模大尺度一区二区三区| 亚洲综合免费观看高清完整版在线| 精品99999| 7799精品视频| 欧美熟乱第一页| 99久久精品99国产精品| 国产麻豆精品在线| 日本美女视频一区二区| 亚洲综合图片区| 亚洲欧洲一区二区三区| 久久久久九九视频| 精品日韩在线一区| 91精品免费在线观看| 色av成人天堂桃色av| 成人黄色在线网站| 国产成人aaa| 国产福利精品一区| 国产另类ts人妖一区二区| 麻豆精品一二三| 日本sm残虐另类| 三级欧美韩日大片在线看| 一级特黄大欧美久久久| 亚洲欧美日韩在线| 亚洲免费观看视频| 亚洲欧美视频一区| 亚洲日韩欧美一区二区在线| 国产精品你懂的| 国产精品久久久久久一区二区三区| 欧美成人精精品一区二区频| 日韩精品中文字幕一区二区三区 | 成年人国产精品| 国产99精品国产| 福利一区在线观看| av网站免费线看精品| youjizz久久| 色综合久久综合| 91九色最新地址| 欧美日韩国产小视频| 欧美日韩www| 日韩精品一区在线| 久久综合九色综合97婷婷| 国产亚洲综合av| 国产精品卡一卡二卡三| 亚洲伦在线观看| 亚洲国产日韩精品| 亚洲第一主播视频| 免费看日韩精品| 国产一二三精品| 成人看片黄a免费看在线| 91碰在线视频| 欧美日韩国产成人在线免费| 这里只有精品免费| 久久影院视频免费| 中文字幕在线不卡一区| 亚洲亚洲人成综合网络| 免费高清在线视频一区·| 国产资源精品在线观看| www.性欧美| 欧美福利视频导航| 久久青草欧美一区二区三区| 国产精品国产a| 亚洲777理论| 国产综合久久久久影院| 91一区二区三区在线观看| 欧美日韩免费一区二区三区视频 | 日韩精品一区二区在线| 中文字幕乱码一区二区免费| 亚洲色图欧洲色图| 日本视频在线一区| av成人免费在线观看| 欧美另类一区二区三区| 国产日韩欧美一区二区三区乱码 | 99精品视频一区二区三区| 欧美日韩小视频| 欧美极品另类videosde| 性久久久久久久久| 高清不卡一二三区| 日韩一级黄色片| 亚洲图片你懂的| 国产一区二区精品久久| 欧美日韩在线观看一区二区| 国产亚洲欧洲997久久综合| 亚洲午夜在线观看视频在线| 国产经典欧美精品| 欧美男女性生活在线直播观看| 国产色综合久久| 日韩成人一区二区三区在线观看| 成人免费观看av| 欧美mv和日韩mv的网站| 午夜视频在线观看一区二区三区| 懂色av中文一区二区三区| 正在播放亚洲一区| 亚洲精品日韩专区silk| 国产凹凸在线观看一区二区| 日韩一区二区高清| 亚洲午夜一二三区视频| 99在线精品免费| 国产午夜精品理论片a级大结局| 午夜视频在线观看一区二区| 97se亚洲国产综合在线| 国产夜色精品一区二区av| 久久激情五月激情| 欧美一区二区在线观看| 亚洲午夜在线观看视频在线| 91小视频免费观看| 国产精品久久久久久久久免费桃花 | 成人av网站大全| 久久久久久久久免费| 免费不卡在线观看| 在线播放一区二区三区| 亚洲国产精品人人做人人爽| 99久久er热在这里只有精品15 | 伊人婷婷欧美激情| 91亚洲精品久久久蜜桃网站| 欧美国产精品一区二区三区| 国产精品99久久久久| 久久综合九色综合欧美98| 韩国一区二区在线观看| 精品久久一区二区| 精品亚洲国内自在自线福利| 欧美白人最猛性xxxxx69交| 另类小说欧美激情| 精品欧美一区二区在线观看 | 欧美大片拔萝卜| 毛片av中文字幕一区二区| 欧美精品色综合| 天堂成人免费av电影一区| 欧美人体做爰大胆视频| 视频在线观看91| 日韩欧美在线1卡| 老司机精品视频一区二区三区| 日韩视频在线永久播放| 免费成人在线播放| 久久久一区二区| 成人网页在线观看| 伊人性伊人情综合网| 在线视频亚洲一区| 日韩电影在线免费| 精品少妇一区二区三区在线播放 | 午夜精品123| 制服丝袜国产精品| 久久国产剧场电影| 国产欧美一二三区| 91久久精品国产91性色tv| 天天做天天摸天天爽国产一区| 日韩精品一区二区三区视频播放 | 性做久久久久久久免费看| 91麻豆精品国产91久久久使用方法| 秋霞影院一区二区| 国产欧美日韩在线| 欧美性高清videossexo| 日本不卡视频在线| 国产精品剧情在线亚洲| 欧美日韩久久一区二区|