Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > VapourSynth

Reply
 
Thread Tools Search this Thread Display Modes
Old 25th June 2022, 20:50   #4721  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
I get:
Code:
ry, ru, rv = core.std.SplitPlanes(rainbow)
ValueError: too many values to unpack (expected 3))
Here's where I use this:
Code:
from vapoursynth import core
import vapoursynth as vs

# requires: 
# * BiFrost: https://github.com/dubhater/vapoursynth-bifrost
# * TemporalSoften: https://github.com/dubhater/vapoursynth-temporalsoften 
#   I think this could be replaced by TemporalSoften2 https://github.com/dubhater/vapoursynth-temporalsoften2

# raidus = temporal radius
# th = threshold
def ChubbyRain2(clip: vs.VideoNode, th: int= 0, radius: int=3, show: bool=False, interlaced: bool=False):
  if interlaced:
    es = core.std.SeparateFields(clip=clip)
  else:
    res = clip
	
  y = core.std.ShufflePlanes(res, planes=0, colorfamily=vs.GRAY)
  u = core.std.ShufflePlanes(res, planes=1, colorfamily=vs.GRAY)
  v = core.std.ShufflePlanes(res, planes=2, colorfamily=vs.GRAY)
	
  uc = core.std.Convolution(u, [1,-2,1], mode = "v")
  vc = core.std.Convolution(v, [1,-2,1], mode = "v")
	

  ucc = core.std.Convolution(u, [1,2,1], planes=0, mode = "v")
  vcc = core.std.Convolution(v, [1,2,1], planes=0, mode = "v")
	
  cc = core.std.ShufflePlanes([y,ucc,vcc], planes=[0, 0, 0], colorfamily=vs.YUV)
  cc = core.bifrost.Bifrost(cc)
  cc = core.focus.TemporalSoften(cc, radius=radius,luma_threshold=0, chroma_threshold=255,scenechange=2 , mode=2)
  
  expr = "x y + " + str(th) + " > " + str(256 << (clip.format.bits_per_sample - 8)) + " 0 ?"
  rainbow = core.std.Expr([uc,vc],expr)
  rainbow = core.resize.Point(rainbow, res.width, res.height)
  
  ry, ru, rv = core.std.SplitPlanes(rainbow)
  ry = std.Maximum(ry)
  ru = core.std.BlankClip(ru, color=128 << (clip.format.bits_per_sample - 8))
  rv = core.std.BlankClip(rv, color=128 << (clip.format.bits_per_sample - 8) )
  rainbow = core.std.ShufflePlanes([ry,ru,rv], [0,0,0], vs.YUV)
  
  resfinal = core.std.MaskedMerge(res, cc, rainbow)
  
  if show:
    output = rainbow
  else:
    if interlaced:
      output = core.std.DoubleWeave(resfinal)
      output = core.std.SelectEvery(output, 2, 0)
    else:
      output = resfinal

  return output
Original AviSynth version: http://avisynth.nl/images/ChubbyRain2.avsi
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 25th June 2022, 22:28   #4722  |  Link
mastrboy
Registered User
 
Join Date: Sep 2008
Posts: 343
While I don't have a solution to your current issue, are you not missing the cnr2() function call? (http://avisynth.nl/index.php/Cnr2)

I doubt it would function the same without it?
__________________
(i have a tendency to drunk post)
mastrboy is offline   Reply With Quote
Old 26th June 2022, 05:13   #4723  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
@mastrboy: yes, you are right I missed the cnr2 call.

---
Okay, I see why the ValueError happens rainbow is Gray8

