Пример #1
0
        public static WaveFile Import(Stream stream)
        {
            WaveFile wav = new WaveFile();

            while (stream.Position < stream.Length)
            {
                byte[] id = new byte[4];
                stream.Read(id, 0, 4);
                string idn = Encoding.UTF8.GetString(id, 0, 4);
                switch (idn)
                {
                default:
                    GenericChunk.Import(stream);
                    break;

                case "RIFF":
                    wav.RiffHeader = RiffChunk.Import(stream);
                    break;

                case "fmt ":
                    wav.FmtHeader = FmtChunk.Import(stream);
                    break;

                case "data":
                    wav.DataChunk = WaveDataChunk.Import(stream);
                    break;
                }
            }

            return(wav);
        }
Пример #2
0
        public static new FmtChunk Import(Stream stream)
        {
            FmtChunk chunk = new FmtChunk();

            chunk.Size          = stream.ReadInt();
            chunk.AudioFormat   = stream.ReadShort();
            chunk.NumChannels   = stream.ReadShort();
            chunk.SampleRate    = stream.ReadInt();
            chunk.ByteRate      = stream.ReadInt();
            chunk.BlockAlign    = stream.ReadShort();
            chunk.BitsPerSample = stream.ReadShort();

            if (chunk.Size > 16)
            {
                chunk.ExtraParamSize = stream.ReadShort();
                chunk.ExtraParams    = new byte[chunk.ExtraParamSize];
                stream.Read(chunk.ExtraParams, 0, chunk.ExtraParamSize);
            }

            return(chunk);
        }