|
@@ -167,25 +167,28 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
|
if (_currentItem == null || _device.IsStopped)
|
|
|
return;
|
|
|
|
|
|
- if (!_playbackStarted)
|
|
|
+ var playlistItem = Playlist.FirstOrDefault(p => p.PlayState == 1);
|
|
|
+
|
|
|
+ if (playlistItem != null)
|
|
|
{
|
|
|
- await _sessionManager.OnPlaybackStart(new PlaybackInfo
|
|
|
+ if (!_playbackStarted)
|
|
|
{
|
|
|
- Item = _currentItem,
|
|
|
- SessionId = _session.Id,
|
|
|
- CanSeek = true,
|
|
|
- QueueableMediaTypes = new List<string> { _currentItem.MediaType }
|
|
|
-
|
|
|
- }).ConfigureAwait(false);
|
|
|
+ await _sessionManager.OnPlaybackStart(new PlaybackInfo
|
|
|
+ {
|
|
|
+ Item = _currentItem,
|
|
|
+ SessionId = _session.Id,
|
|
|
+ CanSeek = true,
|
|
|
+ QueueableMediaTypes = new List<string> { _currentItem.MediaType },
|
|
|
+ MediaSourceId = playlistItem.MediaSourceId,
|
|
|
+ AudioStreamIndex = playlistItem.AudioStreamIndex,
|
|
|
+ SubtitleStreamIndex = playlistItem.SubtitleStreamIndex
|
|
|
|
|
|
- _playbackStarted = true;
|
|
|
- }
|
|
|
+ }).ConfigureAwait(false);
|
|
|
|
|
|
- if ((_device.IsPlaying || _device.IsPaused))
|
|
|
- {
|
|
|
- var playlistItem = Playlist.FirstOrDefault(p => p.PlayState == 1);
|
|
|
+ _playbackStarted = true;
|
|
|
+ }
|
|
|
|
|
|
- if (playlistItem != null)
|
|
|
+ if ((_device.IsPlaying || _device.IsPaused))
|
|
|
{
|
|
|
var ticks = _device.Position.Ticks;
|
|
|
|
|
@@ -487,7 +490,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
|
|
|
|
return (contentFeatures + orgOp + orgCi + dlnaflags).Trim(';');
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private PlaylistItem GetPlaylistItem(BaseItem item, List<MediaStream> mediaStreams, DeviceProfile profile)
|
|
|
{
|
|
|
var video = item as Video;
|
|
@@ -563,10 +566,10 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
|
_logger.Debug("{0} - SetAvTransport Uri: {1} DlnaHeaders: {2}", _device.Properties.Name, nextTrack.StreamUrl, dlnaheaders);
|
|
|
|
|
|
await _device.SetAvTransport(nextTrack.StreamUrl, dlnaheaders, nextTrack.Didl);
|
|
|
-
|
|
|
+
|
|
|
if (nextTrack.StartPositionTicks > 0 && !nextTrack.Transcode)
|
|
|
await _device.Seek(TimeSpan.FromTicks(nextTrack.StartPositionTicks));
|
|
|
-
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|