Skip to content

Commit

Permalink
advancedsettings: Add option to set cache size on libass
Browse files Browse the repository at this point in the history
E.g to set total cache size in libass to 32M

<advancedsettings>
    <libasscache>32</libasscache>
</advancedsettings>

When unset it defaults to 192M
  • Loading branch information
popcornmix committed Apr 3, 2020
1 parent 31d5d91 commit 21aff82
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 0 deletions.
3 changes: 3 additions & 0 deletions xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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<CSettings> settings = CServiceBroker::GetSettingsComponent()->GetSettings();
strPath = URIUtils::AddFileToFolder("special://home/media/Fonts/", settings->GetString(CSettings::SETTING_SUBTITLES_FONT));
Expand Down
6 changes: 6 additions & 0 deletions xbmc/settings/AdvancedSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 2 additions & 0 deletions xbmc/settings/AdvancedSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down

0 comments on commit 21aff82

Please sign in to comment.