OpenShot Library | libopenshot  0.2.5
Public Member Functions | Public Attributes | Protected Attributes | List of all members
openshot::Clip Class Reference

This class represents a clip (used to arrange readers on the timeline) More...

#include <Clip.h>

Inheritance diagram for openshot::Clip:
openshot::ClipBase

Public Member Functions

void AddEffect (openshot::EffectBase *effect)
 Add an effect to the clip. More...
 
 Clip ()
 Default Constructor. More...
 
 Clip (openshot::ReaderBase *new_reader)
 Constructor with reader. More...
 
 Clip (std::string path)
 Constructor with filepath (reader is automatically created... by guessing file extensions) More...
 
void Close ()
 Close the internal reader. More...
 
std::list< openshot::EffectBase * > Effects ()
 Return the list of effects on the timeline. More...
 
float End () const
 Override End() method. More...
 
std::shared_ptr< openshot::FrameGetFrame (int64_t requested_frame)
 Get an openshot::Frame object for a specific frame number of this timeline. More...
 
std::string Json () const override
 Get and Set JSON methods. More...
 
Json::Value JsonValue () const override
 Generate Json::Value for this object. More...
 
void Open ()
 Open the internal reader. More...
 
std::string PropertiesJSON (int64_t requested_frame) const override
 
openshot::ReaderBaseReader ()
 Get the current reader. More...
 
void Reader (openshot::ReaderBase *new_reader)
 Set the current reader. More...
 
void RemoveEffect (openshot::EffectBase *effect)
 Remove an effect from the clip. More...
 
void SetJson (const std::string value)
 Load JSON string into this object. More...
 
void SetJsonValue (const Json::Value root)
 Load Json::Value into this object. More...
 
virtual ~Clip ()
 Destructor. More...
 
- Public Member Functions inherited from openshot::ClipBase
 ClipBase ()
 Constructor for the base clip. More...
 
void Id (std::string value)
 Set basic properties. More...
 
bool operator< (ClipBase &a)
 
bool operator<= (ClipBase &a)
 
bool operator> (ClipBase &a)
 
bool operator>= (ClipBase &a)
 
virtual ~ClipBase ()=default
 

Public Attributes

openshot::Keyframe alpha
 Curve representing the alpha (1 to 0) More...
 
openshot::AnchorType anchor
 The anchor determines what parent a clip should snap to. More...
 
openshot::Keyframe channel_filter
 Audio channel filter and mappings. More...
 
openshot::Keyframe channel_mapping
 A number representing an audio channel to output (only works when filtering a channel) More...
 
openshot::GravityType crop_gravity
 Cropping needs to have a gravity to determine what side we are cropping. More...
 
openshot::Keyframe crop_height
 Curve representing height in percent (0.0=0%, 1.0=100%) More...
 
openshot::Keyframe crop_width
 Curve representing width in percent (0.0=0%, 1.0=100%) More...
 
openshot::Keyframe crop_x
 Curve representing X offset in percent (-1.0=-100%, 0.0=0%, 1.0=100%) More...
 
openshot::Keyframe crop_y
 Curve representing Y offset in percent (-1.0=-100%, 0.0=0%, 1.0=100%) More...
 
openshot::FrameDisplayType display
 The format to display the frame number (if any) More...
 
openshot::GravityType gravity
 The gravity of a clip determines where it snaps to its parent. More...
 
openshot::Keyframe has_audio
 Override has_video and has_audio properties of clip (and their readers) More...
 
openshot::Keyframe has_video
 An optional override to determine if this clip has video (-1=undefined, 0=no, 1=yes) More...
 
openshot::Keyframe location_x
 Curve representing the relative X position in percent based on the gravity (-1 to 1) More...
 
openshot::Keyframe location_y
 Curve representing the relative Y position in percent based on the gravity (-1 to 1) More...
 
openshot::VolumeMixType mixing
 What strategy should be followed when mixing audio with other clips. More...
 
openshot::Keyframe perspective_c1_x
 Curves representing X for coordinate 1. More...
 
openshot::Keyframe perspective_c1_y
 Curves representing Y for coordinate 1. More...
 
openshot::Keyframe perspective_c2_x
 Curves representing X for coordinate 2. More...
 
openshot::Keyframe perspective_c2_y
 Curves representing Y for coordinate 2. More...
 
openshot::Keyframe perspective_c3_x
 Curves representing X for coordinate 3. More...
 
openshot::Keyframe perspective_c3_y
 Curves representing Y for coordinate 3. More...
 
openshot::Keyframe perspective_c4_x
 Curves representing X for coordinate 4. More...
 
openshot::Keyframe perspective_c4_y
 Curves representing Y for coordinate 4. More...
 
openshot::Keyframe rotation
 Curve representing the rotation (0 to 360) More...
 
