INFO: Diese Anleitung bezieht sich auf die madVR-Versionen v0.87.21 und niedriger und ist somit veraltet! Ich werde sie nicht aktualisieren, da ich mittlerweile auf mpv umgestiegen bin.

Videowiedergabe mit madVR



Inhaltsverzeichnis


Vorwort

Da mir in letzter Zeit immer wieder aufgefallen ist, dass der Großteil der Leecherschaft zur Videowiedergabe einfach CCCP installiert hat und auch die meisten Subgruppen ohne weiteren Kommentar auf dieses Codec‑Pack verweisen, habe ich mir überlegt ein umfassendes Tutorial zu schreiben, wie man die bestmögliche Bildqualität erreicht und den Player an seine persönlichen Bedürfnisse anpasst.

Natürlich ist CCCP nicht komplett fürn Arsch. Im Gegenteil, wenn ihr alle Verschlimmbesserungsfilter eurer Grafikkarte ausschaltet, habt ihr einen brauchbaren Player, der korrekte Farben abliefert. Nur leider wird das bei den CCCP‑Empfehlungen so gut wie nie erwähnt, sodass viele einen Player benutzen, der falsche Farben liefert, überschärft und diese berühmt‑berüchtigten Banding‑Artefakte auf den Bildschirm zaubert.

Die folgenden Bilder wurden mit den Standardeinstellungen (!) des AMD‑Treibers gemacht. Wenn ihr mit der Maus drüberfahrt, seht ihr, wie es eigentlich aussehen soll (wenn ALLE Filter deaktiviert sind).


Wer also die Filter abstellt, der fährt schon ziemlich gut. Aber es geht noch besser. Wir wollen einen Player, der in allen Situationen das „richtigere“ Bild abliefert und in hohem Maße konfigurierbar ist. Glücklicherweise lässt sich das alles mit MPC‑HC + madVR realisieren.

Die einzige gute Alternative dazu wäre mpv. Nur leider fehlen diesem Player ein paar Key‑Features von madVR. Gattix hat für diesen Standalone‑Player einen simplen Setup‑Guide geschrieben: Link

Fragen, Anregungen und Kritik bitte an Frechdachs @ euIRC.

Basiswissen

Aufbau eines Players

Die wesentlichsten Bestandteile eines Videoplayers sind:

  • Demuxer (Dieser teilt die Videodatei (zB .mkv) in Videostream, Audiostream und Untertiteldatei auf.)
  • Audio‐ und Videodecoder (Diese wandeln Audio und Video in unkomprimierte Rohdateien um, damit sie der Renderer lesen kann.)
  • Renderer (Dieser zeichnet vereinfacht gesagt das Bild schlussendlich auf den Bildschirm.)

MPC‑HC hat für das alles schon eigene Lösungen integriert, doch werden wir die durch Besseres ersetzen:

  • LAV Filters
    • LAV Splitter (Demuxer)
    • LAV Video (Videodecoder)
    • LAV Audio (Audiodecoder)
    (Mittlerweile standardmäßig in MPC‑HC enthalten.)
  • XySubFilter (Untertitelrenderer)
    (Scrollt etwas runter und ladet euch XySubFilter .zip Archive (32‑bit) unter Preview Release.)
  • madVR (Videorenderer)

Alternativ zu XySubFilter könnte man auch xy‑VSFilter verwenden, allerdings läuft XySubFilter komplett über madVR und wird auch damit skaliert, was sehr vorteilhaft sein kann. Wenn man will, kann man sich die Untertitel mit XySubFilter auch auf Desktopauflösung rendern lassen.

Vorteile von madVR

MadVR gilt momentan aus guten Gründen als der beste Renderer in Windows. Er bietet:

  • hochqualitatives chroma upsampling,
  • hochqualitative Videoskalierung mit großer Auswahl an unterschiedlichen Algorithmen,
  • hochqualitative Umwandlung von YCbCr in RGB,
  • flüssiges Abspielen von Videos mit 24 fps (smooth motion),
  • 16‑Bit‑Genauigkeit während der gesamten Verarbeitungskette
  • und Auslagerung fast aller Rechenprozesse auf GPU‑Shader.

