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 > Avisynth Usage

Reply
 
Thread Tools Search this Thread Display Modes
Old 5th February 2023, 22:04   #2001  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,666
Quote:
Originally Posted by simple_simon View Post
Well that really doesn't make sense for deep_resize to be changing the frame properties to 709 colorspace when it isn't. It should either assume the colorspace by the input frame resolution or leave it unspecified.
I looked at the script and the only place that I can guess where the frame properties are being set are in ConvertFormat. There's a few calls to that function withing deep_resize. I'm not sure what color format it converts to, it's hard to follow along.

Code:
ColorBars(pixel_type="YV12")
propClearAll()
deep_resize(width*2, height*2, grain=0)
propShow(size=24)
At least 4 properties are being set:



Quote:
Originally Posted by poisondeathray View Post
avsresize would look like

Code:
z_convertformat(pixel_type=last.pixeltype,  colorspace_op="170m:709:709:l=>709:709:709:l")
You no longer recommend full=>full ?
Reel.Deel is offline   Reply With Quote
Old 5th February 2023, 23:13   #2002  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by Reel.Deel View Post

You no longer recommend full=>full ?
Good point - Full is probably still better, I don't think anything has changed.

I rarely use colormatrix (or related) anymore for upscaling, because almost everything SD I'm upscaling uses machine learning at some point, so it's converted to RGB early on
poisondeathray is offline   Reply With Quote
Old 5th February 2023, 23:13   #2003  |  Link
simple_simon
Registered User
 
Join Date: Feb 2003
Posts: 106
Quote:
Originally Posted by poisondeathray View Post
Code:
z_convertformat(pixel_type=last.pixeltype,  colorspace_op="170m:709:709:l=>709:709:709:l")
Why wouldn't this be the correct way to do it?

Code:
z_ConvertFormat(colorspace_op="470bg:601:170m:full=>709:709:709:full")
And does it matter where in the script chain I do the color conversion? Should it be early in the script or after all the cleanup and resizing is done?

Quote:
Originally Posted by Reel.Deel View Post
At least 4 properties are being set:
That's what I'm seeing too.
simple_simon is offline   Reply With Quote
Old 6th February 2023, 00:29   #2004  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by simple_simon View Post
Why wouldn't this be the correct way to do it?

Code:
z_ConvertFormat(colorspace_op="470bg:601:170m:full=>709:709:709:full")
Matrices 470bg and 170m have the same values Kr = 0.299, Kb = 0.114, so it's the same mathematically

Transfer also have the same values for "601" and "709" so, it's the same mathematically

Primaries are debatable - you actually shift the colors if you go from 170m to 709. Technically, you're supposed to adjust the primaries, but >95% of the time, it's not actually done upstream for the transfer to the DVD in the first place - so you end up with slightly shifted colors if you adjust them in my experience. Primaries are typically not adjusted for in broadcast, BD, DVD, web streaming either (except for HDR) You only get the "correct" colors, if the primaries were handled correctly all the way through, upstream and downstream and the playback method.

Quote:
And does it matter where in the script chain I do the color conversion? Should it be early in the script or after all the cleanup and resizing is done?
It probably doesn't matter too much, but I'd generally do it near the end.

OTOH, some types of artifacts related to colormatrix conversion can occur with some types of animation (there are some threads and examples on this on this forum and others), so depending on how picky you are , you might want to filter them farther, so earlier could be better in some cases
poisondeathray is offline   Reply With Quote
Old 6th February 2023, 03:15   #2005  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by TDS View Post
Sorry, me again

I thought I'd give this a try, and as per usual (for me), I'm getting an error with AVSMeter..

https://github.com/Dogway/Avisynth-S...Pack.avsi#L401

Code:
Import("%AVISYNTHPLUGINS%\PD_TOOLS\EXTOOLS\ExTools.avs")
Import("%AVISYNTHPLUGINS%\PD_TOOLS\GRADE-PACK\Masks Pack.avs")
Import("%AVISYNTHPLUGINS%\PD_TOOLS\MASK-PACK\Grade Pack.avs")
Import("%AVISYNTHPLUGINS%\PD_TOOLS\RESIZERS-PACK\Resizers Pack.avs")
Import("%AVISYNTHPLUGINS%\PD_TOOLS\SCENES-PACK\Scenes Pack.avs")
Import("%AVISYNTHPLUGINS%\PD_TOOLS\TRANSFORM-PACK\Transforms Pack.avs")
Import("%AVISYNTHPLUGINS%\PD_TOOLS\TRANSFORM-PACK\Transforms Pack-Models.avs")
Import("%AVISYNTHPLUGINS%\PD_TOOLS\TRANSFORM-PACK\Transforms Pack-Transfers.avs")
video=ex_autolevels(video,interval=0.5,th=0.1)


