Selur's Little Message Board
Error in Resize after after Lower Res. - Printable Version

+- Selur's Little Message Board (https://forum.selur.net)
+-- Forum: Hybrid - Support (https://forum.selur.net/forum-1.html)
+--- Forum: Problems & Questions (https://forum.selur.net/forum-3.html)
+--- Thread: Error in Resize after after Lower Res. (/thread-3442.html)



Error in Resize after after Lower Res. - Dan64 - 18.10.2023

Hello Selur,

   I found a resize problem under specific setting.

   The input movie has resolution 1920x1080
   Since I want apply RealESERGAN to speed up the resize I applied Filtering->Vapoursynth->Misc->Lower res. before resize = 2

    After having applied all the reaming filter settings and save the job, it is displayed the following error

[Image: Error-Resize.jpg]

    The problem is the following:
       1)  the initial size is: 1920x1080
       2)  after the crop of 130 up/down the size is: 1920x820
       3) then after the resize by 2.0, the size is 960x410
       4) Hybrid add a border of 2, so that the size becomes: 960x412
       5) RealESERGAN resize the video to 3840x1648
       6) then Hybrid resize the video to 1920x820
       7) the Hybrid remove 8 pixels from the border
       8) the final size is 1920x812 -> ERROR
 
       I think the the step 7 should be applied before the step 6, in this way the output size should be correct
       I hope that you will be able to fix this issue

Thanks,
Dan

P.S.
I attached the debug file


RE: Error in Resize after after Lower Res. - Selur - 18.10.2023

Think I fixed this a few days ago.
Using your steps, my dev version ends with 1920x820:
# Imports import vapoursynth as vs # getting Vapoursynth core import ctypes import os import site core = vs.core # Adding torch dependencies to PATH path = site.getsitepackages()[0]+'/torch_dependencies/bin/' ctypes.windll.kernel32.SetDllDirectoryW(path) path = path.replace('\\', '/') os.environ["PATH"] = path + os.pathsep + os.environ["PATH"] # Loading Plugins core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/fmtconv.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/SourceFilter/DGDecNV/DGDecodeNV.dll") # source: 'G:\TestClips&Co\In_America_(2002).mkv' # current color space: YUV420P8, bit depth: 8, resolution: 1920x1080, fps: 23.976, color matrix: 709, yuv luminance scale: limited, scanorder: progressive # Loading G:\TestClips&Co\In_America_(2002).mkv using DGSource clip = core.dgdecodenv.DGSource("J:/tmp/mkv_21c058149c797c35b163bbc419842782_853323747.dgi")# 23.976 fps, scanorder: progressive # Setting detected color matrix (709). clip = core.std.SetFrameProps(clip, _Matrix=1) # Setting color transfer info (709), when it is not set clip = clip if not core.text.FrameProps(clip,'_Transfer') else core.std.SetFrameProps(clip, _Transfer=1) # Setting color primaries info (BT.709), when it is not set clip = clip if not core.text.FrameProps(clip,'_Primaries') else core.std.SetFrameProps(clip, _Primaries=1) # Setting color range to TV (limited) range. clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1) # making sure frame rate is set to 23.976 clip = core.std.AssumeFPS(clip=clip, fpsnum=24000, fpsden=1001) clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=0) # progressive clip = core.std.CropRel(clip=clip, left=0, right=0, top=130, bottom=130)# cropping to 1920x820 # adjusting resolution before resizing clip = core.fmtc.resample(clip=clip, w=960, h=410, kernel="lanczos", interlaced=False, interlacedd=False)# before YUV420P8 after YUV420P16 from vsrealesrgan import realesrgan as RealESRGAN clip = core.std.AddBorders(clip=clip, left=0, right=0, top=0, bottom=2) # add borders to archive mod 4 (vsRealESRGAN) - 960x412 # adjusting color space from YUV420P16 to RGBS for vsRealESRGAN clip = core.resize.Bicubic(clip=clip, format=vs.RGBS, matrix_in_s="709", range_s="limited") # resizing using RealESRGAN clip = RealESRGAN(clip=clip, model=5, device_index=0) # 3840x1648 # resizing 3840x1648 to 1920x820 clip = core.std.CropRel(clip=clip, left=0, right=0, top=0, bottom=8) # removing borders (vsRealESRGAN) - 3840x1640 # adjusting resizing clip = core.fmtc.resample(clip=clip, w=1920, h=820, kernel="spline64", interlaced=False, interlacedd=False) # adjusting output color from: RGBS to YUV420P8 for x264Model clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, matrix_s="709", range_s="limited", dither_type="error_diffusion") # set output frame rate to 23.976fps (progressive) clip = core.std.AssumeFPS(clip=clip, fpsnum=24000, fpsden=1001) # Output clip.set_output()
=> will send you a link to my current dev via pm.

Cu Selur


RE: Error in Resize after after Lower Res. - Dan64 - 19.10.2023

Hello Selur,

   The problem has been fixed with the last dev version.
   It would be nice to add the option to resize using the mod (2,4,8,16,32) in  Filtering->Vapoursynth->Misc->Lower res. before resize so that the add/remove border will be not more necessary.

Thanks,
Dan


RE: Error in Resize after after Lower Res. - Selur - 19.10.2023

The add/remove borders might still be necessary, i.e. if you resize to mod2, but the resizer requires mod16.
Also, I would rather add and remove borders than resizing and by abiding by a specific mod change the aspect ratio. Only minimal change, but adding and removing borders is fast and should not change the aspect ratio.

Cu Selur

Ps.: I'll look at it, since it should be easy to implement. => correction, is unexpectedly complicated to do this while maintaining the aspect ratio (as good as possible). => after some thinking about it and some calculation, I think it's not really possible without further restrictions.