Here I show what I usually use for DS encoding.
AviSource("ds_part1.avi")
# If segmented: AviSource("ds_part1.avi")+AviSource("ds_part2.avi")+AviSource("ds_part3.avi")+...
miniScreens = last
upperScreen = Crop(0,0,256,192).PointResize(512,384) -- Crop and Simple2X
lowerScreen = Crop(0,192,256,192).PointResize(512,384) -- Crop and Simple2X
mainScreen = lowerScreen
# If you want to switch the main screen display, write something like the following line instead:
# mainScreen = lowerScreen.Trim(0,630)+upperScreen.Trim(631,1414)+lowerScreen.Trim(1415,Framecount-1)
mainScreen.StackHorizontal(miniScreens)
# Framerate reduction, if needed: ChangeFPS(FrameRateNumerator, FrameRateDenominator*2)
# If you want to blend every 2 frames, instead: AssumeFieldBased.Weave.VerticalReduceBy2
ConvertToYV12()
Additionally, some extra resize filters ;)
LoadCPlugin("ffavisynth.dll")
# Simple2x resize (wrapper of PointResize)
function Simple2xResize(clip clip, float "src_left", float "src_top", float "src_width", float "src_height")
{
src_left = default(src_left, 0)
src_top = default(src_top, 0)
src_width = default(src_width, 0)
src_height = default(src_height, 0)
return clip.PointResize(clip.Width * 2, clip.Height * 2, src_left, src_top, src_width, src_height)
}
# Super2xSaI resize (using ffdshow plugin)
function Super2xSaIResize(clip clip, float "src_left", float "src_top", float "src_width", float "src_height")
{
src_left = default(src_left, 0)
src_top = default(src_top, 0)
src_width = default(src_width, 0)
src_height = default(src_height, 0)
return clip.Crop(src_left, src_top, src_width, src_height).ffdshow("null","isResize=1,resizeMethod=14")
}
# 2xSaI resize (using ffdshow plugin)
function 2xSaIResize(clip clip, float "src_left", float "src_top", float "src_width", float "src_height")
{
src_left = default(src_left, 0)
src_top = default(src_top, 0)
src_width = default(src_width, 0)
src_height = default(src_height, 0)
return clip.Crop(src_left, src_top, src_width, src_height).ffdshow("null","isResize=1,resizeMethod=15")
}
# hq2x resize (using ffdshow plugin)
function Hq2xResize(clip clip, float "src_left", float "src_top", float "src_width", float "src_height")
{
src_left = default(src_left, 0)
src_top = default(src_top, 0)
src_width = default(src_width, 0)
src_height = default(src_height, 0)
return clip.Crop(src_left, src_top, src_width, src_height).ffdshow("null","isResize=1,resizeMethod=16")
}
Edit: If you need to rotate screen, you should look TurnLeft, TurnRight or Turn180 and modify the script.
Edit: If you want to a few pixels of gap, AddBorders will help.