Ejemplo n.º 1
0
        public override Task <IOutputStream> Duplicate(IOutputStream stream)
        {
            var outputStream = stream as BassOutputStream;

            if (outputStream.Provider.Flags.HasFlag(BassStreamProviderFlags.Serial))
            {
                Logger.Write(this, LogLevel.Warn, "Cannot duplicate stream for file \"{0}\" with serial provider.", stream.FileName);
                return(null);
            }
            var flags = BassFlags.Default;

            if (this.Float)
            {
                flags |= BassFlags.Float;
            }
            var result = this.StreamFactory.CreateBasicStream(stream.PlaylistItem, flags);

            if (result.IsEmpty)
            {
                return(null);
            }
            outputStream = new BassOutputStream(this, this.PipelineManager, result, stream.PlaylistItem);
            outputStream.InitializeComponent(this.Core);
#if NET40
            return(TaskEx.FromResult <IOutputStream>(outputStream));
#else
            return(Task.FromResult <IOutputStream>(outputStream));
#endif
        }
Ejemplo n.º 2
0
        public override async Task <IOutputStream> Load(PlaylistItem playlistItem, bool immidiate)
        {
            if (!this.IsStarted)
            {
                await this.Start().ConfigureAwait(false);
            }
            //TODO: Why do we do this? Multiple streams for the same file are valid.
            if (this.StreamFactory.HasActiveStream(playlistItem.FileName))
            {
                Logger.Write(this, LogLevel.Warn, "The stream is already loaded: {0} => {1}", playlistItem.Id, playlistItem.FileName);
            }
            Logger.Write(this, LogLevel.Debug, "Loading stream: {0} => {1}", playlistItem.Id, playlistItem.FileName);
            var flags = BassFlags.Default;

            if (this.Float)
            {
                flags |= BassFlags.Float;
            }
            var stream = this.StreamFactory.CreateInteractiveStream(playlistItem, immidiate, flags);

            if (stream.IsEmpty)
            {
                return(null);
            }
            var outputStream = new BassOutputStream(this, this.PipelineManager, stream, playlistItem);

            outputStream.InitializeComponent(this.Core);
            this.OnLoaded(outputStream);
            return(outputStream);
        }
Ejemplo n.º 3
0
        public override async Task <IOutputStream> Load(PlaylistItem playlistItem, bool immidiate)
        {
            if (!this.IsStarted)
            {
                await this.Start().ConfigureAwait(false);
            }
            Logger.Write(this, LogLevel.Debug, "Loading stream: {0} => {1}", playlistItem.Id, playlistItem.FileName);
            var stream = await this.StreamFactory.CreateStream(playlistItem, immidiate).ConfigureAwait(false);

            if (stream.IsEmpty)
            {
                return(null);
            }
            var outputStream = new BassOutputStream(this, this.PipelineManager, stream.Provider, playlistItem, stream.ChannelHandle);

            outputStream.InitializeComponent(this.Core);
            return(outputStream);
        }