[Bf-blender-cvs] [01db805a821] master: Cleanup: split sequencer.c file
Richard Antalik
noreply at git.blender.org
Mon Nov 16 05:06:23 CET 2020
Commit: 01db805a82129a27b1408d62417c40b0717228dc
Author: Richard Antalik
Date: Mon Nov 16 05:02:30 2020 +0100
Branches: master
https://developer.blender.org/rB01db805a82129a27b1408d62417c40b0717228dc
Cleanup: split sequencer.c file
Move most functions into separate files.
File sequencer.c is reserved for alloc, free and duplicating functions.
There should be no functional changes.
===================================================================
M source/blender/sequencer/CMakeLists.txt
A source/blender/sequencer/intern/clipboard.c
M source/blender/sequencer/intern/effects.c
A source/blender/sequencer/intern/effects.h
M source/blender/sequencer/intern/image_cache.c
A source/blender/sequencer/intern/image_cache.h
A source/blender/sequencer/intern/iterator.c
M source/blender/sequencer/intern/modifier.c
A source/blender/sequencer/intern/multiview.c
A source/blender/sequencer/intern/multiview.h
M source/blender/sequencer/intern/prefetch.c
A source/blender/sequencer/intern/prefetch.h
M source/blender/sequencer/intern/proxy.c
M source/blender/sequencer/intern/proxy.h
M source/blender/sequencer/intern/render.c
M source/blender/sequencer/intern/render.h
M source/blender/sequencer/intern/sequencer.c
M source/blender/sequencer/intern/sequencer.h
A source/blender/sequencer/intern/sound.c
A source/blender/sequencer/intern/strip_add.c
A source/blender/sequencer/intern/strip_edit.c
A source/blender/sequencer/intern/strip_relations.c
A source/blender/sequencer/intern/strip_select.c
A source/blender/sequencer/intern/strip_time.c
A source/blender/sequencer/intern/strip_time.h
A source/blender/sequencer/intern/strip_transform.c
A source/blender/sequencer/intern/utils.c
A source/blender/sequencer/intern/utils.h
===================================================================
diff --git a/source/blender/sequencer/CMakeLists.txt b/source/blender/sequencer/CMakeLists.txt
index 9efe23dd8c4..18755e7e6bc 100644
--- a/source/blender/sequencer/CMakeLists.txt
+++ b/source/blender/sequencer/CMakeLists.txt
@@ -46,16 +46,33 @@ set(INC_SYS
set(SRC
SEQ_sequencer.h
+ intern/clipboard.c
intern/effects.c
+ intern/effects.h
intern/image_cache.c
+ intern/image_cache.h
+ intern/iterator.c
intern/modifier.c
+ intern/multiview.c
+ intern/multiview.h
intern/prefetch.c
+ intern/prefetch.h
intern/proxy.c
intern/proxy.h
intern/render.c
intern/render.h
intern/sequencer.c
intern/sequencer.h
+ intern/sound.c
+ intern/strip_add.c
+ intern/strip_edit.c
+ intern/strip_relations.c
+ intern/strip_select.c
+ intern/strip_time.c
+ intern/strip_time.h
+ intern/strip_transform.c
+ intern/utils.c
+ intern/utils.h
)
set(LIB
diff --git a/source/blender/sequencer/intern/clipboard.c b/source/blender/sequencer/intern/clipboard.c
new file mode 100644
index 00000000000..7d37dab93dd
--- /dev/null
+++ b/source/blender/sequencer/intern/clipboard.c
@@ -0,0 +1,179 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * - Blender Foundation, 2003-2009
+ * - Peter Schlaile <peter [at] schlaile [dot] de> 2005/2006
+ */
+
+/** \file
+ * \ingroup bke
+ */
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_scene_types.h"
+#include "DNA_sequence_types.h"
+#include "DNA_sound_types.h"
+
+#include "BLI_listbase.h"
+
+#include "BKE_main.h"
+#include "BKE_movieclip.h"
+#include "BKE_scene.h"
+#include "BKE_sound.h"
+
+#include "SEQ_sequencer.h"
+
+#include "sequencer.h"
+
+#ifdef WITH_AUDASPACE
+# include <AUD_Special.h>
+#endif
+
+/* -------------------------------------------------------------------- */
+/* Manage pointers in the clipboard.
+ * note that these pointers should _never_ be access in the sequencer,
+ * they are only for storage while in the clipboard
+ * notice 'newid' is used for temp pointer storage here, validate on access (this is safe usage,
+ * since those data-blocks are fully out of Main lists).
+ */
+
+ListBase seqbase_clipboard;
+int seqbase_clipboard_frame;
+
+void BKE_sequencer_base_clipboard_pointers_free(struct ListBase *seqbase);
+
+void BKE_sequencer_free_clipboard(void)
+{
+ Sequence *seq, *nseq;
+
+ BKE_sequencer_base_clipboard_pointers_free(&seqbase_clipboard);
+
+ for (seq = seqbase_clipboard.first; seq; seq = nseq) {
+ nseq = seq->next;
+ seq_free_sequence_recurse(NULL, seq, false);
+ }
+ BLI_listbase_clear(&seqbase_clipboard);
+}
+
+#define ID_PT (*id_pt)
+static void seqclipboard_ptr_free(Main *UNUSED(bmain), ID **id_pt)
+{
+ if (ID_PT) {
+ BLI_assert(ID_PT->newid != NULL);
+ MEM_freeN(ID_PT);
+ ID_PT = NULL;
+ }
+}
+static void seqclipboard_ptr_store(Main *UNUSED(bmain), ID **id_pt)
+{
+ if (ID_PT) {
+ ID *id_prev = ID_PT;
+ ID_PT = MEM_dupallocN(ID_PT);
+ ID_PT->newid = id_prev;
+ }
+}
+static void seqclipboard_ptr_restore(Main *bmain, ID **id_pt)
+{
+ if (ID_PT) {
+ const ListBase *lb = which_libbase(bmain, GS(ID_PT->name));
+ void *id_restore;
+
+ BLI_assert(ID_PT->newid != NULL);
+ if (BLI_findindex(lb, (ID_PT)->newid) != -1) {
+ /* the pointer is still valid */
+ id_restore = (ID_PT)->newid;
+ }
+ else {
+ /* the pointer of the same name still exists */
+ id_restore = BLI_findstring(lb, (ID_PT)->name + 2, offsetof(ID, name) + 2);
+ }
+
+ if (id_restore == NULL) {
+ /* check for a data with the same filename */
+ switch (GS(ID_PT->name)) {
+ case ID_SO: {
+ id_restore = BLI_findstring(lb, ((bSound *)ID_PT)->filepath, offsetof(bSound, filepath));
+ if (id_restore == NULL) {
+ id_restore = BKE_sound_new_file(bmain, ((bSound *)ID_PT)->filepath);
+ (ID_PT)->newid = id_restore; /* reuse next time */
+ }
+ break;
+ }
+ case ID_MC: {
+ id_restore = BLI_findstring(
+ lb, ((MovieClip *)ID_PT)->filepath, offsetof(MovieClip, filepath));
+ if (id_restore == NULL) {
+ id_restore = BKE_movieclip_file_add(bmain, ((MovieClip *)ID_PT)->filepath);
+ (ID_PT)->newid = id_restore; /* reuse next time */
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ /* Replace with pointer to actual data-block. */
+ seqclipboard_ptr_free(bmain, id_pt);
+ ID_PT = id_restore;
+ }
+}
+#undef ID_PT
+
+static void sequence_clipboard_pointers(Main *bmain,
+ Sequence *seq,
+ void (*callback)(Main *, ID **))
+{
+ callback(bmain, (ID **)&seq->scene);
+ callback(bmain, (ID **)&seq->scene_camera);
+ callback(bmain, (ID **)&seq->clip);
+ callback(bmain, (ID **)&seq->mask);
+ callback(bmain, (ID **)&seq->sound);
+
+ if (seq->type == SEQ_TYPE_TEXT && seq->effectdata) {
+ TextVars *text_data = seq->effectdata;
+ callback(bmain, (ID **)&text_data->text_font);
+ }
+}
+
+/* recursive versions of functions above */
+void BKE_sequencer_base_clipboard_pointers_free(ListBase *seqbase)
+{
+ Sequence *seq;
+ for (seq = seqbase->first; seq; seq = seq->next) {
+ sequence_clipboard_pointers(NULL, seq, seqclipboard_ptr_free);
+ BKE_sequencer_base_clipboard_pointers_free(&seq->seqbase);
+ }
+}
+void BKE_sequencer_base_clipboard_pointers_store(Main *bmain, ListBase *seqbase)
+{
+ Sequence *seq;
+ for (seq = seqbase->first; seq; seq = seq->next) {
+ sequence_clipboard_pointers(bmain, seq, seqclipboard_ptr_store);
+ BKE_sequencer_base_clipboard_pointers_store(bmain, &seq->seqbase);
+ }
+}
+void BKE_sequencer_base_clipboard_pointers_restore(ListBase *seqbase, Main *bmain)
+{
+ Sequence *seq;
+ for (seq = seqbase->first; seq; seq = seq->next) {
+ sequence_clipboard_pointers(bmain, seq, seqclipboard_ptr_restore);
+ BKE_sequencer_base_clipboard_pointers_restore(&seq->seqbase, bmain);
+ }
+}
diff --git a/source/blender/sequencer/intern/effects.c b/source/blender/sequencer/intern/effects.c
index 5412914e0f6..1d323426cc3 100644
--- a/source/blender/sequencer/intern/effects.c
+++ b/source/blender/sequencer/intern/effects.c
@@ -62,8 +62,10 @@
#include "BLF_api.h"
+#include "effects.h"
#include "render.h"
-#include "sequencer.h"
+#include "strip_time.h"
+#include "utils.h"
static struct SeqEffectHandle get_sequence_effect_impl(int seq_type);
diff --git a/source/blender/sequencer/intern/proxy.h b/source/blender/sequencer/intern/effects.h
similarity index 59%
copy from source/blender/sequencer/intern/proxy.h
copy to source/blender/sequencer/intern/effects.h
index a2a94f036b1..58e0a97d4c5 100644
--- a/source/blender/sequencer/intern/proxy.h
+++ b/source/blender/sequencer/intern/effects.h
@@ -27,15 +27,23 @@
extern "C" {
#endif
-struct ImBuf;
-struct SeqRenderData;
+struct Scene;
struct Sequence;
+struct SeqRenderData;
+
+/* **********************************************************************
+ * sequencer.c
+ *
+ * Sequencer editing functions
+ * **********************************************************************
+ */
-#define PROXY_MAXFILE (2 * FILE_MAXDIR + FILE_MAXFILE)
-struct ImBuf *seq_proxy_fetch(const struct SeqRenderData *context,
- struct Sequence *seq,
- int timeline_frame);
-bool seq_proxy_get_custom_file_fname(struct Sequence *seq, char *name, const int view_id);
+struct SeqEffectHandle BKE_sequence_get_blend(struct Sequence *seq);
+void BKE_sequence_effect_speed_rebuild_map(struct Scene *scene, struct Sequence *seq, bool force);
+float BKE_sequencer_speed_effect_target_frame_get(const struct SeqRenderData *context,
+ struct Sequence *seq,
+ float timeline_frame,
+ int input);
#ifdef __cplusplus
}
diff --git a/source/blender/sequencer/intern/image_cache.c b/source/blender/sequencer/intern/image_cache.c
index be6a640dd3f..d515a13cdee 100644
--- a/source/blender/sequencer/intern/image_cache.c
+++ b/source/blender/sequencer/intern/image_cache.c
@@ -50,8 +50,9 @@
#include "SEQ_sequencer.h"
-#include "render.h"
-#include "sequencer.h"
+#include "image_cache.h"
+#include "prefetch.h"
+#include "strip_time.h"
/**
* Sequencer Cache Design Notes
diff --git a/source/blender/sequencer/intern/image_cache.h b/source/blender/sequencer/intern/image_cache.h
new file mode 100644
index 00000000000..0fcf0548628
--- /dev/null
+++ b/source/blender/sequencer/intern/image_cache.h
@@ -0,0 +1,72 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2004 Blen
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list