We're now doing final conversions... float exrs to dpx amd png. Found a

couple of bugs in the new float support in sequencer;

- when effects have float buffer input, the effect strip itself only got
  byte buffers assigned, which bypassed the float versions of effects
- the float version of cross effect used ints to fade... should be float
- tests if an effect should be recalculated didn't check for float yet
- display of float buffer in sequencer preview showed black when no
  byte rect was in imbuf

Peter; we need this urgent, so I commit now.. check if this is according
to how you thought floatbuffers to work? thanks!
This commit is contained in:
2006-03-16 20:42:00 +00:00
parent fd54be1d46
commit 73da80e757
3 changed files with 17 additions and 7 deletions

View File

@@ -780,7 +780,7 @@ static void do_build_seq_ibuf(Sequence * seq, int cfra)
/* test if image is too small or discarded from cache: reload */
if(se->ibuf) {
if(se->ibuf->x < seqrectx || se->ibuf->y < seqrecty || !se->ibuf->rect) {
if(se->ibuf->x < seqrectx || se->ibuf->y < seqrecty || !(se->ibuf->rect || se->ibuf->rect_float)) {
IMB_freeImBuf(se->ibuf);
se->ibuf= 0;
}
@@ -796,8 +796,13 @@ static void do_build_seq_ibuf(Sequence * seq, int cfra)
se->se2= seq->seq2->curelem;
se->se3= seq->seq3->curelem;
if(se->ibuf==0) {
se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0);
if(se->ibuf==NULL) {
/* if one of two first inputs are rectfloat, output is float too */
if((se->se1->ibuf && se->se1->ibuf->rect_float) ||
(se->se2->ibuf && se->se2->ibuf->rect_float))
se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0);
else
se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0);
}
do_effect(cfra, seq, se);
}
@@ -817,7 +822,7 @@ static void do_build_seq_ibuf(Sequence * seq, int cfra)
if(se->ibuf) {
/* test if image too small
or discarded from cache: reload */
if(se->ibuf->x < seqrectx || se->ibuf->y < seqrecty || !se->ibuf->rect) {
if(se->ibuf->x < seqrectx || se->ibuf->y < seqrecty || !(se->ibuf->rect || se->ibuf->rect_float)) {
IMB_freeImBuf(se->ibuf);
se->ibuf= 0;
se->ok= 1;