OpenShot Library | libopenshot  0.1.9
OpenShot.h
Go to the documentation of this file.
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 (Linux, Mac, and Windows) ###
68  * For a step-by-step guide to building / compiling libopenshot, check out the
69  * <a href="InstallationGuide.pdf" target="_blank">Official Installation Guide</a>.
70  *
71  * ### Want to Learn More? ###
72  * To continue learning about libopenshot, take a look at the <a href="annotated.html">full list of classes</a> available.
73  *
74  * ### License & Copyright ###
75  * Copyright (c) 2008-2014 OpenShot Studios, LLC
76  * <http://www.openshotstudios.com/>. This file is part of
77  * OpenShot Library (libopenshot), an open-source project dedicated to
78  * delivering high quality video editing and animation solutions to the
79  * world. For more information visit <http://www.openshot.org/>.
80  *
81  * OpenShot Library (libopenshot) is free software: you can redistribute it
82  * and/or modify it under the terms of the GNU Lesser General Public License
83  * as published by the Free Software Foundation, either version 3 of the
84  * License, or (at your option) any later version.
85  *
86  * OpenShot Library (libopenshot) is distributed in the hope that it will be
87  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
88  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
89  * GNU Lesser General Public License for more details.
90  *
91  * You should have received a copy of the GNU Lesser General Public License
92  * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>.
93  */
94 
95 // Include the version number of OpenShot Library
96 #include "Version.h"
97 
98 // Include all other classes
99 #include "AudioBufferSource.h"
100 #include "AudioReaderSource.h"
101 #include "AudioResampler.h"
102 #include "CacheDisk.h"
103 #include "CacheMemory.h"
104 #include "ChunkReader.h"
105 #include "ChunkWriter.h"
106 #include "Clip.h"
107 #include "ClipBase.h"
108 #include "Coordinate.h"
109 #ifdef USE_BLACKMAGIC
110  #include "DecklinkReader.h"
111  #include "DecklinkWriter.h"
112 #endif
113 #include "DummyReader.h"
114 #include "EffectBase.h"
115 #include "Effects.h"
116 #include "EffectInfo.h"
117 #include "Enums.h"
118 #include "Exceptions.h"
119 #include "ReaderBase.h"
120 #include "WriterBase.h"
121 #include "FFmpegReader.h"
122 #include "FFmpegWriter.h"
123 #include "Fraction.h"
124 #include "Frame.h"
125 #include "FrameMapper.h"
126 #ifdef USE_IMAGEMAGICK
127  #include "ImageReader.h"
128  #include "ImageWriter.h"
129  #include "TextReader.h"
130 #endif
131 #include "KeyFrame.h"
132 #include "PlayerBase.h"
133 #include "Point.h"
134 #include "Profiles.h"
135 #include "QtImageReader.h"
136 #include "Timeline.h"
137 
138 #endif
Header file for Fraction class.
Header file for DecklinkWriter class.
Header file for ClipBase class.
Header file for DummyReader class.
Header file for ChunkWriter class.
Header file for ReaderBase class.
Header file for Point class.
This header includes all commonly used effects for libopenshot, for ease-of-use.
Header file for FFmpegReader class.
Header file for AudioBufferSource class.
Header file for FFmpegWriter class.
Header file for the Keyframe class.
Header file for CacheMemory class.
Header file for Timeline class.
Header file for all Exception classes.
Header file for Frame class.
Header file that includes the version number of libopenshot.
Header file for ChunkReader class.
Header file for AudioResampler class.
Header file for TextReader class.
Header file for WriterBase class.
Header file for Clip class.
Header file for the FrameMapper class.
Header file for Profile class.
Header file for DecklinkReader class.
Header file for TextReader class.
Header file for AudioReaderSource class.
Header file for EffectBase class.
Header file for Coordinate class.
Header file for PlayerBase class.
Header file for QtImageReader class.
Header file for CacheDisk class.
Header file for ImageReader class.
Header file for ImageWriter class.
Header file for the EffectInfo class.