You need to run SceneStats before ex_autolevels . 2pass is probably better with a log file, but might be difficult to do in ripbot alone

Code:
video = SceneStats(video, mode="Range+Stats",Y=true,UV=false) #1pass , no log file written
video = ex_autolevels(video, interval=0.5,th=0.1)
poisondeathray is offline   Reply With Quote
Old 6th February 2023, 03:56   #2006  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Try with a small short test video first to see if it "works" at all on your setup - because it can take a while while calculating
poisondeathray is offline   Reply With Quote
Old 6th February 2023, 04:44   #2007  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by TDS View Post
Thanks again, PDR, that got it to work...

But I'd hate to think how long it would take to process a 1080p or 4K movie length

It was just a quick test to rule out configuration problems (if any)

Actually you can run the 2pass method, since avsmeter is available in ripbot. The analysis will not seem to "hang" and it will "bake" the analysis results into the text file. ie. use avsmeter to run the 1st pass, change the script for the encoding pass (or passes) . Make sure you run the analysis pass single threaded (no prefetch, or prefetch (1), also source filter with threads=1, and/or use a very robust indexed method like DGSource. You also have to edit the log file, there is a repeated section at the top that you have to delete (open in a text editor, and delete all the lines up to the 2nd "Type string" line)

dogway posts this warning in ScenesPack.avsi - that's what it means
Quote:
### BEWARE!! For some reason in the exported log the first scene has repeated stats so manually remove those lines before loading the file.
analysis pass
Code:
video = SceneStats(video, mode="Range+Stats",Y=true,UV=false, path="path\source_stats.log")
encode pass/passes
Code:
video = ReadStats(video, "path\source_stats.log")
video = ex_autolevels(video, interval=0.5,th=0.1)

There are other "auto" leveling filters and methods that you can try out too...

Last edited by poisondeathray; 6th February 2023 at 04:47.
poisondeathray is offline   Reply With Quote
Old 6th February 2023, 05:08   #2008  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by TDS View Post

What are the other's ??

What kind of "auto leveling" are you wanting ?

Is it more "general" brightness/darkness/contrast issues, or to deal with "luminance flicker", or "white balance" / color balance/color cast , or something else?

For the general category, you can try AutoLevels, or AutoAdjust
poisondeathray is offline   Reply With Quote
Old 6th February 2023, 06:45   #2009  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by TDS View Post
Well, I have tried several white balance types, and they don't work with RipBot (well they do, but they don't).

I used to use a white balance filter when I was using Adobe Premier, and that worked well, I've even tried 3DLUT's to varying degrees of success.

I find I'm tweaking the colours in most of my encodes, mainly taming down "red's".

For avisynth white balance, I find RGBAdapt_AWB_Process is quite good and customizable - results are close to commercial plugins in some cases - but IIRC you had issues running it. It works in ripbot, loading the video then copy/pasting - I just tried it.

And playing with ripbot - I think I figured out the "no error message" black screen MPCHC ripbot preview issue that you sometimes have. AWB_Func didn't work, at first no error message. It turns out I had a typo, which the now visible error message conveyed. What you need to do is move the seekbar in MPCHC, and the error message will pop up

You can also try coloryuv(autowhite=true) , it' s not as advanced but can do the job adequately in some cases

If you prefer the PP filter's, you can use PP . One option is to frameserve in (Premiere AVS Import plugin) / frameserve out (Advanced Frameserver, or Debugmode Frameserver - now called "Cumincode Framserver") . Or use intermediates. I personally prefer intermediates when using PP
poisondeathray is offline   Reply With Quote
Old 6th February 2023, 07:34   #2010  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by TDS View Post
I recall that it DID work that way, BUT it did not invoke the distributed encoding function, which is the basically the whole point of RipBot (as far as encoding is concerned)
Even if you got it working - the results would not be ideal distributed anyways. Any distributed, or chunked method will have potential issues with temporal filters "at the seams". Temporal auto leveling is probably the worst type of filter you could use with chunks - it would predispose you to flicker at the joins. You can reduce some of the issues if you overlap the chunks and discard the overlaps before joining, but I don't think ripbot had that feature the last time I checked


