Log in

View Full Version : Problem with recent x264 revision and avisynth scripts (interlaced/progressive)


nurbs
13th April 2010, 12:01
I've been using an x264 build from late March up to now and have recently changed to r1538 which is giving me some problems.

When I try to encode VC-1 videos from blu-ray using an avisynth script and FFVideoSource() x264 is complaining that the video is interlaced and some of the options I use don't work with that although the source file is definitely progressive. Adding AssumeFrameBased() to the script fixes that and I didn't notice any problems.

AFAIK I didn't change anything else in my encoding chain, so I assume the problem lies with x264.

Info() in the .avs shows
FieldBased (Seperated) Video: NO
Parity: Assumed Bottom Field First
for my usual script and
FieldBased (Seperated) Video: NO
Parity: Bottom Field First
if I add AssumeFrameBased()

LoRd_MuldeR
13th April 2010, 12:51
I noticed that too. The only line in my AVS script was FFVideoSource() and the video definitely was progressive. Still x264 detected it as interlaced, which didn't happen with older revisions.

Adding AssumeFrameBased() to the end of the script fixed the issue for me. Maybe related to this (http://git.videolan.org/gitweb.cgi?p=x264.git;a=commitdiff;h=819d121f6cf92b7b5f33e85181b0dcdb0ffbb84a;hp=058d67e3eb800d9814403876a0181874e2f900dc) commit ???

kemuri-_9
13th April 2010, 12:52
yes, this is because we added interlaced detection to avisynth when it doesn't have a particularly have a real interlacing flag to go by.

i knew this was going to happen when the change i did went in.
And this lack of a real interlaced flag in avisynth is why it didn't get detection for it when ffms/lavf did.


if you want the commit to work as it was intended for usefulness...
you'll need to use AssumeFrameBased() to state that the input is progressive.
AssumeTFF() to signal being TFF
and similarly AssumeBFF() to signal being BFF.

but we'll probably just toss that part out only signal interlacing automatically when the input is field-based.

nurbs
14th April 2010, 11:07
Thanks for the quick fix. :thanks:

kemuri-_9
14th April 2010, 13:40
this now means if you want x264's avs demuxer to automatically flag the input as being interlaced, you'll need to have the script output fields instead of frames.
using SeparateFields() or something along those lines.