respect "Profile Level Support" settings + add setting to use DTS for transcoding instead of the default EAC3

This commit is contained in:
Charles Ewert 2023-09-01 10:26:08 -04:00
parent 63e49bbc8e
commit 41060d10bb
3 changed files with 56 additions and 16 deletions

View File

@ -1031,8 +1031,8 @@
<translation>Enable Limit</translation>
</message>
<message>
<source>Enable or disable the 'Maximum Bitrate' setting.</source>
<translation>Enable or disable the 'Maximum Bitrate' setting.</translation>
<source>Enable or disable the 'Maximum Bitrate' setting.</source>
<translation>Enable or disable the 'Maximum Bitrate' setting.</translation>
</message>
<message>
<source>Bitrate Limit</source>
@ -1114,5 +1114,20 @@
<translation>Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.</translation>
<extracomment>Settings Menu - Description for option</extracomment>
</message>
<message>
<source>Choose your preferred audio codec when transcoding multichannel audio.</source>
<translation>Choose your preferred audio codec when transcoding multichannel audio.</translation>
<extracomment>Settings Menu - Description for option</extracomment>
</message>
<message>
<source>Force all transcodes to use DTS instead of the default EAC3. The device must support DTS for this setting to have an effect.</source>
<translation>Force all transcodes to use DTS instead of the default EAC3. The device must support DTS for this setting to have an effect.</translation>
<extracomment>Settings Menu - Description for option</extracomment>
</message>
<message>
<source>Audio Codec Support</source>
<translation>Audio Codec Support</translation>
<extracomment>Settings Menu - Title of option</extracomment>
</message>
</context>
</TS>

View File

@ -24,7 +24,20 @@
]
},
{
"title": "Codec Support",
"title": "Audio Codec Support",
"description": "Choose your preferred audio codec when transcoding multichannel audio.",
"children": [
{
"title": "DTS",
"description": "Force all transcodes to use DTS instead of the default EAC3. The device must support DTS for this setting to have an effect.",
"settingName": "playback.forceDTS",
"type": "bool",
"default": "false"
}
]
},
{
"title": "Video Codec Support",
"description": "Enable or disable Direct Play support for certain codecs.",
"children": [
{
@ -51,7 +64,7 @@
]
},
{
"title": "Profile Level Support",
"title": "Video Profile Level Support",
"description": "Attempt Direct Play of potentially unsupported profile levels",
"children": [
{

View File

@ -71,6 +71,10 @@ function getDeviceProfile() as object
' in order of preference from left to right
audioCodecs = ["mp3", "vorbis", "opus", "flac", "alac", "ac4", "pcm", "wma", "wmapro"]
surroundSoundCodecs = ["eac3", "ac3", "dts"]
if m.global.session.user.settings["playback.forceDTS"] = true
surroundSoundCodecs = ["dts", "eac3", "ac3"]
end if
surroundSoundCodec = invalid
if di.GetAudioOutputChannel() = "5.1 surround"
maxAudioChannels = "6"
@ -473,15 +477,19 @@ function getDeviceProfile() as object
"Property": "Height",
"Value": m.global.device.videoHeight,
"IsRequired": true
},
{
"Condition": "LessThanEqual",
"Property": "VideoLevel",
"Value": h264LevelString,
"IsRequired": false
}
]
}
' check user setting before adding video level restrictions
if not m.global.session.user.settings["playback.tryDirect.h264ProfileLevel"]
codecProfileArray.Conditions.push({
"Condition": "LessThanEqual",
"Property": "VideoLevel",
"Value": h264LevelString,
"IsRequired": false
})
end if
bitRateArray = GetBitRateLimit("h264")
if bitRateArray.count() > 0
codecProfileArray.Conditions.push(bitRateArray)
@ -657,12 +665,6 @@ function getDeviceProfile() as object
"Value": hevcVideoRangeTypes,
"IsRequired": false
},
{
"Condition": "LessThanEqual",
"Property": "VideoLevel",
"Value": hevcLevelString,
"IsRequired": false
},
{
"Condition": "LessThanEqual",
"Property": "Width",
@ -678,6 +680,16 @@ function getDeviceProfile() as object
]
}
' check user setting before adding VideoLevel restrictions
if not m.global.session.user.settings["playback.tryDirect.hevcProfileLevel"]
codecProfileArray.Conditions.push({
"Condition": "LessThanEqual",
"Property": "VideoLevel",
"Value": hevcLevelString,
"IsRequired": false
})
end if
bitRateArray = GetBitRateLimit("h265")
if bitRateArray.count() > 0
codecProfileArray.Conditions.push(bitRateArray)