1 #ifndef OPENSHOT_H
2 #define OPENSHOT_H
3 
4 /**
5  * @file
6  * @brief This header includes all commonly used headers for libopenshot, for ease-of-use.
7  * @author Jonathan Thomas <jonathan@openshot.org>
8  *
9  * @mainpage OpenShot Video Editing Library C++ API
10  *
11  * Welcome to the OpenShot Video Editing Library (libopenshot) C++ API. This library was developed to
12  * make high-quality video editing and animation solutions freely available to the world. With a focus
13  * on stability, performance, and ease-of-use, we believe libopenshot is the best cross-platform,
14  * open-source video editing library in the world. This library powers
15  * <a href="http://www.openshot.org">OpenShot Video Editor</a> (version 2.0+), the highest rated video
16  * editor available on Linux (and soon Windows & Mac). It could also <b>power</b> your next video editing project!
17  *
18  * Our documentation is quite extensive, including descriptions and examples of almost every class, method,
19  * and parameter. Getting started is easy.
20  *
21  * All you need is a <b>single</b> include to get started:
22  * @code
23  * #include "OpenShot.h"
24  * @endcode
25  *
26  * ### The Basics ###
27  * To understand libopenshot, we must first learn about the basic building blocks:.
28  *  - <b>Readers</b> - A reader is used to read a video, audio, image file, or stream and return openshot::Frame objects.
29  *    - A few common readers are openshot::FFmpegReader, openshot::TextReader, openshot::ImageReader, openshot::ChunkReader, and openshot::FrameMapper
30  *
31  *  - <b>Writers</b> - A writer consumes openshot::Frame objects, and is used to write / create a video, audio, image file, or stream.
32  *    - A few common writers are openshot::FFmpegWriter, openshot::ImageWriter, and openshot::ChunkWriter
33  *
34  *  - <b>Timeline</b> - A timeline allows many openshot::Clip objects to be trimmed, arranged, and layered together.
35  *    - The openshot::Timeline is a special kind of reader, built from openshot::Clip objects (each clip containing a reader)
36  *
37  *  - <b> Keyframe</b> - A Keyframe is used to change values of properties over time on the timeline (curve-based animation).
38  *    - The openshot::Keyframe, openshot::Point, and openshot::Coordinate are used to animate properties on the timeline.
39  *
40  * ### Example Code ###
41  * Now that you understand the basic building blocks of libopenshot, lets take a look at a simple example,
42  * where we use a reader to access frames of a video file.
43 
44  * @code
45  * // Create a reader for a video
46  * FFmpegReader r("MyAwesomeVideo.webm");
47  * r.Open(); // Open the reader
48  *
49  * // Get frame number 1 from the video
50  * std::shared_ptr<Frame> f = r.GetFrame(1);
51  *
52  * // Now that we have an openshot::Frame object, lets have some fun!
53  * f->Display(); // Display the frame on the screen
54  * f->DisplayWaveform(); // Display the audio waveform as an image
55  * f->Play(); // Play the audio through your speaker
56  *
57  * // Close the reader
58  * r.Close();
59  * @endcode
60  *
61  * ### A Closer Look at the Timeline ###
62  * The <b>following graphic</b> displays a timeline, and how clips can be arranged, scaled, and layered together. It
63  * also demonstrates how the viewport can be scaled smaller than the canvas, which can be used to zoom and pan around the
64  * canvas (i.e. pan & scan).
65  * \image html /doc/images/Timeline_Layers.png
66  *
67  * ### Build Instructions ###
68  * Build instructions are available for all three major Operating Systems:
69  * * [Building libopenshot for Windows](doc/INSTALL-WINDOWS.md)
70  * * [Building libopenshot for MacOS](doc/INSTALL-MAC.md)
71  * * [Building libopenshot for Linux](doc/INSTALL-LINUX.md)
72  *
73  * ### Want to Learn More? ###
74  * To continue learning about libopenshot, take a look at the <a href="annotated.html">full list of classes</a> available.
75  *
76  * \anchor License
77  * ### License & Copyright ###
78  * Copyright (c) 2008-2021 OpenShot Studios, LLC
79  * <http://www.openshotstudios.com/>. This file is part of
80  * OpenShot Library (libopenshot), an open-source project dedicated to
81  * delivering high quality video editing and animation solutions to the
82  * world. For more information visit <http://www.openshot.org/>.
83  *
84  * OpenShot Library (libopenshot) is free software: you can redistribute it
85  * and/or modify it under the terms of the GNU Lesser General Public License
86  * as published by the Free Software Foundation, either version 3 of the
87  * License, or (at your option) any later version.
88  *
89  * OpenShot Library (libopenshot) is distributed in the hope that it will be
90  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
91  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
92  * GNU Lesser General Public License for more details.
93  *
94  * You should have received a copy of the GNU Lesser General Public License
95  * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>.
96  */
97 
98 // Include the version number of OpenShot Library
99 #include "OpenShotVersion.h"
100 
101 // Include all other classes
102 #include "AudioBufferSource.h"
103 #include "AudioReaderSource.h"
104 #include "AudioResampler.h"
105 #include "CacheDisk.h"
106 #include "CacheMemory.h"
107 #include "ChunkReader.h"
108 #include "ChunkWriter.h"
109 #include "Clip.h"
110 #include "ClipBase.h"
111 #include "Coordinate.h"
112 #ifdef USE_BLACKMAGIC
113 	#include "DecklinkReader.h"
114 	#include "DecklinkWriter.h"
115 #endif
116 #include "DummyReader.h"
117 #include "EffectBase.h"
118 #include "Effects.h"
119 #include "EffectInfo.h"
120 #include "Enums.h"
121 #include "Exceptions.h"
122 #include "ReaderBase.h"
123 #include "WriterBase.h"
124 #include "FFmpegReader.h"
125 #include "FFmpegWriter.h"
126 #include "Fraction.h"
127 #include "Frame.h"
128 #include "FrameMapper.h"
129 #ifdef USE_IMAGEMAGICK
130 	#include "ImageReader.h"
131 	#include "ImageWriter.h"
132 	#include "TextReader.h"
133 #endif
134 #include "KeyFrame.h"
135 #include "PlayerBase.h"
136 #include "Point.h"
137 #include "Profiles.h"
138 #include "QtHtmlReader.h"
139 #include "QtImageReader.h"
140 #include "QtTextReader.h"
141 #include "TimelineBase.h"
142 #include "Timeline.h"
143 #include "Settings.h"
144 #ifdef USE_OPENCV
145 	#include "ClipProcessingJobs.h"
146 	#include "CVStabilization.h"
147 	#include "CVTracker.h"
148 	#include "CVObjectDetection.h"
149 	#include "TrackedObjectBBox.h"
150 #endif
151 
152 #endif
153