[FFmpeg-devel] [PATCH] add top video filter
mark at mdsh.com
Mon Mar 28 23:56:24 CEST 2011
On 28/03/11 22:17, Thomas Worth wrote:
> On Mon, Mar 28, 2011 at 12:35 PM, Mark Himsley<mark at mdsh.com> wrote:
>> On 28/03/2011 19:39, Michael Niedermayer wrote:
>>> On Mon, Mar 28, 2011 at 02:47:20PM +0100, Mark Himsley wrote:
>>>> Dear developers,
>>>> Converting to and from interlaced PAL DV files, with their
>>>> bottom-field-first interlace field order, can be a pain. Converting tff
>>>> files to DV results in tff DV files, which are hard to work with in
>>>> editing software.
>>>> The attached filter can:
>>>> Convert field order by either moving all of the lines in the picture up
>>>> by 1 line (bff to tff conversion) or down by 1 line (tff to bff
>>>> conversion). The remaining line, the bottom line in bff to tff
>>>> transforms or the top line in tff to bff transforms, is filled by
>>>> copying the closest line in that field.
>>>> Previous to this filter I have used a filter chain like this to do bff
>>>> to tff conversion.
>>>> but that chain does not fill the remaining line.
>>>> doc/filters.texi | 29 +++++++
>>>> libavfilter/Makefile | 1
>>>> libavfilter/allfilters.c | 1
>>>> libavfilter/vf_top.c | 184 +++++++++++++++++++++++++++++++++++++++++++++++
>>> i think vshift or vmove or something like that is a better name
>> I chose the filter name 'top' to match the -top command. I'm not keen on
>> vshift or vmove because, in my mind, they don't describe the purpose of
>> the filter - to change between top and bottom field first.
> This should be called "fieldswap" or something very obvious. I can't
> think of any other reason to shift the frame up or down by one pixel.
Thank you - from your input I think fieldorder might be the right name.
fieldswap sound's like it will always swap, where as fieldorder sounds
like it will output the order you specify.
What I want to be able to do to leave this filter in the chain always,
no matter what the input source, with the knowledge that if I must
include "fieldorder=1" when I'm outputting IMX-30 and "fieldorder=0"
when I'm outputting DV (to take two examples of typical output formats).
>> It won't currently support formats with half-vertical resolution chroma.
>> I think it's beyond my mathematical capabilities to move that chroma up
>> of down by half a line.
>> Or perhaps this filter should leave the half-vertical resolution chroma
>> where it is... I think some experiments need to be done with chroma-key
>> recorded on DV and converted to IMX-30, for instance.
> Does the filter apply after swscale? If so, you can use swscale to
> make the chroma full-raster on the Y axis and then do the field shift.
I have to admit that I tend to add "format=yuv422p,top=1".
That's because strangely, to my brain, I found that if:
my source file is yuv420p (DV);
my filter is just "top=1";
my destination file is yuv422p (IMX-30);
then the scale filters that were inserted automatically converted the
video to rgb24 for my "top" filter. That's not nice to my studio levels.
I was wondered if I have done something wrong in query_formats(), but I
hadn't quite plucked up the courage to ask something so simple.
Thank you for your feedback.
More information about the ffmpeg-devel