Zum Verständnis: "Linear Quantizer Scale" und "Intra DC Precision"

  • Original von The Invisible:

    Hola!
    Einige sagen man soll das ein,andere wiederrum sagen man soll das ausschalten, im CCE was itz qualitativ hochwertiger? Standartmässig isses ja eingeschaltet in dvd2svcd.

    ----------------------------------------------------
    Original von Kika:

    Linear Quantizer Scale ist die Methode, die MPEG1 benutzt, MPEG2 ist ja nun eine Weiterentwicklung davon, dasselbe gilt für Non-Linear Quantizer Scale. Lohnt sich aber erst ab 9 Bit Component Precission.

    ----------------------------------------------------
    Original von The Invisible:

    hmmm sorry wenn ich mich jetzt etwas blöd anstelle,aber heisst das nun,dass ichs anlassen soll? ich benutz intra dc decision 9 im cce.

    ----------------------------------------------------
    Original von LigH:

    Ich hab's auch erst mißverstanden...

    Für mich klingt das so:

    "Wenn du für SVCDs mit ausreichend Bitrate oder für DVDs MPEG2-Video erstellst und mindestens 9 bit verwendest, solltest du es nutzen. Bei wenig Bitrate mit 8 bit oder bei MPEG1-Video ist es nicht sinnvoll oder nicht möglich."

    ----------------------------------------------------
    Original von Kika:

    So (ähnlich) war's gemeint.

    ----------------------------------------------------
    Original von Harald66:

    Hi KiKa,

    was spricht dagegen, auch bei IDC 8 (was ja bei SVCD völlig ausreichned ist, 9 ist bei den Bitraten völlig überflüssig) ne nonlineare Quantisierung zu verwenden. Damit kann doch "bedeutend" flexibler gearbeitet werden, und ob die Berechnungsgenauigkeit jetzt 8 oder 9 beträgt, sollte hierbei imo keine Rolle spielen. Entscheiden ist doch die größere Flexibilität, und die macht sich imo immer bemerkbar.

    ----------------------------------------------------
    Original von The Invisible:

    hmm nur dass ich das richtig versteh...wenn ich linear quantizer scale einschalte dann wird non lineare quantisierung verwendet? nonlineare quantisierung ist ja ein vorteil von svcd,oder?

    ----------------------------------------------------
    Original von Harald66:

    Hi,

    Haken bei linear quantizer scale bedeutet lineare Quantisierung = MPG1
    Kein Haken heisst nicht lineare Quantisierung = MPG2

    ----------------------------------------------------
    Original von The Invisible:

    wieder was gelernt.... oki ich werd den haken weglassen in zukunft...

    ----------------------------------------------------
    Original von StimmeAusDemOff

    Hallo allerseits!

    Also, die Begriffe "Intra DC Precision" und "Linear Quantiser Scale" werden ziemlich oft etwas abenteuerlich und ungenau erklärt, wenn es um die MPEG2 Kodierung geht. Um genau zu verstehen, welchen Einfluss sie auf den Kodierprozess haben, muss man aber schon etwas weiter ausholen.

    Beide Parameter werden zwar bei der Quantisierung der bei der Diskreten Cosinus Transformation (DCT) entstandenen Werte benutzt, haben aber miteinander eigentlich gar nichts zu tun. Will sagen, sie haben keinerlei direkten Einfluss aufeinander oder hängen gar in irgendeiner Form voneinander ab.

    Oft wird ja so getan, als ob die komplette Werte-Matrix eines 8x8 Blocks, der nach der DCT entsteht, bei der anschliessenden Quantisierung einfach durch die entsprechenden Werte der "Intra- oder Non-Intra Quantisierungs-Matrix" geteilt werden, wobei natürlich die hochfrequenten Bildanteile, die ja eh schon zu kleineren DCT Werten tendieren, nochmals so verkleinert werden sollen, dass sie am besten gegen Null gehen. Dadurch kann dann im nächsten Schritt erheblich Bitrate gespart werden, weil durch die (abgewandelte) Huffman Kodierung und die richtige (vorteilhafteste) "Scanning Order" (ZigZag, Alternate) halt lange Folgen von Nullen entstehen, die ein gefundenes Fressen für diese Art der Kompression sind.

    Dies ist aber leider nicht so! Denn der Kodier- und folglich auch der Dekodierprozess läuft etwas anders ab bei der MPEG2 Kodierung. Das Ganze ist nämlich etwas komplexer als es oft dargestellt wird.

    Der linke, obere Wert einer 8x8 Werte-Matrix, die nach der DCT entstanden ist, wird als "DC Wert" bezeichnet, er gibt in einem Luminanz-Block praktisch die Grundhelligkeit dieses gesamten Blockes wieder, in einem Chrominanz-Block folglich dessen Grundfarbe (oder genauer Grundfarbdifferenz, weil wir ja eigentlich im im YUV Farbraum sind).

    Und jetzt kommt das Interessante (zumindest für einige), die "Intra DC precision" beeinflusst nur diesen einen "DC Wert" einer Matrix eines jeden Intra-kodiereten Blockes, keiner der restlichen 63 Werte der 8x8 Werte-Matrix wird von der "Intra DC Precision" beeinflusst. Denn gem. der MPEG2 Spezifikation dürfen die "DC Werte" eines Intra-kodierten Blockes _nicht_ durch die Quantisierungs-Matrix "gewichtet" werden. Die "Gewichtung" erfolgt ausschliesslich mittels der "Intra DC Precision", welche die Werte 8, 9 und 10 Bit bei MPEG2 MP@ML haben kann.

    Laut MPEG2 Spezifikation, ist die "Intra DC Precision" (IDCP) ein 2-Bit Wert und kann folglich die Werte 0,1,2 und 3 annehmen. Halt die vier Zustände, die man mit nur 2 Bit ausdrücken kann.

    Diese 4 Werte werden aber auf eine Tabelle abgebildet:

    Code:

    IDCP| Precision | Multiplier
    ----------------------------
    0 | 8 Bit | 8
    1 | 9 Bit | 4
    2 | 10 Bit | 2
    3 | 11 Bit | 1


    Und bei der Inversen Quantisierung (also beim Dekodieren), wird halt der DCT Wert des "DC Wertes" nach folgender Formel berechnet:

    F''[0][0] = QF[0][0] * Multiplier

    Lässt man das Ganze mal auf sich Wirken, so erkennt man, dass also bei einer "Intra DC Precision" von 8 Bit, ein konstanter Gewichtungsfaktor von 8 benutzt wird, also der Wert der DCT bei der Quantisierung einfach durch 8 geteilt wird und beim Dekodieren (Inversen Quantisierung) mit 8 wieder multipliziert wird. Wohl gemerkt, dies gilt nur für den Wert [0][0], also den "DC Wert" des Blocks, nicht für die anderen Werte (AC Werte), diese werden anders quantisiert.

    Wie kommt man nun der Begriff 8, 9 und 10 Bit Precision zustande, den man ja bei den Enkodern angeben kann. Ganz einfach, durch die DCT können im Videobereich Werte von -2048 bis +2047 entstehen, dabei spricht man dann gerne von einer 11 Bit Dynamik, weil man halt mit 11 Bit und einem Bit für das Vorzeichen, das man eh immer braucht, diesen ganzen Bereich darstellen kann.

    Wenn ich aber nun bei der Quantisierung diesen Wert fest durch 8 teile, so habe ich hinterher praktisch nur noch eine 8 Bit Dynamik (Präzision), und wenn ich immer den "DC Wert" durch 2 teile, folglich eine 10 Bit Präzision. Und da bei der MPEG2 Kodierung halt ganzzahlige Werte gespeichert werden im Bitstrom, ergeben sich hinterher halt dann kleine Rundungsfehler, wenn ich also vorher bei der Quantisierung meinen "DC Wert" ganzzahlig durch 8 teile, (z.B. 2047 DIV 8 = 255), wird dieser Wert 255 bei der inversen Quantisierung wieder mit 8 multipliziert (255 * 8 = 2040) und wir haben einen "Rundungsfehler" von 7 (2047 vorher, 2040 nachher).

    Wer das bis jetzt verstanden hat, erkennt also, dass der Einfluss der "Intra DC Precision" nicht so enorm ist, wie man allgemein immer bei Aussagen wie "8 Bit Präzision" oder gar "10 Bit Präzision" vermutet, wie wir es z.B. bei der Farb-Auflösung der Grafikkarte her kennen. Es werden dabei nicht wesentlich mehr Bits zur Speicherung benötigt, weil dieser Parameter halt nur Einfluss auf Intra-kodierte Blöcke und dort auch nur auf einen einzigen der 64 Werte, nämlich den "DC Wert" hat. Ok, bei der anschliessenden Huffman Kodierung braucht eine etwas grössere Zahl, wie sie bei der 10 Bit Genauigkeit entsteht etwas mehr Bits zur Kodierung, aber nicht so viel mehr, wie man generell immer vermutet und in einigen Foren auch immer suggeriert wird.

    Also, was nun? 8, 9 oder gar 10 Bit? Antwort: hängt (immer noch) vom Material und vom Ziel ab, weil bei den geringen Bitraten einer SVCD z.B. bei 10 Bit Genauigkeit, die ja generell nicht schaden kann, es eben doch zu qualitativ schlechteren Ergebnissen kommen kann als bei 8 oder 9 Bit. Dies ist dadurch zu erklären, weil bei niedrigeren Bitraten eben bei 10 Bit Genauigkeit, die Intra-kodierten Blöcke etwas mehr Bitrate verbrauchen als mit 8 Bit Präzision, und von der eh zu knappen Bitrate dann noch weniger, für alle anderen Blöcke übrigbleibt. Ausserdem kann es dadurch bei grossen , relativ einfarbigen Flächen dann auch eher zum Pumpen oder
    Posterizing-Effekten kommen, weil eben die Diskrepanz zwischen Intra-kodierten Blöcken mit 10 Bit DC Precision und den zeitlich folgenden Blöcken es dann zu sichtbaren "Rundungsfehlern" kommen kann, wohingegen diese bei nur 8 Bit DC Precision aufgrund etwa gleich grossen "Fehler" zwischen den zeitlich aufeinander folgenden Intra und Non-Intra Blöcken dann eben nicht mehr so auffält.

    Als Faustregel bleibt dann also: Generell sollte für SVCD 8 Bit die beste Lösung sein, weil so mehr Bitrate für die Non-Intra Blöcke übrigbleibt.

    Hat man genügend Bitrate, weil der Film kurz ist oder fast nur ruhige Szenen vorkommen, die eh nicht so viel Bitrate benötigen, oder man gar eine XSVCD mit höheren Bitraten macht, kann man 9 Bit verwenden. 10 Bit sollte man nur nehmen, wenn ausreichend Bitrate (wie bei DVD) zur Verfügung steht oder wenn man Interlaced Material auf SVCD relativ gut aussehen lassen will - was natürlich gleichzeitig kürzere GOPs, bessere Matrizen und auch gehörig Bitrate braucht. Bei Interlaced Material wirkt sich eine 10 Bit Genauigkeit in der Theorie (und auch in der Praxis) eigentlich immer vorteilhaft aus, weil ja dabei die einzelnen Blöcke nur aus den Zeilen eines Fields bestehen, also nur aus den geraden oder ungeraden Bildzeilen, wodurch oft höhere Frequenzen enststehen, weil halt einfach Bildzeilen fehlen, und so Farbverläufe und Flächen nicht mehr so homogen sind, was dann halt bei der DCT und der Quantisierung dann auch mal schneller zum Opfer fällt. Da kann eine höhere Genauigkeit dann mehr retten als sie bei der Komprimierung schadet.

    Nun aber endlich zum "Linear Quantiser Scale" und was es damit auf sich hat.

    Wie wir oben ausführlich gesehen haben, wird der "DC Wert" anders behandelt als der Rest, also die AC Werte eines 8x8 Werte-Blocks bei der Quantisierung.

    Die AC Werte werden, wie immer überall beschrieben, einfach durch den jeweiligen etsprechenden Wert der Quantisierungs Matrix geteilt. Das wiederum ist aber auch nur die halbe Warheit! In Wirklichkeit, werden sie dann nämlich nochmal durch den "Quantiser Scale" geteilt, der im MPEG2 Bitstream durch den Parameter "Quantiser Scale Code" (QSC) angegeben wird. Dieser berechnet sich wie folgt aus einer Tabelle:

    Code:

    | Quantiser_Scale
    QSC | Linear | Non-Linear
    -------------------------
    0 | (forbidden)
    1 | 2 | 1
    2 | 4 | 2
    3 | 6 | 3
    4 | 8 | 4
    5 | 10 | 5
    6 | 12 | 6
    7 | 14 | 7
    8 | 16 | 8
    9 | 18 | 10
    10 | 20 | 12
    11 | 22 | 14
    12 | 24 | 16
    13 | 26 | 18
    14 | 28 | 20
    15 | 30 | 22
    16 | 32 | 24
    17 | 34 | 28
    18 | 36 | 32
    19 | 38 | 36
    20 | 40 | 40
    21 | 42 | 44
    22 | 44 | 48
    23 | 46 | 52
    24 | 48 | 56
    25 | 50 | 64
    26 | 52 | 72
    27 | 54 | 80
    28 | 56 | 88
    29 | 58 | 96
    30 | 60 | 104
    31 | 62 | 112


    Bei der inversen Quantisierung wird dann folgende Formel für alle AC Werte und auch für die DC Werte der Non-Intra Blöcke benutzt:

    F''[v][u] = ((2 * QF[v][u] + k) * W[v][u] * Quantiser_Scale) / 32

    Wobei F'', die DCT Werte sind, QF, die quantisierten Werte, k das Vorzeichen ist, W, die entsprechenden Werte der Matrizen und Quantiser_Scale aus der entsprechenden Spalte der Tabelle entmnommen wird, je nach angegebener Methode (Linear- oder Non-Linear Quantiser Scale). Im Bitstrom ist nur der Quantiser Scale Code, also die Werte von 0 bis 31 gespeichert und der Enkoder/Dekoder muss ihn dann anhand der Tabelle übersetzen.

    Schaut man sich die Werte an, so erkennt man, dass im unteren Bereich, die Non-lineare Variante eine feinere Quantisierung ermöglicht, weil die Schritte halt kleiner sind. Die Non-lineare Variante kann bis zum Quantiser_scale von 24 die gleichen Werte annehmen wie die lineare und zusätzlich noch ein paar feinere Abstufungen dazwischen. Erst danach kommt ein Bereich, in dem die Lineare Variante vorteilhafter sein kann, weil sie dann die feineren Abstufungen bietet.

    Hier tendiere ich dazu, zu behaupten, man sollte bei MPEG2 immer die Non-lineare Variante benutzen, weil sie im relevanten Bereich einfach besser geeignet ist. Ob die verschiedenen Enkoder im SVCD-Bereich überhaupt Quantiser_Scale Werte über 24 einsetzen wage ich zu bezweifeln, müsste jemand mal untersuchen, ich kann's mir aber kaum vorstellen, weil das eine unheimlich hohe Quantisierung zusammen mit den typischen Matrizen bedeuten würde. Bei ganz speziellen Matrizen, die sehr niedrige Werte haben, also für hohe Bitraten gedacht sind, kann das dann anders aussehen, weil dadurch mit dieser Tabelle und dem Quantiser_Scale vielleicht ein besseres (feineres) "Übersetzungsverhältnis" (Quantisierung) gefunden werden kann.

    Also, bei SVCD und auch bei DVD mit den Standard Matrizen immer "Non-linear Quantiser Scale" benutzen, auch wenn man nur "8 Bit DC Component Precision" (wie der TMPGEnc die "Intra DC Precsion" gerne nennt) verwendet, weil diese ja nur auf einen geringen Bereich, nämlich die "DC Werte" der Intra-Blöcke Einfluss hat. Hingegen kommt eine feiner abgestufte Quantiser_Scale den Non-intra Blöcken und allen AC Werten, meiner Meinung nach auf jeden Fall zu Gute. Was die Enkoder-Bauer draus machen steht auf einem anderen Blatt - vielleicht will's ja mal einer untersuchen, was im Bitstream so in den "Picture_coding_extensions" drinn steht bei typischen SVCD Bitaten - für den "Quantiser_Scale_Code" - ich sag jetzt mal einfach so: "So hoch sind die nicht, als das ein Linear Quantiser Scale Vorteile gegenüber Non-linear hätte. Kann ich mir beim besten Willen nicht vorstellen." Lasse mich da aber gerne belehren, wenn's einer mal genauer untersucht hat.

    Hoffe, es war nicht zu langweilig, ich habe mir mit diesem Artikel aber prima eine langweilige "Nachtschicht" vertrieben. icon_wink.gif

    ----------------------------------------------------
    Original von Kika:

    StimmeAusDemOff

    Hi,

    super erklärt, Kompliment.

    Nur eine Sache zum DC-Wert: Deinen Ausführungen kann ich nicht widersprechen, ist alles richtig, aber:
    Der DC-Wert ist ja praktisch der, an dem sich alle anderen Berechnungen "messen lassen" müssen. Treten bei ihm schon große Rundungsfehler auf, dann setzen die sich über alle Elemente der Matrix fort, können sich unter Umständen sogar aufaddieren, was die mögliche Bildqualität ganz erheblich senkt (Solarisatioseffekte, Halos u.ä.).
    Von daher sollte man die DC Precission nicht unterschätzen.
    Ansonsten ist aber richtig, was Du sagst: Die Begriffe 9 und 10 Bit gaukeln immer etwas vor, was gar nicht da ist, bzw. gar nicht getan wird.
    Aber auch, wenn nur der DC-Wert davon betroffen wird, sieht man an Deiner Erklärung ja auch, dass durch die weiteren Vorgänge eben der gesamte Block beeinflusst wird, wenn auch nicht so stark, wie allgemein angenommen wird.

    Bei einer Precission von 8 Bit funktioniert Linear Quantiser Scale noch sehr gut, bei 9 und 10 Bit nicht mehr, denn dann kommt es zu den von mir bereits angesprochenen Effekten. Spart zwar Bitrate, versaut aber das Bild selbst.
    Das basiert jetzt auf Erfahrungen, weniger auf der Technik als solcher. Denn nimmt man nur die Formeln zur Hand, dann ist es exakt so, wie Du schreibst: IMMER Non-Linear nehmen.
    Die Sache hat aber einen Haken: Es gibt Material, das von der Bildstruktur her besser mit Linear zu handhaben ist, Trickfilme (Zeichentrick) z.B. Das gilt aber auch nur, solange mit niedrigen Bitraten gearbeitet.

    Na ja, wie auch immer, und Du hast es ja schon selbst gesagt: Das eine ist Theorie, die Praxis, nämlich das, was die Encoder anstellen, sieht oft anders aus. Aus dieser Ecke stammt ja auch diese Geschichte von wegen: "MPEG1 ist bei niedriger Bitrate besser." Ist es natürlich nicht, aber sag' das mal den Encodern...

    Vor allem sollte man das Thema DCT / Quantisierung eigentlich nicht losgelöst von den anderen Mechanismen bei MPEG betrachten, wie z.B. der GOP-Größe und der Suchtiefe (Anzahl und Länge der Vektoren).
    Diese Mechanismen beeinflussen sich ja untereinander und lassen sich so unglücklich miteinander kombinieren, dass trotz hoher Bitrate nur noch Müll entsteht.
    Deshalb versuche ich immer, Erklärungen zu diesem Gebiet möglichst einfach zu halten, wodurch sie zwar oftmals nicht 100 % wissenschaftlich exakt sind, aber ungefähr widerspiegeln, was tatsächlich geschieht, was für die Normaluser eigentlich ausreichen sollte.

    Zu Linear vs. Non-Linear:
    Nun, die Frage nach dem Quantiser Scale stellt sich in vielen Fällen ja gar nicht, da er bei vielen Enocdern wie z.B. TMPGenc nicht direkt einstellbar/beeinflussbar ist. Und selbst, wenn er's wäre - ohne eine dazu passende Matrix ist die Aussagekraft des Scales allein auch nicht gerade hoch.

    Aber um den Leuten mal sowas wie eine´n Merkzettel für SVCD zu geben:

    DC Precission:
    Niedrige Bitraten: 8 Bit
    Mittlere Bitraten: 9 Bit
    Hohe Bitraten: 10 Bit

    Legende:
    Niedrige Bitrate kennzeichnet dabei den unteren Bereich, der sich bis runter zum VCD-Bereich erstreckt.

    Mittlere Bitraten haben wir dann, wenn wir von einem Bereich ausgehen, in dem zwischen 30 und 50 Minuten auf einen 80 Rohling passen. Das gilt auch für das DVD-Format, wenn aus Platzgründen Bitrate gespart werden soll.

    Hohe Bitraten sind dann der Bereich so ab 3500 kbps, wobei hier die Definition etwas schwer fällt. Meine XSVCDs meiner Urlaubsfilme haben z.B. Peaks von bis über 5000 kbps, da kann 10 Bit schon sinnvoll sein, dass aber nur, wenn der AVG auch im Bereich von ab 3500 kbps liegt.

    Quantiser Scale:
    Sehr niedrige Bitraten: Linear
    Obwohl das den Formeln widerspricht, kommen die meisten Encoder damit dann besser klar. Sehr niedrige Bitraten bedeutet aber in diesem Fall einen Bereich, den ich persönlich nicht für sinnvoll halte, nämlich 60 Minuten und mehr auf einen 80er Rohling zu quetschen.
    Ein zweiter Bereich, bei dem Linear sinnvoll sein kann, sind extrem hohe Bitraten bei gleichzeitiger Verwendung von entsprechenden Matrizen. Ist aber mehr eine theoretische Erwägung als etwas, auf das man in der Praxis wirklich stoßen würde.

    Non-Linear ist in über 90 % aller Fälle die bei weitem bessere Wahl.

    Gruß,
    Kika

    ----------------------------------------------------
    Original von LigH:

    ch hab diesen Beitrag mal zu "Wichtig" erklärt - die Antworten von StimmeAusDemOff und KiKa sind ja glatt eine FAQ wert!

    ----------------------------------------------------
    Original von Harald66:

    Hi,

    dann sind wir uns ja alle wieder einig.
    Auch von mir ein herzliches Dankeschön an "die Stimme aus dem Off" und KiKa für diese 1a Erläuterungen.
    Werde das dann auch mal in die Linksammlung aufnehmen.

    ----------------------------------------------------
    Original von SimmeAusDemOff:

    Kika:

    Zitat

    Kika hat folgendes geschrieben:
    ...
    Der DC-Wert ist ja praktisch der, an dem sich alle anderen Berechnungen "messen lassen" müssen. Treten bei ihm schon große Rundungsfehler auf, dann setzen die sich über alle Elemente der Matrix fort, können sich unter Umständen sogar aufaddieren, was die mögliche Bildqualität ganz erheblich senkt (Solarisatioseffekte, Halos u.ä.).
    ...

    Jupp, hast vollkommen Recht, hab ich glatt nicht mehr dran gedacht. Beim groben Entwurf im Geiste, wollt ich hinterher noch so was schreiben wie: "Indirekt hängen sie natürlich schon zusammen, weil bei der IDCT halt der DC-Wert grossen Einfluss auf alle anderen Werte hat, ..." - Hab's aber glatt vergessen. Danke dafür - gut, dass Du das sofort bemerkt hast - Dir entgeht wirklich nichts. icon_wink.gif

    Zitat

    Kika hat folgendes geschrieben:
    ...
    Bei einer Precission von 8 Bit funktioniert Linear Quantiser Scale noch sehr gut, bei 9 und 10 Bit nicht mehr, denn dann kommt es zu den von mir bereits angesprochenen Effekten. Spart zwar Bitrate, versaut aber das Bild selbst.
    Das basiert jetzt auf Erfahrungen, weniger auf der Technik als solcher. Denn nimmt man nur die Formeln zur Hand, dann ist es exakt so, wie Du schreibst: IMMER Non-Linear nehmen.
    Die Sache hat aber einen Haken: Es gibt Material, das von der Bildstruktur her besser mit Linear zu handhaben ist, Trickfilme (Zeichentrick) z.B. Das gilt aber auch nur, solange mit niedrigen Bitraten gearbeitet.
    ...

    Das bestätigt mal wieder den Spruch: "Theoretisch sind Theorie und Praxis gleich - praktisch nicht. Nein, im Ernst, ist mir bei meinen bisherigen Sachen nicht aufgefallen - liegt wohl daran, dass ich keine Trickfilme in meiner Sammlung habe und auch noch nie welche bearbeitet habe. Danke für den Hinweis - muss ich mir unbedingt mal anschauen.

    Zitat

    Kika hat folgendes geschrieben:
    ...
    Vor allem sollte man das Thema DCT / Quantisierung eigentlich nicht losgelöst von den anderen Mechanismen bei MPEG betrachten, wie z.B. der GOP-Größe und der Suchtiefe (Anzahl und Länge der Vektoren).
    Diese Mechanismen beeinflussen sich ja untereinander und lassen sich so unglücklich miteinander kombinieren, dass trotz hoher Bitrate nur noch Müll entsteht.
    ...

    Das ist wirklich so eine Sache, und für die Enkoder-Bauer das eigentliche Dilemma bei MPEG2, denn viele Wege führen nach Rom, nur leider weiss man das erst, nachdem man sich für eine Variante entschieden hat, sich die erreichte Qualität und Kompression betrachtet, um dann die anderen Varianten zu vergleichen. Das kostet natürlich extrem viel Rechenzeit. Aber anscheinend tut sich auf dem Gebiet seit dem Canopus ProCoder und der Einstellung "Mastering Qualität" etwas - der rechnet dann ja extrem lange - könnte mir durchaus vorstellen, dass die Canopus Leute gar einen solchen Ansatz verfolgen oder so ähnlich - die haben in diesem Modus qualitätsmässig die Latte ganz schön hoch gelegt für andere.

    Dabei fällt mir ein, dass die Intra DC Precision ja auch Einfluss auf die "Länge der Vektoren" hat, oder besser gesagt auf die Länge (Gültigkeit) der Predictions, die verdoppelt sich mit jeder Stufe also von 8 Bit auf 9 Bit, usw. Wenn da dann bei 10 Bit Intra DC Precision und damit auch einem 4-fach grösserem "Reset" Value wie bei 8 Bit dann nicht genügend Bitrate zur Verfügung steht, kann sich der Enkoder rein theoretisch ganz schön verspeckulieren - leuchtet also ein, was Du sagst.

    Und wenn dann wie im Falle ProCoder auch noch ein "Field based encoding" für interlaced Material hinzukommt, wird's richtig heftig mit den ganzen Predictions und den ganzen Spezifikationen, was man wann, wie und unter welchen Umständen machen darf und kann. Da kriegt man wirklich Kopfschmerzen beim Lesen und da bin ich wohl nicht alleine, einige Hardware Hersteller hatten dabei wohl auch so ihre Probleme bei ihren Decoder-Chipsätzen und auch Canopus selber am Anfang.

    Man sieht aber, was alles noch möglich ist mit dem guten alten MPEG2, wenn man die ganze Komplexität verstanden hat und das Ganze dann auch noch in einen Enkoder "giessen" kann.

    Zitat

    Kika hat folgendes geschrieben:
    ...
    Nun, die Frage nach dem Quantiser Scale stellt sich in vielen Fällen ja gar nicht, da er bei vielen Enocdern wie z.B. TMPGenc nicht direkt einstellbar/beeinflussbar ist. Und selbst, wenn er's wäre - ohne eine dazu passende Matrix ist die Aussagekraft des Scales allein auch nicht gerade hoch.
    ...

    Wenn ich das richtig sehe, sollte man diesen Wert auch als User eigentlich nicht so recht beeinflussen dürfen, weil dieser Parameter ja intern für den Enkoder gedacht ist (war) - sozusagen als Über- und im Falle "Non-linear mit Quantiser Scale = 1" sogar eine kleine Untersetzung, wenn man es als "Getriebe" betrachtet, um mit der Matrix, die man ihm gegeben hat flexibler agieren zu können. Aber wie Du ja schon selber gesagt hast, scheinen einige Enkoder, da bei niedrigen Bitraten etwas anfällig zu sein, so dass sie mit "Linear Quantiser Scale" in diesem Fall bessere Ergebnisse hinbekommen - wahrscheinlich, weil die Enkoder-Bauer noch auf Erfahrungswerten aus der MPEG1 Zeit agierten, als sie ihren Enkodern "Intelligenz" einhauchten - oder weiss der Geier, was sie da machen.

    Auf jeden Fall vielen Dank für Deine Anmerkungen, Berichtigungen und Erfahrungen hat mich wirklich gefreut, dass Du Dir die Zeit genommen hast, das ausführlich niederzuschreiben.

    Und an alle: Vielen Dank für die Komplimente. Hat mich gefreut, auch wenn ich nur selten vorbeischaue.

    ----------------------------------------------------
    Original von LigH:

    Aber selbst wenn du nur selten schreibst, diese Informationen wären schon fast den Titel "VIP" wert... Hast du haupt- oder nebenberuflich was mit MPEG-Encodern zu tun? Oder anders: "Sollte man dich kennen"?

    MfG
    Morpheus

  • Original von Kika:

    Zitat

    StimmeausdemOff hat folgendes geschrieben:
    Auf jeden Fall vielen Dank für Deine Anmerkungen, Berichtigungen und Erfahrungen hat mich wirklich gefreut, dass Du Dir die Zeit genommen hast, das ausführlich niederzuschreiben.

    Eigentlich bin ich es, der sich bedanken muss. Denn die Wirkungsweise von Linear und Non-Linear war mir zwar in den Grundzügen bekannt, die genaue Gegenüberstellung kannte ich aber auch noch nicht. Hab' also auch was hinzu gelernt.

    Außerdem macht's Spaß, mit jemandem auf diesem Niveau zu diskutieren.

    Zitat

    StimmeausdemOff hat folgendes geschrieben:
    Dir entgeht wirklich nichts.

    Schön wär's...
    Im Ernst, mir fehlt bei solchen Dingen etwas der mathematische Unterbau. Daher hätte ich die Zusammenhänge niemals so erklären können, wie Du es getan hast. Deshalb bringe ich meine besten Leistungen immer dann, wenn ich jemanden finde, mit dem ich zusammen die Dinge durchgehen kann.
    Eigentlich weiß ich gar nicht soooo viel über diese Dinge, aber wenn ich EIN Talent habe, dann das, Fehler und/oder Schwächen in Argumentationsketten zu entdecken.

    Zitat

    StimmeausdemOff hat folgendes geschrieben:
    Und wenn dann wie im Falle ProCoder auch noch ein "Field based encoding" für interlaced Material hinzukommt

    Das kann man wohl sagen. Spätestens an dieser Stelle bildet sich in meinem Hirn ein ziemlicher Knoten. Vor allem, wenn noch der Mix-Modus zum Einsatz kommt, bei dem unbewegtes progressive, bewegtes interlaced encodiert wird.

    Zitat

    StimmeausdemOff hat folgendes geschrieben:
    Dabei fällt mir ein, dass die Intra DC Precision ja auch Einfluss auf die "Länge der Vektoren" hat, oder besser gesagt auf die Länge (Gültigkeit) der Predictions

    Bist Du da ganz sicher? Ich habe mehrere Hinweise darauf gefunden und bin auch der Meinung, dass dem so ist, aber eine felsenfeste Aussage der Art "So ist es, nicht anders" fehlt mir in meiner Unterlagensammlung noch.
    Wenn es wirklich so ist, dann erklärt es einige Dinge, die beim Encoden immer wieder mal vorkommen, jedenfalls recht gut.

    ----------------------------------------------------
    Original von The Invisible:

    Genau das wollt ich für KiKa und StimmeausdemOff auch vorschlagen!
    Einfach Hammer! Respect!

    ----------------------------------------------------
    Original von Hammer66:

    Hi,

    nachdem ich in Mathe und Physik meistens ne 4 oder 5 hatte, tu ich mir beim vesrtehen der theoretischen Grundlagen noch schwerer. Eigentlich versteh ich eher wenig bis gar nichts
    Wobei mir dieser Thread wieder ein wenig weiter geholfen hat.

    @ stimmeausdemoff, KiKa
    Vielleicht erinnerst Du (KiKa) Dich noch an den Thread hier zum Thema Deiner Trick Low Matrix und Probs bei der Verwendung im Zusammenhang mit dem CCE und non linear quantizer scale?
    http://forum.doom9.de/viewtopic.php?t=940&highlight=

    Zitat

    Kika hat folgendes geschrieben:
    ...
    Nun, die Frage nach dem Quantiser Scale stellt sich in vielen Fällen ja gar nicht, da er bei vielen Enocdern wie z.B. TMPGenc nicht direkt einstellbar/beeinflussbar ist. Und selbst, wenn er's wäre - ohne eine dazu passende Matrix ist die Aussagekraft des Scales allein auch nicht gerade hoch.
    ...

    Wenn ich das richtig sehe, sollte man diesen Wert auch als User eigentlich nicht so recht beeinflussen dürfen, weil dieser Parameter ja intern für den Enkoder gedacht ist (war) - sozusagen als Über- und im Falle "Non-linear mit Quantiser Scale = 1" sogar eine kleine Untersetzung, wenn man es als "Getriebe" betrachtet, um mit der Matrix, die man ihm gegeben hat flexibler agieren zu können. Aber wie Du ja schon selber gesagt hast, scheinen einige Enkoder, da bei niedrigen Bitraten etwas anfällig zu sein, so dass sie mit "Linear Quantiser Scale" in diesem Fall bessere Ergebnisse hinbekommen - wahrscheinlich, weil die Enkoder-Bauer noch auf Erfahrungswerten aus der MPEG1 Zeit agierten, als sie ihren Enkodern "Intelligenz" einhauchten - oder weiss der Geier, was sie da machen.

    Könnte es sein, dass Eure Überlegungen hier der Schlüssel zur Lösung sind? Dass es einfach an der Vorgehensweise des Encoders liegt, dass er bei bestimmten Konstellationen mit der programierten Vorgehensweise zu keinem Ergebnis mehr kommt? So würde ich das jedenfalls sehen.

    ----------------------------------------------------
    Original von Kika:

    Zitat

    Hammer68 hat folgendes geschrieben:
    Könnte es sein, dass Eure Überlegungen hier der Schlüssel zur Lösung sind?

    Möglich, aber diese Frage können eigentlich nur die Programmierer der Encoder beantworten.
    Beim damaligen Thread ging es ja um den Wert 8 bzw. 16 an erster Stelle der Non-Intra-Matrix. Obwohl die 8 ein zulässiger Wert ist, konnte beim CCE unter bestimmten Bedingungen dabei einiges schief gehen.
    mb1 hatte dazu ja schon einiges gesagt. Für mich ist das ein Bug des CCE.
    Wie auch mb1 habe ich die Matrix am TMPGEnc entworfen, bei dem sich die Frage nach Linear oder Non-Linear gar nicht stellt. Und beim CCE habe ich die Matrix ausschließlich mit Non-Linear getestet, und da trat der Fehler ja auch nicht auf.

    Zitat

    Hammer68 hat folgendes geschrieben:
    Eigentlich versteh ich eher wenig bis gar nichts

    Wie es genau funktioniert, das weiß ich auch erst seit Anfang dieses Jahres. Man muss ja auch nicht alle Vorgänge bis ins Detail verstehen. Wie ich schon sagte: Mathematisch kann ich das auch nicht umsetzen, es reicht aber, die Theorie verstanden zu haben und somit die Zusammenhänge zu kennen. Von diesem Punkt an helfen Logik, Nachdenken und Ausprobieren weiter.
    Der Auslöser für mich, dass alles zu lernen war, dass ich letztes Jahr bei einer Diskussion mehrerer Leute über dieses Thema kein einziges Wort verstanden habe...

    ----------------------------------------------------
    Original von Harald66:

    Hi KiKa,

    das war ja ne schnelle Reaktion. Hast Du keine Arbeit?
    Aber Spass beiseite, die Matrix war ja entsprechend mit dem korrekten Wert an der ersten Stelle, und somit auch für den CCE i.O.
    Und mit linear quantizer scale hats ja dann auch gefunzt. Aber Du hast wohl recht, wahrscheinlich werden wir nie erfahren, an was es jetzt tatsächlich gelegen hat.
    Vielleicht fällt mir wieder ein, was das damals genau für ein Material war, dann werd ichs mal mit dem 2.66 austesten. Nachdem man da ja gar nicht mehr MPG2 mit linearer Quantisierung machen kann, würde mich interessieren, ob der das dann korrekt verarbeiten kann oder nicht.

    ----------------------------------------------------
    Original von SimmeAusDemOff:

    Hallo allerseits!

    Ups, dann fangen wir mal an.

    Zitat

    LigH hat folgendes geschrieben:
    Hast du haupt- oder nebenberuflich was mit MPEG-Encodern zu tun? Oder anders: "Sollte man dich kennen"?

    Nein, und nein, beschäftige mich eigentlich nur hobbymässig mit MPEG und Programmieren - bin durch einen Freund (Informatikstudent) dazu gekommen, der irgend so ein Multimedia-Seminar belegt hatte und der mir immer von dem genialen MPEG Konzept berichtet hat, bis mir die Ohren bluteten. Und seit dem ich dann auch einen DVD Player hatte und mich mit dem Thema DVD/SVCD beschäftigt habe, wollte ich es dann einfach mal genauer wissen, wie das funktioniert. Ist so bei mir - ich geb' mich nie damit zufrieden, wenn mir jemand sagt: "Das müsste eigentlich so oder so sein." Also hab ich so ungefähr alles im Netz abgegrast, was es so zu dem Thema gab - und wenn man richtig sucht, findet man wahre Perlen darunter.

    Und da ich gerade dabei bin, muss ich zu meiner Schande eingestehen, dass ich hier

    Zitat

    StimmeAusDemOff hat folgendes geschrieben:
    Dabei fällt mir ein, dass die Intra DC Precision ja auch Einfluss auf die "Länge der Vektoren" hat, oder besser gesagt auf die Länge (Gültigkeit) der Predictions

    wohl was verwechselt habe. Manchmal setzen sich aus unerklärlichen Gründen Dinge im hintersten Winkel meines Hirns fest, die ich beim ersten mal lesen falsch verstanden habe (es natürlich damals aber nicht mitgekriegt habe und mir dann irgendeine Erklärung als Gedankenkrücke gebastelt habe - die werd ich manchmal einfach nicht mehr los.

    Also habe ich, angespornt durch Kikas Talent Fehler und Schwachstellen zu entdecken, nochmal die Spezifikationen durchgeackert und doch tatsächlich nichts gefunden, das dies bestätigt. Nur die besagte Tabelle die ich immer noch als Bild im Kopf hatte und bei der ich damals in Zusammenhang mit Predictions, Predictors und Reset Values nur "Bahnhof und Ägypten" verstanden hatte - und natürlich die falschen Schlüsse gezogen habe. *AscheaufmeinHauptstreu*

    Aber jetzt ist es klar, war nur der Mechanismus, wie Intra-DC-Koeffizienten mittels Predictor und Differenz aus dem codierten Bitstrom rekonstruiert werden - die werden nämlich nicht als DC-Koeefizient direkt gespeichert und benutzt, sondern nur die Differenz. Das hat den Vorteil, das der Wert i.d.R. kleiner ist und so besser komprimiert werden kann. Und in dem Abschnitt ging es halt darum, wann der Predictor zurückgesetzt werden sollte und auf welchen "Reset Value" - und damals verband ich mit Predictor in dem Zusammenhang nur Prediction, Motion Estimated Prediction und Motion Vector.

    Also, kann ich das so nicht mehr stehen lassen, dass die Intra DC Precision Einfluss auf die erlaubte Länge der Motion Vectors hat - sorry. Sie sind anscheinend nur durch den benutzten MPEG Level beschränkt, der Einfluss auf die zulässige Länge hat, der aber eigentlich immer sicherstellt, dass praktisch der ganze Bildbereich durch die Motion Vektoren abgedeckt ist - macht ja auch irgendwie Sinn.

    Natürlich beschränkt die Taktik das Enkoders - also der Ansatz der Motion Estimation und Prediction die später tatsächlich benutzte Länge der Vektoren, denn wenn ein Enkoder z.B. so programmiert ist, nur die unmittelbar benachbarten Blöcke auf Ähnlichkeiten zu prüfen, wird halt nie ein langer Vektor herauskommen dabei - denn je grösser der Suchbereich, desto grösser die Rechenzeit dafür - und ausserdem benötigen längere Vektoren auch wieder mehr Bitrate, usw. - ist halt alles nicht so einfach.

    Zitat

    Harald66 hat folgendes geschrieben:
    Könnte es sein, dass Eure Überlegungen hier der Schlüssel zur Lösung sind? Dass es einfach an der Vorgehensweise des Encoders liegt, dass er bei bestimmten Konstellationen mit der programierten Vorgehensweise zu keinem Ergebnis mehr kommt? So würde ich das jedenfalls sehen.

    Zitat

    Kika hat folgendes geschrieben:
    Möglich, aber diese Frage können eigentlich nur die Programmierer der Encoder beantworten.
    Beim damaligen Thread ging es ja um den Wert 8 bzw. 16 an erster Stelle der Non-Intra-Matrix. Obwohl die 8 ein zulässiger Wert ist, konnte beim CCE unter bestimmten Bedingungen dabei einiges schief gehen.
    mb1 hatte dazu ja schon einiges gesagt. Für mich ist das ein Bug des CCE.

    Kann sein, aber wie Kika sehe ich das auch so, dass es sich dabei um einen Bug handeln muss, da ein MPEG2 Enkoder/Dekoder eigentlich sicherstellen muss, dass die jeweiligen quantisierten Werte und auch die dequantisierten immer zur Sicherheit noch einmal gecheckt werden und im Falle eines Fehlers, müsste ein Ausreisser (unzulässiger Wert) dann stur einfach auf die zulässige Ober- oder Untergrenze des Zahlenbereichs gesetzt werden - zumindest für einen den Spezifikationen entsprechenden Dekoder ist das eigentlich gefordert. Da sollte dann höchsten ein kleiner Bildfehler in einem Block dabei entstehen können - mehr nicht.

    Das können aber wirklich nur die Programmierer sagen - und im Falle CCE scheinen die ja mit allen nur erdenklichen Tricks zu arbeiten um wirklich das letzte Tröpfchen Speed herauszukitzeln, da kann man schon mal zu risikofreudig werden - gerade in Assembler.

    So, das war's auch schon wieder mal. - Gut's Nächtle icon_wink.gif

    P.S. Hier noch ein guter Link (leider Englisch) für alle die tiefer einsteigen wollen:

    Dort kann man auch den Source Code eines MPEG2-Enkoders/Dekoders frei zugänglich bekommen, der auf dem letzten Testmodell des MPEG Komitees basiert sowie zahlreiche Infos zum Standard.

    http://www.mpeg.org/MPEG/index.html - einfach oben mal auf den Link "MSSG" (MPEG Software Simulation Group) klicken!

    An die Moderatoren:

    Ich habe auch noch Links zu den MPEG2 Spezifikationen (ISO 13818-1 (System) und 13818-2 (Video) als PDF Dokumente auf einem Server der Columbia University - sind nicht die original (teuren) ISO Dokumente in aktueller Fassung, sondern "nur" die Entwurfsfassungen von 1995, kurz vor der Verabschiedung als ISO-Standard, unterscheiden sich also nur sehr geringfügig davon und sind dort als Unterrichtsmaterial zu einem Kurs relativ öffentlich zugänglich. Weiss nicht, ob das in Ordnung geht, wenn ja, kann ich sie posten - oder wie auch immer.

    [Edit/13.12.2002-Harald66]
    Hier der Link: http://www.ee.columbia.edu/~eleft/e6880/
    und da auf "Reading" klicken und nach unten scrollen. Sind ganz interessant - aber Vorsicht, nur mit ordentlich Aspirin geniessen.
    [Edit/off]

    ----------------------------------------------------
    Original von eDealer:

    LigH
    Wenn hier mal der VIP überhaupt noch ausreicht.

    StimmeAusDemOff
    Ich muss sagen, das ich so langsam von dem "ich verstehe nur Bahnhof" wegkomme. Es ist immer wieder interessant deinen Ausführungen zu folgen, auch wenn ich noch kein Gesamtbild habe, aber das wird schon.

    Eine Frage habe ich:
    Euren Ausführungen kann man nun deutlich entnehmen, das bei SVCD die Option Non-Linear die besser Wahl ist.
    Auf basis von RobShot wurde mal diese Vorgehensweise mit dem CCE auf Doom9.org publiziert:
    http://www.doom9.de/mpg/cce-advanced-ger.htm
    Dort wird die Nutzung der Linear Option empfohlen (allerdings DVD orientiert). Für mich ist imo nicht klar, ob sich in diesem Fall das mit den Optionen genauso verhält ?!

    ----------------------------------------------------
    Original von Kika:

    StimmeAusDemOff

    Zitat

    StimmeAusDemOff hat folgendes geschrieben:
    Also, kann ich das so nicht mehr stehen lassen, dass die Intra DC Precision Einfluss auf die erlaubte Länge der Motion Vectors hat - sorry.

    Schade, das hätte ein paar Dinge erklärt, mit denen ich selbst noch Probleme habe. Die Behauptung, dass dem so sei, habe ich bereits an anderer Stelle gehört. Die sind dann aber wohl auf das gleiche hereingefallen wie ich auch (und Du wohl auch...)


    eDealer

    Zitat

    eDealer hat folgendes geschrieben:
    Dort wird die Nutzung der Linear Option empfohlen (allerdings DVD orientiert).

    Eigentlich sollte bei MPEG2 Linear nie benutzt werden. Wie ich aber schon schrieb, gibt es gelegentlich mal Fälle, in denen Linear besser sein kann. Das ist mit absoluter Sicherheit aber nicht die Regel!
    Der Unterschied wurde hier ja schon dargelegt, Non-Linear ergibt einfach bessere Farbübergänge.

    Was aber wirklich verkehrt ist, ist die Intra DC Precission auf Auto zu setzen. Zumindest ältere CCE-Versionen haben damit öfters Mist gebaut.
    Beim Transcoden empfiehlt sich hier die Einstellung, die auch der Originalstream hat, im Beispiel ist das 8 Bit, wobei ich aber eigentlich generell zu 9 Bit tendiere.

    ----------------------------------------------------
    Original von The Invisible:

    Hola mal wieder...
    also ich hab zwar bei weitem nicht soviel ahnung wie Kika und die Stimme aus dem Off,aber ich hab jetzt mal umfangreich rumprobiert und bin zum ergebnis gekommen dass,wenn ich den haken bei linear quantizer scal wegmache im cce das ergebnis wesentlich schlechter wird (irgendwie verpixelt) als wenn ich den haken dort lasse,dann kommt jedes ma perfektes material raus,ich hab eine intra dc decision von 9 verwendet.

    ----------------------------------------------------
    Original von Kika:

    Grundsätzlich darf das nicht so sein. Denn bei non-linear kann (muss nicht, siehe Rest des Threads), feiner gearbeitet werden, was eigentlich Verblockung durchaus verhindern kann.
    Es sei denn, man gerät in den Bereich, den "Stimme aus dem Off" beschrieben hat, dann kann es auch schlechter werden.
    Stark abhängig ist die Auswirkung auch vom benutzten Bitratenbereich. Beim Encoden zu DVD habe ich in ein, zwei Fällen sogar schon Dithered Quantization benutzt!

    ----------------------------------------------------
    Original von RB:

    Kika

    Das hört sich an, als ob Du CCE 2.66+ benutzt. Dort gibt es aber die Option "Linear Quantizer Scale" gar nicht mehr, oder hab' ich da was verpasst?

    ----------------------------------------------------
    Original von Kika:

    Nein, ich benutze 2.62 und 2.64. Den 2.66 hab' ich mir nie angesehen, die beiden anderen tun ja, was ich will...

    ----------------------------------------------------
    Original von RB:

    Ich bezog mich auf auf "Dithered Quantization". Wo gibt's das beim CCE 2.64 und was bewirkt es?

    ----------------------------------------------------
    Original von Kika:

    Dithered Quantization ist eine Methode, gezielt Störungen einzubauen. Verhindert das "Zumatschen" einzelner Blocks mit wenig Kontrast. Benötigt aber jede Menge Bitrate und ist in vielen Fällen auch schlechter.

    ----------------------------------------------------
    Original von LigH:

    Dürfte dann wohl entweder so laufen wie mit dem "BlockBuster"-Filter als AviSynth-Plugin, das Rauschen hinzufügt, oder wie bei Anime-Matrizen, die höhere Frequenzen dann wieder feiner auflösen?! Wohl eher ersteres?

    MfG
    Morpheus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!