aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Entities
diff options
context:
space:
mode:
authorDavid Schulte <mail@david-schulte.de>2024-07-15 14:48:09 +0200
committerGitHub <noreply@github.com>2024-07-15 08:48:09 -0400
commitfc1bee30a62e2e31682809c8245a117f7ecbddd5 (patch)
tree58c8dd393434882d10827ce51128212a94dcdf24 /MediaBrowser.Model/Entities
parent3262f8dc2a7e8fb03ecd345eeca70bdb372389e3 (diff)
Allow streaming of raw PGS subtitles without transcoding (#12056)
Diffstat (limited to 'MediaBrowser.Model/Entities')
-rw-r--r--MediaBrowser.Model/Entities/MediaStream.cs33
1 files changed, 33 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs
index e1082adea..9044c0524 100644
--- a/MediaBrowser.Model/Entities/MediaStream.cs
+++ b/MediaBrowser.Model/Entities/MediaStream.cs
@@ -585,6 +585,31 @@ namespace MediaBrowser.Model.Entities
}
}
+ public bool IsPgsSubtitleStream
+ {
+ get
+ {
+ if (Type != MediaStreamType.Subtitle)
+ {
+ return false;
+ }
+
+ if (string.IsNullOrEmpty(Codec) && !IsExternal)
+ {
+ return false;
+ }
+
+ return IsPgsFormat(Codec);
+ }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this is a subtitle steam that is extractable by ffmpeg.
+ /// All text-based and pgs subtitles can be extracted.
+ /// </summary>
+ /// <value><c>true</c> if this is a extractable subtitle steam otherwise, <c>false</c>.</value>
+ public bool IsExtractableSubtitleStream => IsTextSubtitleStream || IsPgsSubtitleStream;
+
/// <summary>
/// Gets or sets a value indicating whether [supports external stream].
/// </summary>
@@ -666,6 +691,14 @@ namespace MediaBrowser.Model.Entities
&& !string.Equals(codec, "sub", StringComparison.OrdinalIgnoreCase));
}
+ public static bool IsPgsFormat(string format)
+ {
+ string codec = format ?? string.Empty;
+
+ return codec.Contains("pgs", StringComparison.OrdinalIgnoreCase)
+ || string.Equals(codec, "sup", StringComparison.OrdinalIgnoreCase);
+ }
+
public bool SupportsSubtitleConversionTo(string toCodec)
{
if (!IsTextSubtitleStream)