Zusammenfassung

  • RFC 9628 beschreibt zwei Verträge für VP9-Abhängigkeiten: Im flexiblen Modus stehen bis zu drei relative P_DIFF-Verweise beim vorhergesagten Bild; im nicht flexiblen Modus liegt ein wiederkehrendes Picture Group in den SS-Daten.
  • Picture ID, Schichtfelder, Referenzwerte, B, E und RTP Marker belegen die erklärte Struktur. Sie belegen nicht lückenlose Fragmente, verfügbare Referenzen, sicheren internen Codec-Zustand oder die angezeigte Ausgabe.
  • Ein belastbarer Nachweis verbindet SDP-Kontext, Modus- und Strukturepoche, RTP-Abdeckung, tatsächlichen Referenzschluss, Bitstream-Prüfung, Decoderergebnis und Playout.

Der Fehlerbericht enthielt keinen offensichtlichen Fehler. Das SFU hatte nach Regelwerk ausgewählt. Die Picture IDs ließen sich auf ein gültiges Muster abbilden. Der Marker saß am letzten weitergeleiteten Layer. Trotzdem verwarf der Decoder das nächste Bild.

Die Metadaten waren nicht nutzlos. Sie waren nur für eine kleinere Behauptung zuständig.

RFC 9628 macht die zeitliche und räumliche Struktur von VP9 in RTP sichtbar. Ein Endpunkt oder selektiver Forwarder kann daraus ableiten, welche Bilder und Schichten zusammengehören. Der Header kennt aber weder den vollständigen Empfangspuffer noch den gesamten VP9-Zustand noch die Entscheidung der Anwendung, ein Bild tatsächlich zu zeigen.

Flexible Referenzen sind unmittelbar, nicht selbstbeweisend

Bei F=1 muss eine Picture ID vorhanden sein. Ein vorhergesagtes Bild trägt mindestens einen und höchstens drei P_DIFF-Werte. Jeder Wert bezeichnet die Distanz zu einer früheren PID, gerechnet modulo des aktuellen sieben- oder fünfzehn-Bit-Raums. Null ist ungültig.

Der Encoder kann damit seine zeitliche Hierarchie verändern, ohne ein festes Muster neu anzukündigen. Der aktuelle Descriptor enthält die behaupteten Inter-Picture-Verweise; eine Zwischenstelle muss sie nicht aus einer Periodentabelle erraten.

Doch eine benannte Referenz kann am Empfang fehlen. Sie kann verloren, nach erlaubter Struktur verworfen oder bereits aus dem Buffer verdrängt worden sein. Ebenso kann das aktuelle Frame zwischen B und E ein RTP-Fragment verloren haben. Ein korrekter P_DIFF ist ein präziser Schuldverweis, kein Kontoauszug des Empfängers.

Ein Prüfer muss deshalb den deklarierten Graphen gegen den tatsächlich gehaltenen Graphen schließen. Nur die erste Menge aus dem Senderheader zu übernehmen, verlegt Empfängerwissen an die falsche Kontrollfläche.

Nicht flexibel heißt: Die Bedeutung liegt in einer früheren Erklärung

Bei F=0 kann SS ein wiederkehrendes Picture Group definieren. Für jede Position nennt es TID, Up-Switch-Eigenschaft und Referenzabstände. Die PID des Key Pictures ist die erste Position; weitere PIDs laufen modulo N_G durch die Gruppe.

TL0PICIDX verfolgt die zeitlichen Basispictures. Bei TID=0 steigt er, bei höheren Schichten verweist er auf die zugehörige Basis. Auch dieser Acht-Bit-Zähler läuft nach 255 wieder bei null an.

Die Kompaktheit verlangt gemeinsamen Verlauf. Ein Mitschnitt, der mitten im Stream beginnt, kann das maßgebliche SS verpasst haben. Ein neu gestarteter Forwarder kann Pakete sehen, aber den Key-Picture-Anker verlieren. Zwei Beobachter mit derselben Tabelle können um eine Gruppenposition versetzt sein.

Die Norm begrenzt deshalb die Änderung. F darf nur im ersten Paket eines Key Pictures wechseln. Neues SS beginnt an der vom vorherigen Muster erlaubten Grenze. Operative Systeme sollten daraus eine Epochen-ID bilden: Hash der Struktur, Einführungspaket, Anker-PID, N_G und berechnete Phase. Eine Tabelle ohne Gültigkeitsbeginn ist keine reproduzierbare Auslegung.

Picture ID darf springen und trotzdem korrekt sein

PID ist sieben oder fünfzehn Bit breit, startet zufällig, läuft über und kann während einer Session die Breite ändern. Beim Wechsel nach oben wird mit Nullen erweitert, beim Wechsel nach unten abgeschnitten. Ein Receiver darf konstante Breite nicht voraussetzen.

Alle räumlichen Frames eines Pictures teilen dieselbe PID. Ein VP9-Picture mit show_frame=0, das nur Referenzen füllt, erhält dennoch eine eigene PID. Der Wert zählt Transportbilder, nicht sichtbare Bildschirmausgaben.

Ein Middlebox darf Pictures entfernen, wenn die Skalierungsstruktur dies erlaubt. Empfangene PIDs müssen daher nicht fortlaufend sein. Umgekehrt kann eine fortlaufende PID-Reihe einen Paketverlust innerhalb eines Frames verbergen. Aus der Zählerform lässt sich weder Verlust noch Vollständigkeit allein ableiten.

