OpenShot Library | libopenshot 1.1.1
Loading...
Searching...
No Matches
Settings.cpp
Go to the documentation of this file.
1
9// Copyright (c) 2008-2019 OpenShot Studios, LLC
10//
11// SPDX-License-Identifier: LGPL-3.0-or-later
12
13#include <algorithm>
14#include <cstdlib>
15#include <omp.h>
16#include "Settings.h"
17
18using namespace openshot;
19
20// Global reference to Settings
21Settings *Settings::m_pInstance = nullptr;
22
24{
25 return std::clamp(OMP_THREADS, 2, MaxAllowedThreads());
26}
27
29{
30 return std::max(2, std::max(2, omp_get_num_procs()) * 3);
31}
32
34{
35 const int requested_threads = EffectiveOMPThreads();
36 if (applied_omp_threads != requested_threads) {
37 omp_set_num_threads(requested_threads);
38 applied_omp_threads = requested_threads;
39 }
40}
41
42// Create or Get an instance of the settings singleton
44{
45 if (!m_pInstance) {
46 // Create the actual instance of Settings only once
47 m_pInstance = new Settings;
48 const int machine_threads = std::max(2, omp_get_num_procs());
49 m_pInstance->default_omp_threads = machine_threads;
50 m_pInstance->default_ff_threads = machine_threads;
51 m_pInstance->OMP_THREADS = machine_threads;
52 m_pInstance->FF_THREADS = machine_threads;
53 auto env_debug = std::getenv("LIBOPENSHOT_DEBUG");
54 if (env_debug != nullptr)
55 m_pInstance->DEBUG_TO_STDERR = true;
56 }
57
58 m_pInstance->ApplyOpenMPSettings();
59
60 return m_pInstance;
61}
Header file for global Settings class.
This class is contains settings used by libopenshot (and can be safely toggled at any point)
Definition Settings.h:26
int OMP_THREADS
Number of OpenMP threads.
Definition Settings.h:77
int MaxAllowedThreads() const
Return the maximum allowed thread override based on this machine.
Definition Settings.cpp:28
void ApplyOpenMPSettings()
Apply any explicit OpenMP thread override to the runtime.
Definition Settings.cpp:33
static Settings * Instance()
Create or get an instance of this logger singleton (invoke the class with this method)
Definition Settings.cpp:43
int FF_THREADS
Number of threads that ffmpeg uses.
Definition Settings.h:80
int EffectiveOMPThreads() const
Return the effective OpenMP worker budget used by libopenshot heuristics.
Definition Settings.cpp:23
bool DEBUG_TO_STDERR
Legacy native debug-to-stderr switch (explicit Logger levels take precedence)
Definition Settings.h:126
This namespace is the default namespace for all code in the openshot library.