/// <summary> /// Converts specified sample's buffer size to a sample's duration. /// </summary> /// <param name="bufferSize">Sample's buffer size.</param> /// <returns>Sample's duration.</returns> /// <exception cref="EndOfStreamException">This stream contains no data.</exception> public double GetDurationFromBufferSize(uint bufferSize) { FlacMediaStreamInfo streamInfo = this.GetStreamInfo(); if (streamInfo.BytesPerSecond == 0) { return(0); } return((double)bufferSize / streamInfo.BytesPerSecond); }
private void MetadataCallback(object sender, StreamDecoderMetadataEventArgs e) { if (e.Metadata.Type == MetadataType.StreamInfo && e.Metadata.StreamInfo != null) { uint blockAlign = e.Metadata.StreamInfo.Channels * (e.Metadata.StreamInfo.BitsPerSample / 8); uint avgBytesPerSec = e.Metadata.StreamInfo.SampleRate * blockAlign; double duration = (double)e.Metadata.StreamInfo.TotalSamples / e.Metadata.StreamInfo.SampleRate; this._streamInfo = new FlacMediaStreamInfo( duration, avgBytesPerSec, e.Metadata.StreamInfo.BitsPerSample, e.Metadata.StreamInfo.SampleRate, e.Metadata.StreamInfo.Channels); } }
/// <summary> /// Converts specified sample's duration to a sample's buffer size. /// </summary> /// <param name="duration">Sample's duration.</param> /// <returns>Sample's buffer size.</returns> /// <exception cref="System.IO.EndOfStreamException">This stream contains no data.</exception> public uint GetBufferSizeFromDuration(double duration) { FlacMediaStreamInfo streamInfo = this.GetStreamInfo(); return((uint)(duration * streamInfo.BytesPerSecond)); }
private void MetadataCallback(object sender, StreamDecoderMetadataEventArgs e) { if (e.Metadata.Type == MetadataType.StreamInfo && e.Metadata.StreamInfo != null) { uint blockAlign = e.Metadata.StreamInfo.Channels*(e.Metadata.StreamInfo.BitsPerSample/8); uint avgBytesPerSec = e.Metadata.StreamInfo.SampleRate*blockAlign; double duration = (double) e.Metadata.StreamInfo.TotalSamples/e.Metadata.StreamInfo.SampleRate; this._streamInfo = new FlacMediaStreamInfo( duration, avgBytesPerSec, e.Metadata.StreamInfo.BitsPerSample, e.Metadata.StreamInfo.SampleRate, e.Metadata.StreamInfo.Channels); } }