Das Problem mit YCbCr

Um die Vorteile besser zu verstehen, muss man sich erst einmal vor Augen führen, wie so ein Videostream überhaupt aufgebaut ist. Den meisten wird das RGB‑Farbmodell ein Begriff sein. Es gibt jeweils einen Farbkanal für Rot, Grün und Blau, wobei jeder Kanal die Auflösung des Videos oder des Bildes hat. Bei Videos wird so gut wie immer das YCbCr‑Farbmodell verwendet. Dieses besteht aus einem Helligkeitskanal (Y), der quasi nur ein Schwarz‑Weiß‑Bild enthält, und zwei Farbkanälen (Cb (Blue‑Yellow Chrominance) und Cr (Red‑Green Chrominance)). In diesem Modell kommt in der Regel ein Verfahren zum Einsatz, das sich Farbunterabtastung (chroma subsampling) nennt. Es wird die Tatsache ausgenutzt, dass das menschliche Auge Helligkeitsinformation wesentlich deutlicher wahrnimmt als Farbinformation; deshalb können die Farbkanäle mit geringerer Abtastrate, sprich mit geringerer Auflösung gespeichert werden. Für die Farbunterabtastung gibt es mehrere Formate, das üblichste – welches auch bei all euren Animus zum Einsatz kommt – ist 4:2:0. Der Cb‐ und der Cr‑Kanal werden dabei mit halbierter vertikaler und horizontaler Auflösung gespeichert; das würde bei einem 1080p‑Video einer Auflösung von 960 x 540 entsprechen; 640 x 360 bei 720p. (Der Y‑Kanal bleibt in der originalen Auflösung.) Das ist noch ein Überbleibsel aus Analogzeiten, damals konnte man damit einiges an Bitrate einsparen. Bei digitalem Video ist das weniger relevant. Beispielsweise arbeitet der x264‑Encoder in vielen Fällen ohne Farbunterabtastung etwas effizienter.
Damit unser Monitor das Bild wiedergeben kann, muss YCbCr in RGB umgewandelt werden. Das Problem ist leider, dass die Umwandlung Gleitkommazahlen ausspuckt! Das lässt sich so nicht übertragen und muss auf Integerzahlen irgendeiner Farbtiefe gebracht werden; und das passiert in madVR durch Dithering.

Nachteile?

Folgendes hört man ziemlich oft:

Meine Kartoffel ist zu langsam für madVR!
Wer Netbooks kauft, ist selber schuld.

Das Bild, das madVR liefert, ist nicht repräsentativ für das tatsächliche Video!
Bwahahahaha!

Da nun alle Argumente gegen madVR ausführlich widerlegt wurden, steht dem Setup nichts mehr im Wege ...

Vorbereitung

Zuallererst deinstalliert mal alle Codecpacks und Codecs, sofern ihr welche installiert habt. (Ein anschließender Neustart kann nie schaden.) Standalone‑Player wie VLC oder mpv könnt ihr am System lassen.

Installiert die 32‑Bit‑Version von MPC‑HC (wichtig, weil madVR momentan nur in 32‑Bit zur Verfügung steht) und ladet euch madVR und XySubFilter über die oben genannten Links herunter.

Entpackt beide .zip‑Archive in jeweils einen Ordner und führt die install_XySubFilter.bat im XySubFilter‑Ordner und die install.bat im madVR‑Ordner aus. (Rechtsklick → Als Administrator ausführen) Nach der Installation dürfen die Ordner nicht mehr verschoben oder gelöscht werden.

Konfigurieren von MPC‑HC

Startet MPC‑HC, drückt O um die Optionen zu öffnen und navigiert gleich zu Programm → Formate. Hier wählt ihr einfach alles aus, was ihr gerne direkt mit MPC‑HC öffnen wollt.

Unter Tasten könnt ihr die Tastenbelegung ändern und unter Logo das Standardbild, das immer angezeigt wird, bevor ein Video in MPC‑HC geöffnet wird.

Unter Wiedergabe unbedingt das Häkchen bei Internen Untertitel‑Renderer verwenden rausmachen! Schließlich werden wir später XySubFilter verwenden.

