Browse Source

Merge pull request #1512 from MediaBrowser/dev

Dev
Luke 9 years ago
parent
commit
6eaf10679e

+ 5 - 0
MediaBrowser.Api/Playback/Progressive/VideoService.cs

@@ -148,6 +148,11 @@ namespace MediaBrowser.Api.Playback.Progressive
                     args += " -bsf:v h264_mp4toannexb";
                     args += " -bsf:v h264_mp4toannexb";
                 }
                 }
 
 
+                if (state.RunTimeTicks.HasValue && state.VideoRequest.CopyTimestamps)
+                {
+                    args += " -copyts -avoid_negative_ts disabled -start_at_zero";
+                }
+                
                 return args;
                 return args;
             }
             }
 
 

+ 1 - 1
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -1359,7 +1359,7 @@ namespace MediaBrowser.Controller.Entities
         {
         {
             if (!string.IsNullOrEmpty(info.Path))
             if (!string.IsNullOrEmpty(info.Path))
             {
             {
-                var itemByPath = LibraryManager.RootFolder.FindByPath(info.Path);
+                var itemByPath = LibraryManager.FindByPath(info.Path);
 
 
                 if (itemByPath == null)
                 if (itemByPath == null)
                 {
                 {

+ 2 - 0
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -45,6 +45,8 @@ namespace MediaBrowser.Controller.Entities
         public string NameLessThan { get; set; }
         public string NameLessThan { get; set; }
         public string NameContains { get; set; }
         public string NameContains { get; set; }
 
 
+        public string Path { get; set; }
+        
         public string Person { get; set; }
         public string Person { get; set; }
         public string[] PersonIds { get; set; }
         public string[] PersonIds { get; set; }
         public string[] ItemIds { get; set; }
         public string[] ItemIds { get; set; }

+ 7 - 0
MediaBrowser.Controller/Library/ILibraryManager.cs

@@ -56,6 +56,13 @@ namespace MediaBrowser.Controller.Library
         /// <returns>Task{Person}.</returns>
         /// <returns>Task{Person}.</returns>
         Person GetPerson(string name);
         Person GetPerson(string name);
 
 
+        /// <summary>
+        /// Finds the by path.
+        /// </summary>
+        /// <param name="path">The path.</param>
+        /// <returns>BaseItem.</returns>
+        BaseItem FindByPath(string path);
+        
         /// <summary>
         /// <summary>
         /// Gets the artist.
         /// Gets the artist.
         /// </summary>
         /// </summary>

+ 1 - 9
MediaBrowser.Providers/Folders/DefaultImageProvider.cs

@@ -25,8 +25,7 @@ namespace MediaBrowser.Providers.Folders
         {
         {
             return new List<ImageType>
             return new List<ImageType>
             {
             {
-                ImageType.Primary,
-                ImageType.Thumb
+                ImageType.Primary
             };
             };
         }
         }
 
 
@@ -57,13 +56,6 @@ namespace MediaBrowser.Providers.Folders
                           ProviderName = Name,
                           ProviderName = Name,
                           Url = url,
                           Url = url,
                           Type = ImageType.Primary
                           Type = ImageType.Primary
-                     },
-
-                     new RemoteImageInfo
-                     {
-                          ProviderName = Name,
-                          Url = url,
-                          Type = ImageType.Thumb
                      }
                      }
                 });
                 });
             }
             }

+ 1 - 1
MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs

@@ -664,7 +664,7 @@ namespace MediaBrowser.Server.Implementations.IO
 
 
             while (item == null && !string.IsNullOrEmpty(path))
             while (item == null && !string.IsNullOrEmpty(path))
             {
             {
-                item = LibraryManager.RootFolder.FindByPath(path);
+                item = LibraryManager.FindByPath(path);
 
 
                 path = Path.GetDirectoryName(path);
                 path = Path.GetDirectoryName(path);
             }
             }

+ 23 - 0
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -788,6 +788,29 @@ namespace MediaBrowser.Server.Implementations.Library
             return _userRootFolder;
             return _userRootFolder;
         }
         }
 
 
+        public BaseItem FindByPath(string path)
+        {
+            var query = new InternalItemsQuery
+            {
+                Path = path
+            };
+
+            // Only use the database result if there's exactly one item, otherwise we run the risk of returning old data that hasn't been cleaned yet.
+            var items = GetItemIds(query).Select(GetItemById).Where(i => i != null).ToArray();
+
+            if (items.Length == 1)
+            {
+                return items[0];
+            }
+
+            if (items.Length == 0)
+            {
+                return null;
+            }
+            
+            return RootFolder.FindByPath(path);
+        }
+
         /// <summary>
         /// <summary>
         /// Gets a Person
         /// Gets a Person
         /// </summary>
         /// </summary>

+ 7 - 0
MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs

@@ -130,6 +130,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
 
 
                                 "create table if not exists TypedBaseItems (guid GUID primary key, type TEXT, data BLOB, ParentId GUID)",
                                 "create table if not exists TypedBaseItems (guid GUID primary key, type TEXT, data BLOB, ParentId GUID)",
                                 "create index if not exists idx_TypedBaseItems on TypedBaseItems(guid)",
                                 "create index if not exists idx_TypedBaseItems on TypedBaseItems(guid)",
+                                "create index if not exists idx_PathTypedBaseItems on TypedBaseItems(Path)",
                                 "create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)",
                                 "create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)",
 
 
                                 "create table if not exists AncestorIds (ItemId GUID, AncestorId GUID, AncestorIdText TEXT, PRIMARY KEY (ItemId, AncestorId))",
                                 "create table if not exists AncestorIds (ItemId GUID, AncestorId GUID, AncestorIdText TEXT, PRIMARY KEY (ItemId, AncestorId))",
@@ -1804,6 +1805,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
                 cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = query.ParentId.Value;
                 cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = query.ParentId.Value;
             }
             }
 
 
+            if (!string.IsNullOrWhiteSpace(query.Path))
+            {
+                whereClauses.Add("Path=@Path");
+                cmd.Parameters.Add(cmd, "@Path", DbType.String).Value = query.Path;
+            }
+
             if (query.MinEndDate.HasValue)
             if (query.MinEndDate.HasValue)
             {
             {
                 whereClauses.Add("EndDate>=@MinEndDate");
                 whereClauses.Add("EndDate>=@MinEndDate");

+ 2 - 2
MediaBrowser.Server.Implementations/Sync/SyncHelper.cs

@@ -10,11 +10,11 @@ namespace MediaBrowser.Server.Implementations.Sync
             {
             {
                 if (string.Equals(quality, "medium", StringComparison.OrdinalIgnoreCase))
                 if (string.Equals(quality, "medium", StringComparison.OrdinalIgnoreCase))
                 {
                 {
-                    profileBitrate = Math.Min(Convert.ToInt32(profileBitrate.Value * .7), 4000000);
+                    profileBitrate = Math.Min(profileBitrate.Value, 4000000);
                 }
                 }
                 else if (string.Equals(quality, "low", StringComparison.OrdinalIgnoreCase))
                 else if (string.Equals(quality, "low", StringComparison.OrdinalIgnoreCase))
                 {
                 {
-                    profileBitrate = Math.Min(Convert.ToInt32(profileBitrate.Value * .5), 1500000);
+                    profileBitrate = Math.Min(profileBitrate.Value, 1500000);
                 }
                 }
             }
             }