Quote:PS.: And maybe a feature request worth thinking, related to this kind of issues (unless there already is something like it?):The number of parallel jobs is 1, so if that one crashes, Hybrid stops.
"Retry CRASHED jobs X times" and/or "Continue to other WAITING jobs after a job has CRASHED", as for some reason the other jobs in the list remain WAITING.
"Retry CRASHED jobs X times" that sounds like insanity.
"Continue to other WAITING jobs after a job has CRASHED", that could make sense, but since a crash often has a reason that could potentially influence other jobs too, I'm not going to implement it.
Looking at the debug output:
# Imports
import vapoursynth as vs
# getting Vapoursynth core
import ctypes
import sys
import os
core = vs.core
# Import scripts folder
scriptPath = 'C:/Program Files/Hybrid/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Loading Support Files
Dllref = ctypes.windll.LoadLibrary("C:/Program Files/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll")
# loading plugins
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/HQDN3D/libhqdn3d.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/GrainFilter/RemoveGrain/RemoveGrainVS.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/GrainFilter/AddGrain/AddGrain.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/EEDI3m_opencl.dll")# vsQTGMC
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/NNEDI3CL.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/libmvtools.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/scenechange.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/fmtconv.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/MiscFilter/MiscFilters/MiscFilters.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DeinterlaceFilter/Bwdif/Bwdif.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/SourceFilter/d2vSource/DGDecode.dll")
# Import scripts
import havsfunc
import validate
# Source: 'C:\Users\hjatsu\Desktop\vhs\VHSREC2#001.vob'
# Current color space: YUV420P8, bit depth: 8, resolution: 720x576, frame rate: 25fps, scanorder: top field first, yuv luminance scale: limited, matrix: 470bg, transfer: bt.470 system b/g, primaries: bt.601 pal
# Loading C:\Users\hjatsu\Desktop\vhs\VHSREC2#001.vob using DGDecode
clip = core.dgdecode.MPEG2Source("C:/Users/hjatsu/AppData/Local/Temp/2024-08-15@21_47_56_3910.d2v",info=3)# 25 fps, scanorder: top field first
frame = clip.get_frame(0)
# setting color matrix to 470bg.
clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT470_BG)
# setting color transfer (vs.TRANSFER_BT470_BG), if it is not set.
if validate.transferIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT470_BG)
# setting color primaries info (to vs.PRIMARIES_BT470_BG), if it is not set.
if validate.primariesIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT470_BG)
# setting color range to TV (limited) range.
clip = core.std.SetFrameProps(clip=clip, _ColorRange=vs.RANGE_LIMITED)
# making sure frame rate is set to 25fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# making sure the detected scan type is set (detected: top field first)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_TOP) # tff
# cutting from frame 0 to 27976 - WARNING: This might cause synch issues
clip = core.std.Trim(clip=clip, first=0, last=27976)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Very Slow", TFF=True, opencl=True, device=0) # new fps: 50
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
clip = core.std.CropRel(clip=clip, left=16, right=12, top=2, bottom=10)# cropping to 692x564
# denoising using HQDN3D
clip = core.hqdn3d.Hqdn3d(clip=clip, lum_spac=2.00, chrom_spac=2.00, lum_tmp=4.00, chrom_tmp=6.00)
# set output frame rate to 50fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=50, fpsden=1)
# output
clip.set_output()
The decoder call:
"C:\Program Files\Hybrid\64bit\Vapoursynth\vspipe.exe" "C:\Users\hjatsu\AppData\Local\Temp\encodingTempSynthSkript_2024-08-15@21_47_56_3910_0.vpy" - -c y4m
then encoding call:
"C:\Program Files\Hybrid\64bit\x264.exe" --preset veryslow --crf 14.50 --profile high --level 5.1 --sync-lookahead 120 --rc-lookahead 120 --no-fast-pskip --vbv-maxrate 300000 --vbv-bufsize 300000 --deadzone-inter 6 --deadzone-intra 6 --sar 16:15 --non-deterministic --range tv --colormatrix bt470bg --demuxer y4m --input-range tv --fps 50/1 --output-depth 8 --output "C:\Users\hjatsu\AppData\Local\Temp\2024-08-15@21_47_56_3910_06.264" -
Encoding looks fine:
y4m [info]: 692x564p 16:15 @ 50/1 fps (cfr)
x264 [info]: using SAR=16/15
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile High, level 5.1, 4:2:0, 8-bit
1 frames: 0.09 fps, 23960.80 kb/s
x264 [info]: using SAR=16/15
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile High, level 5.1, 4:2:0, 8-bit
3 frames: 0.26 fps, 21826.93 kb/s
5 frames: 0.40 fps, 20721.44 kb/s
18 frames: 1.39 fps, 10394.98 kb/s
20 frames: 1.51 fps, 9524.68 kb/s
23 frames: 1.70 fps, 8754.66 kb/s
...
55687 frames: 9.35 fps, 3927.62 kb/s
55690 frames: 9.35 fps, 3927.64 kb/s
55693 frames: 9.35 fps, 3927.55 kb/s
55698 frames: 9.34 fps, 3927.51 kb/s
-1073741819 indicates an access violation in the helper, so somewhere in the Vapoursynth processing.
This is usually caused by one of these things:
- a glitch in the source => check whether you can navigate in the Vapoursynth Preview around frame 55698.
- heat issues
- memory issues
- some driver issues (unlikely since it worked for 55698 frames)
- overclocking of cpu/gpu/ram (yes, even when every other test seems fine; encoding and intense filtering is really sensitive)
- a bug in a filter (unlikely since it worked for 55698 frames)
- some antivirus tool (or the os) interfering (especially mcafee and nortons live scanning stuff can cause problems)
- runnning out of ram (there isn't always an out-of-memory error is memory gets spars)
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.