From 7b64a7cdd39d3753a0bbbec5ae78d33eaaeac340 Mon Sep 17 00:00:00 2001 From: mrkev Date: Mon, 9 Jan 2023 10:26:09 +0100 Subject: [PATCH] Increase maximum stream bitrate Use enum for setting max bitrate, same as in jellyfin-kodi. New default is 1000000. Fixes #257 --- resources/lib/play_utils.py | 14 ++++++-------- resources/lib/utils.py | 10 ++++++++++ resources/settings.xml | 4 ++-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/resources/lib/play_utils.py b/resources/lib/play_utils.py index 680921e..fee2e46 100644 --- a/resources/lib/play_utils.py +++ b/resources/lib/play_utils.py @@ -17,7 +17,7 @@ import sys from .jellyfin import api from .lazylogger import LazyLogger from .dialogs import ResumeDialog -from .utils import send_event_notification, convert_size, get_device_id, translate_string, load_user_details, translate_path, get_jellyfin_url, download_external_sub +from .utils import send_event_notification, convert_size, get_device_id, translate_string, load_user_details, translate_path, get_jellyfin_url, download_external_sub, get_bitrate from .kodi_utils import HomeWindow from .datamanager import clear_old_cache_data from .item_functions import extract_item_info, add_gui_item, get_art @@ -1224,8 +1224,7 @@ def get_play_url(media_source, play_session_id, channel_id=None): user_details = load_user_details() user_token = user_details.get('token') - playback_bitrate = settings.getSetting("force_max_stream_bitrate") - bitrate = int(playback_bitrate) * 1000 + bitrate = get_bitrate(settings.getSetting("force_max_stream_bitrate")) playback_max_width = settings.getSetting("playback_max_width") audio_codec = settings.getSetting("audio_codec") audio_playback_bitrate = settings.getSetting("audio_playback_bitrate") @@ -1484,17 +1483,16 @@ def get_item_playback_info(item_id, force_transcode): if settings.getSetting("force_transcode_mpeg4") == "true": filtered_codecs.append("mpeg4") - playback_bitrate = settings.getSetting("max_stream_bitrate") - force_playback_bitrate = settings.getSetting("force_max_stream_bitrate") - if force_transcode: - playback_bitrate = force_playback_bitrate + if not force_transcode: + bitrate = get_bitrate(settings.getSetting("max_stream_bitrate")) + else: + bitrate = get_bitrate(settings.getSetting("force_max_stream_bitrate")) audio_codec = settings.getSetting("audio_codec") audio_playback_bitrate = settings.getSetting("audio_playback_bitrate") audio_max_channels = settings.getSetting("audio_max_channels") audio_bitrate = int(audio_playback_bitrate) * 1000 - bitrate = int(playback_bitrate) * 1000 profile = { "Name": "Kodi", diff --git a/resources/lib/utils.py b/resources/lib/utils.py index abc9004..0de8e28 100644 --- a/resources/lib/utils.py +++ b/resources/lib/utils.py @@ -419,3 +419,13 @@ def download_external_sub(language, codec, url): f.write(r.content) return file_path + + +def get_bitrate(enum_value): + ''' Get the video quality based on add-on settings. + Max bit rate supported by server: 2147483 (max signed 32bit integer) + ''' + bitrate = [500, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6000, + 7000, 8000, 9000, 10000, 12000, 14000, 16000, 18000, + 20000, 25000, 30000, 35000, 40000, 100000, 1000000, 2147483] + return bitrate[int(enum_value) if enum_value else 24] * 1000 diff --git a/resources/settings.xml b/resources/settings.xml index 1a0539e..cd1006b 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -28,7 +28,7 @@ - + @@ -38,7 +38,7 @@ - +