From f756e39b9d5b461e6bcaa4e71006038983d28213 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 30 Mar 2014 12:49:40 -0400 Subject: [PATCH] restored live tv playback in the web client --- MediaBrowser.Api/MediaBrowser.Api.csproj | 1 + MediaBrowser.Api/Music/InstantMixService.cs | 75 ++-- .../Playback/BaseStreamingService.cs | 50 +-- .../Playback/ProgressiveStreamService.cs | 73 ++++ MediaBrowser.Api/Playback/StreamRequest.cs | 5 - MediaBrowser.Api/Playback/StreamState.cs | 2 - MediaBrowser.Controller/Dto/IDtoService.cs | 7 + .../Library/IMusicManager.cs | 38 +++ .../LiveTv/ILiveTvRecording.cs | 4 +- .../MediaBrowser.Controller.csproj | 4 + .../MediaEncoding/EncodingOptions.cs | 79 +++++ .../MediaEncoding/EncodingResult.cs | 13 + .../MediaEncoding/VideoEncodingOptions.cs | 26 ++ .../Encoder/AudioEncoder.cs | 91 +++++ .../Encoder/EncodingUtils.cs | 233 +++++++++++++ .../Encoder/FFMpegProcess.cs | 168 +++++++++ .../Encoder/InternalEncodingTask.cs | 95 ++++++ .../Encoder/InternalEncodingTaskFactory.cs | 323 ++++++++++++++++++ .../Encoder/MediaEncoder.cs | 64 +--- .../MediaBrowser.MediaEncoding.csproj | 5 + MediaBrowser.Model/LiveTv/ChannelInfoDto.cs | 3 + MediaBrowser.Model/LiveTv/RecordingInfoDto.cs | 11 +- .../Dto/DtoService.cs | 48 ++- .../Library/MusicManager.cs | 67 ++++ .../Library/Resolvers/Audio/AudioResolver.cs | 3 +- .../LiveTv/LiveTvDtoService.cs | 11 +- ...MediaBrowser.Server.Implementations.csproj | 1 + .../Session/SessionManager.cs | 59 +++- .../ApplicationHost.cs | 2 + MediaBrowser.WebDashboard/ApiClient.js | 2 +- MediaBrowser.WebDashboard/packages.config | 2 +- 31 files changed, 1373 insertions(+), 192 deletions(-) create mode 100644 MediaBrowser.Api/Playback/ProgressiveStreamService.cs create mode 100644 MediaBrowser.Controller/Library/IMusicManager.cs create mode 100644 MediaBrowser.Controller/MediaEncoding/EncodingOptions.cs create mode 100644 MediaBrowser.Controller/MediaEncoding/EncodingResult.cs create mode 100644 MediaBrowser.Controller/MediaEncoding/VideoEncodingOptions.cs create mode 100644 MediaBrowser.MediaEncoding/Encoder/AudioEncoder.cs create mode 100644 MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs create mode 100644 MediaBrowser.MediaEncoding/Encoder/FFMpegProcess.cs create mode 100644 MediaBrowser.MediaEncoding/Encoder/InternalEncodingTask.cs create mode 100644 MediaBrowser.MediaEncoding/Encoder/InternalEncodingTaskFactory.cs create mode 100644 MediaBrowser.Server.Implementations/Library/MusicManager.cs diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index 18559a68df..c03eddf99e 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -103,6 +103,7 @@ + diff --git a/MediaBrowser.Api/Music/InstantMixService.cs b/MediaBrowser.Api/Music/InstantMixService.cs index 9b9df3a92c..c39811bb66 100644 --- a/MediaBrowser.Api/Music/InstantMixService.cs +++ b/MediaBrowser.Api/Music/InstantMixService.cs @@ -1,9 +1,9 @@ using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Querying; using ServiceStack; -using System; using System.Collections.Generic; using System.Linq; @@ -36,103 +36,74 @@ namespace MediaBrowser.Api.Music public class InstantMixService : BaseApiService { private readonly IUserManager _userManager; - private readonly ILibraryManager _libraryManager; private readonly IDtoService _dtoService; + private readonly IMusicManager _musicManager; - public InstantMixService(IUserManager userManager, ILibraryManager libraryManager, IDtoService dtoService) + public InstantMixService(IUserManager userManager, IDtoService dtoService, IMusicManager musicManager) { _userManager = userManager; - _libraryManager = libraryManager; _dtoService = dtoService; + _musicManager = musicManager; } public object Get(GetInstantMixFromSong request) { - var item = _dtoService.GetItemByDtoId(request.Id); + var item = (Audio)_dtoService.GetItemByDtoId(request.Id); - var result = GetInstantMixResult(request, item.Genres); + var user = _userManager.GetUserById(request.UserId.Value); - return ToOptimizedSerializedResultUsingCache(result); + var items = _musicManager.GetInstantMixFromSong(item, user); + + return GetResult(items, user, request); } public object Get(GetInstantMixFromAlbum request) { var album = (MusicAlbum)_dtoService.GetItemByDtoId(request.Id); - var genres = album - .RecursiveChildren - .OfType