From 0e30ecccfdaad429e20fa5f8930f6bff70e9d15f Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Thu, 18 Feb 2021 16:14:14 -0600 Subject: [PATCH] Removing caching from Clip object. Causes too many issues and does not add any performance (in my tests) --- src/Clip.cpp | 35 ++++------------------------------- src/Clip.h | 4 ++-- src/Timeline.cpp | 19 ------------------- 3 files changed, 6 insertions(+), 52 deletions(-) diff --git a/src/Clip.cpp b/src/Clip.cpp index 7d62b85b..55dcf262 100644 --- a/src/Clip.cpp +++ b/src/Clip.cpp @@ -99,7 +99,7 @@ void Clip::init_settings() has_audio = Keyframe(-1.0); has_video = Keyframe(-1.0); - // Init reader info struct and cache size + // Init reader info struct init_reader_settings(); } @@ -111,9 +111,6 @@ void Clip::init_reader_settings() { // Initialize info struct info = reader->info; - - // Initialize Clip cache - cache.SetMaxBytesFromInfo(OPEN_MP_NUM_PROCESSORS * 2, info.width, info.height, info.sample_rate, info.channels); } } @@ -162,7 +159,7 @@ Clip::Clip(ReaderBase* new_reader) : resampler(NULL), reader(new_reader), alloca if (reader) { End(reader->info.duration); reader->ParentClip(this); - // Init reader info struct and cache size + // Init reader info struct init_reader_settings(); } } @@ -222,7 +219,7 @@ Clip::Clip(std::string path) : resampler(NULL), reader(NULL), allocated_reader(N End(reader->info.duration); reader->ParentClip(this); allocated_reader = reader; - // Init reader info struct and cache size + // Init reader info struct init_reader_settings(); } } @@ -252,7 +249,7 @@ void Clip::Reader(ReaderBase* new_reader) // set parent reader->ParentClip(this); - // Init reader info struct and cache size + // Init reader info struct init_reader_settings(); } @@ -357,16 +354,6 @@ std::shared_ptr Clip::GetFrame(std::shared_ptr backgroun // Adjust out of bounds frame number frame_number = adjust_frame_number_minimum(frame_number); - // Check the cache for this frame - std::shared_ptr cached_frame = cache.GetFrame(frame_number); - if (cached_frame) { - // Debug output - ZmqLogger::Instance()->AppendDebugMethod("Clip::GetFrame", "returned cached frame", frame_number); - - // Return the cached frame - return cached_frame; - } - // Adjust has_video and has_audio overrides int enabled_audio = has_audio.GetInt(frame_number); if (enabled_audio == -1 && reader && reader->info.has_audio) @@ -411,11 +398,6 @@ std::shared_ptr Clip::GetFrame(std::shared_ptr backgroun // Apply keyframe / transforms apply_keyframes(original_frame, background_frame->GetImage()); - // Cache frame - // TODO: disable clip cache temporarily for testing - // with this enabled, black frames appear when seeking to previous frames - //cache.Add(original_frame); - // Return processed 'frame' return original_frame; } @@ -896,9 +878,6 @@ void Clip::SetJsonValue(const Json::Value root) { // Set parent data ClipBase::SetJsonValue(root); - // Clear cache - cache.Clear(); - // Set data from Json (if key is found) if (!root["gravity"].isNull()) gravity = (GravityType) root["gravity"].asInt(); @@ -1082,18 +1061,12 @@ void Clip::AddEffect(EffectBase* effect) // Sort effects sort_effects(); - - // Clear cache - cache.Clear(); } // Remove an effect from the clip void Clip::RemoveEffect(EffectBase* effect) { effects.remove(effect); - - // Clear cache - cache.Clear(); } // Apply effects to the source frame (if any) diff --git a/src/Clip.h b/src/Clip.h index 10410394..af28ccc6 100644 --- a/src/Clip.h +++ b/src/Clip.h @@ -192,8 +192,8 @@ namespace openshot { /// Destructor virtual ~Clip(); - /// Get the cache object used by this clip - CacheMemory* GetCache() override { return &cache; }; + /// Get the cache object (always return NULL for this reader) + openshot::CacheMemory* GetCache() override { return NULL; }; /// Determine if reader is open or closed bool IsOpen() override { return is_open; }; diff --git a/src/Timeline.cpp b/src/Timeline.cpp index ad510a03..0f0b06ef 100644 --- a/src/Timeline.cpp +++ b/src/Timeline.cpp @@ -1176,12 +1176,6 @@ void Timeline::apply_json_to_effects(Json::Value change, EffectBase* existing_ef // Add Effect to Timeline AddEffect(e); - - // Clear cache on parent clip (if any) - Clip* parent_clip = (Clip*) e->ParentClip(); - if (parent_clip && parent_clip->GetCache()) { - parent_clip->GetCache()->Clear(); - } } } else if (change_type == "update") { @@ -1194,12 +1188,6 @@ void Timeline::apply_json_to_effects(Json::Value change, EffectBase* existing_ef int64_t old_ending_frame = ((existing_effect->Position() + existing_effect->Duration()) * info.fps.ToDouble()) + 1; final_cache->Remove(old_starting_frame - 8, old_ending_frame + 8); - // Clear cache on parent clip (if any) - Clip* parent_clip = (Clip*) existing_effect->ParentClip(); - if (parent_clip && parent_clip->GetCache()) { - parent_clip->GetCache()->Clear(); - } - // Update effect properties from JSON existing_effect->SetJsonValue(change["value"]); } @@ -1214,12 +1202,6 @@ void Timeline::apply_json_to_effects(Json::Value change, EffectBase* existing_ef int64_t old_ending_frame = ((existing_effect->Position() + existing_effect->Duration()) * info.fps.ToDouble()) + 1; final_cache->Remove(old_starting_frame - 8, old_ending_frame + 8); - // Clear cache on parent clip (if any) - Clip* parent_clip = (Clip*) existing_effect->ParentClip(); - if (parent_clip && parent_clip->GetCache()) { - parent_clip->GetCache()->Clear(); - } - // Remove effect from timeline RemoveEffect(existing_effect); } @@ -1363,7 +1345,6 @@ void Timeline::ClearAllCache() { for (auto clip : clips) { // Clear cache on clip - clip->GetCache()->Clear(); clip->Reader()->GetCache()->Clear(); // Clear nested Reader (if any)