CUDASynth
Posted: Tue Feb 13, 2024 10:05 am
I knew about that after a former member suggested it should be done to me. Guess why he is former.
I didn't readily spot further commentary, so :if CUDA will provide ME data from hardware ASIC and you can use it to make motion compensated frames you can use temporal median as final output stage (or simple weighted averaging as in MDegrain). As I read NVIDIA also provide some API for CUDA-programmers to get ME data from MPEG encoder ASIC where available. Other implementation is for DX12.
See https://docs.nvidia.com/video-techno...ide/index.html
Motion Estimation Only Mode
NVENC can be used as a hardware accelerator to perform motion search and generate motion vectors and mode information. The resulting motion vectors or mode decisions can be used, for example, in motion compensated filtering
Code: Select all
REM ******** characteristics of the media file
G:\HDTV\DGtest>"C:\SOFTWARE\MediaInfo\MediaInfo.exe" --Legacy "!QSF_VIDEO!"
General
Complete name : G:\HDTV\DGtest\H264_INTERLACED.qsf.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 770 MiB
Duration : 36 min 48 s
Overall bit rate : 2 927 kb/s
Frame rate : 25.000 FPS
Writing application : VideoReDo (Lavf58.29.100)
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 4 frames
Format settings, GOP : M=4, N=28
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 36 min 48 s
Bit rate : 2 665 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 25.000 FPS
Minimum frame rate : 25.000 FPS
Maximum frame rate : 90 000.000 FPS
Standard : Component
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : MBAFF
Scan type, store method : Interleaved fields
Scan order : Top Field First
Bits/(Pixel*Frame) : 0.051
Stream size : 702 MiB (91%)
Color range : Limited
Codec configuration box : avcC
Audio
ID : 2
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 2
Codec ID : mp4a-6B
Duration : 36 min 48 s
Bit rate mode : Constant
Bit rate : 256 kb/s
Channel(s) : 2 channels
Sampling rate : 48.0 kHz
Compression mode : Lossy
Stream size : 67.4 MiB (9%)
Language : English
Default : Yes
Alternate group : 1
G:\HDTV\DGtest>"!vapoursynth_root!\DGIndex\DGIndexNV.exe" -version
DGIndexNV 251.0.0.0 (64 bit)
G:\HDTV\DGtest>"!vapoursynth_root!\DGIndex\DGIndexNV.exe" -i "!QSF_VIDEO!" -e -h -o "!_DGI_FILE!"
Project
100
G:\HDTV\DGtest>TYPE "!_DGI_LOG!"
Stream Type: MP4
Video Type: AVC
Profile: High
Level: 4
Coded Size: 1920x1088
Display Size: 1920x1080
PAR: 1:1
Frame Rate: 25.000000 fps
Colorimetry: Unknown [2]
Frame Structure:
Field Order:
Frame Type:
Frame Coding:
Coded Number: 55202
Playback Number: 55202
Frame Repeats: 0
Field Repeats: 0
Film Percent: 0.00
Bitrate:
Bitrate (Avg): 2.602
Bitrate (Max):
Elapsed:
Remain: 0:00:00
FPS:
Info: Finished!
REM ******** pre-CudaSynth
G:\HDTV\DGtest>TYPE "!_OLD_VPY_file!" 2>&1
import vapoursynth as vs # this allows use of constants eg vs.YUV420P8
from vapoursynth import core # actual vapoursynth core
#import functool
#import mvsfunc as mvs # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
#import havsfunc as haf # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
core.std.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
core.avs.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
# NOTE: deinterlace=1, use_top_field=True for "Interlaced"/"TFF" "MPEG-2V"/"MPA1L2"
video = core.dgdecodenv.DGSource(r'G:\HDTV\DGtest\H264_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False)
# DGDecNV changes -
# 2020.10.21 Added new parameters cstrength and cblend to independently control the chroma denoising.
# 2020.11.07 Revised DGDenoise parameters. The 'chroma' option is removed.
# Now, if 'strength' is set to 0.0 then luma denoising is disabled,
# and if cstrength is set to 0.0 then chroma denoising is disabled.
# 'cstrength' is now defaulted to 0.0, and 'searchw' is defaulted to 9.
# example: video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06) # replaced chroma=True
video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06)
video = core.avs.DGSharpen(video, strength=0.2)
#video = vs.core.text.ClipInfo(video)
video.set_output()
G:\HDTV\DGtest>"!old_vspipeexe64!" --version
VapourSynth Video Processing Library
Copyright (c) 2012-2023 Fredrik Mellbin
Core R65
API R4.0
API R3.6
Options: -
G:\HDTV\DGtest>"!old_vspipeexe64!" --info "!_OLD_VPY_file!"
Width: 1920
Height: 1080
Frames: 55202
FPS: 25/1 (25.000 fps)
Format Name: YUV420P8
Color Family: YUV
Alpha: No
Sample Type: Integer
Bits: 8
SubSampling W: 1
SubSampling H: 1
G:\HDTV\DGtest>"!old_vspipeexe64!" --filter-time --container y4m "!_OLD_VPY_file!" --
Output 55202 frames in 505.90 seconds (109.12 fps)
Filtername Filter mode Time (%) Time (s)
DGDenoise parreq 99.81 504.93
DGSharpen parreq 39.12 197.91
DGSource unordered 25.17 127.34
REM ******** CudaSynth
G:\HDTV\DGtest>TYPE "!_VPY_file!" 2>&1
import vapoursynth as vs # this allows use of constants eg vs.YUV420P8
from vapoursynth import core # actual vapoursynth core
#import functool
#import mvsfunc as mvs # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
#import havsfunc as haf # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
core.std.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
core.avs.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
# NOTE: deinterlace=1, use_top_field=True for "Interlaced"/"TFF" "h264"/"AC3"
# dn_enable=x DENOISE
# default 0 0: disabled 1: spatial denoising only 2: temporal denoising only 3: spatial and temporal denoising
# dn_quality="x" default "good" "good" "better" "best"
video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\H264_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False, dn_enable=1, dn_quality="best" )
video = core.avs.DGSharpen( video, strength=0.2 )
#video = vs.core.text.ClipInfo(video)
video.set_output()
G:\HDTV\DGtest>"!vspipeexe64!" --version
VapourSynth Video Processing Library
Copyright (c) 2012-2023 Fredrik Mellbin
Core R65
API R4.0
API R3.6
Options: -
G:\HDTV\DGtest>"!vspipeexe64!" --info "!_VPY_file!"
Width: 1920
Height: 1080
Frames: 55202
FPS: 25/1 (25.000 fps)
Format Name: YUV420P8
Color Family: YUV
Alpha: No
Sample Type: Integer
Bits: 8
SubSampling W: 1
SubSampling H: 1
G:\HDTV\DGtest>"!vspipeexe64!" --filter-time --container y4m "!_VPY_file!" --
Output 55202 frames in 1047.22 seconds (52.71 fps)
Filtername Filter mode Time (%) Time (s)
DGSource unordered 99.86 1045.74
DGSharpen parreq 15.64 163.79
Code: Select all
G:\HDTV\DGtest>TYPE "!_OLD_VPY_file!" 2>&1
import vapoursynth as vs # this allows use of constants eg vs.YUV420P8
from vapoursynth import core # actual vapoursynth core
#import functool
#import mvsfunc as mvs # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
#import havsfunc as haf # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
core.std.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
core.avs.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
# NOTE: deinterlace=1, use_top_field=True for "Interlaced"/"TFF" "MPEG-2V"/"MPA1L2"
video = core.dgdecodenv.DGSource(r'G:\HDTV\DGtest\H264_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False)
# DGDecNV changes -
# 2020.10.21 Added new parameters cstrength and cblend to independently control the chroma denoising.
# 2020.11.07 Revised DGDenoise parameters. The 'chroma' option is removed.
# Now, if 'strength' is set to 0.0 then luma denoising is disabled,
# and if cstrength is set to 0.0 then chroma denoising is disabled.
# 'cstrength' is now defaulted to 0.0, and 'searchw' is defaulted to 9.
# example: video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06) # replaced chroma=True
video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06)
video = core.avs.DGSharpen(video, strength=0.2)
#video = vs.core.text.ClipInfo(video)
video.set_output()
Code: Select all
G:\HDTV\DGtest>"!old_vspipeexe64!" --filter-time --container y4m "!_OLD_VPY_file!" --
Output 55202 frames in 497.50 seconds (110.96 fps)
Filtername Filter mode Time (%) Time (s)
DGDenoise parreq 99.82 496.63
DGSharpen parreq 39.34 195.71
DGSource unordered 25.48 126.77
Code: Select all
G:\HDTV\DGtest>"!old_vspipeexe64!" --filter-time --container y4m "!_OLD_VPY_file!" --
Output 55202 frames in 498.67 seconds (110.70 fps)
Filtername Filter mode Time (%) Time (s)
DGDenoise parreq 99.83 497.82
DGSharpen parreq 39.31 196.04
DGSource unordered 25.43 126.82
Code: Select all
G:\HDTV\DGtest>TYPE "!_VPY_file!" 2>&1
import vapoursynth as vs # this allows use of constants eg vs.YUV420P8
from vapoursynth import core # actual vapoursynth core
#import functool
#import mvsfunc as mvs # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
#import havsfunc as haf # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
core.std.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
core.avs.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
# NOTE: deinterlace=1, use_top_field=True for "Interlaced"/"TFF" "h264"/"AC3"
# dn_enable=x DENOISE
# default 0 0: disabled 1: spatial denoising only 2: temporal denoising only 3: spatial and temporal denoising
# dn_quality="x" default "good" "good" "better" "best" ... "best" halves the speed compared pre-CUDASynth
#video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\H264_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False, dn_enable=1, dn_quality="best" )
video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\H264_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False, dn_enable=1, dn_quality="good" )
video = core.avs.DGSharpen( video, strength=0.2 )
#video = vs.core.text.ClipInfo(video)
video.set_output()
Code: Select all
G:\HDTV\DGtest>"!vspipeexe64!" --filter-time --container y4m "!_VPY_file!" --
Output 55202 frames in 331.33 seconds (166.61 fps)
Filtername Filter mode Time (%) Time (s)
DGSource unordered 99.63 330.10
DGSharpen parreq 49.72 164.73
Code: Select all
G:\HDTV\DGtest>"!vspipeexe64!" --filter-time --container y4m "!_VPY_file!" --
Output 55202 frames in 332.64 seconds (165.95 fps)
Filtername Filter mode Time (%) Time (s)
DGSource unordered 99.62 331.38
DGSharpen parreq 49.61 165.04
Code: Select all
G:\HDTV\DGtest>"!old_vspipeexe64!" --filter-time --container y4m "!_OLD_VPY_file!" --
Output 55202 frames in 386.83 seconds (142.70 fps)
Filtername Filter mode Time (%) Time (s)
DGDenoise parreq 99.89 386.40
DGSource unordered 31.77 122.89
Code: Select all
G:\HDTV\DGtest>"!vspipeexe64!" --filter-time --container y4m "!_VPY_file!" --
Output 55202 frames in 249.27 seconds (221.46 fps)
Filtername Filter mode Time (%) Time (s)
DGSource unordered 99.74 248.62
Code: Select all
G:\HDTV\DGtest>set bitrate=3000000
G:\HDTV\DGtest>set min_bitrate=500000
G:\HDTV\DGtest>set max_bitrate=6000000
G:\HDTV\DGtest>set bufsize=!max_bitrate!
G:\HDTV\DGtest>"!old_vspipeexe64!" --container y4m --filter-time "!_OLD_VPY_file!" - | "!old_ffmpegexe64_OpenCL!" -hide_banner -v verbose -nostats -f yuv4mpegpipe -i pipe: -probesize 200M -analyzeduration 200M -i "!QSF_VIDEO!" -map 0:v:0 -map 1:a:0 -vf "setdar=16/9" -fps_mode passthrough -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -strict experimental -c:v h264_nvenc -pix_fmt nv12 -preset p7 -multipass fullres -forced-idr 1 -g 25 -coder:v cabac -spatial-aq 1 -temporal-aq 1 -dpb_size 0 -bf:v 3 -b_ref_mode:v 0 -rc:v vbr -cq:v 0 -b:v !bitrate! -minrate:v !min_bitrate! -maxrate:v !max_bitrate! -bufsize !bufsize! -profile:v high -level 5.2 -movflags +faststart+write_colr -c:a libfdk_aac -cutoff 18000 -ab 256k -ar 48000 -y "!OLD_TARGET_VIDEO!"
...
Output 55202 frames in 548.11 seconds (100.71 fps)
Filtername Filter mode Time (%) Time (s)
DGDenoise parreq 99.84 547.22
DGSharpen parreq 36.14 198.06
DGSource unordered 24.80 135.91
...
Code: Select all
G:\HDTV\DGtest>set bitrate=3000000
G:\HDTV\DGtest>set min_bitrate=500000
G:\HDTV\DGtest>set max_bitrate=6000000
G:\HDTV\DGtest>set bufsize=!max_bitrate!
G:\HDTV\DGtest>"!vspipeexe64!" --container y4m --filter-time "!_VPY_file!" - | "!ffmpegexe64_OpenCL!" -hide_banner -v verbose -nostats -f yuv4mpegpipe -i pipe: -probesize 200M -analyzeduration 200M -i "!QSF_VIDEO!" -map 0:v:0 -map 1:a:0 -vf "setdar=16/9" -fps_mode passthrough -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -strict experimental -c:v h264_nvenc -pix_fmt nv12 -preset p7 -multipass fullres -forced-idr 1 -g 25 -coder:v cabac -spatial-aq 1 -temporal-aq 1 -dpb_size 0 -bf:v 3 -b_ref_mode:v 0 -rc:v vbr -cq:v 0 -b:v !bitrate! -minrate:v !min_bitrate! -maxrate:v !max_bitrate! -bufsize !bufsize! -profile:v high -level 5.2 -movflags +faststart+write_colr -c:a libfdk_aac -cutoff 18000 -ab 256k -ar 48000 -y "!TARGET_VIDEO!"
...
Output 55202 frames in 409.71 seconds (134.74 fps)
Filtername Filter mode Time (%) Time (s)
DGSource unordered 98.47 403.44
DGSharpen parreq 41.01 168.01
...
Am looking forward to transcoding h.265 hdr10+ video (it says vfr but we know it is cfr) from my samsung S22 phone in the next couple of hours once I change its settings to record that ... that'll be the future use of HDRtoSDR use for me.
Code: Select all
G:\HDTV\DGtest>TYPE "!_OLD_VPY_file!" 2>&1
import vapoursynth as vs # this allows use of constants eg vs.YUV420P8
from vapoursynth import core # actual vapoursynth core
#import functool
#import mvsfunc as mvs # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
#import havsfunc as haf # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
core.std.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
core.avs.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
# NOTE: deinterlace=1, use_top_field=True for "Interlaced"/"TFF"
video = core.dgdecodenv.DGSource(r'G:\HDTV\DGtest\MPEG2_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False)
# DGDecNV changes -
# 2020.10.21 Added new parameters cstrength and cblend to independently control the chroma denoising.
# 2020.11.07 Revised DGDenoise parameters. The 'chroma' option is removed.
# Now, if 'strength' is set to 0.0 then luma denoising is disabled,
# and if cstrength is set to 0.0 then chroma denoising is disabled.
# 'cstrength' is now defaulted to 0.0, and 'searchw' is defaulted to 9.
# example: video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06) # replaced chroma=True
video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06)
video = core.avs.DGSharpen(video, strength=0.2)
#video = vs.core.text.ClipInfo(video)
video.set_output()
G:\HDTV\DGtest>"!old_vspipeexe64!" --version
VapourSynth Video Processing Library
Copyright (c) 2012-2023 Fredrik Mellbin
Core R65
API R4.0
API R3.6
Options: -
G:\HDTV\DGtest>"!old_vspipeexe64!" --info "!_OLD_VPY_file!"
Width: 720
Height: 576
Frames: 56659
FPS: 25/1 (25.000 fps)
Format Name: YUV420P8
Color Family: YUV
Alpha: No
Sample Type: Integer
Bits: 8
SubSampling W: 1
SubSampling H: 1
G:\HDTV\DGtest>"!old_vspipeexe64!" --filter-time --container y4m "!_OLD_VPY_file!" --
Output 56659 frames in 132.31 seconds (428.24 fps)
Filtername Filter mode Time (%) Time (s)
DGDenoise parreq 99.45 131.57
DGSource unordered 57.57 76.16
DGSharpen parreq 21.22 28.08
Code: Select all
G:\HDTV\DGtest>TYPE "!_VPY_file!" 2>&1
import vapoursynth as vs # this allows use of constants eg vs.YUV420P8
from vapoursynth import core # actual vapoursynth core
#import functool
#import mvsfunc as mvs # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
#import havsfunc as haf # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
core.std.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
core.avs.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
# NOTE: deinterlace=1, use_top_field=True for "Interlaced"/"TFF"
# dn_enable=x DENOISE
# default 0 0: disabled 1: spatial denoising only 2: temporal denoising only 3: spatial and temporal denoising
# dn_quality="x" default "good" "good" "better" "best" ... "best" halves the speed compared pre-CUDASynth
#video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False, dn_enable=1, dn_quality="best", dn_strength=0.06, dn_cstrength=0.06 )
#video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False, dn_enable=1, dn_quality="better", dn_strength=0.06, dn_cstrength=0.06 )
#video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False, dn_enable=3, dn_quality="good", dn_strength=0.06, dn_cstrength=0.06 )
#video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False, dn_enable=1, dn_quality="good", dn_strength=0.06, dn_cstrength=0.06 )
video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED.DGI', deinterlace=1, use_top_field=True, use_pf=False )
#video = core.avs.DGSharpen( video, strength=0.2 )
#video = vs.core.text.ClipInfo(video)
video.set_output()
G:\HDTV\DGtest>"!vspipeexe64!" --version
VapourSynth Video Processing Library
Copyright (c) 2012-2023 Fredrik Mellbin
Core R65
API R4.0
API R3.6
Options: -
G:\HDTV\DGtest>"!vspipeexe64!" --info "!_VPY_file!"
Width: 720
Height: 576
Frames: 56659
FPS: 25/1 (25.000 fps)
Format Name: YUV420P8
Color Family: YUV
Alpha: No
Sample Type: Integer
Bits: 8
SubSampling W: 1
SubSampling H: 1
G:\HDTV\DGtest>"!vspipeexe64!" --filter-time --progress --container y4m "!_VPY_file!" --
Script evaluation done in 0.38 seconds
Frame: 1/56659
G:\HDTV\DGtest>
Code: Select all
D:\Don\Programming\C++\DGDecNV\DGDecodeNV\Test>vspipe --version
VapourSynth Video Processing Library
Copyright (c) 2012-2022 Fredrik Mellbin
Core R61
API R4.0
API R3.6
Options: -
D:\Don\Programming\C++\DGDecNV\DGDecodeNV\Test>vspipe --filter-time --progress --container y4m nostalghia.vpy .\NUL
Script evaluation done in 0.30 seconds
Output 9194 frames in 16.49 seconds (557.40 fps)
Filtername Filter mode Time (%) Time (s)
DGSource unordered 99.40 16.39
Code: Select all
G:\HDTV\DGtest>"!vapoursynth_root!\DGIndex\DGIndexNV.exe" -version
DGIndexNV 251.0.0.0 (64 bit)
G:\HDTV\DGtest>"!vapoursynth_root!\DGIndex\DGIndexNV.exe" -i "!QSF_VIDEO!" -e -h -o "!_DGI_FILE!"
Project
100
G:\HDTV\DGtest>TYPE "!_DGI_LOG!"
Stream Type: MPEG2 Program
Video Type: MPEG2
Profile: main@main
Coded Size: 720x576
Display Size: 720x576
Aspect Ratio: 16:11
Frame Rate: 25.000000 fps
Colorimetry: Unknown [2]
Sequence: Frame/Field
Frame Structure:
Field Order:
Frame Type:
Frame Coding:
Coded Number: 125
Playback Number: 125
Frame Repeats: 0
Field Repeats: 0
Bitrate:
Bitrate (Avg): 2.791
Bitrate (Max):
Elapsed: 0:00:00
Remain: 0:00:00
FPS:
Info: Finished!
G:\HDTV\DGtest>TYPE "!_OLD_VPY_file!" 2>&1
import vapoursynth as vs # this allows use of constants eg vs.YUV420P8
from vapoursynth import core # actual vapoursynth core
#import functool
#import mvsfunc as mvs # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
#import havsfunc as haf # this relies on the .py residing at the VS folder root level - see run_vsrepo.bat
core.std.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
core.avs.LoadPlugin(r'C:\SOFTWARE\Vapoursynth-x64\DGIndex\DGDecodeNV.dll') # do it like gonca https://forum.doom9.org/showthread.php?p=1877765#post1877765
# NOTE: deinterlace=1, use_top_field=True for "Interlaced"/"TFF"
video = core.dgdecodenv.DGSource(r'G:\HDTV\DGtest\MPEG2_INTERLACED_CLIPPED.DGI', deinterlace=1, use_top_field=True, use_pf=False)
# DGDecNV changes -
# 2020.10.21 Added new parameters cstrength and cblend to independently control the chroma denoising.
# 2020.11.07 Revised DGDenoise parameters. The 'chroma' option is removed.
# Now, if 'strength' is set to 0.0 then luma denoising is disabled,
# and if cstrength is set to 0.0 then chroma denoising is disabled.
# 'cstrength' is now defaulted to 0.0, and 'searchw' is defaulted to 9.
# example: video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06) # replaced chroma=True
video = core.avs.DGDenoise(video, strength=0.06, cstrength=0.06)
video = core.avs.DGSharpen(video, strength=0.2)
#video = vs.core.text.ClipInfo(video)
video.set_output()
G:\HDTV\DGtest>"!old_vspipeexe64!" --version 2>&1
VapourSynth Video Processing Library
Copyright (c) 2012-2023 Fredrik Mellbin
Core R65
API R4.0
API R3.6
Options: -
G:\HDTV\DGtest>"!old_vspipeexe64!" --info "!_OLD_VPY_file!" 2>&1
Width: 720
Height: 576
Frames: 125
FPS: 25/1 (25.000 fps)
Format Name: YUV420P8
Color Family: YUV
Alpha: No
Sample Type: Integer
Bits: 8
SubSampling W: 1
SubSampling H: 1
G:\HDTV\DGtest>"!old_vspipeexe64!" --filter-time --container y4m "!_OLD_VPY_file!" -- 2>&1
Output 125 frames in 0.42 seconds (299.54 fps)
Filtername Filter mode Time (%) Time (s)
DGDenoise parreq 92.47 0.39
DGSource unordered 60.75 0.25
DGSharpen parreq 26.43 0.11
Code: Select all
G:\HDTV\DGtest>TYPE "!_VPY_file!" 2>&1
# from DG
import vapoursynth as vs
from vapoursynth import core
core.std.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll')
video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED_CLIPPED.DGI', deinterlace=1, use_top_field=True, use_pf=False )
video.set_output()
G:\HDTV\DGtest>"!vspipeexe64!" --version 2>&1
VapourSynth Video Processing Library
Copyright (c) 2012-2023 Fredrik Mellbin
Core R65
API R4.0
API R3.6
Options: -
G:\HDTV\DGtest>"!vspipeexe64!" --info "!_VPY_file!" 2>&1
Width: 720
Height: 576
Frames: 125
FPS: 25/1 (25.000 fps)
Format Name: YUV420P8
Color Family: YUV
Alpha: No
Sample Type: Integer
Bits: 8
SubSampling W: 1
SubSampling H: 1
G:\HDTV\DGtest>"!vspipeexe64!" --filter-time --progress --container y4m "!_VPY_file!" -- 2>&1
Script evaluation done in 0.72 seconds
Frame: 1/125
G:\HDTV\DGtest>
Code: Select all
G:\HDTV\DGtest>TYPE "!_VPY_file!" 2>&1
# from DG
import vapoursynth as vs
from vapoursynth import core
core.std.LoadPlugin(r'G:\HDTV\DGtest\Vapoursynth-x64\DGIndex\DGDecodeNV.dll')
#video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED_CLIPPED.DGI', deinterlace=1, use_top_field=True, use_pf=False )
video = core.dgdecodenv.DGSource( r'G:\HDTV\DGtest\MPEG2_INTERLACED_CLIPPED.DGI' )
video.set_output()