Hi everyone,

I tried that as well and for me it flickers also. I found out that the
problem is in the ..../cinelerra_src/plugins/blur/blur.C in these 2
lines:

        this->vertical = (int)(prev.vertical * prev_scale + next.vertical *
next_scale);
        this->horizontal = (int)(prev.horizontal * prev_scale +
next.horizontal * next_scale);

because both vertical and horizontal are binary variables, they should
not be interpolated between keyframes. There is the problem with
rounding to integers. Just change them to:

        this->vertical = prev.vertical;
        this->horizontal = prev.horizontal;

the same rounding problem may occur also for the radius variable, so
it should be also changed from this:

        this->radius = (int)(prev.radius * prev_scale + next.radius * 
next_scale);

to this:

        this->radius = (int)(round(prev.radius * prev_scale + next.radius *
next_scale));

the round() function would help also for the vertical and horizontal,
but it makes more sense just to take the values from the previous
keyframe.

It seems there are quite a lot of other plugins suffering from the
same rounding issues:

brightness/brightness.C:        this->luma = (int)(prev.luma * prev_scale +
next.luma * next_scale);
denoisemjpeg/denoisemjpeg.C:    this->radius = (int)(prev.radius *
prev_scale + next.radius * next_scale);
denoisemjpeg/denoisemjpeg.C:    this->threshold = (int)(prev.threshold *
prev_scale + next.threshold * next_scale);
denoisemjpeg/denoisemjpeg.C:    this->threshold2 = (int)(prev.threshold2
* prev_scale + next.threshold2 * next_scale);
denoisemjpeg/denoisemjpeg.C:    this->sharpness = (int)(prev.sharpness *
prev_scale + next.sharpness * next_scale);
denoisemjpeg/denoisemjpeg.C:    this->lcontrast = (int)(prev.lcontrast *
prev_scale + next.lcontrast * next_scale);
denoisemjpeg/denoisemjpeg.C:    this->ccontrast = (int)(prev.ccontrast *
prev_scale + next.ccontrast * next_scale);
denoisemjpeg/denoisemjpeg.C:    this->delay = (int)(prev.delay *
prev_scale + next.delay * next_scale);
denoisevideo/denoisevideo.C:    this->frames = (int)(prev.frames *
prev_scale + next.frames * next_scale);
downsample/downsample.C:        this->horizontal = (int)(prev.horizontal *
prev_scale + next.horizontal * next_scale);
downsample/downsample.C:        this->vertical = (int)(prev.vertical *
prev_scale + next.vertical * next_scale);
downsample/downsample.C:        this->horizontal_x = (int)(prev.horizontal_x
* prev_scale + next.horizontal_x * next_scale);
downsample/downsample.C:        this->vertical_y = (int)(prev.vertical_y *
prev_scale + next.vertical_y * next_scale);
gradient/gradient.C:    this->angle = (int)(prev.angle * prev_scale +
next.angle * next_scale);
gradient/gradient.C:    this->in_radius = (int)(prev.in_radius *
prev_scale + next.in_radius * next_scale);
gradient/gradient.C:    this->out_radius = (int)(prev.out_radius *
prev_scale + next.out_radius * next_scale);
gradient/gradient.C:    in_r = (int)(prev.in_r * prev_scale + next.in_r *
next_scale);
gradient/gradient.C:    in_g = (int)(prev.in_g * prev_scale + next.in_g *
next_scale);
gradient/gradient.C:    in_b = (int)(prev.in_b * prev_scale + next.in_b *
next_scale);
gradient/gradient.C:    in_a = (int)(prev.in_a * prev_scale + next.in_a *
next_scale);
gradient/gradient.C:    out_r = (int)(prev.out_r * prev_scale +
next.out_r * next_scale);
gradient/gradient.C:    out_g = (int)(prev.out_g * prev_scale +
next.out_g * next_scale);
gradient/gradient.C:    out_b = (int)(prev.out_b * prev_scale +
next.out_b * next_scale);
gradient/gradient.C:    out_a = (int)(prev.out_a * prev_scale +
next.out_a * next_scale);
linearblur/linearblur.C:        this->radius = (int)(prev.radius * prev_scale
+ next.radius * next_scale + 0.5);
linearblur/linearblur.C:        this->angle = (int)(prev.angle * prev_scale +
next.angle * next_scale + 0.5);
linearblur/linearblur.C:        this->steps = (int)(prev.steps * prev_scale +
next.steps * next_scale + 0.5);
motionblur/motionblur.C:        this->radius = (int)(prev.radius * prev_scale
+ next.radius * next_scale + 0.5);
motionblur/motionblur.C:        this->steps = (int)(prev.steps * prev_scale +
next.steps * next_scale + 0.5);
parametric/parametric.C:        freq = (int)(prev.freq * prev_scale +
next.freq * next_scale + 0.5);
radialblur/radialblur.C:        this->x = (int)(prev.x * prev_scale + next.x
* next_scale + 0.5);
radialblur/radialblur.C:        this->y = (int)(prev.y * prev_scale + next.y
* next_scale + 0.5);
radialblur/radialblur.C:        this->steps = (int)(prev.steps * prev_scale +
next.steps * next_scale + 0.5);
radialblur/radialblur.C:        this->angle = (int)(prev.angle * prev_scale +
next.angle * next_scale + 0.5);
shiftinterlace/shiftinterlace.C:        this->odd_offset =
(int)(prev.odd_offset * prev_scale + next.odd_offset * next_scale);
shiftinterlace/shiftinterlace.C:        this->even_offset =
(int)(prev.even_offset * prev_scale + next.even_offset * next_scale);
synthesizer/synthesizer.C:      wetness = (int)(prev.wetness * prev_scale +
next.wetness * next_scale);
synthesizer/synthesizer.C:      base_freq = (int)(prev.base_freq *
prev_scale + next.base_freq * next_scale);
timefront/timefront.C:  this->angle = (int)(prev.angle * prev_scale +
next.angle * next_scale);
timefront/timefront.C:  this->in_radius = (int)(prev.in_radius *
prev_scale + next.in_radius * next_scale);
timefront/timefront.C:  this->out_radius = (int)(prev.out_radius *
prev_scale + next.out_radius * next_scale);
timefront/timefront.C:  frame_range = (int)(prev.frame_range *
prev_scale + next.frame_range * next_scale);
titler/title.C://       this->dropshadow = (int)(prev.dropshadow *
prev_scale + next.dropshadow * next_scale);
unsharp/unsharp.C:      this->threshold = (int)(prev.threshold * prev_scale
+ next.threshold * next_scale);
zoomblur/zoomblur.C:    this->x = (int)(prev.x * prev_scale + next.x *
next_scale + 0.5);
zoomblur/zoomblur.C:    this->y = (int)(prev.y * prev_scale + next.y *
next_scale + 0.5);
zoomblur/zoomblur.C:    this->radius = (int)(prev.radius * prev_scale +
next.radius * next_scale + 0.5);
zoomblur/zoomblur.C:    this->steps = (int)(prev.steps * prev_scale +
next.steps * next_scale + 0.5);