Quote:
Don't use Premiere anymore, no mkv support
You can indirectly import MKV's through an .avs. The AVS import plugin doesn't work for many people, but AVFS (avisynth virtual file system) works for everyone and with just about every program (other NLE's too) . Vapoursynth version of avfs is better - because it has fourcc emulation such as UYVY for 8bit422, v210 for 10bit422 - these are treated as "YUV" in NLE's with YUV capable timelines like PP, instead of being "mishandled" as RGB (many lossless YUV codecs and uncompressed YUV formats are mishandled by most NLE's, and get converted to RGB) . "RGB" is usually not a big issue if you're using some auto leveling/auto white balance plugin - because most will be working in RGB anyways

Another option is if you re-wrap (streamcopy) into MP4, PP can import AVC, HEVC too. Native file import such as MP4 colorspace is handled properly
poisondeathray is offline   Reply With Quote
Old 6th February 2023, 16:41   #2011  |  Link
Dogway
Registered User
 
Join Date: Nov 2009
Posts: 2,361
Quote:
Originally Posted by LeXXuz View Post
Thanks DTL and Dogway for your input. Really appreciate it.
Something new to fiddle around with the next couple of days.
I updated ex_autolevels(), now it's really robust but as I said it's a global operator, I might look into local in the future.

I also updated ex_luma_rebuild() to allow for ex_levels() type of normalization with 'lo' and 'hi' args, but optimized without any performance penalty.

Also updated StabPlus() with ex_autolevels(). Actually you could hack open the StabPlus() function to reuse some code with the below script.

Code:
ffvideosource("noisy_original.mkv")
propSet("_FieldBased",0)

ConvertBits(16)
ex_Luma_Rebuild(15.0, 0.004, 21, tv_out=true)
ConvertBits(8,dither=1)
StabPlus()
crop(2,2,-6,-2)
SceneStats("Range+Stats")

pref = ex_autolevels(hi=true,tv_out=false)
temp =             Pref.TemporalSoften(5,255,0,25,2)
rep  = temp.Repair(Pref.TemporalSoften(1,255,0,25,2))

pref = ex_merge(rep, pref, MotionMask(rep,dir=0,scale=3,sharpness=2))
SMDegrain(2, 600, mode="TemporalSoften",str=2,prefilter=pref,RefineMotion=true)


ex_unsharp(0.3)
gr = 1
size = (720/2133.) * 3.3
GrainFactory3mod(g1str=7*gr,g2str=9*gr,g3str=7*gr,g1size=1.7*size,g2size=1.4*size,g3size=1.2*size,g1cstr=0.5*gr,g2cstr=0.3*gr,g3cstr=0.1*gr,temp_avg=1,tv_range=true)

For the new SMDegrain update, I'm still missing a bugfix in ex_retinex() for lvl=1 and highlights=false. Just was burnt out with the latest fixes.

This is the new output: link

For comparison I was curious to test videoFred's script, it does a good job on stabilization and luma flicker but there's still some wobble: link
__________________
i7-4790K@Stock::GTX 1070] AviSynth+ filters and mods on GitHub + Discussion thread

Last edited by Dogway; 6th February 2023 at 18:02.
Dogway is offline   Reply With Quote
Old 6th February 2023, 17:19   #2012  |  Link
anton_foy
Registered User
 
Join Date: Dec 2005
Location: Sweden
Posts: 703
Quote:
Originally Posted by Dogway View Post
I updated ex_autolevels(), now it's really robust but as I said it's a global operator, I might look into local in the future.

I also updated ex_luma_rebuild() to allow for ex_levels() type of normalization with 'lo' and 'hi' args, but optimized without any performance penalty.

Also updated StabPlus() with ex_autolevels(). Actually you could hack open the StabPlus() function to reuse some code with the below script.

Code:
ffvideosource("noisy_original.mkv")
propSet("_FieldBased",0)

ConvertBits(16)
ex_Luma_Rebuild(15.0, 0.004, 21, tv_out=true)
ConvertBits(8,dither=1)
StabPlus()
crop(2,2,-6,-2)
SceneStats("Range+Stats")

pref = ex_autolevels(hi=true,tv_out=false)
temp =             Pref.TemporalSoften(5,255,0,25,2)
rep  = temp.Repair(Pref.TemporalSoften(1,255,0,25,2))

pref = ex_merge(rep, pref,MotionMask(rep,scale=10,sharpness=5))
SMDegrain(2, 600, mode="TemporalSoften",str=2,prefilter=pref,RefineMotion=true)


ex_unsharp(0.3)
gr = 1
size = (720/2133.) * 3.3
GrainFactory3mod(g1str=7*gr,g2str=9*gr,g3str=7*gr,g1size=1.7*size,g2size=1.4*size,g3size=1.2*size,g1cstr=0.5*gr,g2cstr=0.3*gr,g3cstr=0.1*gr,temp_avg=1,tv_range=true)

For the new SMDegrain update, I'm still missing a bugfix in ex_retinex() for lvl=1 and highlights=false. Just was burnt out with the latest fixes.

This is the new output: link

For comparison I was curious to test videoFred's script, it does a good job on stabilization and luma flicker but there's still some wobble: link
Looking really good! But something is happening on the right in the bushes when the chef is passing by it. Warping kind of.
anton_foy is offline   Reply With Quote
Old 6th February 2023, 17:30   #2013  |  Link
Dogway
Registered User
 
Join Date: Nov 2009
Posts: 2,361
Sure, I said before it's not perfect. For these kind of borked sources the best solution is not a surgeon fix, but call TemporalSoften and fix several issues at once.
You can play with the temporal radius of TemporalSoften and SMDegrain to balance the effect, or use a pyramidal approach where you refine motion vectors further and further.
Maybe applying BM3D with high radius to 'rep' frame can improve some stabilization.
__________________
i7-4790K@Stock::GTX 1070] AviSynth+ filters and mods on GitHub + Discussion thread
Dogway is offline   Reply With Quote
Old 6th February 2023, 17:51   #2014  |  Link
anton_foy
Registered User
 
