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:
@@ -588,7 +588,12 @@ static void draw_image_seq(ScrArea *sa)
|
||||
else ibuf= se->ibuf;
|
||||
}
|
||||
}
|
||||
if(ibuf==0 || ibuf->rect==0) return;
|
||||
if(ibuf==NULL)
|
||||
return;
|
||||
if(ibuf->rect_float && ibuf->rect==NULL)
|
||||
IMB_rect_from_float(ibuf);
|
||||
if(ibuf->rect==NULL)
|
||||
return;
|
||||
|
||||
if (sseq->mainb == SEQ_DRAW_IMG_WAVEFORM) {
|
||||
ibuf = make_waveform_view_from_ibuf(ibuf);
|
||||
|
||||
@@ -646,9 +646,9 @@ void do_cross_effect_byte(float facf0, float facf1, int x, int y,
|
||||
}
|
||||
|
||||
void do_cross_effect_float(float facf0, float facf1, int x, int y,
|
||||
float*rect1, float *rect2, float *out)
|
||||
float *rect1, float *rect2, float *out)
|
||||
{
|
||||
int fac1, fac2, fac3, fac4;
|
||||
float fac1, fac2, fac3, fac4;
|
||||
int xo;
|
||||
float *rt1, *rt2, *rt;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user