示例#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, Stereo1SampleFilter filter, bool is16bit)
 {
     unsafe
     {
         fixed(byte *begin = data)
         {
             if (is16bit)
             {
                 short *end = (short *)(begin + (data.Length & (~3)));
                 for (short *p = (short *)begin; p != (short *)end; p += 2)
                 {
                     filter(ref *p, ref *(p + 1));
                 }
             }
             else
             {
                 byte *end = begin + (data.Length & (~1));
                 for (byte *p = begin; p != end; p += 2)
                 {
                     short l = BiasedByteToShort(*p);
                     short r = BiasedByteToShort(*(p + 1));
                     filter(ref l, ref r);
                     *p = ClipToByte(l);
                     *(p + 1) = ClipToByte(r);
                 }
             }
         }
     }
 }
示例#2
0
文件: Util.cs 项目: ufcpp/UfcppSample
		/// <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, Stereo1SampleFilter filter, bool is16bit)
		{
			unsafe
			{
				fixed(byte* begin = data)
				{
					if(is16bit)
					{
						short* end = (short*)(begin + (data.Length & (~3)));
						for(short* p = (short*)begin; p != (short*)end; p += 2)
						{
							filter(ref *p, ref *(p + 1));
						}
					}
					else
					{
						byte* end = begin + (data.Length & (~1));
						for(byte* p = begin; p != end; p += 2)
						{
							short l = BiasedByteToShort(*p);
							short r = BiasedByteToShort(*(p + 1));
							filter(ref l, ref r);
							*p = ClipToByte(l);
							*(p + 1) = ClipToByte(r);
						}
					}
				}
			}
		}