Join Date: Dec 2005
Location: Sweden
Posts: 703
Quote:
Originally Posted by Dogway View Post
Sure, I said before it's not perfect. For these kind of borked sources the best solution is not a surgeon fix, but call TemporalSoften and fix several issues at once.
You can play with the temporal radius of TemporalSoften and SMDegrain to balance the effect, or use a pyramidal approach where you refine motion vectors further and further.
Maybe applying BM3D with high radius to 'rep' frame can improve some stabilization.
Actually this is to me very interesting as I am experimenting with wobble and jitter locally to stab. Not quite there yet though but hundreds of ideas.
anton_foy is offline   Reply With Quote
Old 7th February 2023, 16:31   #2015  |  Link
Dogway
Registered User
 
Join Date: Nov 2009
Posts: 2,361
I was curious to test the performance of ex_autolevels() on a synthetic test so I made this gradient patch with alternating lifted blacks and gamma.

This is ex_autolevels:

Out of curiosity I also tested Autolevels(), I don't know if I'm doing something wrong here, the call is:
Code:
Autolevels(filterRadius=10, output_low=0, output_high=255, ignore=0.05, sceneChgThresh=255)
I had to raise sceneChgThresh as it was detecting flicker as SC


Probably if I run a second pass of ex_autolevels() with original stats it can be stabilized further. Will check that.
EDIT: Yes, it's more stable with a second run but 'lo' and 'hi' have to be disabled to avoid a re-normalization:
Code:
ex_autolevels(true ,true,false,reStats=false,tv_in=false)
ex_autolevels(false,true,false,reStats=false,tv_in=false)
__________________
i7-4790K@Stock::GTX 1070] AviSynth+ filters and mods on GitHub + Discussion thread

Last edited by Dogway; 7th February 2023 at 18:15.
Dogway is offline   Reply With Quote
Old 7th February 2023, 23:05   #2016  |  Link
LeXXuz
21 years and counting...
 
LeXXuz's Avatar
 
Join Date: Oct 2002
Location: Germany
Posts: 716
Looks very interesting! Where would you suggest to put this in a (double) SMDegrain call?


Out of curiosity I took a much closer look on other transfers I did over the last couple of month.

Now that I developed a certain eye for this texture wobble, I see it in a lot of films I did in the past. SD and HD. Even films where you would not expect this because you can hardly see any luma flickering in the source.

