Ejemplo n.º 1
0
 /// <summary>
 /// Raw Wav Data に対してフィルタリングする。
 /// モノラル版。
 /// </summary>
 /// <param name="data">Raw Data</param>
 /// <param name="filter">フィルタ</param>
 /// <param name="is16bit">Raw Data の形式が16ビットか8ビットか。</param>
 public static void FilteringRawData(byte[] data, Monaural1SampleFilter filter, bool is16bit)
 {
     unsafe
     {
         fixed(byte *begin = data)
         {
             if (is16bit)
             {
                 short *end = (short *)(begin + (data.Length & (~1)));
                 for (short *p = (short *)begin; p != (short *)end; ++p)
                 {
                     filter(ref *p);
                 }
             }
             else
             {
                 byte *end = begin + data.Length;
                 for (byte *p = begin; p != end; ++p)
                 {
                     short l = BiasedByteToShort(*p);
                     filter(ref l);
                     *p = ClipToByte(l);
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
		/// <summary>
		/// Raw Wav Data に対してフィルタリングする。
		/// モノラル版。
		/// </summary>
		/// <param name="data">Raw Data</param>
		/// <param name="filter">フィルタ</param>
		/// <param name="is16bit">Raw Data の形式が16ビットか8ビットか。</param>
		public static void FilteringRawData(byte[] data, Monaural1SampleFilter filter, bool is16bit)
		{
			unsafe
			{
				fixed(byte* begin = data)
				{
					if(is16bit)
					{
						short* end = (short*)(begin + (data.Length & (~1)));
						for(short* p = (short*)begin; p != (short*)end; ++p)
						{
							filter(ref *p);
						}
					}
					else
					{
						byte* end = begin + data.Length;
						for(byte* p = begin; p != end; ++p)
						{
							short l = BiasedByteToShort(*p);
							filter(ref l);
							*p = ClipToByte(l);
						}
					}
				}
			}
		}