Code:
def ChubbyRain2(clip: vs.VideoNode, th: int=10, radius: int=3, show: bool=False, sft: int=10, interlaced: bool=False):
  if interlaced:
    res = core.std.SeparateFields(clip=clip)
  else:
    res = clip
	
  y = core.std.ShufflePlanes(res, planes=0, colorfamily=vs.GRAY)
  u = core.std.ShufflePlanes(res, planes=1, colorfamily=vs.GRAY)
  v = core.std.ShufflePlanes(res, planes=2, colorfamily=vs.GRAY)
	
  uc = core.std.Convolution(u, [1,-2,1], mode = "v")
  vc = core.std.Convolution(v, [1,-2,1], mode = "v")
	

  ucc = core.std.Convolution(u, [1,2,1], planes=0, mode = "v")
  vcc = core.std.Convolution(v, [1,2,1], planes=0, mode = "v")
	
  cc = core.std.ShufflePlanes([y,ucc,vcc], planes=[0, 0, 0], colorfamily=vs.YUV)
  cc = core.bifrost.Bifrost(cc)
  cc = core.cnr2.Cnr2(cc)
  cc = core.focus.TemporalSoften(cc, radius=radius, luma_threshold=0, chroma_threshold=sft, scenechange=2 , mode=2)
  #cc = core.focus2.TemporalSoften2(cc, radius=radius, luma_threshold=0, chroma_threshold=sft, scenechange=2 , mode=2)
 
  shift = (clip.format.bits_per_sample - 8)
  expr = "x y + " + str(th) + " > " + str(256 << shift) + " 0 ?"
  rainbowMask = core.std.Expr([uc,vc],expr)
  rainbowMask = core.resize.Point(rainbowMask, res.width, res.height)
  rainbowMask = core.std.Maximum(rainbowMask)
  
  resfinal = core.std.MaskedMerge(res, cc, rainbowMask)
  
  if show:
    output = rainbowMask
  else:
    if interlaced:
      output = core.std.DoubleWeave(resfinal)
      output = core.std.SelectEvery(output, 2, 0)
    else:
      output = resfinal

  return output
doesn't crash, but the output is kind of broken. :/ doh "th: int=0" -> "th: int=10"
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..

Last edited by Selur; 26th June 2022 at 07:02.
Selur is offline   Reply With Quote
Old 26th June 2022, 06:57   #4724  |  Link
ChaosKing
Registered User
 
Join Date: Dec 2005
Location: Germany
Posts: 1,701
es = core.std.SeparateFields(clip=clip) should be res = ...
__________________
AVSRepoGUI // VSRepoGUI - Package Manager for AviSynth // VapourSynth
VapourSynth Portable FATPACK || VapourSynth Database || https://github.com/avisynth-repository
ChaosKing is offline   Reply With Quote
Old 26th June 2022, 07:02   #4725  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
thanks, fixed.
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 30th June 2022, 19:30   #4726  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
btw. does someone know an alternative to ExBlend for Vapoursynth, something that tries to fix blends and not 'just' try to drop the fields like sRestore, Cdeblend?
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 30th June 2022, 23:08   #4727  |  Link
Julek
Registered User
 
Julek's Avatar
 