I start to believe this texture wobble is some kind of general side effect of the way SMDegrain removes noise or from the motion compensation. I still understand too little on how the entire process works to judge this.

SMDegrain does a terrific job on films that had a very good AD transfer and where filmgrain really is the only kind of noise present. Same goes for modern digital productions where grain is added in post-processing for some arguable reasons.

But on sources where other types of noise are involved, escpecially these 'unstable' sources, the side effects become clearly superficial when you try to go for a clean overall look.

I just had a SD film here where in one scene almost the whole picture wobbled. Right now I'm playing around with other denoisers on this one to see what they can do.

Last edited by LeXXuz; 7th February 2023 at 23:07.
LeXXuz is offline   Reply With Quote
Old 8th February 2023, 02:37   #2017  |  Link
anton_foy
Registered User
 
Join Date: Dec 2005
Location: Sweden
Posts: 703
@Dogway I think I found what is causing that wobble in the bushes.
Code:
MotionMask(rep,dir=0,scale=3,sharpness=2)
with the temporalsoften lines above it.
Try and see if you change the temporalsoften params lower if the wobble disappear.
anton_foy is offline   Reply With Quote
Old 8th February 2023, 03:49   #2018  |  Link
Dogway
Registered User
 
Join Date: Nov 2009
Posts: 2,361
I've been refining ex_autolevels() and now I get it almost perfectly flicker free.
First I had a bug in ArrayDelVal() in ExTools which I'll update soon. Then I added 'Deflicker' arg to ex_autolevels() to make the normalization per scene (autolevels) or per frame (deflicker).

Effectively running 2 passes makes it balanced enough for the gamma flicker.
Code:
ex_autolevels(true ,true,false,Deflicker=true,tv_in=false)
ex_autolevels(false,true,false,Deflicker=true,tv_in=false)


This is how you make a flickering patch:
Code:
GradientLinear(zoom=1, positive=true, precision=4)
trim(0,32)
SceneStats("Range")

ScriptClip(function [] () {
    lo = rand(30)
    gm = (rand(100)-50)/200.+1
    ex_levels(0,gm,255,lo,255,tv_range=false)
} )

SceneStats("Stats")

...Deflickering here...

ConvertBits(8,dither=1)
For comparison the next is a double call of Deflicker(scene=255,percent=100)



Quote:
Originally Posted by anton_foy View Post
@Dogway I think I found what is causing that wobble in the bushes.
Code:
MotionMask(rep,dir=0,scale=3,sharpness=2)
with the temporalsoften lines above it.
Try and see if you change the temporalsoften params lower if the wobble disappear.
Yes I know, but hadn't time to test a new approach. Want to try with my heavy grain prefilter preset like in 21 grams sample, using pyramidal temporal denoising.

Quote:
Originally Posted by LeXXuz View Post
Looks very interesting! Where would you suggest to put this in a (double) SMDegrain call?

I start to believe this texture wobble is some kind of general side effect of the way SMDegrain removes noise or from the motion compensation. I still understand too little on how the entire process works to judge this.

SMDegrain does a terrific job on films that had a very good AD transfer and where filmgrain really is the only kind of noise present. Same goes for modern digital productions where grain is added in post-processing for some arguable reasons.
It's DCT flicker, or in other words low frequency temporal "noise", motion and luma flicker just makes it worse. You can take a lowpassed version, temporally denoise it (tricky) and add it back to source. In any case using a radical approach like with temporalsoften prefilter works, I'm going to test with other forms of hardcore prefilters. For best results stabilize your clip motion and luma flicker beforehand then fix DCT flicker.

EDIT: Here an updated script with less wobble but also less background stabilization. Link
I tested with ex_reduceflicker() as the clip presented bob-like jitter and worked very nice, also reduced luma flicker a bit further despite not being designed for that.
Code:
ffvideosource("noisy_original.mkv")
propSet("_FieldBased",0)

ConvertBits(16)
ex_Luma_Rebuild(15.0, 0.004, 21, tv_out=true)
ConvertBits(8,dither=1)

StabPlus()
crop(2,2,-6,-2)
SceneStats("Range+Stats")

pref  = ex_autolevels(     true ,true, true,Deflicker=true,tv_out=false)
pref  = ex_autolevels(pref,false,true,false,Deflicker=true,tv_out=false)
pref2 = ex_reduceflicker(pref,3,true)
pref3 = SMDegrain(tr=3,mode="temporalsoften",blksize=32,thSAD=900,prefilter=pref2,str=2,contrasharp=false,refinemotion=false)

