So what shall we do when encoding things like SotN? A run of it dumps to 70+ segments. Each time gameplay is interrupted (menus, cutscenes), we get another 2 segments.
On a TV screen, it always looks good, as long as the resulting resolution is high. But we don't upscale our SD encodes. It's even more complicated since we also don't even apply aspect ratio correction for the primary encode, trying to keep the original gameplay screen untouched.
One possible solution would be to force the GPU plugin just resize the frame to whatever we set (gameplay is in 256x240), and deal with just a single segment. But as is known, it distorts all 1 pixel wide elements (letters, borders). And we don't want to make it resize everything to the menus width either, because it distorts the gameplay picture and increases the file size.
Other option is to resize all those segments to 256x240 using lanczos on the AVS side, on import. But that requires some extra automation avisnth doesn't provide. It would still look wrong, but it's the best we can do I guess.
There's also an option to just ignore all the menus, and only append the credits to the otherwise totally resized dump of the whole run. That's what I did last time.
The last one I know of is
upscaling them all to some "least common multiple", and then down to 240x320 or whatever. But I didn't try anything about it.
And the second problem is importing them all to begin with. The amount of segments overcomes the avisource plugin limits, and they all have that frame size appendix in their names, so you either need to rename them all, or do some magic in the script. However, the function I linked above also does it. But the problem with it is that it is slow due to resolution, and even mores slow due to that external avi importer.
If the files had no appendix, we could use something like this:
Language: avisynth
AppendSegment("_movie", 1, 7, "%03.0f")
function AppendSegment(
\ string base,
\ int first_val,
\ int last_val,
\ string format
\){
AviSegment = String(first_val, format) + base + ".avi"
result = Eval("AviSource(AviSegment).LanczosResize(256,240)")
return (first_val < last_val) \
? result + AppendSegment(base,first_val+1,last_val,format) \
: result
}
Gameplay won't be resized, and the menus will be scaled the soft way.
EDIT:
Well, I renamed the files with AdvancedRenamer, and importing all 75 segments worked with just AviSource! And it does look OK to me.