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:
2007-11-18 17:39:30 +00:00
parent 6d5396fc65
commit dc6ac56d31
7 changed files with 301 additions and 334 deletions

View File

@@ -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);