From 21aff82a8fb9f5095cbdd2fb42542fb76ac2d058 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Nov 2016 18:28:01 +0000 Subject: [PATCH] advancedsettings: Add option to set cache size on libass E.g to set total cache size in libass to 32M 32 When unset it defaults to 192M --- xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp | 3 +++ xbmc/settings/AdvancedSettings.cpp | 6 ++++++ xbmc/settings/AdvancedSettings.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp b/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp index ea15dfc4da910..7e494c4baa3db 100644 --- a/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp +++ b/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp @@ -19,6 +19,7 @@ #include "utils/URIUtils.h" #include "utils/log.h" #include "windowing/GraphicContext.h" +#include "settings/AdvancedSettings.h" static void libass_log(int level, const char *fmt, va_list args, void *data) { @@ -54,6 +55,8 @@ CDVDSubtitlesLibass::CDVDSubtitlesLibass() if(!m_renderer) return; + ass_set_cache_limits(m_renderer, 0, CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_libAssCache); + //Setting default font to the Arial in \media\fonts (used if FontConfig fails) const std::shared_ptr settings = CServiceBroker::GetSettingsComponent()->GetSettings(); strPath = URIUtils::AddFileToFolder("special://home/media/Fonts/", settings->GetString(CSettings::SETTING_SUBTITLES_FONT)); diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp index de92c76299845..901ecb6c288d9 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -392,6 +392,8 @@ void CAdvancedSettings::Initialize() #else m_cacheMemSize = 1024 * 1024 * 20; // 20 MiB #endif + m_libAssCache = 0; + m_cacheBufferMode = CACHE_BUFFER_MODE_INTERNET; // Default (buffer all internet streams/filesystems) m_cacheChunkSize = 128 * 1024; // 128 KiB // the following setting determines the readRate of a player data @@ -1044,6 +1046,10 @@ void CAdvancedSettings::ParseSettingsFile(const std::string &file) XMLUtils::GetUInt(pRootElement, "fanartres", m_fanartRes, 0, 9999); XMLUtils::GetUInt(pRootElement, "imageres", m_imageRes, 0, 9999); + + XMLUtils::GetUInt(pRootElement, "libasscache", m_libAssCache, 0, 1024); + + if (XMLUtils::GetString(pRootElement, "imagescalingalgorithm", tmp)) m_imageScalingAlgorithm = CPictureScalingAlgorithm::FromString(tmp); XMLUtils::GetBoolean(pRootElement, "playlistasfolders", m_playlistAsFolders); diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h index 5075c22819f41..07a4c8794a1c8 100644 --- a/xbmc/settings/AdvancedSettings.h +++ b/xbmc/settings/AdvancedSettings.h @@ -332,6 +332,8 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler unsigned int m_cacheChunkSize; float m_cacheReadFactor; + unsigned int m_libAssCache; + bool m_jsonOutputCompact; unsigned int m_jsonTcpPort;