public override void Dispose()
 {
     DisposeStream();
     if (RawWaveData != null)
     {
         Array.Clear(RawWaveData, 0, RawWaveData.Length);
         RawWaveData = null;
     }
     this.wformat  = null;
     this.WaveForm = null;
 }
Example #2
0
        /// <summary>
        /// Returns the Index where reading begins for a wave-sample (<see cref="RiffForm" />) in memory.
        /// </summary>
        /// <param name="riff">Our ram/riff-wave.</param>
        /// <returns>Index where reading begins</returns>
        public static int FindSampleStart(RiffForm riff)
        {
            int start = -1;

            //			if (!MustReadFromDisk)
            {
                foreach (KeyValuePair <long, SUBCHUNK> ck in riff.Cks.SubChunks)
                {
                    if (ck.Value.ckID == "data")
                    {
                        start = Convert.ToInt32(ck.Key) + 8;
                    }
                }
            }
            return(start);
        }
        void InitializeMemory(string path)
        {
            this.WaveForm = RiffForm.Load(path);
            this.wformat  = RiffUtil.ToNAudio(this.WaveForm.Cks.ckFmt);

            sampleData_ChunkLength = this.WaveForm["data"].ckLength;
            SampleData_SampleCount = SampleData_ChunkLength / WaveFormat.Channels;
            sampleData_DataStart   = RiffUtil.FindSampleStart(this.WaveForm);

            RawWaveData = new byte[sampleData_ChunkLength];
            using (waveFileInputStream = new FileStream(
                       this.FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                waveFileInputStream.Seek(sampleData_DataStart, SeekOrigin.Begin);
                waveFileInputStream.Read(RawWaveData, /*sampleData_DataStart*/ 0, SampleData_ChunkLength);
            }
        }