Merge pull request #2042 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2016-08-09 01:12:21 -04:00 committed by GitHub
commit 615ea35a21
6 changed files with 63 additions and 36 deletions

View File

@ -63,6 +63,15 @@ namespace MediaBrowser.Api
Instance = this; Instance = this;
_sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress; _sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress;
_sessionManager.PlaybackStart += _sessionManager_PlaybackStart;
}
private void _sessionManager_PlaybackStart(object sender, PlaybackProgressEventArgs e)
{
if (!string.IsNullOrWhiteSpace(e.PlaySessionId))
{
PingTranscodingJob(e.PlaySessionId, e.IsPaused);
}
} }
void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e) void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e)
@ -401,7 +410,7 @@ namespace MediaBrowser.Api
} }
} }
Logger.Debug("Transcoding kill timer stopped for JobId {0} PlaySessionId {1}. Killing transcoding", job.Id, job.PlaySessionId); Logger.Info("Transcoding kill timer stopped for JobId {0} PlaySessionId {1}. Killing transcoding", job.Id, job.PlaySessionId);
KillTranscodingJob(job, true, path => true); KillTranscodingJob(job, true, path => true);
} }

View File

@ -165,40 +165,40 @@ namespace MediaBrowser.Api.Playback.Progressive
} }
} }
// Not static but transcode cache file exists //// Not static but transcode cache file exists
if (isTranscodeCached) //if (isTranscodeCached && state.VideoRequest == null)
{ //{
var contentType = state.GetMimeType(outputPath); // var contentType = state.GetMimeType(outputPath);
try // try
{ // {
if (transcodingJob != null) // if (transcodingJob != null)
{ // {
ApiEntryPoint.Instance.OnTranscodeBeginRequest(transcodingJob); // ApiEntryPoint.Instance.OnTranscodeBeginRequest(transcodingJob);
} // }
return await ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions // return await ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions
{ // {
ResponseHeaders = responseHeaders, // ResponseHeaders = responseHeaders,
ContentType = contentType, // ContentType = contentType,
IsHeadRequest = isHeadRequest, // IsHeadRequest = isHeadRequest,
Path = outputPath, // Path = outputPath,
FileShare = FileShare.ReadWrite, // FileShare = FileShare.ReadWrite,
OnComplete = () => // OnComplete = () =>
{ // {
if (transcodingJob != null) // if (transcodingJob != null)
{ // {
ApiEntryPoint.Instance.OnTranscodeEndRequest(transcodingJob); // ApiEntryPoint.Instance.OnTranscodeEndRequest(transcodingJob);
} // }
} // }
}).ConfigureAwait(false); // }).ConfigureAwait(false);
} // }
finally // finally
{ // {
state.Dispose(); // state.Dispose();
} // }
} //}
// Need to start ffmpeg // Need to start ffmpeg
try try

View File

@ -1,6 +1,7 @@
using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Serialization;
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Xml; using System.Xml;
using CommonIO; using CommonIO;
@ -24,13 +25,22 @@ namespace MediaBrowser.Common.Implementations.Serialization
// Need to cache these // Need to cache these
// http://dotnetcodebox.blogspot.com/2013/01/xmlserializer-class-may-result-in.html // http://dotnetcodebox.blogspot.com/2013/01/xmlserializer-class-may-result-in.html
private readonly ConcurrentDictionary<string, System.Xml.Serialization.XmlSerializer> _serializers = private readonly Dictionary<string, System.Xml.Serialization.XmlSerializer> _serializers =
new ConcurrentDictionary<string, System.Xml.Serialization.XmlSerializer>(); new Dictionary<string, System.Xml.Serialization.XmlSerializer>();
private System.Xml.Serialization.XmlSerializer GetSerializer(Type type) private System.Xml.Serialization.XmlSerializer GetSerializer(Type type)
{ {
var key = type.FullName; var key = type.FullName;
return _serializers.GetOrAdd(key, k => new System.Xml.Serialization.XmlSerializer(type)); lock (_serializers)
{
System.Xml.Serialization.XmlSerializer serializer;
if (!_serializers.TryGetValue(key, out serializer))
{
serializer = new System.Xml.Serialization.XmlSerializer(type);
_serializers[key] = serializer;
}
return serializer;
}
} }
/// <summary> /// <summary>

View File

@ -168,6 +168,12 @@ namespace MediaBrowser.MediaEncoding.Probing
} }
ExtractTimestamp(info); ExtractTimestamp(info);
var stereoMode = GetDictionaryValue(tags, "stereo_mode");
if (string.Equals(stereoMode, "left_right", StringComparison.OrdinalIgnoreCase))
{
info.Video3DFormat = Video3DFormat.FullSideBySide;
}
} }
return info; return info;

View File

@ -231,6 +231,8 @@ namespace MediaBrowser.Providers.MediaInfo
video.HasSubtitles = mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle); video.HasSubtitles = mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle);
video.Timestamp = mediaInfo.Timestamp; video.Timestamp = mediaInfo.Timestamp;
video.Video3DFormat = video.Video3DFormat ?? mediaInfo.Video3DFormat;
await _itemRepo.SaveMediaStreams(video.Id, mediaStreams, cancellationToken).ConfigureAwait(false); await _itemRepo.SaveMediaStreams(video.Id, mediaStreams, cancellationToken).ConfigureAwait(false);
if (options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || if (options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh ||

View File

@ -72,7 +72,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
User = view.UserId.HasValue ? _userManager.GetUserById(view.UserId.Value) : null, User = view.UserId.HasValue ? _userManager.GetUserById(view.UserId.Value) : null,
CollapseBoxSetItems = false, CollapseBoxSetItems = false,
Recursive = recursive, Recursive = recursive,
ExcludeItemTypes = new[] { "UserView", "CollectionFolder" } ExcludeItemTypes = new[] { "UserView", "CollectionFolder", "Person" },
}).ConfigureAwait(false); }).ConfigureAwait(false);