#include "clip.h" #include "project/effect.h" #include "io/media.h" #include "playback/playback.h" #include "playback/cacher.h" #include extern "C" { #include } Clip::Clip() { init(); } Clip* Clip::copy() { Clip* copy = new Clip(); copy->name = name; copy->clip_in = clip_in; copy->timeline_in = timeline_in; copy->timeline_out = timeline_out; copy->track = track; copy->color_r = color_r; copy->color_g = color_g; copy->color_b = color_b; copy->sequence = sequence; copy->media = media; copy->media_stream = media_stream; for (int i=0;ieffects.append(effects.at(i)->copy()); } return copy; } void Clip::init() { reset(); clip_in = timeline_in = timeline_out = track = undeletable = 0; texture = NULL; pkt = new AVPacket(); } void Clip::reset() { cache_size = cache_A.offset = cache_B.offset = open = pkt_written = cache_A.written = cache_B.written = cache_A.unread = cache_B.unread = reached_end = reset_audio = frame_sample_index = audio_buffer_write = 0; texture_frame = -1; formatCtx = NULL; stream = NULL; codec = NULL; codecCtx = NULL; texture = NULL; cache_A.frames = NULL; cache_B.frames = NULL; } Clip::~Clip() { if (open) { close_clip(this); } // make sure clip has closed before clip is destroyed open_lock.lock(); open_lock.unlock(); for (int i=0;i