diff --git a/lib/_included_packages/plexnet/plexplayer.py b/lib/_included_packages/plexnet/plexplayer.py index 7639aa047..6b32ac0e5 100644 --- a/lib/_included_packages/plexnet/plexplayer.py +++ b/lib/_included_packages/plexnet/plexplayer.py @@ -251,7 +251,7 @@ def getDecisionPath(self, directPlay=False): # Global variables for all decisions decisionPath = http.addUrlParam(decisionPath, "mediaBufferSize=20971") # Kodi default is 20971520 (20MB) decisionPath = http.addUrlParam(decisionPath, "hasMDE=1") - decisionPath = http.addUrlParam(decisionPath, 'X-Plex-Platform=Chrome') + decisionPath = http.addUrlParam(decisionPath, 'X-Plex-Platform=Generic') return decisionPath @@ -332,14 +332,24 @@ def buildTranscodeMkv(self, obj): else: numChannels = 8 - for codec in ("ac3", "eac3", "dca"): - if self.item.settings.supportsAudioStream(codec, numChannels): - builder.extras.append("append-transcode-target-audio-codec(type=videoProfile&context=streaming&audioCodec=" + codec + ")") - builder.extras.append("add-direct-play-profile(type=videoProfile&container=matroska&videoCodec=*&audioCodec=" + codec + ")") - if codec == "dca": - builder.extras.append( - "add-limitation(scope=videoAudioCodec&scopeName=dca&type=upperBound&name=audio.channels&value=8&isRequired=false)" - ) + codecs = ("ac3", "eac3", "dca") + if self.item.settings.getPreference("allow_hd_audio", False): + codecs += "truehd", + + builder.extras.append("add-transcode-target(type=videoProfile&context=streaming&protocol=http&container=mkv&videoCodec=h264&audioCodec=" + ",".join(codecs) + ")") + + # for codec in codecs: + # if self.item.settings.supportsAudioStream(codec, numChannels): + # builder.extras.append("append-transcode-target-audio-codec(type=videoProfile&context=streaming&audioCodec=" + codec + ")") + # builder.extras.append("add-direct-play-profile(type=videoProfile&container=matroska&videoCodec=*&audioCodec=" + codec + ")") + # if codec == "dca": + # builder.extras.append( + # "add-limitation(scope=videoAudioCodec&scopeName=dca&type=upperBound&name=audio.channels&value=8&isRequired=false)" + # ) + # if codec == "truehd": + # builder.extras.append( + # "add-limitation(scope=videoAudioCodec&scopeName=truhd&type=upperBound&name=audio.channels&value=12&isRequired=false)" + # ) # AAC sample rate cannot be less than 22050hz (HLS is capable). if self.choice.audioStream is not None and self.choice.audioStream.samplingRate.asInt(22050) < 22050: diff --git a/lib/windows/settings.py b/lib/windows/settings.py index 4afa208a9..22d8af45e 100644 --- a/lib/windows/settings.py +++ b/lib/windows/settings.py @@ -193,8 +193,9 @@ class Settings(object): ) ), 'audio': ( - T(32048, 'Audio'), - () + T(32048, 'Audio'), ( + BoolSetting('allow_hd_audio', T(32058, 'Allow HD Audio'), False), + ) ), 'video': ( T(32053, 'Video'), ( @@ -257,7 +258,7 @@ class Settings(object): ), } - SECTION_IDS = ('main', 'video', 'subtitles', 'advanced', 'manual', 'about') + SECTION_IDS = ('main', 'video', 'audio', 'subtitles', 'advanced', 'manual', 'about') def __getitem__(self, key): return self.SETTINGS[key] diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po index 9f074aa8d..5ba61e5a0 100644 --- a/resources/language/English/strings.po +++ b/resources/language/English/strings.po @@ -225,6 +225,9 @@ msgctxt "#32057" msgid "Current Server Version" msgstr "" +msgctxt "#32058" +msgid "Allow HD Audio" +msgstr "" msgctxt "#32100" msgid "Skip user selection and pin entry on startup."