Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        /// <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);
            }
        }