openshot::ScaleType scale
 The scale determines how a clip should be resized to fit its parent. More...
 
openshot::Keyframe scale_x
 Curve representing the horizontal scaling in percent (0 to 1) More...
 
openshot::Keyframe scale_y
 Curve representing the vertical scaling in percent (0 to 1) More...
 
openshot::Keyframe shear_x
 Curve representing X shear angle in degrees (-45.0=left, 45.0=right) More...
 
openshot::Keyframe shear_y
 Curve representing Y shear angle in degrees (-45.0=down, 45.0=up) More...
 
openshot::Keyframe time
 Curve representing the frames over time to play (used for speed and direction of video) More...
 
openshot::Keyframe volume
 Curve representing the volume (0 to 1) More...
 
openshot::Color wave_color
 Curve representing the color of the audio wave form. More...
 

Protected Attributes

juce::CriticalSection getFrameCriticalSection
 Section lock for multiple threads. More...
 
- Protected Attributes inherited from openshot::ClipBase
float end
 The position in seconds to end playing (used to trim the ending of a clip) More...
 
std::string id
 ID Property for all derived Clip and Effect classes. More...
 
int layer
 The layer this clip is on. Lower clips are covered up by higher clips. More...
 
float position
 The position on the timeline where this clip should start playing. More...
 
std::string previous_properties
 This string contains the previous JSON properties. More...
 
float start
 The position in seconds to start playing (used to trim the beginning of a clip) More...
 

Additional Inherited Members

- Protected Member Functions inherited from openshot::ClipBase
Json::Value add_property_choice_json (std::string name, int value, int selected_value) const
 Generate JSON choice for a property (dropdown properties) More...
 
Json::Value add_property_json (std::string name, float value, std::string type, std::string memo, const Keyframe *keyframe, float min_value, float max_value, bool readonly, int64_t requested_frame) const
 Generate JSON for a property. More...
 

Detailed Description

This class represents a clip (used to arrange readers on the timeline)

Each image, video, or audio file is represented on a layer as a clip. A clip has many properties that affect how it behaves on the timeline, such as its size, position, transparency, rotation, speed, volume, etc...

// Create some clips
Clip c1(new ImageReader("MyAwesomeLogo.jpeg"));
Clip c2(new FFmpegReader("BackgroundVideo.webm"));
// CLIP 1 (logo) - Set some clip properties (with openshot::Keyframes)
c1.Position(0.0); // Set the position or location (in seconds) on the timeline
c1.gravity = GRAVITY_LEFT; // Set the alignment / gravity of the clip (position on the screen)
c1.scale = SCALE_CROP; // Set the scale mode (how the image is resized to fill the screen)
c1.Layer(1); // Set the layer of the timeline (higher layers cover up images of lower layers)
c1.Start(0.0); // Set the starting position of the video (trim the left side of the video)
c1.End(16.0); // Set the ending position of the video (trim the right side of the video)
c1.alpha.AddPoint(1, 0.0); // Set the alpha to transparent on frame #1
c1.alpha.AddPoint(500, 0.0); // Keep the alpha transparent until frame #500
c1.alpha.AddPoint(565, 1.0); // Animate the alpha from transparent to visible (between frame #501 and #565)
// CLIP 2 (background video) - Set some clip properties (with openshot::Keyframes)
c2.Position(0.0); // Set the position or location (in seconds) on the timeline
c2.Start(10.0); // Set the starting position of the video (trim the left side of the video)
c2.Layer(0); // Set the layer of the timeline (higher layers cover up images of lower layers)
c2.alpha.AddPoint(1, 1.0); // Set the alpha to visible on frame #1
c2.alpha.AddPoint(150, 0.0); // Animate the alpha to transparent (between frame 2 and frame #150)
c2.alpha.AddPoint(360, 0.0, LINEAR); // Keep the alpha transparent until frame #360
c2.alpha.AddPoint(384, 1.0); // Animate the alpha to visible (between frame #360 and frame #384)

Definition at line 95 of file Clip.h.

Constructor & Destructor Documentation

◆ Clip() [1/3]

Clip::Clip ( )

Default Constructor.

Definition at line 134 of file Clip.cpp.

◆ Clip() [2/3]

Clip::Clip ( std::string  path)

Constructor with filepath (reader is automatically created... by guessing file extensions)

Parameters
pathThe path of a reader (video file, image file, etc...). The correct reader will be used automatically.

Definition at line 155 of file Clip.cpp.

◆ Clip() [3/3]

Clip::Clip ( openshot::ReaderBase new_reader)

Constructor with reader.

Parameters
new_readerThe reader to be used by this clip

Definition at line 141 of file Clip.cpp.

◆ ~Clip()

Clip::~Clip ( )
virtual

Destructor.

Definition at line 203 of file Clip.cpp.