Unter Wiedergabe → Ausgabe einfach madVR aus der Dropdownliste bei Video‑Renderer auswählen.

Schlussendlich muss noch XySubFilter in MPC‑HC eingebunden werden. Dazu geht man zu Externe Filter, drückt rechts oben auf Hinzufügen..., wählt XySubFilter aus der Liste aus und stellt das Ganze dann auf Bevorzugen. (LAV Filters braucht ihr wie bereits gesagt nicht extra hinzuzufügen. Die sind mittlerweile in MPC‑HC als interne Filter enthalten.)

Ansonsten gibt es noch zahlreiche Einstellungen, die das Playerverhalten verändern. Die kann man natürlich auch nach seinen individuellen Vorlieben anpassen.

Konfigurieren von XySubFilter

Standardmäßig rendert XySubFilter die Untertitel in Desktopauflösung. Das kann dazu führen, dass Typeset bei 720p‑Videos etwas schärfer angezeigt wird, als es sein sollte. Ehrfahrungsgemäß ist das nur in den seltensten Fällen wirklich sichtbar. Wenn ihr aber sichergehen möchtet, könnt ihr das Rendern auf Videoauflösung aktivieren, ansonsten überspringt einfach diesen Abschnitt.

Öffnet irgendein Video, das auch eine Untertitelspur enthält. Jetzt müsste im Tray eurer Taskleiste ein Symbol erscheinen, das wie ein grüner Pfeil aussieht. Das doppelklickt ihr, wechselt auf den Reiter More und macht bei Render To Original Video Size ein Häkchen.

Konfigurieren von madVR

MadVR lässt uns von allen Renderern bei weitem die meisten Freiheiten und genau das ist das Tolle an ihm. So was wie die „besten“ Einstellungen gibt es nicht. Alles hängt von euren persönlichen Vorlieben bzw. der Leistung eures Rechners ab. Darum werden im Folgenden die wichtigsten Optionen nur erklärt und allerhöchstens eine Empfehlung gegeben. Die Kalibrierung des Monitors, die madVR anbietet, werde ich nicht behandeln und die Skalieralgorithmen werden erst ganz zum Schluss besprochen, da es das umfangreichste Thema ist.

Öffnet ein Video in MPC‑HC, rechtsklickt es und wählt Filter → madVR → Edit Settings. (Alternativ könnt ihr die Einstellungen auch über das Tray‑Icon aufrufen.)

Unter devices wird festgelegt, wie das Bild am Ende an den Monitor übergeben wird. In den meisten Fällen muss hier nichts geändert werden, aber eine Sache gibt es dennoch zu beachten:

Hier muss angegeben werden, welche color range euer Monitor erwartet und welche Farbtiefe er darstellen kann. Fast jeder PC‑Monitor erwartet PC‑Level (0–255) und unterstützt eine Farbtiefe von 8 Bit, allerdings haben ältere Modelle oft nur ein 6‑Bit‑Panel. Schaut am besten im Datenblatt eures Gerätes nach, welche Farbtiefe dargestellt werden kann. Im Zweifelsfall so hoch wie möglich setzen. Fernseher unterscheiden sich da schon mehr; manche erwarten TV‑Level  (16–235), andere können auch mit PC‑Level umgehen. Auch hier solltet ihr euch erkundigen, wie das euer Gerät handhabt. Fernseher, die PC‑Level akzeptieren, können wir wie einen PC‑Monitor behandeln. Wenn nur TV‑Level unterstützt werden, haben wir zwei Möglichkeiten:

  1. madVR auf TV‑Level und die Ausgabe im Grafikkartentreiber auf full range (0–255)
  2. madVR auf PC‑Level und die Ausgabe im Grafikkartentreiber auf limited range (16–235)

Allein für Videowiedergabe ist die erste Möglichkeit die beste. Hierbei wird das Video durch madVR in den richtigen Farbraum gebracht. Leider haben wir dann zerficktes Weiß und Schwarz im restlichen Windows.
Die andere Option hat dieses Problem nicht, ist aber eher suboptimal für die Videowiedergabe, da der Farbraum durch die Grafikkarte umgewandelt wird. Da können wir nur hoffen, dass die alles richtig macht.

