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:

## 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...
void | End (float value)
| Set end position (in seconds) of clip (trim end of video) More...
std::shared_ptr< openshot::Frame > | GetFrame (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::ReaderBase * | Reader ()
| 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...
bool | Waveform ()
| Waveform property. More...
void | Waveform (bool value)
| Set the waveform property of this clip. More...
virtual | ~Clip ()
| Destructor. More...
Public Member Functions inherited from openshot::ClipBase
| ClipBase ()
| Constructor for the base clip. More...
float | Duration () const
| Get the length of this clip (in seconds) More...
float | End () const
| Get end position (in seconds) of clip (trim end of video) More...
void | End (float value)
| Set end position (in seconds) of clip (trim end of video) More...
std::string | Id () const
| Get basic properties. More...
void | Id (std::string value)
| Set basic properties. More...
int | Layer () const
| Get layer of clip on timeline (lower number is covered by higher numbers) More...
void | Layer (int value)
| Set layer of clip on timeline (lower number is covered by higher numbers) More...
bool | operator< (ClipBase &a)
bool | operator<= (ClipBase &a)
bool | operator> (ClipBase &a)
bool | operator>= (ClipBase &a)
float | Position () const
| Get position on timeline (in seconds) More...
void | Position (float value)

> Set the Id of this clip object

More...

float | Start () const
| Get start position (in seconds) of clip (trim start of video) More...
void | Start (float value)
| Set start position (in seconds) of clip (trim start of video) More...
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)
openshot::Clip::Clip
Clip()
Default Constructor.
Definition: Clip.cpp:134
openshot::GRAVITY_LEFT
@ GRAVITY_LEFT
Align clip to the left of its parent (middle aligned)
Definition: Enums.h:43
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

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

  path | The 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_reader | The 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

  effect | Add 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() [1/2]

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().

## End() [2/2]

void openshot::Clip::End | ( | float | value | ) |

inline

Set end position (in seconds) of clip (trim end of video)

Definition at line 191 of file Clip.h.

## 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_frame | The frame number that is requested

Definition at line 295 of file Clip.cpp.

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

## Json()

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

override virtual

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

override virtual

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

override virtual

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_reader | The 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

  effect | Remove 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().

## Waveform() [1/2]

bool openshot::Clip::Waveform | ( |  | ) |

inline

Waveform property.

Get the waveform property of this clip

Definition at line 208 of file Clip.h.

## Waveform() [2/2]

void openshot::Clip::Waveform | ( | bool | value | ) |

inline

Set the waveform property of this clip.

Definition at line 209 of file Clip.h.

## 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:

- Clip.h
- Clip.cpp