Member Function Documentation

◆ AddEffect()

void Clip::AddEffect ( openshot::EffectBase effect)

Add an effect to the clip.

Parameters
effectAdd an effect to the clip. An effect can modify the audio or video of an openshot::Frame.

Definition at line 991 of file Clip.cpp.

Referenced by SetJsonValue().

◆ Close()

void Clip::Close ( )

Close the internal reader.

Definition at line 259 of file Clip.cpp.

Referenced by Clip().

◆ Effects()

std::list<openshot::EffectBase*> openshot::Clip::Effects ( )
inline

Return the list of effects on the timeline.

Definition at line 171 of file Clip.h.

◆ End()

float Clip::End ( ) const

Override End() method.

Get end position (in seconds) of clip (trim end of video), which can be affected by the time curve.

Definition at line 273 of file Clip.cpp.

Referenced by Clip(), Open(), and PropertiesJSON().

◆ GetFrame()

std::shared_ptr< Frame > Clip::GetFrame ( int64_t  requested_frame)

Get an openshot::Frame object for a specific frame number of this timeline.

Returns
The requested frame (containing the image)
Parameters
requested_frameThe frame number that is requested

Definition at line 295 of file Clip.cpp.

Referenced by openshot::Timeline::GetFrame().

◆ Json()

std::string Clip::Json ( ) const
overridevirtual

Get and Set JSON methods.

Generate JSON string of this object

Implements openshot::ClipBase.

Definition at line 648 of file Clip.cpp.

◆ JsonValue()

Json::Value Clip::JsonValue ( ) const
overridevirtual

Generate Json::Value for this object.

Implements openshot::ClipBase.

Definition at line 743 of file Clip.cpp.

Referenced by Json().

◆ Open()

void Clip::Open ( )

Open the internal reader.

Definition at line 242 of file Clip.cpp.

Referenced by Clip().

◆ PropertiesJSON()

std::string Clip::PropertiesJSON ( int64_t  requested_frame) const
overridevirtual

Get all properties for a specific frame (perfect for a UI to display the current state of all properties at any time)

Implements openshot::ClipBase.

Definition at line 655 of file Clip.cpp.

◆ Reader() [1/2]

ReaderBase * Clip::Reader ( )

Get the current reader.

Definition at line 232 of file Clip.cpp.

◆ Reader() [2/2]

void Clip::Reader ( openshot::ReaderBase new_reader)

Set the current reader.

Parameters
new_readerThe reader to be used by this clip

Definition at line 219 of file Clip.cpp.

Referenced by openshot::Timeline::ClearAllCache().

◆ RemoveEffect()

void Clip::RemoveEffect ( openshot::EffectBase effect)

Remove an effect from the clip.

Parameters
effectRemove an effect from the clip.

Definition at line 1001 of file Clip.cpp.

◆ SetJson()

void Clip::SetJson ( const std::string  value)
virtual

Load JSON string into this object.

Implements openshot::ClipBase.

Definition at line 798 of file Clip.cpp.

◆ SetJsonValue()

void Clip::SetJsonValue ( const Json::Value  root)
virtual

Load Json::Value into this object.

Implements openshot::ClipBase.

Definition at line 815 of file Clip.cpp.

Referenced by SetJson(), and openshot::Timeline::SetJsonValue().

Member Data Documentation

◆ alpha

openshot::Keyframe openshot::Clip::alpha

Curve representing the alpha (1 to 0)

Definition at line 218 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ anchor

openshot::AnchorType openshot::Clip::anchor

The anchor determines what parent a clip should snap to.

Definition at line 145 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ channel_filter

openshot::Keyframe openshot::Clip::channel_filter

Audio channel filter and mappings.

A number representing an audio channel to filter (clears all other channels)

Definition at line 248 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ channel_mapping

openshot::Keyframe openshot::Clip::channel_mapping

A number representing an audio channel to output (only works when filtering a channel)

Definition at line 249 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ crop_gravity

openshot::GravityType openshot::Clip::crop_gravity

Cropping needs to have a gravity to determine what side we are cropping.

Definition at line 229 of file Clip.h.

◆ crop_height

openshot::Keyframe openshot::Clip::crop_height

Curve representing height in percent (0.0=0%, 1.0=100%)

Definition at line 231 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ crop_width

openshot::Keyframe openshot::Clip::crop_width

Curve representing width in percent (0.0=0%, 1.0=100%)

Definition at line 230 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ crop_x

openshot::Keyframe openshot::Clip::crop_x

Curve representing X offset in percent (-1.0=-100%, 0.0=0%, 1.0=100%)

Definition at line 232 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ crop_y

openshot::Keyframe openshot::Clip::crop_y

Curve representing Y offset in percent (-1.0=-100%, 0.0=0%, 1.0=100%)