Processing → decoding könnt ihr ignorieren, das Dekodieren übernimmt LAV Filters.

Deinterlacing sollte nicht schaden, wobei ihr wahrscheinlich in den seltensten Fällen Videos im Zeilensprungverfahren abspielen werdet.

Debanding solltet ihr nur aktivieren, wenn es wirklich notwendig ist. Ein Video mit deutlich sichtbaren Banding‑Artefakten kann davon durchaus profitieren.

Alle Einstellungen unter rendering → general settings haben keine Auswirkung auf die Qualität, können aber unter Umständen die Performance verbessern. Da hilft nur ausprobieren, um zu sehen, ob man die Renderzeiten vielleicht um ein paar Millisekunden senken kann. Während des gesamten Konfigurationsprozesses solltet ihr immer eure Renderzeiten im Auge behalten. Diese könnt ihr euch anzeigen lassen, indem ihr beim Abspielen eines Videos mit Strg+J das OSD aufruft. Im Unterpunkt rendering unter average stats und max stats findet man die Renderzeit. Bei Videos mit ungefähr 24 fps, wie es auch bei Animes Standard ist, sollte die Renderzeit 40 ms nie überschreiten. Achtet auch darauf, ob euch im OSD dropped frames angezeigt werden. Es kann vorkommen, dass beim Seeken oder Starten eines Videos ein paar Frames gedroppt werden, das ist nicht so tragisch; wichtig ist, dass das nicht passiert, wenn man das Video einfach nur durchlaufen lässt. Diese Tests immer im Vollbildmodus durchführen, sonst laufen die Skalieralgorithmen nicht durch! Verlasst euch aber nicht blind auf die Anzeige der Renderzeit und gedroppten Frames. Ich hatte einmal einen Fall, bei dem die Renderzeit knapp unter 40 ms lag und mir keine gedroppten Frames angezeigt wurden; beim Schauen sind mir dann doch noch minimale Lags aufgefallen. Eure Augen sollten also immer das letzte Wort haben.

Enable automatic fullscreen exculsive mode ist standardmäßig aktiviert und bewirkt, dass das Video in richtigem Vollbild angezeigt wird. Ist diese Option deaktiviert, ist der Player auch bei Vollbild noch im (randlosen) Fenstermodus. Der Vorteil davon ist, dass es kein nerviges Geflackere beim Wechseln in Vollbild gibt. Allerdings scheinen vor allem Nutzer von AMD‑Karten Tearing im Fenstermodus zu beobachten. Ich besitze eine AMD‑Karte und bin glücklicherweise nicht von diesem Problem betroffen.

Wenn madVR instabil läuft, kann es nicht schaden, ein bisschen an der queue size rumzufummeln. Beispielsweise hat es bei einem älteren Notebook von mir geholfen, die GPU queue size auf 6 zu senken. Davor hatte ich andauernd unschöne Rendering‑Fehler. In den meisten Fällen ist es aber besser, nichts daran zu verändern.

Auch hier sind die vordefinierten Einstellungen schon gut gewählt. Wenn ihr später smooth motion aktiviert, solltet ihr die Anzahl der vorgerenderten Frames auf mindestens 8 stellen, was aber ohnehin schon voreingestellt ist. Falls madVR bei euch instabil läuft, kann es helfen, alles auf flush zu stellen, ansonsten sollte auch hier nichts verändert werden.

Unter exclusive mode settings finden sich fast dieselben Einstellungen, nur gelten diese eben für den fullscreen exclusive mode. Zusätzlich gibt es noch die Optionen show seek bar und delay switch to exclusive mode by 3 seconds, welche genau das tun, was deren Namen suggerieren.

