瀏覽代碼

Add EqualsAny for VideoCodecTag condition

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
nyanmisaka 1 年之前
父節點
當前提交
be265cd87f

+ 6 - 0
MediaBrowser.Controller/MediaEncoding/BaseEncodingJobOptions.cs

@@ -87,6 +87,12 @@ namespace MediaBrowser.Controller.MediaEncoding
         /// <value>The level.</value>
         /// <value>The level.</value>
         public string Level { get; set; }
         public string Level { get; set; }
 
 
+        /// <summary>
+        /// Gets or sets the codec tag.
+        /// </summary>
+        /// <value>The codec tag.</value>
+        public string CodecTag { get; set; }
+
         /// <summary>
         /// <summary>
         /// Gets or sets the framerate.
         /// Gets or sets the framerate.
         /// </summary>
         /// </summary>

+ 20 - 0
MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs

@@ -619,6 +619,26 @@ namespace MediaBrowser.Controller.MediaEncoding
             return Array.Empty<string>();
             return Array.Empty<string>();
         }
         }
 
 
+        public string[] GetRequestedCodecTags(string codec)
+        {
+            if (!string.IsNullOrEmpty(BaseRequest.CodecTag))
+            {
+                return BaseRequest.CodecTag.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries);
+            }
+
+            if (!string.IsNullOrEmpty(codec))
+            {
+                var codectag = BaseRequest.GetOption(codec, "codectag");
+
+                if (!string.IsNullOrEmpty(codectag))
+                {
+                    return codectag.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries);
+                }
+            }
+
+            return Array.Empty<string>();
+        }
+
         public string GetRequestedLevel(string codec)
         public string GetRequestedLevel(string codec)
         {
         {
             if (!string.IsNullOrEmpty(BaseRequest.Level))
             if (!string.IsNullOrEmpty(BaseRequest.Level))

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

@@ -1944,6 +1944,38 @@ namespace MediaBrowser.Model.Dlna
                             break;
                             break;
                         }
                         }
 
 
+                    case ProfileConditionValue.VideoCodecTag:
+                        {
+                            if (string.IsNullOrEmpty(qualifier))
+                            {
+                                continue;
+                            }
+
+                            // change from split by | to comma
+                            // strip spaces to avoid having to encode
+                            var values = value
+                                .Split('|', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
+
+                            if (condition.Condition == ProfileConditionType.Equals)
+                            {
+                                item.SetOption(qualifier, "codectag", string.Join(',', values));
+                            }
+                            else if (condition.Condition == ProfileConditionType.EqualsAny)
+                            {
+                                var currentValue = item.GetOption(qualifier, "codectag");
+                                if (!string.IsNullOrEmpty(currentValue) && values.Any(v => string.Equals(v, currentValue, StringComparison.OrdinalIgnoreCase)))
+                                {
+                                    item.SetOption(qualifier, "codectag", currentValue);
+                                }
+                                else
+                                {
+                                    item.SetOption(qualifier, "codectag", string.Join(',', values));
+                                }
+                            }
+
+                            break;
+                        }
+
                     case ProfileConditionValue.Height:
                     case ProfileConditionValue.Height:
                         {
                         {
                             if (!enableNonQualifiedConditions)
                             if (!enableNonQualifiedConditions)