aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Entities/MediaStream.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Entities/MediaStream.cs')
-rw-r--r--MediaBrowser.Model/Entities/MediaStream.cs30
1 files changed, 28 insertions, 2 deletions
diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs
index 38ac44794..4742d21e9 100644
--- a/MediaBrowser.Model/Entities/MediaStream.cs
+++ b/MediaBrowser.Model/Entities/MediaStream.cs
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
+using Jellyfin.Extensions;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.MediaInfo;
@@ -17,6 +18,18 @@ namespace MediaBrowser.Model.Entities
/// </summary>
public class MediaStream
{
+ private static readonly string[] _specialCodes =
+ {
+ // Uncoded languages.
+ "mis",
+ // Multiple languages.
+ "mul",
+ // Undetermined.
+ "und",
+ // No linguistic content; not applicable.
+ "zxx"
+ };
+
/// <summary>
/// Gets or sets the codec.
/// </summary>
@@ -127,6 +140,8 @@ namespace MediaBrowser.Model.Entities
public string LocalizedForced { get; set; }
+ public string LocalizedExternal { get; set; }
+
public string DisplayTitle
{
get
@@ -137,7 +152,8 @@ namespace MediaBrowser.Model.Entities
{
var attributes = new List<string>();
- if (!string.IsNullOrEmpty(Language))
+ // Do not display the language code in display titles if unset or set to a special code. Show it in all other cases (possibly expanded).
+ if (!string.IsNullOrEmpty(Language) && !_specialCodes.Contains(Language, StringComparison.OrdinalIgnoreCase))
{
// Get full language string i.e. eng -> English. Will not work for some languages which use ISO 639-2/B instead of /T codes.
string fullLanguage = CultureInfo
@@ -147,7 +163,7 @@ namespace MediaBrowser.Model.Entities
attributes.Add(StringHelper.FirstToUpper(fullLanguage ?? Language));
}
- if (!string.IsNullOrEmpty(Codec) && !string.Equals(Codec, "dca", StringComparison.OrdinalIgnoreCase))
+ if (!string.IsNullOrEmpty(Codec) && !string.Equals(Codec, "dca", StringComparison.OrdinalIgnoreCase) && !string.Equals(Codec, "dts", StringComparison.OrdinalIgnoreCase))
{
attributes.Add(AudioCodec.GetFriendlyName(Codec));
}
@@ -170,6 +186,11 @@ namespace MediaBrowser.Model.Entities
attributes.Add(string.IsNullOrEmpty(LocalizedDefault) ? "Default" : LocalizedDefault);
}
+ if (IsExternal)
+ {
+ attributes.Add(string.IsNullOrEmpty(LocalizedExternal) ? "External" : LocalizedExternal);
+ }
+
if (!string.IsNullOrEmpty(Title))
{
var result = new StringBuilder(Title);
@@ -260,6 +281,11 @@ namespace MediaBrowser.Model.Entities
attributes.Add(Codec.ToUpperInvariant());
}
+ if (IsExternal)
+ {
+ attributes.Add(string.IsNullOrEmpty(LocalizedExternal) ? "External" : LocalizedExternal);
+ }
+
if (!string.IsNullOrEmpty(Title))
{
var result = new StringBuilder(Title);