bk = SMDegrain(pref3,tr=3,mode="MDegrain",blksize=16,thSAD=400,refinemotion=true)
ft = SMDegrain(      tr=2,mode="MDegrain",blksize=16,thSAD=300,refinemotion=true,prefilter=bk)
ex_merge(bk, ft, MotionMask(pref3,scale=10,sharpness=5))

ex_unsharp(0.3)
gr = 1
size = (720/2133.) * 3.3
GrainFactory3mod(g1str=7*gr,g2str=9*gr,g3str=7*gr,g1size=1.7*size,g2size=1.4*size,g3size=1.2*size,g1cstr=0.5*gr,g2cstr=0.3*gr,g3cstr=0.1*gr,temp_avg=1,tv_range=true)
EDIT2: And another variation, less smearing and wobble but again a bit more nervous background. I also replaced StabPlus() with the next videoFred's suggestion, so much better that I removed ex_reduceflicker().

Code:
ffvideosource("noisy_original.mkv")
propSet("_FieldBased",0)

ConvertBits(16)
ex_Luma_Rebuild(15.0, 0.004, 21, tv_out=true)
ConvertBits(8,dither=1)

StabPlus2()
crop(2,2,-6,-2)
SceneStats("Range+Stats")

pref  = ex_autolevels(     true ,true, true,Deflicker=true,tv_out=false)
pref  = ex_autolevels(pref,false,true,false,Deflicker=true,tv_out=false)
pref3 = SMDegrain(tr=3,mode="temporalsoften",blksize=32,thSAD=900,prefilter=pref,str=2,contrasharp=false,refinemotion=false)

bk=SMDegrain(tr=2,mode="temporalsoften",blksize=16,thSAD=400,LFR=false,refinemotion=true,prefilter=pref3)
ft=SMDegrain(tr=2,mode="MDegrain"      ,blksize=16,thSAD=300,LFR=false,refinemotion=true,prefilter=bk)
ex_merge(bk, ft, MotionMask(pref3,scale=10,sharpness=5))

ex_unsharp(0.3)
gr = 1
size = (720/2133.) * 3.3
GrainFactory3mod(g1str=7*gr,g2str=9*gr,g3str=7*gr,g1size=1.7*size,g2size=1.4*size,g3size=1.2*size,g1cstr=0.5*gr,g2cstr=0.3*gr,g3cstr=0.1*gr,temp_avg=1,tv_range=true)
__________________
i7-4790K@Stock::GTX 1070] AviSynth+ filters and mods on GitHub + Discussion thread

Last edited by Dogway; 8th February 2023 at 19:46.
Dogway is offline   Reply With Quote
Old 9th February 2023, 03:31   #2019  |  Link
simple_simon
Registered User
 
Join Date: Feb 2003
Posts: 106
Anybody have an idea what might be causing the horizontal chroma lines in these two screenshots? They don't exist in the source video.

Code:
https://send.cm/d/KEeM
https://send.cm/d/KEeP
This is the script I'm using:
Code:
z_convertformat(pixel_type=last.pixeltype, colorspace_op="170m:709:709:full=>709:709:709:full").propSet("_ColorRange",1)
tfm(mode=1, pp=7)
tdecimate(mode=0, dupthresh=1.4)
lsfplus(strength=60,ss_x=1.5,ss_y=1.5,soft=30,overshoot=1)
removegrain(mode=5)
propSet("_FieldBased",0).deep_resize(960,720,grain=0,qual=2,gpuid=-1,show=false)
prefetch(2)
I thought I had my upscaling routine nailed down but I guess I'm going to have to go back and redo everything again.
simple_simon is offline   Reply With Quote
Old 9th February 2023, 03:57   #2020  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by simple_simon View Post
Anybody have an idea what might be causing the horizontal chroma lines in these two screenshots? They don't exist in the source video.
Move z_convertformat after IVTC. "colormatrix" or similar applied on fields can cause similar issue, because it's applying a progressive transform while still organized in fields. There is an interlaced=true/false switch , but I believe it's non functional. Better just to move it

Last edited by poisondeathray; 9th February 2023 at 03:59.
poisondeathray is offline   Reply With Quote
Reply

Tags
avisynth, dogway, filters, hbd, packs

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 02:07.


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