using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.MediaInfo; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using System.IO; namespace MediaBrowser.Controller.Library { public interface IMediaSourceManager { /// /// Adds the parts. /// /// The providers. void AddParts(IEnumerable providers); /// /// Gets the media streams. /// /// The item identifier. /// IEnumerable<MediaStream>. List GetMediaStreams(Guid itemId); /// /// Gets the media streams. /// /// The media source identifier. /// IEnumerable<MediaStream>. List GetMediaStreams(string mediaSourceId); /// /// Gets the media streams. /// /// The query. /// IEnumerable<MediaStream>. List GetMediaStreams(MediaStreamQuery query); /// /// Gets the playack media sources. /// /// The identifier. /// The user identifier. /// if set to true [enable path substitution]. /// The supported live media types. /// The cancellation token. /// IEnumerable<MediaSourceInfo>. Task> GetPlayackMediaSources(string id, string userId, bool enablePathSubstitution, string[] supportedLiveMediaTypes, CancellationToken cancellationToken); /// /// Gets the static media sources. /// /// The item. /// if set to true [enable path substitution]. /// The user. /// IEnumerable<MediaSourceInfo>. List GetStaticMediaSources(IHasMediaSources item, bool enablePathSubstitution, User user = null); /// /// Gets the static media source. /// /// MediaSourceInfo. Task GetMediaSource(IHasMediaSources item, string mediaSourceId, string liveStreamId, bool enablePathSubstitution, CancellationToken cancellationToken); /// /// Opens the media source. /// /// The request. /// The cancellation token. /// Task<MediaSourceInfo>. Task OpenLiveStream(LiveStreamRequest request, CancellationToken cancellationToken); /// /// Gets the live stream. /// /// The identifier. /// The cancellation token. /// Task<MediaSourceInfo>. Task GetLiveStream(string id, CancellationToken cancellationToken); Task> GetLiveStreamWithDirectStreamProvider(string id, CancellationToken cancellationToken); /// /// Closes the media source. /// /// The live stream identifier. /// Task. Task CloseLiveStream(string id); } public interface IDirectStreamProvider { Task CopyToAsync(Stream stream, CancellationToken cancellationToken); } }