コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RIFFFileReader" /> class.
        /// </summary>
        /// <param name="fileName">Filename which points to a wave file.</param>
        /// <param name="useWordAlignment">whether to ensure word-alignment (defaults to false)</param>
        public RIFFFileReader(string fileName, bool useWordAlignment = false, bool closeBinaryFile = false)
        {
            if (fileName == null)
            {
                throw new ArgumentNullException("fileName");
            }

            _useWordAlignment = useWordAlignment;
            _closeBinaryFile  = closeBinaryFile;

            _binaryFile = new BinaryFile(fileName, BinaryFile.ByteOrder.BigEndian);

            var firstChunkId = new String(_binaryFile.ReadChars(4));

            if (firstChunkId == "RIFF")
            {
                // read RIFF data size
                var chunkSize = _binaryFile.ReadInt32();

                // read form-type (WAVE etc)
                var field = new string(_binaryFile.ReadChars(4));

                Log.Verbose("Processing RIFF. Data size: {0}, field: {1}", chunkSize, field);

                _chunks = ReadChunks(_binaryFile);
            }
            else
            {
                // unrecognized file format, not a RIFF File
                _chunks = new List <RIFFFileChunk>(2);
                Log.Error("Unknown format (not RIFF). First chunk Id: {0}", firstChunkId);
            }

            Log.Verbose(GetRIFFFileChunkInformation(Chunks));

            _binaryFile.Position = 0;
        }