コード例 #1
0
        internal static byte[] GetWaveFormat(BinaryReader br)
        {
            RIFFHDR rIFFHDR = default(RIFFHDR);

            rIFFHDR._id   = br.ReadUInt32();
            rIFFHDR._len  = br.ReadInt32();
            rIFFHDR._type = br.ReadUInt32();
            if (rIFFHDR._id != 1179011410 && rIFFHDR._type != 1163280727)
            {
                return(null);
            }
            BLOCKHDR bLOCKHDR = default(BLOCKHDR);

            bLOCKHDR._id  = br.ReadUInt32();
            bLOCKHDR._len = br.ReadInt32();
            if (bLOCKHDR._id != 544501094)
            {
                return(null);
            }
            byte[] array = br.ReadBytes(bLOCKHDR._len);
            if (bLOCKHDR._len == 16)
            {
                byte[] array2 = new byte[18];
                Array.Copy(array, array2, 16);
                array = array2;
            }
            return(array);
        }
コード例 #2
0
        internal void GetStreamOffsets(Stream stream)
        {
            BinaryReader binaryReader = new BinaryReader(stream);
            RIFFHDR      rIFFHDR      = default(RIFFHDR);

            rIFFHDR._id   = binaryReader.ReadUInt32();
            rIFFHDR._len  = binaryReader.ReadInt32();
            rIFFHDR._type = binaryReader.ReadUInt32();
            if (rIFFHDR._id != 1179011410 && rIFFHDR._type != 1163280727)
            {
                throw new FormatException();
            }
            BLOCKHDR bLOCKHDR = default(BLOCKHDR);

            bLOCKHDR._id  = binaryReader.ReadUInt32();
            bLOCKHDR._len = binaryReader.ReadInt32();
            if (bLOCKHDR._id != 544501094)
            {
                throw new FormatException();
            }
            _wfx = binaryReader.ReadBytes(bLOCKHDR._len);
            if (bLOCKHDR._len == 16)
            {
                byte[] array = new byte[18];
                Array.Copy(_wfx, array, 16);
                _wfx = array;
            }
            DATAHDR dATAHDR;

            while (true)
            {
                dATAHDR = default(DATAHDR);
                if (stream.Position + 8 < stream.Length)
                {
                    dATAHDR._id  = binaryReader.ReadUInt32();
                    dATAHDR._len = binaryReader.ReadInt32();
                    if (dATAHDR._id == 1635017060)
                    {
                        break;
                    }
                    stream.Seek(dATAHDR._len, SeekOrigin.Current);
                    continue;
                }
                return;
            }
            _endOfStreamPosition = stream.Position + dATAHDR._len;
        }
コード例 #3
0
        internal static void WriteWaveHeader(Stream stream, WAVEFORMATEX waveEx, long position, int cData)
        {
            RIFFHDR  rIFFHDR  = new RIFFHDR(0);
            BLOCKHDR bLOCKHDR = new BLOCKHDR(0);
            DATAHDR  dATAHDR  = new DATAHDR(0);
            int      num      = Marshal.SizeOf((object)rIFFHDR);
            int      num2     = Marshal.SizeOf((object)bLOCKHDR);
            int      length   = waveEx.Length;
            int      num3     = Marshal.SizeOf((object)dATAHDR);
            int      num4     = num + num2 + length + num3;

            using (MemoryStream memoryStream = new MemoryStream())
            {
                BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
                try
                {
                    rIFFHDR._len = num4 + cData - 8;
                    binaryWriter.Write(rIFFHDR._id);
                    binaryWriter.Write(rIFFHDR._len);
                    binaryWriter.Write(rIFFHDR._type);
                    bLOCKHDR._len = length;
                    binaryWriter.Write(bLOCKHDR._id);
                    binaryWriter.Write(bLOCKHDR._len);
                    binaryWriter.Write(waveEx.ToBytes());
                    dATAHDR._len = cData;
                    binaryWriter.Write(dATAHDR._id);
                    binaryWriter.Write(dATAHDR._len);
                    stream.Seek(position, SeekOrigin.Begin);
                    stream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
                }
                finally
                {
                    ((IDisposable)binaryWriter).Dispose();
                }
            }
        }