Join Date: Dec 2020
Posts: 65
Quote:
Originally Posted by Selur View Post
btw. does someone know an alternative to ExBlend for Vapoursynth, something that tries to fix blends and not 'just' try to drop the fields like sRestore, Cdeblend?
https://github.com/dnjulek/jvsfunc/b...end.py#L16-L40
__________________
CPU: AMD 3700X | GPU: RTX 3070Ti | RAM: 32GB 3200MHz
Discord: @Julek#9391 || GitHub
Julek is offline   Reply With Quote
Old 1st July 2022, 15:45   #4728  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
Will try thanks. (sadly unlike exblend in Avisynth it doesn't seem to do anything for the clip, see exblend thread)
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..

Last edited by Selur; 1st July 2022 at 22:02.
Selur is offline   Reply With Quote
Old 3rd July 2022, 21:25   #4729  |  Link
ChaosKing
Registered User
 
Join Date: Dec 2005
Location: Germany
Posts: 1,701
Will there be a binary for the R2 imwri release?
__________________
AVSRepoGUI // VSRepoGUI - Package Manager for AviSynth // VapourSynth
VapourSynth Portable FATPACK || VapourSynth Database || https://github.com/avisynth-repository
ChaosKing is offline   Reply With Quote
Old 4th July 2022, 15:26   #4730  |  Link
Myrsloik
Professional Code Monkey
 
Myrsloik's Avatar
 
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,491
Quote:
Originally Posted by ChaosKing View Post
Will there be a binary for the R2 imwri release?
Done. Forgot to check back for the artifacts to grab binaries.
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet
Myrsloik is offline   Reply With Quote
Old 7th July 2022, 17:20   #4731  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
Using BlankClip (http://www.vapoursynth.com/doc/funct...blankclip.html) there is a color parameter,
Code:
float[] color=<black>
is there some documentation about this? What range are these floats? I guess one should use three or four, right? Is the color selection etc. dependend of the used color space (type, sampling, bit depth)?
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 7th July 2022, 17:43   #4732  |  Link
Myrsloik
Professional Code Monkey
 
Myrsloik's Avatar
 
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,491
Quote:
Originally Posted by Selur View Post
Using BlankClip (http://www.vapoursynth.com/doc/funct...blankclip.html) there is a color parameter,
Code:
float[] color=<black>
is there some documentation about this? What range are these floats? I guess one should use three or four, right? Is the color selection etc. dependend of the used color space (type, sampling, bit depth)?
They are 1:1 copied into the destination clip (rounded for int formats of obviously). Out of range values for the format throws an error. Number of planes values expected.
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet
Myrsloik is offline   Reply With Quote
Old 7th July 2022, 18:07   #4733  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
Okay,.. so the best way if I got a rgb(50,205,50) color coding would be to first create a RGB24 clip with my values and then use for example:
Code:
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, matrix_s="470bg", range_s="limited")
to convert to YUV420P8 if that is the color space I need, right?
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 7th July 2022, 18:20   #4734  |  Link
Myrsloik
Professional Code Monkey
 
Myrsloik's Avatar
 
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,491
Quote:
Originally Posted by Selur View Post
Okay,.. so the best way if I got a rgb(50,205,50) color coding would be to first create a RGB24 clip with my values and then use for example:
Code:
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, matrix_s="470bg", range_s="limited")
to convert to YUV420P8 if that is the color space I need, right?
Yes. That's the easiest way.
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet
Myrsloik is offline   Reply With Quote
Old 7th July 2022, 18:21   #4735  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
Okay, thanks.
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 7th July 2022, 18:52   #4736  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
Using:
PHP Code:
# Imports
import vapoursynth as vs
import os
import sys
# getting Vapoursynth core
core vs.core
# Import scripts folder
scriptPath 'i:/Hybrid/64bit/vsscripts'
sys.path.insert(0os.path.abspath(scriptPath))
# Loading Plugins
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/SourceFilter/FFMS2/ffms2.dll")
# Import scripts
import havsfunc
# source: 'G:\TestClips&Co\files\test.avi'
# current color space: YUV420P8, bit depth: 8, resolution: 640x352, fps: 25, color matrix: 470bg, yuv luminance scale: limited, scanorder: progressive
# Loading source using FFMS2
clip core.ffms2.Source(source="G:/TestClips&Co/files/test.avi",cachefile="E:/Temp/avi_6c441f37d9750b62d59f16ecdbd59393_853323747.ffindex",format=vs.YUV420P8,alpha=False)
# Setting color matrix to 470bg.
clip core.std.SetFrameProps(clip_Matrix=5)
clip clip if not core.text.FrameProps(clip,'_Transfer') else core.std.SetFrameProps(clip_Transfer=5)
clip clip if not core.text.FrameProps(clip,'_Primaries') else core.std.SetFrameProps(clip_Primaries=5)
# Setting color range to TV (limited) range.
clip core.std.SetFrameProp(clip=clipprop="_ColorRange"intval=1)
# making sure frame rate is set to 25
clip core.std.AssumeFPS(clip=clipfpsnum=25fpsden=1)
## Starting left=60, top=60, right=50, bottom=50
clip core.resize.Bicubic(clip=clipformat=vs.YUV444P8range_s="limited"# convert clip to 4:4:4 to allow uneven positions
clipVline core.std.BlankClip(clip=clipwidth=1format=vs.RGB24color=[50,205,5]) # set color of vertical line
clipHline core.std.BlankClip(clip=clipheight=1,format=vs.RGB24color=[50,205,5]) # set color of horizontal line
clipVline core.resize.Bicubic(clip=clipVlineformat=vs.YUV444P8matrix_s="470bg"range_s="limited"# change color to that of clip
clipHline core.resize.Bicubic(clip=clipHlineformat=vs.YUV444P8matrix_s="470bg"range_s="limited"# change color to that of clip
#overlay vertical lines
clip havsfunc.Overlay(base=clipoverlay=clipVlinex=60)
clip havsfunc.Overlay(base=clipoverlay=clipVlinex=clip.width-50)
clip havsfunc.Overlay(base=clipoverlay=clipHliney=60)
#overlay horizontal lines
clip havsfunc.Overlay(base=clipoverlay=clipHliney=clip.height-50)
clip core.resize.Bicubic(clip=clipformat=vs.YUV420P8range_s="limited")
## Finished 

# set output frame rate to 25fps
clip core.std.AssumeFPS(clip=clipfpsnum=25fpsden=1)
# Output
clip.set_output() 
I basically get what I expected, but something seems to be amiss, since I see some pinkg lines

that should not be there,...

any idea where I go wrong?
Did I do something wrong or this a bug in overlay or somewhere else? (it's not much of an issue for my use case here, but seem to be wrong)

Cu Selur

Ps.: In case it's helps, I got the source clip I used in my google drive.
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 7th July 2022, 20:02   #4737  |  Link
Julek
Registered User
 
Julek's Avatar
 
Join Date: Dec 2020
Posts: 65
Quote:
Originally Posted by Selur View Post
Using:
any idea where I go wrong?
Did I do something wrong or this a bug in overlay or somewhere else? (it's not much of an issue for my use case here, but seem to be wrong)

Cu Selur

Ps.: In case it's helps, I got the source clip I used in my google drive.
It's just chroma subsampling effect.
__________________
CPU: AMD 3700X | GPU: RTX 3070Ti | RAM: 32GB 3200MHz
Discord: @Julek#9391 || GitHub
Julek is offline   Reply With Quote
Old 7th July 2022, 20:10   #4738  |  Link
MonoS
Registered User
 
Join Date: Aug 2012
Posts: 198
Quote:
Originally Posted by Selur View Post
Did I do something wrong or this a bug in overlay or somewhere else? (it's not much of an issue for my use case here, but seem to be wrong)

Cu Selur
That's an artifact from doing chroma subsampling, 4:2:0 (YUV420Px) has a 1/4 resolution for chroma and using a bicubic kernel (which use some negative lobe IIRC) generate that purple line (if you invert your green to [155,50,250] you will in fact generate a faint green line), if you use a kernel without negative lobes such a bilinear one you can avoid that kind of artifact, but introducing a strong chroma contrast line like that i a subsampled pic will always introduce some artifact, leave in in 444 subsampling (or RGB) and you will avoid that.
MonoS is offline   Reply With Quote
Old 8th July 2022, 17:22   #4739  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,741
Okay, thanks for clearing that.
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 20th July 2022, 03:16   #4740  |  Link
lansing
Registered User
 
Join Date: Sep 2006
Posts: 1,616
I have a problem with the R59 installer. I have both Python 3.8 and 3.9 installed with 3.9 being the default. But the installer is only able to detect 3.8. I tested R57 and it is able to see both python versions.
lansing is offline   Reply With Quote
Reply

Tags
speed, vaporware, vapoursynth

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 15:03.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.