Exemplo n.º 1
0
        /// <summary>
        /// Creates an instance of the Mp3Stream class by passing in a Stream object containing the
        /// MP3 data.
        /// </summary>
        /// <param name="stream">The Stream object containing the MP3 data.</param>
        /// <param name="permissions">The permissions applicable to the MP3 data. Defaults to read-only access.</param>
        public Mp3Stream(Stream stream, Mp3Permissions permissions = Mp3Permissions.Read)
        {
            SetupStream(stream, permissions);

            //The stream is owned by the caller, so it is their responsibility to dispose it.
            StreamOwned = false;
        }
Exemplo n.º 2
0
        public Mp3File(FileInfo fileInfo, Mp3Permissions permissions = Mp3Permissions.Read)
        {
            if (fileInfo == null)
            {
                throw new ArgumentNullException("fileInfo");
            }

            FileAccess fileAccess = PermissionsToFileAccessMapping[permissions];
            FileStream fileStream = fileInfo.Open(FileMode.Open, fileAccess, FileShare.Read);

            SetupStream(fileStream, permissions);

            //Since we created the stream, we are responsible for disposing it when we're done
            StreamOwned = true;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates an instance of the Mp3Stream class by passing in the MP3 data as a byte array.
        /// </summary>
        /// <param name="byteStream">The byte array representing the MP3 data.</param>
        /// <param name="permissions">The permissions applicable to the MP3 data. Defaults to read-only access.</param>
        public Mp3Stream(byte[] byteStream, Mp3Permissions permissions = Mp3Permissions.Read)
        {
            if (byteStream == null)
            {
                throw new ArgumentNullException("byteStream");
            }

            //Note: For Write permissions, we cannot use the MemoryStream ctor that takes the byte
            //array as a parameter. Those streams cannot increase their capacity using the SetLength
            //method, which is needed by the framework when adding tag information to the stream.
            var stream = new MemoryStream(byteStream.Length);

            stream.Write(byteStream, 0, byteStream.Length);

            SetupStream(stream, permissions);
        }
Exemplo n.º 4
0
        protected void SetupStream(Stream stream, Mp3Permissions permissions)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }
            if (permissions == Mp3Permissions.Write)
            {
                permissions = Mp3Permissions.ReadWrite;
            }

            if (!stream.CanRead || !stream.CanSeek)
            {
                throw new Id3Exception(Id3Messages.StreamNotReadableOrSeekable);
            }
            if (permissions == Mp3Permissions.ReadWrite && !stream.CanWrite)
            {
                throw new Id3Exception(Id3Messages.StreamNotWritable);
            }

            Stream       = stream;
            _permissions = permissions;
        }
 public Mp3FileStub(string file, Mp3Permissions mp3Permissions)
 {
 }