På Thu, 26 Jan 2012 14:40:55 +0100, skrev feli <[email protected]>:

Le 2012-01-25 06:08, Herman Robak a écrit :

På Tue, 24 Jan 2012 15:21:37 +0100, skrev felix
<[email protected]>:

I was also wandering how I can share this plugin modification so that it
can be commented/further modified.

If the diff is no more than a few hundred lines long, you may attach it
to a post to this mailing list.  Otherwise, we have both a bug tracker
and a Git "mob" repository where patches can be submitted.

Well, my modification to the blur plugin does not remove any
functionality because I added three check marks, Y, U, V, to the gui so
that if you have a YUV color space you can blur each of the YUV channel
like in the original plugins, using the same effects and calculations.
the difference is that you can blur the RGB channels and if you are in a
RGB color space you can blur the YUV channel. If you blur the same
channels as your color model there is no lossy color conversion, however
if you blur a channel from an other color space that the one of your
project or both (R and Y for instance), then there are lossy color
conversion.

My tests yesterday showed that even _one_ conversion is visibly lossy:
The gradient effect becomes "striped" in YUV8 mode.  The gradient is
generated, so it does not process input pixels.  Hence, there is only
one colour model conversion, the _output_.

Your feature will add _two_ (optional) conversions; one on the input
and one on the output.  The blurring of the input may help, though.


However, conversion in FLOAT looks pretty smooth.  It can't be
technically lossless, but it seems perceptually lossless, which is
our main concern here.  Doesn't blur work with floats in the
inner loops anyway?  And it works on a temporary buffer, since it
needs two passes, to you don't have to stick to the same component
size as the input and output.

What I'm suggesting is: Don't do the YUV<->RGB conversions in 8bit.
Always do them in FLOAT.  Cinelerra has functions for that; they are
called in the YUV effect plugin.  You probably have to move the
conversions closer to the inner loop to do this.

--
Herman Robak

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

Reply via email to