Smooth motion ist einer der Hauptgründe, warum für mich kein anderer Renderer als madVR in Frage kommt, denn der 23,976‑fps‑Standard bei Animes lässt es nicht zu, diese auf 60‑Hz‑Monitoren flüssig abzuspielen. Damit ein Video auf einem Monitor flüssig abgespielt werden kann, muss die Bildwiederholfrequenz des Bildschirms ein ganzzahliges Vielfaches von der des Videos sein. Das trifft bei 23,976 fps im Falle eines 60‑Hz‑Monitors leider nicht zu und man hat ständig diese Mini‑Lags, die vor allem bei langsamen Kameraschwenks unheimlich stören. MadVRs smooth motion soll dem entgegenwirken. Dabei werden die einzelnen Frames nicht mehr direkt nacheinander ausgegeben, sondern es wird von einem Frame zum nächsten überblendet. Der Nachteil davon ist eine gewisse Bewegungsunschärfe, die bei 24 fps → 60 Hz wirklich minimal ist. Die Grundregel lautet: Je niedriger die Bildwiederholrate der Quelle und je höher die Bildwiederholrate des Ziels ist, desto geringer fällt der Schärfeverlust aus. Zudem sind wir durch Filme in Sachen Bewegungsunschärfe sowieso schon abgehärtet, Lags im Bild sollten für die meisten von euch wesentlich störender sein. Ich wage sogar zu behaupten, dass dieser Effekt auf LCDs mit starkem Ghosting gar nicht erst erkennbar ist. Wie immer gilt: Selbst ausprobieren und schauen, ob es euch gefällt.
Bitte verwechselt Frame Blending nicht mit dem, was man klassischerweise als Frame‑Interpolation kennt!

Da die gesamte Verarbeitungskette in 16 Bit stattfindet, muss am Ende wieder auf 8 Bit runtergedithert werden. Hier sind eigentlich alle Einstellungsmöglichkeiten außer None empfehlenswert. Wenn ihr genau wissen wollt, wie die Charakteristika der verschiedenen Ditheralgorithmen aussehen, könnt ihr wieder zurück zu devices → <euer Monitor> → properties gehen und die Farbtiefe auf zB 4 Bit stellen. Dann wird eben auf 4 Bit runtergedithert, was das Dither‑Pattern sehr auffällig macht.

Trade quality for performance tut exakt das, was man erwartet. Jede Option senkt mehr oder weniger die Qualität, um die Renderzeit um ein paar Millisekunden zu verkürzen.

Skalieralgorithmen

MadVR bietet eine Riesenauswahl an Skalieralgorithmen, welchen ihr davon verwendet, hängt allein von euren persönlichen Vorlieben und der Leistung eures PCs ab. Am Ende dieses Kapitels findet ihr noch Screenshotvergleiche, die euch die Entscheidung erleichtern sollen; ich empfehle aber, sich alles auch in Bewegung anzuschauen, da vieles auf Standbildern einfach nicht zu sehen ist und ich unmöglich jede einzenle Kombinationsmöglichkeit behandeln könnte.

Unter chroma upscaling legt ihr den Algorithmus fest, mit dem der Cb‐ und Cr‑Kanal auf die Auflösung des Y‑Kanals hochskaliert werden. Wie wir bereits wissen, nehmen wir Farbinformation viel schlechter wahr als Helligkeitsinformation. Dementsprechend hat die Wahl des Algorithmus in diesem Fall nur eine sehr geringe Auswirkung auf die subjektive Bildqualität. Achtet also darauf, dass ihr zuerst die passende Methode bei image upscaling wählt; wenn dann noch leistungsmäßig Luft nach oben ist, könnt ihr auch hier eine rechenintensivere wählen.

Die Algorithmen sind schon nach benötigter Rechenleistung geordnet, der leistungshungrigste ganz unten.

Die Wahl der Skalierungsmethode ist immer ein Kompromiss zwischen:

  • Schärfe,
  • Ringing in Form von Halos (Doppelkonturen)
  • und Aliasing, das sich in stufigen Konturen äußert.

Je höher ihr die taps setzt, desto schärfer wird das Bild auf Kosten von mehr Ringing.

Der Anti‑Ringing‑Filter reduziert Ringing, kann aber zu einem geringen Schärfeverlust führen.

Zusätzlich zu den klassischen Skalieralgorithmen bietet madVR auch NNEDI3 an. Das ist eigentlich ein Deinterlacer, der sich aber auch in vielen Fällen wunderbar zum Hochskalieren eignet. Allerdings kann damit nur die horizontale und vertikale Auflösung verdoppelt werden. Ein 720p‑Video wird somit auf 1440p hochskaliert, was dann wieder mit dem Algorithmus, den ihr in image downscaling gewählt habt, auf 1080p gebracht wird; und andersherum, wenn ihr NNEDI3 über SD‑Material laufen lasst, wird das, was auf 1080p fehlt, mit dem Algorithmus hochskaliert, den ihr in image upscaling gewählt habt. (Vorausgesetzt ihr habt einen 1080p‑Monitor.)

