コード例 #1
0
ファイル: AudioBuffer.cs プロジェクト: 5l1v3r1/dastankbank-1
        /// <summary>
        /// construct audio file
        /// passing in audio size and id3 length tag (if any) to help with bitrate calculations
        /// </summary>
        /// <param name="sourceBuffer"></param>
        /// <param name="id3DurationTag"></param>
        public AudioBuffer(byte[] sourceBuffer, TimeSpan?id3DurationTag)
            :
            base(AudioFrameFactory.CreateFrame(sourceBuffer), id3DurationTag)
        {
            _sourceBuffer = sourceBuffer;

            CheckConsistency();
        }
コード例 #2
0
ファイル: AudioFile.cs プロジェクト: 5l1v3r1/dastankbank-1
        private static AudioFrame ReadFirstFrame(FileInfo sourceFileInfo, UInt32 audioStart, UInt32 audioNumBytes)
        {
            using (FileStream stream = sourceFileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.Write))
            {
                stream.Seek(audioStart, SeekOrigin.Begin);

                // read a base level mp3 frame header
                // if it can't even do that right, just fail the call.
                return(AudioFrameFactory.CreateFrame(stream, audioNumBytes));
            }
        }
コード例 #3
0
ファイル: Audio.cs プロジェクト: 5l1v3r1/dastankbank-1
        /// <summary>
        /// Count frames and bytes of file to see who's telling porkies
        /// </summary>
        public void ScanWholeFile()
        {
            _audioStats._numFrames = 0;
            _audioStats._numBytes  = 0;

            using (Stream stream = OpenAudioStream())
            {
                uint payloadStart = (uint)stream.Position;
                try
                {
                    while (true)
                    {
                        uint pos            = (uint)stream.Position;
                        uint used           = pos - payloadStart;
                        uint remainingBytes = NumPayloadBytes - used;

                        AudioFrame frame = AudioFrameFactory.CreateFrame(stream, remainingBytes);
                        if (frame == null)
                        {
                            break;
                        }

                        ++_audioStats._numFrames;
                        _audioStats._numBytes += frame.FrameLengthInBytes;
                        //Trace.WriteLine(string.Format("frame {0} ({1} bytes) found at {2}",
                        //                              _audioStats._numFrames,
                        //                              frame.Header.FrameLengthInBytes,
                        //                              stream.Position - frame.Header.FrameLengthInBytes));
                    }
                }
                catch (Exception e)
                {
                    _hasInconsistencies = true;
                    Trace.WriteLine(e.Message);
                }
            }
        }