Enjoy the weekend :o)
Michal


On 18 November 2011 21:48, feli <[email protected]> wrote:
> Le 2011-11-18 10:57, Nicolas Ecarnot a écrit :
>>
>> Le 18/11/2011 09:41, Nicolas Ecarnot a écrit :
>>>
>>> Le 18/11/2011 09:24, David Armstrong a écrit :
>>>>
>>>> does the frame rate affect this.
>>>> An earlier reply noted a rounding error in cinelerra.
>>>> I don't notice any flickers, but I operate at 25 fps (PAL). Is 30fps
>>>> really 29.97, which might cause this?
>>>
>>> Both tests (see previous answer) will occur tonight (in 7 hours) and
>>> results will be posted.
>>> Thank you for your answer.
>>>
>>
>> Tests done.
>>
>> I tested at 15, 25, 29.97 and 30 fps.
>> Nothing better... still flickering.
>>
>>> What happens if you manually move your second keyframe a bit to the
>>> left, causing the progression of the blur amount to stop a bit earlier,
>>> not at the end? What happens with the flicker *after* that second
>>> keyframe
>>>
>>> - does it continue to flicker?
>>> - does it just stay there blurred and otherwise static?
>>>
>>> -- Hermann V.
>>
>> I tried what you proposed :
>> - Track during 10 seconds, still picture, blur effect on the whole
>> duration
>> - first keyframe at 0 second, with radius = 0
>> - second keyframe at 5 seconds, with radius = 30
>>
>> - rendering...
>>
>> - flickering happens from 0 to 5 seconds. 5 last seconds shows a still
>> blurred image.
>>
>> I tried to play with other effects, but I'm not sure about the results.
>> Blur does produced this buggy result.
>>
>> May someone else confirm?
>>
> Hi I tried your test and put my result on youtube,  but I don't see any
> buggy result.
> the image shows the release version and the frame rate was 30fps
>
> http://youtu.be/YjKRn_5XVrM
>
> Félix-A.
>
>
>
> _______________________________________________
> Cinelerra mailing list
> [email protected]
> https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra
>

_______________________________________________
Cinelerra mailing list
[email protected]
https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra

Reply via email to