Versuch mal die CAS Stärke etwas zu senken
Posts by Selur
-
-
Auch wenn Du die Werte von Original DAA verwendest?
Im Vapoursynth (zu faul für Avisynth) mit:
Codeclip = core.std.Crop(clip, left=240, right=240, top=0, bottom=0) # cropping to 1440x1080 # contrast sharpening using CAS clip = core.cas.CAS(clip, sharpness=0.700) # adjusting resolution before resizing clip = core.fmtc.resample(clip, w=1440, h=540, kernel="point", interlaced=False, interlacedd=False) # before YUV420P8 after YUV420P16 # resizing using NNEDI3CL # current: 1440x540 target: 1440x1080 clip = edi_rpow2.nnedi3cl_rpow2(clip, rfactor=2, nsize=3, nns=4) # 2880x1080 # resizing 2880x1080 to 1440x1080 clip = core.fmtc.resample(clip, w=1440, h=1080, kernel="spline64", interlaced=False, interlacedd=False) # before YUV420P16 after YUV420P16 -
Versuch auch mal:
CodeLWLibavVideoSource(...) # oder was auch immer für ein SourceFilter PointResize(1920,540) # PointResize ist hier bewusst gewählt DAA() nnedi3_rpow2(rfactor=2,nsize=6,cshift="spline36resize",fwidth=1920,fheight=1080) # spline36resize könne man auch durch was anderes ersetzen CAS(sharpness=0.70) # 0.7 scheint mir okay -
In AviSynth wäre:
CodeLWLibavVideoSource(...) # oder was auch immer für ein SourceFilter PointResize(1920,540) # PointResize ist hier bewusst gewählt nnedi3_rpow2(rfactor=2,nsize=6,cshift="spline36resize",fwidth=1920,fheight=1080) # spline36resize könne man auch durch was anderes ersetzen CAS(sharpness=0.70) # 0.7 scheint mir okay
das was mir vorschwebt.
Cu Selur -
Sorry, keine E-Mailbenachrichtigung bekommen und voll vergessen.

