OpenShot Library | libopenshot 0.3.3
Loading...
Searching...
No Matches
Profiles.h
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#ifndef OPENSHOT_PROFILE_H
14#define OPENSHOT_PROFILE_H
15
16#include <iostream>
17#include <string>
18#include <sstream>
19#include <math.h>
20#include <fstream>
21#include <QtCore/QString>
22#include <QtCore/QStringList>
23#include <QtCore/QFile>
24#include <QTextStream>
25#include <cstdio>
26#include <cstdlib>
27#include "Fraction.h"
28#include "Json.h"
29
30namespace openshot
31{
32
40 {
41 std::string description;
42 int height;
43 int width;
48 bool interlaced_frame; // Are the contents of this frame interlaced
49 };
50
64 class Profile
65 {
66 private:
67 std::string formattedFPS(bool include_decimal);
68
71 friend bool operator<(const Profile& l, const Profile& r)
72 {
73 double left_fps = l.info.fps.ToDouble();
74 double right_fps = r.info.fps.ToDouble();
75 double left_pixels = l.info.width * l.info.height;
76 double right_pixels = r.info.width * r.info.height;
77 double left_dar = l.info.display_ratio.ToDouble();
78 double right_dar = r.info.display_ratio.ToDouble();
79
80 if (left_pixels < right_pixels) {
81 // less pixels
82 return true;
83 } else {
84 if (left_fps < right_fps) {
85 // less FPS
86 return true;
87 } else {
88 if (left_dar < right_dar) {
89 // less DAR
90 return true;
91 } else {
92 return false;
93 }
94 }
95 }
96 }
97
100 friend bool operator>(const Profile& l, const Profile& r)
101 {
102 double left_fps = l.info.fps.ToDouble();
103 double right_fps = r.info.fps.ToDouble();
104 double left_pixels = l.info.width * l.info.height;
105 double right_pixels = r.info.width * r.info.height;
106 double left_dar = l.info.display_ratio.ToDouble();
107 double right_dar = r.info.display_ratio.ToDouble();
108
109 if (left_pixels > right_pixels) {
110 // less pixels
111 return true;
112 } else {
113 if (left_fps > right_fps) {
114 // less FPS
115 return true;
116 } else {
117 if (left_dar > right_dar) {
118 // less DAR
119 return true;
120 } else {
121 return false;
122 }
123 }
124 }
125 }
126
128 friend bool operator==(const Profile& l, const Profile& r)
129 {
132 }
133
134 public:
137
139 Profile();
140
143 Profile(std::string path);
144
145 std::string Key();
146 std::string ShortName();
147 std::string LongName();
148 std::string LongNameWithDesc();
149
150 // Get and Set JSON methods
151 std::string Json() const;
152 Json::Value JsonValue() const;
153 void SetJson(const std::string value);
154 void SetJsonValue(const Json::Value root);
155 };
156
157}
158
159#endif
Header file for Fraction class.
Header file for JSON class.
This class represents a fraction.
Definition Fraction.h:30
int num
Numerator for the fraction.
Definition Fraction.h:32
double ToDouble() const
Return this fraction as a double (i.e. 1/2 = 0.5)
Definition Fraction.cpp:40
int den
Denominator for the fraction.
Definition Fraction.h:33
This class loads a special text-based file called a Profile.
Definition Profiles.h:65
std::string LongName()
Return a longer format name (1920x1080p @ 29.97 fps (16:9))
Definition Profiles.cpp:175
void SetJsonValue(const Json::Value root)
Load Json::Value into this object.
Definition Profiles.cpp:248
std::string ShortName()
Return the name of this profile (1920x1080p29.97)
Definition Profiles.cpp:163
friend bool operator==(const Profile &l, const Profile &r)
Equality operator (compare profile objects)
Definition Profiles.h:128
Profile()
Default Constructor for Profile.
Definition Profiles.cpp:20
friend bool operator>(const Profile &l, const Profile &r)
Definition Profiles.h:100
std::string LongNameWithDesc()
Return a longer format name with description (1920x1080p @ 29.97 fps (16:9) HD 1080i 29....
Definition Profiles.cpp:188
std::string Json() const
Generate JSON string of this object.
Definition Profiles.cpp:201
ProfileInfo info
Profile data stored here.
Definition Profiles.h:136
void SetJson(const std::string value)
Load JSON string into this object.
Definition Profiles.cpp:231
std::string Key()
Return a unique key of this profile with padding (01920x1080i2997_16:09)
Definition Profiles.cpp:147
Json::Value JsonValue() const
Generate Json::Value for this object.
Definition Profiles.cpp:208
friend bool operator<(const Profile &l, const Profile &r)
Definition Profiles.h:71
This namespace is the default namespace for all code in the openshot library.
Definition Compressor.h:29
This struct holds profile data, typically loaded from a file.
Definition Profiles.h:40
std::string description
The description of this profile.
Definition Profiles.h:41
int width
The width of the video (in pixels)
Definition Profiles.h:43
Fraction pixel_ratio
The pixel ratio of the video stream as a fraction (i.e. some pixels are not square)
Definition Profiles.h:46
Fraction display_ratio
The ratio of width to height of the video stream (i.e. 640x480 has a ratio of 4/3)
Definition Profiles.h:47
Fraction fps
Frames per second, as a fraction (i.e. 24/1 = 24 fps)
Definition Profiles.h:45
int height
The height of the video (in pixels)
Definition Profiles.h:42
int pixel_format
The pixel format (i.e. YUV420P, RGB24, etc...)
Definition Profiles.h:44