Ich will nur ein paar Teststreams generieren.
---------
Puh jetzt kommt ein schwieriges Thema: AVC und Referenzframes.
Ich lese immer und immer wieder die Passagen im Standard, aber irgendwie will es nicht so ganz "Klick" machen.
Bleiben wir erstmal bei progressiven Streams die x264 erzeugt.
Referenzframes identifizieren
x264 verankert im SPS:
gaps_in_frame_num_value_allowed_flag=0
dann gilt
nal_ref_idc != 0 -> Frame ist Ref-Frame
nal_ref_idc = 0 -> Frame ist kein Ref-Frame
Identifizierung IDR / I / P / B -> Slice-Header (SH), NALU-Type etc.
-> OK
--------------
Decoding-Order / Display Order bestimmen
Weiter gilt für x264 -> Storage Order = Decoding Order, denn
SPS: pic_order_cnt_type = 0
-> jeder SH enthält pic_order_cnt_lsb xx
-> Decoding-order = pic_order_cnt_lsb / 2
-> Display-Order = pic_order_cnt_lsb / 2 (aufsteigend sortiert)
-> OK
-------------
Referenzframelisten
Weiter:
Ref-Frames werden in einem Decoded Picture Buffer (DPB) gespeichert, dessen Größe abhängig von der maximal zulässigen Anzahl an Ref-Frames ist (z.B. 3 Ref-Frames)
Jetzt kommen ein paar Dinge, die ich nicht verstehe:
Dokument-> Punkt 4
Ref-Frames werden als "Short term reference pictures" oder als "Long term reference pictures" markiert. Wie genau wird das gemacht? (Ich weiß -> ITU-T-H264-8.2.4. aber das verstehe ich nicht).
Danach werden Listen erstellt.
P-Ref-Frames -> 1 Liste
B-Ref-Frames -> 2 Listen
Ich verstehe auch den Aufbau und die Aktualisierung (FirstIn-FirstOut oder so ähnlich) dieser Listen nicht.
Und das, was mich am Ende eigentlich interessiert:
Woher weiß ich bzw. der Decoder auf welches der Frames in der Liste (1. 2. 3. 4. oder sogar mehrere aus der Liste?) ein noch nicht decodiertes Frame referenziert um dekodiert werden zu können?
Puh, schwere Kost.
Wer kanns und macht sich die Mühe?
Oder muss ich wieder mein schlechtes Englisch auspacken und rüber ins andere Forum?
greets
LTJ