Der Audit-Schlüssel braucht Session, SSRC, RTP Timestamp, PID-Breite und -Wert, Modusepoche, Schicht und Beobachtungspunkt. Ohne diese Koordinaten wird der kurze Zähler nach Wrap oder Truncation mit einer alten Bedeutung verwechselt.

Das Ende eines Frames füllt keine Lücke

B=1 markiert den Beginn und E=1 das Ende eines fragmentierten VP9-Frames. Der RTP Marker sitzt am letzten Paket des höchsten räumlichen Frames und beendet damit das Picture. Entfernt ein Forwarder höhere Schichten, muss er den Marker auf das Ende der tatsächlich weitergegebenen Zielschicht setzen.

Die Bits definieren Grenzen. Sie bestätigen keine lückenlose Folge dazwischen. E kann nach einem fehlenden RTP Sequence Number eintreffen. Der Marker kann vorhanden sein, obwohl die mit D=1 verlangte untere Raumschicht beschädigt ist. Eine korrekte Marker-Umschreibung kann mit einer verlorenen zeitlichen Referenz zusammentreffen.

RFC 9628 bietet keinen feineren Zugriff auf Teile eines VP9-Frames. Vollständigkeit verlangt deshalb Sequence Coverage von B bis E, konsistenten Timestamp, räumliche Reihenfolge und den nach Auswahl richtigen Marker. Ein Schlusszeichen ist Grammatik, keine Quittung über alle Wörter.

Der Headergraph lässt Codec-Gedächtnis aus

VP9 trägt zusätzlich zu Referenzframes Wahrscheinlichkeitstabellen für Entropie- und Baumkodierung über Framegrenzen. error_resilient_mode setzt diesen Zustand zurück. In einem skalierbaren Stream muss der Encoder verhindern, dass ein späteres Frame von Zustand abhängt, dessen Lieferframe rechtmäßig entfernt werden kann.

Damit endet die Autorität eines reinen Graphprüfers. Alle P_DIFF können schließen, die PG-Phase kann stimmen und trotzdem fehlt eine Wahrscheinlichkeitstabelle. Die VP9-Bitstream-Spezifikation definiert diesen inneren Vertrag; der laufende Decoder zeigt, ob er erfüllt wurde.

Descriptor-Prüfung, Payload-Prüfung und Decoderbefund sind drei Stufen. Wer sie zu einer zusammenzieht, kann die Ursache eines Ausfalls nicht mehr zuordnen.

Layer-Bits eröffnen begrenzte Handlungen

TID und SID bezeichnen zeitliche und räumliche Schichten. D meldet die Abhängigkeit von der unmittelbar niedrigeren räumlichen Schicht desselben Pictures. U markiert einen Punkt, nach dem höhere Zeitschichten bestimmte ältere höhere Bilder nicht mehr benötigen. Z sagt, dass obere Raumschichten vom aktuellen Frame unabhängig sind und ein passender Empfänger es verwerfen kann.

Keines dieser Bits ist eine Qualitätsaussage. U=1 zeigt nicht, dass der Umschaltpunkt ankam. Z=1 zeigt nicht, dass Wegwerfen dem Nutzerziel entsprach. SID=2 ist keine absolute Auflösung. D=0 entfernt eine Intra-Picture-Kante, nicht die zeitlichen Referenzen.

Das SFU braucht daher einen Entscheidungsbeleg: Zielschicht, angewandte Regel, weitergeleitete und verworfene Pakete, Markeränderung und Congestion-Grund. Nur das erlaubende Bit zu speichern, lässt später offen, wer die konkrete Auswahl traf.

RPSI bestätigt Decodierung, nicht die Anzeige

Ein Receiver kann per RPSI die PID eines korrekt decodierten Golden- oder Altref-Frames melden oder nach Verlust eine bevorzugte Referenz nennen. Dieser Befund stammt von der Decoderseite und ist stärker als die bloße PID im Senderheader.

Seine Reichweite bleibt eng. RPSI sagt nicht, dass alle räumlichen Frames brauchbar waren, die Anwendung das Picture in den Playout nahm oder die Ausgabe rechtzeitig sichtbar wurde. FIR fordert eine volle Zustandsauffrischung, LRR eine gezielte Schichtauffrischung. Weder Auftrag noch Referenzbestätigung ist automatisch ein Anzeigeergebnis.

Der RFC-9627-Beitrag besitzt die Grenze vom LRR-Befehl zur Wiederherstellung. Dieser Beitrag besitzt die Grenze vom VP9-Strukturvertrag über den vorhandenen Referenzbestand bis zum Decoder und Bildschirm.

SDP ist das Wörterbuch vor dem Descriptor

VP9 wird in SDP mit dynamischem Payload Type und 90-kHz-Takt abgebildet. profile-id ist symmetrisch auszuhandeln; fehlt er, gilt Profile 0. max-fr und max-fs sind deklarierte Fähigkeiten des Empfängers, keine Messung des späteren Streams.

Bei vorcodiertem Material oder selektiver Weiterleitung kann keine passende Variante verfügbar sein. Eine angenommene Offer/Answer-Runde beweist daher weder Einhaltung jedes Limits noch Decodierbarkeit.

Der Nachweis beginnt mit Offer, Answer, Payload Mapping, Profile, Fähigkeiten, SSRC und Renegotiation. Ein korrekt geparster VP9-Descriptor unter der falschen SDP-Epoche ist syntaktisch sauber und semantisch wertlos.

Quellen