Mal versucht: Zu Downsizen (die Höhe zu halbieren) und dann wieder zu mit NNEDI3 upscalen (+ CAS)?
-
Quote
Habe mich lange mit den Chat-KIs unterhalten und kam zu diesem Ergebnis:
¯\_(ツ)_/¯
Das PureVerticalDAA was Du da hast ist ein modifiziertes DAA zu sein, was mehrere Pässe macht. DAA_core ist ein leicht modifiziertes:Codefunction daa(clip c) { nn = c.nnedi2(field=-2) dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3) dblD = mt_makediff(c,dbl,U=3,V=3) shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3) # das Original verwendet 11 bei SD und 20 bei HD DD = shrpD.repair(dblD,13) return dbl.mt_adddiff(DD,U=3,V=3) }
was dann einfach passes-Mal angewerndet wird,.....Was Du also machst ist 3x DAA anwenden,... sehe da nichts besonderes.
¯\_(ツ)_/¯QuoteHabt ihr da Anmerkungen? Kann man die Funktionen noch verbessern, oder was weglassen?
Ohne Quellmaterial würde ich empfehlen vielleicht mal andere AA filter noch anzutesten.
(https://web.archive.org/web/2025120604…xternal_filters z.B. Santiag)
Cu Selur -
Hab mal seedvr2 (3b model) auf suzie los gelassen: https://www.mediafire.com/file/om01w74n8…vr2_3b.mp4/file
Cu Selur
-
Ja, uncompressed ist verlustfrei, aber halt ohne flags, da diese nicht zu den eigentliche Videodaten gehören.
Quoteinterleave zu progressive ist aber sc73+sse oder?
Filternzum Capturen: Ja, da man da Filtern müsste und meist ist ein späteres Filtern zu bevorzugen. (um mehr Kontrolle über das Filtering und die Qualität des Outputs zu haben)Normalerweise sollte man in ein komprimiertes lossless Format capturen.
Quotesoll später am TV wiedergegeben werden.
Du hast die Wahl:
a. Capture direkt in ein Format was Dein TV oder MediaPlayer versteht, hier fällt lossless und uncompressed i.d.R. raus.
oder
b. Capure in ein intermediate format, idealerweise lossless. (dies wäre dann auch zum Archivieren tauglich) Filtere und reencode das aufgenommene Material in ein Format, was dem Dein TV oder MediaPlayer versteht. -
Es gibt i.d.R. zwei Orte für Videotags:
a. im Videostream selber, was bei RAW Video wegfällt
b. im Container, soweit dieser sie unterstützt, avi unterstützt nicht, was du willst
=> Entweder anderen Container (z.B. MKV) oder anderes verlustfreies Videoformat (z.B. ffv1) verwenden, oder selber wissen was wo einzustellen ist bei der Weiterverarbeitung. -
An sich schon, aber man müsste quasi die gleichen Werte dort eingeben wie in der Datei, sprich lohnt nicht wirklich.
Falls das noch mehr Benutzer brauchen kann ich da was für schreiben, aber aktuell erscheint es mir ziemlich exotisch.
Nebenbei: Hybrid erstellt standardmäßig, bereits ein qp-file, wenn die Quelle Kapitelmarken hat und keines manuell gesetzt ist.
(x264->Misc->Automatically->Create qp file for chapters)
Cu Selur -
zu 1.:
x264 hat zones und ein qpfile.Code
Display More--zones <zone0>/<zone1>/... Tweak the bitrate of regions of the video Each zone is of the form <start frame>,<end frame>,<option> where <option> is either q=<integer> (force QP) or b=<float> (bitrate multiplier) --qpfile <string> Force frametypes and QPs for some or all frames Format of each line: framenumber frametype QP QP is optional (none lets x264 choose). Frametypes: I,i,K,P,B,b. K=<I or i> depending on open-gop setting QPs are restricted by qpmin/qpmax.
=> Zones setzen keine Frame Typen, dazu würde man ein qpfile nutzen.
Unter "x264->Quantization->Custom qp file" kann man ein eigenes qp file verwenden.
zu 2.:
In Vapoursynth (Avisynth geht vergleichbar), könnte man sowas wie:
1.Codeblack = core.std.BlankClip(clip) clip = core.std.Splice([ clip[:10], # 0-9 normal black[10-20], # 1000-19 schwarz clip[20:59], # 20-49 normal black[50:100], # 50-99 schwarz clip[100:] # 100-ENDE normal ])
simple und schnell, aber sowohl schwarze als auch normale Intervalle müssen angegeben werden
oder
2.Code
Display Moreblack = core.std.BlankClip(clip) intervals = [ (10, 20), (50, 100), ] def turnblack(n, f): for start, end in intervals: if start <= n < end: return black.get_frame(n) return f out = core.std.ModifyFrame(clip, clip, turnblack)
etwas langsamer, aber nur schwarze Intervalle müssen angegeben. Jedoch mit expliziten Start-&EndFrame.
in einer Custom Section verwenden.
Custom Letterboxing könnte man analog machen, erscheint mir aber alles zu exotisch, als dass ich dafür extra UI-Elemente in Hybrid anlegen würde.
Cu Selur -
Schlechte Lagerung kann sein.
Eventuell Feuchtigkeit gezogen.
Vielleicht schwankende Bandspannung oder andere Gründe, die dafür sorgen, dass das Band nicht sauber/gleichmäßig läuft.
Mal komplett durchgespult und wieder zurück?
Idee zur Nachbearbeitung würde eine möglichst verlustfreies Sample deiner Aufnahme.
Cu Selur -
Die einzigen zwei freien MPEG-2 Encoder die mir so in den Sinn kommen sind x262 und ffmpegs mpeg-2 encoder und wenn ich mich recht entsinne sind beide nicht soo dolle. (+ der Mangel an Wissen rund um Containeroverhead&Co bei MPEG-2 wäre ja immer noch da)
=> MPEG-2 ist für Hybrid nicht geplant

-
Quote
mir ist aufgefallen, das kein MPEG2 für DVD-Video dabei ist.
wobei, seit ich HD-Videos für hardwareplayer codiere, ich keine DVD mehr erstellt habe...
Ja, mpeg-2 als Output wird nicht unterstützt.
Da ich kaum Ahnung habe, was ein guter freier MPEG-2 encoder ist, wie man ihn ordentlich einstellt und den ContainerOverhead von Audio&Video berechnen würde in unterschiedlichen Containern.Quoteder codecs wie der VVC codec, sind zwar vorhanden, aber nicht in der auswahl gelistet,
hat das ein grund?
Hatte mal angefangen dafür Code zu schreiben, ihn aber bis dato nicht aktiviert. -
Großteil liegt an:
- den Vapoursynth Filtern (3,23GB) , insb.
- RIFE mit 1,45GB.
- DFTTest2 mit ca. 366MB
- BilateralGPU ca. 93MB
- TimeCube&Co ca. 465MB (da viele .cube files enthalten sind)
- Encoder&Co ca. 1GB (da nicht gepackt; 200MB allein für NVEncC)
- Avisynth 64bit ca. 324MB
[Blocked Image: https://i.ibb.co/pr0XW1m6/grafik.png]
Hybrid selber ist ca. 30MB groß und dazu kommen ca. 50MB an dlls.
Und falls man dann die Add-ons noch installiert, wird es halt noch größer.
Der Großteil geht halt vor allem für die GPU basierten Filter und ihre Abhängigkeiten drauf.
=> Problem ist halt zu entscheiden: Was sind 'die gänigsten tools' ?
Cu Selur
Ps.: Mein Hybrid-Ordner mit den AddOns und ein paar anderen Sachen (u.a. mehr modelle für vsgan&vsmlrt) ist entpackt ca. 80GB groß.
- den Vapoursynth Filtern (3,23GB) , insb.
-
2025.11.09.1:
*fixed*- Vapoursynth: masking not working
- Vapoursynth: DGDenoise luma minimum
- Vapoursynth: MClean vcm dependency for veed
-> downloads: http://www.selur.de/downloads
Cu Selur
-
2025.11.08.1:
*changed*- Vapoursynth: allow multiple in-/outputs in custom sections
- Vapoursynth: adjusted to Anime4k v3
- Vapoursynth: SCUNet FP16 support
- Vapoursynth: luma scaling handling
- Vapoursynth: FilterQueue + Deinterlace
- Vapoursynth: filter support simplification
- Vapoursynth: vsMLRTFilter/vsVSGANFilter: configure undo-resizer (torch/mlrt)
- Vapoursynth: vsDPID: support RGBS
- FFmpeg: speedChange set '-r' before and after input
- Vapoursynth: adjust to HAVC update (torch)
- Vapoursynth: support dynamic shapes (mlrt)
- Vapoursynth: ResampleHQ HDR option
- Vapoursynth: torch BasicVSR++ filter scene_aware
- tons of code refactored
*fixed*- Vapoursynth: FilterQueue + Interpolate or TDecimate filter
- Vapoursynth: vs-mlrt. VSMLRT-Filter call
- NVEnC: maxFALL not properly read from input
- Monitoring: handling of monitored inputs
- Vapoursynth: mclean tcanny dependency
- Vapoursynth vsSantiagAA limit range 0-128
- Vapoursynth: vsCCD typo temporal_radius
- Audio: limitAudioAll lang/type controls
- Vapoursynth: converting to RGB force pc scale
- Vapoursynth: SSMD on HDR content
-> downloads: http://www.selur.de/downloads
Cu Selur
Ps.: Dropped Ubuntu package release, created an AppImage which hopefully works.
-
Also, ich habe eine Quelle
Color space: YUV420P8, Bit depth: 8, Auflösung: 720x480, Framerate: 29.97fps, Scanorder: bottom field first, YUV Luminance scale: limited, Matrix: 470bg, format: mpeg-2
Wenn ich die diese Quelle mit TDeint bob deinterlaceCodeclip = core.tdm.TDeintMod(clip=clip, order=0, mode=1) # new fps: 59.94 # Making sure content is preceived as frame based clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
habe ich einen clip mit
Color space: YUV420P8, Bit depth: 8, Auflösung: 720x480, Framerate: 59.94fps, Scanorder: progressive, YUV Luminance scale: limited, Matrix: 470bg
bei dem jedes Field (720x480) zu einem Frame (720x480) interpoliert wurde.
Aufgabenstellung:
Wie kann ich dies nun wieder rückgängig machen, also in "Auflösung: 720x480, Framerate: 29.97fps, Scanorder: bottom field first" umwandeln, und möglichst wieder meine original Fields zurückzubekommen? (Ich weiß, dass TDeint die Originalfields auch ändert, aber das vernachlässige ich bewusst und gehe davon aus, es würde dies nicht tun.)
Meine aktuelle Lösung:Code
Display More# initial clip has 150 interlaced frames with 720x480 @ 30000/1001, scan type: bff # converting interlaced to full-height progressive for filtering clip = core.tdm.TDeintMod(clip=clip, order=0, mode=1) # new fps: 59.94 # Making sure content is preceived as frame based clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive # converting full-height progressive to interlaced before deinterlacing clip = core.std.SeparateFields(clip=clip, tff=True) clip = core.std.DoubleWeave(clip=clip, tff=True) # resolution 720x480 clip = core.std.SelectEvery(clip=clip, cycle=4, offsets=[0, 1]) clip = core.std.SelectEvery(clip=clip, cycle=2, offsets=[1]) clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_BOTTOM) # bff clip = core.std.AssumeFPS(clip, fpsnum=30000, fpsden=1001) #clip = core.std.Interleave([org.text.Text("ORG"), clip.text.Text("Filtered")])
bzw.Code
Display More# initial clip has 150 interlaced frames with 720x480 @ 30000/1001, scan type: tff # converting interlaced to full-height progressive for filtering clip = core.tdm.TDeintMod(clip=clip, order=1, mode=1) # new fps: 59.94 # Making sure content is preceived as frame based clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive # converting full-height progressive to interlaced before deinterlacing clip = core.std.SeparateFields(clip=clip, tff=True) clip = core.std.DoubleWeave(clip=clip, tff=True) # resolution 720x480 clip = core.std.SelectEvery(clip=clip, cycle=4, offsets=[0, 1]) clip = core.std.SelectEvery(clip=clip, cycle=2, offsets=[1]) clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.TOP_BOTTOM) # tff clip = core.std.AssumeFPS(clip, fpsnum=30000, fpsden=1001) #clip = core.std.Interleave([org.text.Text("ORG"), clip.text.Text("Filtered")])
(das einzige, was sich ändert, ist die order bei TDeint und der _FieldBased-Wert bei letzten SetFrameProps)
scheint zu klappen.
=> Frage: Gibt es eine einfachere Methode Bob Deinterlacing 'rückgängig' zu machen? (in Vapoursynth, nicht Avisynth)
Cu Selur -
Linux User, bitte mal testen.
DankeCu Selur
-
Der Clip ist nicht interlaced => deinterlacing bringt nix.