OpenShot Library | libopenshot  0.2.3
Settings.h
Go to the documentation of this file.
1 /**
2  * @file
3  * @brief Header file for global Settings class
4  * @author Jonathan Thomas <jonathan@openshot.org>
5  *
6  * @section LICENSE
7  *
8  * Copyright (c) 2008-2014 OpenShot Studios, LLC
9  * <http://www.openshotstudios.com/>. This file is part of
10  * OpenShot Library (libopenshot), an open-source project dedicated to
11  * delivering high quality video editing and animation solutions to the
12  * world. For more information visit <http://www.openshot.org/>.
13  *
14  * OpenShot Library (libopenshot) is free software: you can redistribute it
15  * and/or modify it under the terms of the GNU Lesser General Public License
16  * as published by the Free Software Foundation, either version 3 of the
17  * License, or (at your option) any later version.
18  *
19  * OpenShot Library (libopenshot) is distributed in the hope that it will be
20  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22  * GNU Lesser General Public License for more details.
23  *
24  * You should have received a copy of the GNU Lesser General Public License
25  * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>.
26  */
27 
28 #ifndef OPENSHOT_SETTINGS_H
29 #define OPENSHOT_SETTINGS_H
30 
31 
32 #include "JuceLibraryCode/JuceHeader.h"
33 #include <iostream>
34 #include <iomanip>
35 #include <fstream>
36 #include <stdlib.h>
37 #include <string>
38 #include <sstream>
39 #include <stdio.h>
40 #include <time.h>
41 #include <zmq.hpp>
42 #include <unistd.h>
43 
44 
45 using namespace std;
46 
47 namespace openshot {
48 
49  /**
50  * @brief This class is contains settings used by libopenshot (and can be safely toggled at any point)
51  *
52  * Settings class is used primarily to toggle scale settings between preview and rendering, and adjust
53  * other runtime related settings.
54  */
55  class Settings {
56  private:
57 
58  /// Default constructor
59  Settings(){}; // Don't allow user to create an instance of this singleton
60 
61 #if __GNUC__ >=7
62  /// Default copy method
63  Settings(Settings const&) = delete; // Don't allow the user to assign this instance
64 
65  /// Default assignment operator
66  Settings & operator=(Settings const&) = delete; // Don't allow the user to assign this instance
67 #else
68  /// Default copy method
69  Settings(Settings const&) {}; // Don't allow the user to assign this instance
70 
71  /// Default assignment operator
72  Settings & operator=(Settings const&); // Don't allow the user to assign this instance
73 #endif
74 
75  /// Private variable to keep track of singleton instance
76  static Settings * m_pInstance;
77 
78  public:
79  /// Use video card for faster video decoding (if supported)
80  bool HARDWARE_DECODE = false;
81 
82  /// Use video card for faster video encoding (if supported)
83  bool HARDWARE_ENCODE = false;
84 
85  /// Scale mode used in FFmpeg decoding and encoding (used as an optimization for faster previews)
86  bool HIGH_QUALITY_SCALING = false;
87 
88  /// Maximum width for image data (useful for optimzing for a smaller preview or render)
89  int MAX_WIDTH = 0;
90 
91  /// Maximum height for image data (useful for optimzing for a smaller preview or render)
92  int MAX_HEIGHT = 0;
93 
94  /// Wait for OpenMP task to finish before continuing (used to limit threads on slower systems)
95  bool WAIT_FOR_VIDEO_PROCESSING_TASK = false;
96 
97  /// Create or get an instance of this logger singleton (invoke the class with this method)
98  static Settings * Instance();
99  };
100 
101 }
102 
103 #endif
This class is contains settings used by libopenshot (and can be safely toggled at any point) ...
Definition: Settings.h:55