Browse Source

update isavc condition

Luke Pulverenti 8 years ago
parent
commit
43c6971383

+ 8 - 1
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1759,6 +1759,13 @@ namespace MediaBrowser.Api.Playback
                         videoRequest.EnableSplittingOnNonKeyFrames = string.Equals("true", val, StringComparison.OrdinalIgnoreCase);
                     }
                 }
+                else if (i == 30)
+                {
+                    if (videoRequest != null)
+                    {
+                        videoRequest.RequireAvc = string.Equals("true", val, StringComparison.OrdinalIgnoreCase);
+                    }
+                }
             }
         }
 
@@ -2115,7 +2122,7 @@ namespace MediaBrowser.Api.Playback
 
             if (string.Equals("h264", videoStream.Codec, StringComparison.OrdinalIgnoreCase))
             {
-                if (videoStream.IsAVC.HasValue && !videoStream.IsAVC.Value)
+                if (videoStream.IsAVC.HasValue && !videoStream.IsAVC.Value && request.RequireAvc)
                 {
                     Logger.Debug("Cannot stream copy video. Stream is marked as not AVC");
                     return false;

+ 1 - 0
MediaBrowser.Api/Playback/StreamRequest.cs

@@ -195,6 +195,7 @@ namespace MediaBrowser.Api.Playback
 
         public bool EnableSubtitlesInManifest { get; set; }
         public bool EnableSplittingOnNonKeyFrames { get; set; }
+        public bool RequireAvc { get; set; }
 
         public VideoStreamRequest()
         {

+ 18 - 0
MediaBrowser.Model/Dlna/StreamBuilder.cs

@@ -1055,6 +1055,22 @@ namespace MediaBrowser.Model.Dlna
                             }
                             break;
                         }
+                    case ProfileConditionValue.IsAvc:
+                        {
+                            bool isAvc;
+                            if (bool.TryParse(value, out isAvc))
+                            {
+                                if (isAvc && condition.Condition == ProfileConditionType.Equals)
+                                {
+                                    item.RequireAvc = true;
+                                }
+                                else if (!isAvc && condition.Condition == ProfileConditionType.NotEquals)
+                                {
+                                    item.RequireAvc = true;
+                                }
+                            }
+                            break;
+                        }
                     case ProfileConditionValue.IsAnamorphic:
                     case ProfileConditionValue.AudioProfile:
                     case ProfileConditionValue.Has64BitOffsets:
@@ -1135,6 +1151,8 @@ namespace MediaBrowser.Model.Dlna
                             }
                             break;
                         }
+                    default:
+                        break;
                 }
             }
         }

+ 2 - 0
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -35,6 +35,7 @@ namespace MediaBrowser.Model.Dlna
         public string VideoCodec { get; set; }
         public string VideoProfile { get; set; }
 
+        public bool RequireAvc { get; set; }
         public bool CopyTimestamps { get; set; }
         public bool EnableSubtitlesInManifest { get; set; }
         public bool EnableSplittingOnNonKeyFrames { get; set; }
@@ -266,6 +267,7 @@ namespace MediaBrowser.Model.Dlna
 
             list.Add(new NameValuePair("Tag", item.MediaSource.ETag ?? string.Empty));
             list.Add(new NameValuePair("EnableSplittingOnNonKeyFrames", item.EnableSplittingOnNonKeyFrames.ToString().ToLower()));
+            list.Add(new NameValuePair("RequireAvc", item.RequireAvc.ToString().ToLower()));
 
             return list;
         }