General cleanup in sequencer:
- Seperated StripData into
StripData
TStripData
where StripData holds only image-filenames and TStripData holds
the working information needed for ImBuf caching.
=> Large drop in memory usage, if you used a lot of movie and meta strips.
=> Fixed bugs in "duplicate" on the way (imbufs where copied around without
taking reference counting seriously...)
=> Code is much cleaner now
- Added defines for TStripData->ok
Finally figured out, what the magic values ment and named them properly :)
- Got rid of Sequence->curelem.
Reason: very bad idea(tm) for multi threading with more than one render
thread. Still not there, but this was a real show stopper on the way.
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
|
||||
struct PluginSeq;
|
||||
struct StripElem;
|
||||
struct TStripElem;
|
||||
struct Strip;
|
||||
struct Sequence;
|
||||
struct ListBase;
|
||||
@@ -44,9 +45,9 @@ struct Editing;
|
||||
struct ImBuf;
|
||||
struct Scene;
|
||||
|
||||
void free_stripdata(int len, struct StripElem *se);
|
||||
void free_tstripdata(int len, struct TStripElem *se);
|
||||
void free_strip(struct Strip *strip);
|
||||
void new_stripdata(struct Sequence *seq);
|
||||
void new_tstripdata(struct Sequence *seq);
|
||||
void free_sequence(struct Sequence *seq);
|
||||
void build_seqar(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq);
|
||||
void free_editing(struct Editing *ed);
|
||||
@@ -57,17 +58,20 @@ void clear_scene_in_allseqs(struct Scene *sce);
|
||||
|
||||
int evaluate_seq_frame(int cfra);
|
||||
struct StripElem *give_stripelem(struct Sequence *seq, int cfra);
|
||||
struct TStripElem *give_tstripelem(struct Sequence *seq, int cfra);
|
||||
void set_meta_stripdata(struct Sequence *seqm);
|
||||
struct ImBuf *give_ibuf_seq(int rectx, int recty, int cfra, int chansel);
|
||||
/* chansel: render this channel. Default=0 (renders end result)*/
|
||||
struct ImBuf *give_ibuf_seq_direct(int rectx, int recty, int cfra,
|
||||
struct Sequence * seq);
|
||||
|
||||
/* sequence prefetch API */
|
||||
void seq_start_threads();
|
||||
void seq_stop_threads();
|
||||
void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown);
|
||||
void seq_wait_for_prefetch_ready();
|
||||
struct ImBuf * give_ibuf_threaded(int rectx, int recty, int cfra,
|
||||
int chanshown);
|
||||
struct ImBuf * give_ibuf_seq_threaded(int rectx, int recty, int cfra,
|
||||
int chanshown);
|
||||
|
||||
|
||||
void free_imbuf_seq_except(int cfra);
|
||||
|
||||
Reference in New Issue
Block a user