Dropped frames are caused by the same issue: faulty indexer.
Please try the new Release Candidate 2 and report back on any issues.
As for the IMX files, that's slightly different.
IMX are 720x608 with the very top made of inactive lines where historically things like the TC, the TTX of the various pages etc were stored and the actual active lines were 720x576, so the decoder would have to read that apparently black bar, decode those info and then resize on playback to display the actual active lines resized according to the flag like for 16:9 1024x576.
The reason why you're getting the right AR with the encoder is that it goes straight into the filter_builder which performs the cropping and then feeds the encoder with the actual output so that the encoder is gonna be able to actually perform the encoding operation.
Unfortunately, if you go through Avisynth, then it's the indexer that is employed to store and passthrough those info to the filter_builder as it won't use the info from medianfo/exiftools/ffprobe any longer.
Now, if we index this with Avisynth we can see that it's 720x608 anamorphic flagged 16:9 with the active lines being just 576:
if we were to simply resize it to 16:9, we would get the wrong aspect ratio, in fact:
Code: Select all
LWLibavVideoSource("file.mxf")
Spline64Resize(1024, 576)
as you can see that's wrong 'cause it still has the non active lines at the top.
We gotta crop it, therefore:
Code: Select all
LWLibavVideoSource("file.mxf")
Crop(0, 32, -0, -0)
Spline64Resize(1024, 576)
So far so good, but we've done it manually and this is not what the filter_builder is doing.
When you open such a file yourself without Avisynth (i.e without the A/V decoder), then the filter_builder knows that it's an IMX50 and that it has to crop, however when it goes through Avisynth it becomes an uncompressed A/V stream and the filter_builder only has the frame properties to try to understand what that stream is, in particular for such a file the frame properties are:
but those are not reset after cropping.
In other words, after cropping, frame properties aren't adjusted and the filter_builder performs the wrong conversion.
In particular, here's what it's doing after it's fed with the AVS Script:
Code: Select all
sidedata=delete,metadata=delete,setrange=tv,colorspace=fast=1:ispace=bt470bg:itrc=bt470bg:iprimaries=bt470bg:all=bt709,bwdif=mode=1:parity=0,scale=w=1920:h=1024:flags=lanczos,framerate=50,tinterlace=mode=4,pad=w=1920:h=1080:x=0:y=28,setfield=tff,setsar=r=1:max=1
and here's what it's doing after it's fed with the source input file:
Code: Select all
sidedata=delete,metadata=delete,setrange=tv,crop=w=in_w:h=576:x=0:y=32,colorspace=fast=1:ispace=bt470bg:itrc=smpte170m:iprimaries=bt470bg:all=bt709,bwdif=mode=1:parity=0,scale=w=1920:h=1080:flags=lanczos,framerate=50,tinterlace=mode=4,setfield=tff,setsar=r=1:max=1
Top is wrong (source + Avisynth + filter_builder + encode) - Bottom is correct (source + filter_builder + encode):