NNEDI3 hat keine taps, sondern neurons, und im Gegensatz zu dem Erstgenannten bedeuten mehr Neuronen tatsächlich besseres Bild, wobei sich die Renderzeit bei jeder Erhöhung der Neuronenzahl beinahe verdoppelt! Setzt die Neuronen also so hoch, wie es euer Rechner hergibt, wenn ihr NNEDI3 verwenden wollt.

Die horizontale und vertikale Auflösung lässt sich auch vervierfachen, dabei wird NNEDI3 einfach ein zweites Mal angewandt. Das ist natürlich nur bei SD → 1080p sinnvoll. Ihr könnt wählen, ab welchem Vergrößerungsfaktor NNEDI3 verwendet wird. NNEDI3 auf die Farbkanäle (Chroma) anzuwenden halte ich für ziemlich sinnfrei, da ihr eure GPU mit NNEDI3 auf dem Helligkeitskanal (Luma) ohnehin schon komplett ausreizen werdet, und der ist wesentlich wichtiger als Cb und Cr.

Unter image upscaling und image downscaling gibt es zusätzlich noch scale in linear light. Diese Option ist momentan nicht wirklich nützlich, da sie anscheinend mit den verfügbaren Skalieralgorithmen nicht sonderlich gut funktioniert. Über den theoretischen Nutzen von Linear Light Scaling könnt ihr euch hier informieren.

Welcher Algorithmus sich hinter DXVA2 verbirgt, hängt von eurer Grafikkarte ab. Bei meiner HD 7870 schaut es verdächtig nach Bilinear aus.

Jinc (aka EWA Lanczos) ist unter image downscaling nicht verfügbar. Downscaling ist laut madshi, dem madVR‑Entwickler, mit Jinc durchaus möglich, wurde von ihm aber noch nicht implementiert, da die Umsetzung nicht ganz so trivial ist wie beim Upscaling.

Vergleich 1

Da meine Vergleiche auf BakaCOMPARE gelöscht wurden (vermutlich, weil ich keine Releases vergleiche), gibt es an dieser Stelle eine eigene, auf die Schnelle erstellte Lösung, die ist zwar nicht ganz so sexy, aber sie erfüllt ihren Zweck. Mit den Tasten, die in den eckigen Klammern gekennzeichnet sind, könnt ihr schnell zwischen den Bildern hin und her schalten (was auch notwendig ist, wenn ihr den unteren Teil der Bilder vergleichen wollt).

→ Bilder

Schauen wir uns erst mal eine SD‑Quelle an, da dort die Unterschiede der Skaliermethoden sofort ins Auge fallen. Außerdem zeigt dieser Frame auch die Nachteile von NNEDI3 auf, die zum Glück nicht immer sichtbar sind.

Dass man Nearest Neighbor unter allen Umständen vermeiden sollte, wird euch sicherlich gleich auffallen. Bei allen anderen Algorithmen ist es eher Geschmackssache. Bilinear ist sehr, sehr weich und hat extremes Aliasing, allerdings so gut wie kein Ringing. Bicubic ist dagegen wesentlich schärfer, hat weniger Aliasing, dafür aber viel Ringing. Mitchell‑Netraval scheint irgendwo dazwischen zu liegen. Noch ein wenig schärfer als Bicubic sind Spline und Lanczos. Diese führen auch zu noch weniger Aliasing. Generell sind sich die beiden aber unheimlich ähnlich. Jinc ist mir persönlich von den klassischen Skaliermethoden die Liebste. Die ist leider nicht so scharf wie Spline und Lanczos, hat aber DEUTLICH weniger Aliasing.

