In the last dev version, in the log there is the following message
Quote:Detected NVIDIA PureVideo compatible cards: NVIDIA GeForce RTX 3060
Detected vfwDecoders with 32bit:   VIDC.FFDS   VIDC.LAGS   VIDC.X264   VIDC.XVID   vidc.cvid   vidc.i420   vidc.iyuv   vidc.mrle   vidc.msvc   vidc.uyvy   vidc.yuy2   vidc.yvu9   vidc.yvyu
Detected vfw64BitDecoders:   VIDC.LAGS   VIDC.X264   vidc.XVID   vidc.i420   vidc.iyuv   vidc.mrle   vidc.msvc   vidc.pDAD   vidc.uyvy   vidc.yuy2   vidc.yvu9   vidc.yvyu
Encounter XML error reading 'readGeneral': Opening and ending tag mismatch.
   Avisynth+ is available,..
    DGDecNV available,..
I don't know what is this error, how I can fix it ?
Dan
 
How many parallel instances do you use?
Iirc depending in your card only a few parallel nvenc instances are supported by the chip.
Cu Selur
 
32k is just a random limit for the chunk size. (I needed to set some limit)
At the moment the amount of chunks, is determined by:
a. the length of the video 
b. the number of scene changes
c. the minimal chunk size (= minimal number of frames in a chunk). This needed to avoid creating tons of chunks due to scene changes.
What Hybrid does is run a scene change detection.
Go through these scene changes and create a list of trims, which respecting 'minimal chunk size'.
For each of the resulting trims, Hybrid will later create a separate chunk to encode.
Code:
void JobGeneration::collectedSceneChanges(const QStringList& sceneChanges)
{
  int minSceneChangeSize = m_currentParameters.modelHandler()->getGlobalDataModel()->intValue(QString("minChunkSceneSize"));
  m_sceneChangeTrims.clear();
  int current = -1;
  int previous = -1;
  int count = sceneChanges.count();
  if (count == 0) {
    sendMessage(HERROR, QString("Failed detecting scene changes,.."));
    return;
  }
  count = 0;
  foreach(QString line, sceneChanges) {
    line = line.trimmed();
    if (line.isEmpty() || line.startsWith(HASH)) {
      continue;
    }
    current++;
    if (!line.startsWith(QString("i"))) {
      continue;
    }
    if (previous == -1) {
      previous = current;
      continue;
    }
    if ((current-previous) < minSceneChangeSize) {
      continue;
    }
    count++;
    m_sceneChangeTrims << QString("%1,%2").arg(previous).arg(current-1);
    previous = current;
  }
  sendMessage(HLOG, QString("Found %1 scene changes,..").arg(count));
  m_sceneChangeTrims << QString("%1,%2").arg(previous).arg(current);
  this->createJob();
}
Yes, other code to create trims could be written, but I don't plan on doing that atm. .
(no time, trying to get Hybrids build and deploy scripts working atm.)
I also don't see why using a decent chunk size and limiting the number of parallel processed sub jobs isn't enough.
Cu Selur
 
 (26.10.2025, 13:53)Selur Wrote: [ -> ]32k is just a random limit for the chunk size. (I needed to set some limit)
At the moment the amount of chunks, is determined by:
a. the length of the video 
b. the number of scene changes
c. the minimal chunk size (= minimal number of frames in a chunk). This needed to avoid creating tons of chunks due to scene changes.
I also don't see why using a decent chunk size and limiting the number of parallel processed sub jobs isn't enough.
Cu Selur
Limiting the number of parallel processed is enough, but what about enabling also "Parallel subjob processing", this additional option may interfere with the parallel process on chunks ?
Dan
 
Quote: Limiting the number of parallel processed is enough, but what about enabling also "Parallel subjob processing", this additional option may interfere with the parallel process on chunks ?
 
  "Parallel subjob processing" limits the number of parallel processed sub jobs, since each chunk is a sub job this already does what you want.
 
So, it is better to enable it ?
![[Image: attachment.php?aid=3354]](https://forum.selur.net/attachment.php?aid=3354) 
Dan
 
 
 
That's "Parallel 
Jobs' not 'Parallel 
subjob count' (which is under Jobs->Misc).
Per source, one job with xy sub jobs are created. (extract, convert, mux,...)
'Parallel Jobs' allows to process multiple jobs/sources in parallel.
'Parallel subjobs' allows during the processing ob a job to process multiple of its sub jobs in parallel.
Cu Selur
 
I tried to use chunk encoding, was generated a script named "tempSceneChangeDetectionVapoursynthFile", with the following code
Code:
# adjusting color space from YUV420P8 to RGB24 for vsHAVC
clip = core.resize.Bicubic(clip=clip, format=vs.RGB24, matrix_in_s="709", range_in_s="limited", range_s="full")
# adding colors using HAVC
clip = havc.HAVC_main(clip=clip, Preset="veryslow", ColorModel="Video+Artistic", CombMethod="ChromaBound Adaptive", VideoTune="vivid", ColorTemp="low", ColorFix="retinex/red", FrameInterp=0, ColorMap="red->brown", ColorTune="medium", BlackWhiteTune="light", BlackWhiteMode=0, BlackWhiteBlend=True, EnableDeepEx=False, enable_fp16=True)
# Resizing using 10 - bicubic spline
clip = core.fmtc.resample(clip=clip, kernel="spline16", w=320, h=136, interlaced=False, interlacedd=False) # resolution 320x136 before RGB24 after RGB48
# adjusting color space from RGB48 to YUV420P8 for vsSCXvidFilter
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, matrix_s="709", range_in_s="full", range_s="limited", dither_type="error_diffusion") # additional resize to allow target color sampling
clip = core.scxvid.Scxvid(clip=clip, log="E:/COLOR/TO_COLORIZE/I Giovani Leoni (1958)/scene_change_detection.txt", use_slices=True)
# set output frame rate to 23.976fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=24000, fpsden=1001)
# output
clip.set_output()
The problem here, is that for generate the scene-change, is performed the full colorization, while, the scene change should be generated using only the input clip.
In this way cannot be used to speed-up the colorization process.
Dan
 
Totally forgot about the skipDuringChunking-list,... 

Will look at it tomorrow 

 
Uploaded a new test version where I added HAVC and ColorAdjuster(HAVC) to the skip list.
I think that should fix it.
Cu Selur