Accord.Audio.Formats.FormatHeader.GetBytes C# (CSharp) Method

GetBytes() public method

public GetBytes ( ) : byte[]
return byte[]
        public byte[] GetBytes()
        {
            int rawsize = Marshal.SizeOf(this);
            byte[] rawdata = new byte[rawsize];
            GCHandle handle = GCHandle.Alloc(rawdata, GCHandleType.Pinned);
            IntPtr buffer = handle.AddrOfPinnedObject();
            Marshal.StructureToPtr(this, buffer, false);
            handle.Free();
            return rawdata;
        }
    }

Usage Example

Esempio n. 1
0
        private void firstWriteHeaders()
        {
            // Create data header
            header.Header = new char[] { 'd', 'a', 't', 'a' };
            header.Length = this.bytes;
            byte[] dataHeader = header.GetBytes();

            // Create Wave format header
            format.FmtHeader             = new char[] { 'f', 'm', 't', ' ' };
            format.Length                = 16;
            format.Channels              = (short)this.channels;
            format.FormatTag             = (short)sampleFormat.ToWaveFormat();
            format.SamplesPerSecond      = sampleRate;
            format.BitsPerSample         = (short)this.bitsPerSample;
            format.BlockAlignment        = (short)this.blockAlign;
            format.AverageBytesPerSecond = this.averageBitsPerSecond / 8;
            waveFormat = format.GetBytes();

            // Create RIFF header
            riff.RiffHeader = new char[] { 'R', 'I', 'F', 'F' };
            riff.WaveHeader = new char[] { 'W', 'A', 'V', 'E' };
            riff.Length     = this.bytes + dataHeader.Length + waveFormat.Length;
            byte[] riffHeader = riff.GetBytes();

            // Write headers to allocate space
            waveStream.Write(riffHeader, 0, riffHeader.Length);
            waveStream.Write(waveFormat, 0, waveFormat.Length);
            waveStream.Write(dataHeader, 0, dataHeader.Length);
        }
FormatHeader