Das Ringing bei den schärferen Algorithmen lässt sich durch den Anti‑Ringing‑Filter (AR) eigentlich ganz gut in den Griff kriegen. Der Schärfeverlust hält sich in Grenzen und andere Nachteile sind auch nicht erkennbar. Zuerst dachte ich, dass die Konturen in der Haarschleife der Brünetten durch den Anti‑Ringing‑Filter etwas ausgedünnt werden, allerdings ist das bei den weichen Algorithmen auch so, weshalb die dickeren Konturen wohl doch nur Ringing‑Artefakte sind.

Die Vorteile von NNEDI3 sind ziemlich offensichtlich: kein Aliasing, die schärfsten Konturen und kein Ringing (außer das, was schon in der Quelle vorhanden war). In diesem Falle wurde das Video mit NNEDI3 auf eine Auflösung von 1696 x 960 gebracht und danach mit Jinc3 ohne AR auf 1080p hochskaliert.) NNEDI3 ist aber leider nicht perfekt, denn vor allem an den Schriftzeichen sieht man, dass NNEDI3 dazu neigt, bei Strichen, die beinahe parallel zu den Bildschirmrändern verlaufen, Linien zu verbinden, die nicht zusammengehören. Das macht die Schriftzeichen an manchen Stellen leider dicker, als sie sein sollten. Außerdem funktioniert das Kantenglätten bei „schwierigen“ Winkeln nicht so gut (je weniger Neuronen, desto schlechter), was sich besonders an den gefalteten Händen erkennen lässt. Unter 32 sollte man die Neuronenzahl also meiner Meinung nach nicht setzen. Ebenfalls nervig ist, dass wirklich minimales Aliasing in Konturen während einer Bewegung (zB einem langsamen Zoom aufs Gesicht) nicht zuverlässig entfernt wird. Das gilt nur für Aliasing, das schon in der Quelle vorhanden ist, was aber öfter vorkommt, als ihr vielleicht denkt. Das äußert sich dann in ein bisschen Flackern in den Konturen, das schon auffällt, wenn man genau hinschaut. Glücklicherweise ist dieser Effekt umso geringer, je höher die Neuronenzahl gesetzt ist. Das Problem haben die klassischen Algorithmen nicht, da durch den Blur die Problemstellen kaschiert werden. (Ja, Artefakte können unter Umständen tatsächlich von Vorteil sein.) Vervierfachen würde ich die Auflösung nie mit NNEDI3. Meiner Ansicht nach überwiegen da die negativen Aspekte und das Bild wirkt einfach „plastisch“. NNEDI3 kann halt auch keine Details herbeizaubern. Die Artefakte der anderen Algorithmen sind meist angenehmer bzw. man ist daran gewöhnt.

Andererseits eignet sich NNEDI3 in manchen Fällen auch wunderbar dazu, Artefakte aus schlechten Quellen während des Abspielens zu entfernen. Das gilt vor allem für starkes Aliasing: → Bilder
NNEDI3 schafft es hier wirklich, fast alle Konturen zu glätten, ohne das Bild zu verwaschen!
Mosquito Noise lässt sich damit auch etwas dämpfen: → Bilder
Zugegeben, das Ergebnis ist hier nicht ganz so spektakulär, aber durchaus sichtbar.

ACHTUNG: Verwendet NNEDI3 niemals zusammen mit dem Anti‑Ringing‑Filter oder Linear Light, da das wirklich merkwürdige Artefakte zur Folge hat! Das habe ich bereits hier im madVR‑Thread gemeldet. Weitere Tests wurden dann noch von dem Doom9‑User „6233638“ durchgeführt, die ihr euch hier ansehen könnt. Madshi ist bereits an der Sache dran.
UPDATE: Madshi hat den Bug gefunden und versichert, dass das Problem im nächsten Release behoben sein wird. Allerdings soll es wohl noch ein gutes Weilchen dauern, bis er eine neue Version veröffentlicht.
UPDATE 2: In der aktuellen Version soll dieser Bug nicht mehr auftreten. Ich hatte bis jetzt allerdings noch keine Zeit, das selbst zu testen.

Vergleich 2

→ Bilder

