public async Task <object> Post(GetPostedPlaybackInfo request) { var authInfo = AuthorizationContext.GetAuthorizationInfo(Request); var profile = request.DeviceProfile; //Logger.Info("GetPostedPlaybackInfo profile: {0}", _json.SerializeToString(profile)); if (profile == null) { var caps = _deviceManager.GetCapabilities(authInfo.DeviceId); if (caps != null) { profile = caps.DeviceProfile; } } var info = await GetPlaybackInfo(request.Id, request.UserId, new[] { MediaType.Audio, MediaType.Video }, request.MediaSourceId, request.LiveStreamId).ConfigureAwait(false); if (profile != null) { var mediaSourceId = request.MediaSourceId; SetDeviceSpecificData(request.Id, info, profile, authInfo, request.MaxStreamingBitrate ?? profile.MaxStreamingBitrate, request.StartTimeTicks ?? 0, mediaSourceId, request.AudioStreamIndex, request.SubtitleStreamIndex, request.UserId); } return(ToOptimizedResult(info)); }
public async Task <PlaybackInfoResponse> GetPlaybackInfo(GetPostedPlaybackInfo request) { var authInfo = _authContext.GetAuthorizationInfo(Request); var profile = request.DeviceProfile; //Logger.Info("GetPostedPlaybackInfo profile: {0}", _json.SerializeToString(profile)); if (profile == null) { var caps = _deviceManager.GetCapabilities(authInfo.DeviceId); if (caps != null) { profile = caps.DeviceProfile; } } var info = await GetPlaybackInfo(request.Id, request.UserId, new[] { MediaType.Audio, MediaType.Video }, request.MediaSourceId, request.LiveStreamId).ConfigureAwait(false); if (profile != null) { var mediaSourceId = request.MediaSourceId; SetDeviceSpecificData(request.Id, info, profile, authInfo, request.MaxStreamingBitrate ?? profile.MaxStreamingBitrate, request.StartTimeTicks ?? 0, mediaSourceId, request.AudioStreamIndex, request.SubtitleStreamIndex, request.MaxAudioChannels, request.UserId, request.EnableDirectPlay, request.ForceDirectPlayRemoteMediaSource, request.EnableDirectStream, request.EnableTranscoding, request.AllowVideoStreamCopy, request.AllowAudioStreamCopy); } return(info); }
public async Task <PlaybackInfoResponse> GetPlaybackInfo(GetPostedPlaybackInfo request) { var authInfo = _authContext.GetAuthorizationInfo(Request); var profile = request.DeviceProfile; //Logger.Info("GetPostedPlaybackInfo profile: {0}", _json.SerializeToString(profile)); if (profile == null) { var caps = _deviceManager.GetCapabilities(authInfo.DeviceId); if (caps != null) { profile = caps.DeviceProfile; } } var info = await GetPlaybackInfo(request.Id, request.UserId, new[] { MediaType.Audio, MediaType.Video }, request.MediaSourceId, request.LiveStreamId).ConfigureAwait(false); if (profile != null) { var mediaSourceId = request.MediaSourceId; SetDeviceSpecificData(request.Id, info, profile, authInfo, request.MaxStreamingBitrate ?? profile.MaxStreamingBitrate, request.StartTimeTicks ?? 0, mediaSourceId, request.AudioStreamIndex, request.SubtitleStreamIndex, request.MaxAudioChannels, request.UserId, request.EnableDirectPlay, request.ForceDirectPlayRemoteMediaSource, request.EnableDirectStream, request.EnableTranscoding, request.AllowVideoStreamCopy, request.AllowAudioStreamCopy); } if (request.AutoOpenLiveStream) { var mediaSource = string.IsNullOrWhiteSpace(request.MediaSourceId) ? info.MediaSources.FirstOrDefault() : info.MediaSources.FirstOrDefault(i => string.Equals(i.Id, request.MediaSourceId, StringComparison.Ordinal)); if (mediaSource != null && mediaSource.RequiresOpening && string.IsNullOrWhiteSpace(mediaSource.LiveStreamId)) { var openStreamResult = await OpenMediaSource(new OpenMediaSource { AudioStreamIndex = request.AudioStreamIndex, DeviceProfile = request.DeviceProfile, EnableDirectPlay = request.EnableDirectPlay, EnableDirectStream = request.EnableDirectStream, ForceDirectPlayRemoteMediaSource = request.ForceDirectPlayRemoteMediaSource, ItemId = request.Id, MaxAudioChannels = request.MaxAudioChannels, MaxStreamingBitrate = request.MaxStreamingBitrate, PlaySessionId = info.PlaySessionId, StartTimeTicks = request.StartTimeTicks, SubtitleStreamIndex = request.SubtitleStreamIndex, UserId = request.UserId, OpenToken = mediaSource.OpenToken }).ConfigureAwait(false); info.MediaSources = new List <MediaSourceInfo> { openStreamResult.MediaSource }; } } return(info); }
public async Task <object> Post(GetPostedPlaybackInfo request) { var result = await GetPlaybackInfo(request).ConfigureAwait(false); return(ToOptimizedResult(result)); }