/// <summary> /// Release all resource. /// </summary> public void Dispose() { _fileCloseHandle.Free(); _fileLengthHandle.Free(); _fileReadHandle.Free(); _fileSeekHandle.Free(); _fileCloseHandler = null; _fileLengthHandler = null; _fileReadHandler = null; _fileSeekHandler = null; StreamHandlers = new FileHandlers(); }
/// <summary> /// Create a <see cref="BassStream"/> form a <see cref="Stream"/>. /// </summary> /// <param name="stream">Stream to wrap.</param> public BassStream(Stream stream) { _stream = stream; _streamPosition = _stream.Position; _fileCloseHandler = OnFileClose; _fileLengthHandler = OnFileLength; _fileReadHandler = OnFileRead; _fileSeekHandler = OnFileSeek; _fileCloseHandle = GCHandle.Alloc(_fileCloseHandler); _fileLengthHandle = GCHandle.Alloc(_fileLengthHandler); _fileReadHandle = GCHandle.Alloc(_fileReadHandler); _fileSeekHandle = GCHandle.Alloc(_fileSeekHandler); StreamHandlers = new FileHandlers { CloseHandler = _fileCloseHandler, LengthHandler = _fileLengthHandler, ReadHandler = _fileReadHandler, SeekHandler = _fileSeekHandler }; }
/// <summary> /// Create a sample stream from an MP3, MP2, MP1, OGG, WAV, AIFF or plug-in supported file via user callback functions. /// </summary> /// <param name="handlers">The user defined file functions. </param> /// <param name="configs">Configure of <see cref="AudioFileStream" />.</param> /// <param name="systemType">File system to use.</param> /// <param name="user">User instance data to pass to the callback functions. </param> public AudioFileStream(FileHandlers handlers, StreamCreateFileUserConfig configs, StreamFileSystemType systemType, IntPtr user) { Handle = AudioStreamModule.StreamCreateFileUserFunction.CheckResult( AudioStreamModule.StreamCreateFileUserFunction.Delegate(systemType, configs, ref handlers, user)); }
/// <summary> /// Create a sample stream from a WMA file via user callback functions. /// </summary> /// <param name="handlers">The user defined file functions. </param> /// <param name="configs">Configure of <see cref="WmaStream" />.</param> /// <param name="systemType">File system to use.</param> /// <param name="user">User instance data to pass to the callback functions. </param> public WmaStream(FileHandlers handlers, WmaStreamCreateConfig configs, StreamFileSystemType systemType, IntPtr user) { Handle = WmaModule.WmaStreamCreateFileUserFunction.CheckResult( WmaModule.WmaStreamCreateFileUserFunction.Delegate(systemType, configs, ref handlers, user)); }