OK,
I worked hard over the weekend, and here's what I came up with:
an additional plugin that does a "smart" Bob&Weave.
The algorithm is fairly simple:
Keep each dominant line the same (Top or bottom, depending on the
configuration)
For the other line, check each pixel:
if it is very different from the previous frame, interpolate from
the line above and below (bob)
if it's similar, keep it (weave)
The "similarity" calculation is a fudgy calculation based on the Pot
control on the configuration window
In summary, for the static parts of the image you get the full
resolution, and for the moving parts you get an interpolated, half
vertical resolution block.
It's pretty fast, not the best but really better than what's currently
in Cinelerra.
Also, the plugin interface was getting really crowded with all those
additions, so I reworked it completely.
I'd appreciate some feedback from whoever's interested (Andraz ? ;-) )
The patch to the current CVS is here:
http://jcornet.free.fr/linux/download/cinelerra/deinter.patch.gz
The full plugin code is there:
http://jcornet.free.fr/linux/download/cinelerra/deinterlace.tgz
Let me know what you think,
Jerome
Andraz Tori wrote:
>Ok
>i've commited this.
>
>If you have any time in the future, i'd _really_ appreciate if you
>manage to implement one of the smarter deinterlacers ...
>
>Cinelerra is really weak in this regard. And at least we at Cyberpipe
>would really need some better solution for deinterlacing inside
>Cinelerra.
>
>bye
>andraž
>
>On čet, 2006-02-02 at 15:13 -0500, Jerome Cornet wrote:
>
>
>> Hey folks,
>>
>>I noticed that the temporal field swap has a bug that makes the fields
>>also spatially swapped... since my original patch :-(
>>
>>Anyway, here's a patch that should probably get in there.
>>I am not subscribed to the list any more, so please cc: me in your replies.
>> Jerome
>>
>>
>>
>>--- plugins/deinterlace/deinterlace.C 2006-02-02 15:01:37.949283844 -0500
>>+++ plugins/deinterlace/deinterlace.C.orig 2006-02-02
>>15:03:33.569458809 -0500
>>@@ -216,8 +216,8 @@
>> { \
>> temp1 = input_row1[j]; \
>> temp2 = input_row2[j]; \
>>- output_row1[j] = temp2; \
>>- output_row2[j] = temp1; \
>>+ output_row1[j] = temp1; \
>>+ output_row2[j] = temp2; \
>> } \
>> } \
>> }
>>
>>
>>_______________________________________________
>>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