Bei 720p → 1080p sind die Unterschiede weitaus weniger auffällig und auch Ringing ist nicht so ein großes Problem wie bei SD‑Upscales. In diesem Falle stellt sich aber die Frage, ob es überhaupt sinnvoll ist, hier NNEDI3 zu verwenden. Immerhin wird zuerst auf 1440p hochskaliert, nur um es dann wieder auf 1080p runterzuskalieren. Ich finde schon. Die Konturen sind schärfer und trotz AR in den anderen Algorithmen hat das NNEDI3‑Bild weniger Ringing. (NNEDI3 ist hier in Sachen Linendicke und -schärfe am nähesten am 1080p-Original dran.)

Vergleich 3

→ Bilder

In diesem Vergleich schauen wir uns am Beispiel von Lanczos an, welche Auswirkungen die unterschiedlichen tap‑Werte haben können. Im Grunde liefern höhere tap‑Werte ein schärferes Bild, verursachen aber gleichzeitig mehr Ringing. Hier habe ich extra einen Frame mit viel Text gewählt, da Ringing‑Artefakte am ehesten an sehr scharfen Kanten auftauchen. Ehrlich gesagt sind ansonsten die Unterschiede bei einem so geringen Skalierfaktor (720p → 1080p) kaum bis gar nicht auszumachen.

Bei 8 taps ohne AR sind die Nachteile eindeutig. Speziell im Untertitel bekommen wir nicht nur Doppelkonturen, sondern Drei‐ oder Vierfachkonturen! Das macht es eigentlich komplett unnütz. Im Rest des Bildes sind die Doppelkonturen mehr innerhalb der Schriftzeichen zu sehen als außerhalb, besonders in den dicken grünen und grauen Kanjis, was ich unheimlich störend finde. Das ist auch noch leicht bei 3 und 4 taps erkennbar, bei 3 allerdings nur mehr sehr leicht.

Mit AR schaut die Sache schon ganz anders aus: 3 bzw. 4 taps + AR schauen da schon recht brauchbar aus. Bei 8 taps wird zwar der größte Teil des Ringings in den Untertiteln und den grauen Kanjis entfernt, allerdings wird das Ringing in den grünen Kanjis sogar noch verstärkt. ¯\_(ツ)_/¯

Nützliche Tipps

  • Wenn ihr wesentlich schnelleres Seeking wollt, könnt ihr in den MPC‑HC‑Einstellungen unter Optimierungen die Option Schnellen Suchlauf verwenden aktivieren. Dann wird nur noch auf Keyframes geseekt. Der Nachteil ist, dass nicht mehr framegenau geseekt werden kann. An dieser Stelle sollte auch noch ein Riesenvorteil von mpv erwähnt werden: Der hat nämlich die Option demuxer‑mkv‑subtitle‑preroll. Ist diese aktiviert, laden die Untertitel sogar beim Seeken immer zuverlässig. In MPC‑HC mit XySubFilter wird eine Untertitelzeile sehr oft nicht angezeigt, wenn diese eine Startzeit hat, die etwas vor der geseekten Stelle liegt. Ich habe bis jetzt leider noch keine Lösung für dieses Problem gefunden.
  • Es ist möglich, Profile in madVR für die Skalieralgorithmen zu erstellen. Zum Beispiel, dass andere Regeln für 720p als für 480p gelten. Dazu geht ihr in den madVR‑Einstellungen auf scaling algorithms und drückt auf den Button create profile group. Hier wird euch erklärt, wie ihr diese Profile konfiguriert.
  • Funimation releast in der falschen color range. Wenn ihr so ein Video abspielt, drückt zweimal Strg+Shift+Alt+I. Dadurch tut madVR so, als wäre die Range der Quelle PC-Level, was das Ganze wieder ausgleicht. Funimation‑Rips erkennt man an dem unnötigen Intro, das die in jeden Anime reinhauen.
  • Natürlich kann auch in madVR die Tastenbelegung geändert werden. Dazu geht ihr in den madVR‑Einstellungen auf user interface → keyboard shortcuts. Besonders praktisch ist es beispielsweise, den Debanding‑Filter auf eine Taste zu legen.
  • Solltet ihr eine AMD‑Karte haben und NNEDI3 verwenden wollen, dann installiert auf jeden Fall Version 13.12 des Catalyst‑Treibers! Die neueren Treiber sind wesentlich langsamer.
  • Get Aki-Lucky