Definition at line 233 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ display

openshot::FrameDisplayType openshot::Clip::display

The format to display the frame number (if any)

Definition at line 146 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ getFrameCriticalSection

juce::CriticalSection openshot::Clip::getFrameCriticalSection
protected

Section lock for multiple threads.

Definition at line 98 of file Clip.h.

◆ gravity

openshot::GravityType openshot::Clip::gravity

The gravity of a clip determines where it snaps to its parent.

Definition at line 143 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ has_audio

openshot::Keyframe openshot::Clip::has_audio

Override has_video and has_audio properties of clip (and their readers)

An optional override to determine if this clip has audio (-1=undefined, 0=no, 1=yes)

Definition at line 252 of file Clip.h.

Referenced by GetFrame(), JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ has_video

openshot::Keyframe openshot::Clip::has_video

An optional override to determine if this clip has video (-1=undefined, 0=no, 1=yes)

Definition at line 253 of file Clip.h.

Referenced by GetFrame(), JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ location_x

openshot::Keyframe openshot::Clip::location_x

Curve representing the relative X position in percent based on the gravity (-1 to 1)

Definition at line 214 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ location_y

openshot::Keyframe openshot::Clip::location_y

Curve representing the relative Y position in percent based on the gravity (-1 to 1)

Definition at line 215 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ mixing

openshot::VolumeMixType openshot::Clip::mixing

What strategy should be followed when mixing audio with other clips.

Definition at line 147 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ perspective_c1_x

openshot::Keyframe openshot::Clip::perspective_c1_x

Curves representing X for coordinate 1.

Definition at line 238 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ perspective_c1_y

openshot::Keyframe openshot::Clip::perspective_c1_y

Curves representing Y for coordinate 1.

Definition at line 239 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ perspective_c2_x

openshot::Keyframe openshot::Clip::perspective_c2_x

Curves representing X for coordinate 2.

Definition at line 240 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ perspective_c2_y

openshot::Keyframe openshot::Clip::perspective_c2_y

Curves representing Y for coordinate 2.

Definition at line 241 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ perspective_c3_x

openshot::Keyframe openshot::Clip::perspective_c3_x

Curves representing X for coordinate 3.

Definition at line 242 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ perspective_c3_y

openshot::Keyframe openshot::Clip::perspective_c3_y

Curves representing Y for coordinate 3.

Definition at line 243 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ perspective_c4_x

openshot::Keyframe openshot::Clip::perspective_c4_x

Curves representing X for coordinate 4.

Definition at line 244 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ perspective_c4_y

openshot::Keyframe openshot::Clip::perspective_c4_y

Curves representing Y for coordinate 4.

Definition at line 245 of file Clip.h.

Referenced by JsonValue(), and SetJsonValue().

◆ rotation

openshot::Keyframe openshot::Clip::rotation

Curve representing the rotation (0 to 360)

Definition at line 219 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ scale

openshot::ScaleType openshot::Clip::scale

The scale determines how a clip should be resized to fit its parent.

Definition at line 144 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ scale_x

openshot::Keyframe openshot::Clip::scale_x

Curve representing the horizontal scaling in percent (0 to 1)

Definition at line 212 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ scale_y

openshot::Keyframe openshot::Clip::scale_y

Curve representing the vertical scaling in percent (0 to 1)

Definition at line 213 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ shear_x

openshot::Keyframe openshot::Clip::shear_x

Curve representing X shear angle in degrees (-45.0=left, 45.0=right)

Definition at line 236 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ shear_y

openshot::Keyframe openshot::Clip::shear_y

Curve representing Y shear angle in degrees (-45.0=down, 45.0=up)

Definition at line 237 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ time

openshot::Keyframe openshot::Clip::time

Curve representing the frames over time to play (used for speed and direction of video)

Definition at line 222 of file Clip.h.

Referenced by End(), GetFrame(), JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ volume

openshot::Keyframe openshot::Clip::volume

Curve representing the volume (0 to 1)

Definition at line 223 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().

◆ wave_color

openshot::Color openshot::Clip::wave_color

Curve representing the color of the audio wave form.

Definition at line 226 of file Clip.h.

Referenced by JsonValue(), PropertiesJSON(), and SetJsonValue().


The documentation for this class was generated from the following files:
openshot::SCALE_CROP
@ SCALE_CROP
Scale the clip until both height and width fill the canvas (cropping the overlap)
Definition: Enums.h:54
openshot::LINEAR
@ LINEAR
Linear curves are angular, straight lines between two points.
Definition: Point.h:48
openshot::GRAVITY_LEFT
@ GRAVITY_LEFT
Align clip to the left of its parent (middle aligned)
Definition: Enums.h:43
openshot::Clip::Clip
Clip()
Default Constructor.
Definition: Clip.cpp:134