Multimediadatenformate H 263 H 261 und alles was

  • Slides: 34
Download presentation
Multimediadatenformate H 263 / H 261 und alles was dazugehört. H. 261/H. 263 Lars

Multimediadatenformate H 263 / H 261 und alles was dazugehört. H. 261/H. 263 Lars Wolter

Inhalt • • • H. 263/H. 261 Geschichte und Allgemeines. H. 263 Struktur. H.

Inhalt • • • H. 263/H. 261 Geschichte und Allgemeines. H. 263 Struktur. H. 263 Kodieren eines Frames. H. 263 INTER-Kodierung / Motion Comp. H. 263 Was noch alles (MPEG 4? ). H. 323: H. 263 da wo es hingehört. H. 261/H. 263 Lars Wolter 2

Geschichte • Beide Standards wurden von der ITU (International Telecommunication Union) entwickelt. • Die

Geschichte • Beide Standards wurden von der ITU (International Telecommunication Union) entwickelt. • Die ITU ist eine Organisation die in Genf sitzt und zu der „United Nations System of Organizations“ gehört. • Die Entwicklung von H. 261 begann bereits 1988 und wurde dann im März 1993 von der WTSC abgesegnet. • Die Entwicklung für H. 263 läuft seit 1993 (Anhänge bis H). H. 263+ seit 1997 (Anhänge bis T). Aktuell ist H. 263++ seit 2000 (Anhänge U, V, W). „In Arbeit“ Anhang X (2001). H. 261/H. 263 Lars Wolter 3

Übersicht über H. 26 X • Beide Spezifikationen sind für Videokonferenzapplikationen gedacht 40 kbit/s

Übersicht über H. 26 X • Beide Spezifikationen sind für Videokonferenzapplikationen gedacht 40 kbit/s bis 2 Mbit/s. • Kodierung und Dekodierung muss in Echtzeit erfolgen, meist nur geringe Bandbreite verfügbar. • Externe Steuerung durch weitere Protokolle (H. 245). – Bildformat – Verwendete optionen. • Standard beschränkt die verfügbaren Bildformate. • Kodierung erfolgt ähnlich wie MPEG. • IST KEIN DATEIFORMAT !!! H. 261/H. 263 Lars Wolter 4

H. 261 • Für Videokonferenzen über ISDN Leitungen gedacht. • Zwei Formate CIF(352 x

H. 261 • Für Videokonferenzen über ISDN Leitungen gedacht. • Zwei Formate CIF(352 x 288) und QCIF(176 x 144) • Bilddaten werden mit voller Luminance (Y) und halber Chrominance (CB und CR) verarbeitet. • Blöcke bestehen aus 8 x 8 Pixel, vier Y-Blöcke und die zwei dazugehörigen C-Blöcke bilden einen Makroblock. 1 2 3 4 Y 5 6 CB CR • Motion Compensation erlaubt einen Vektor pro Makroblock mit Werten zwischen -15 und +15. H. 261/H. 263 Lars Wolter 5

H. 261 fortgesetzt • QCIF kodierte bilder maximal 64 Kbits, CIF 256 Kbits •

H. 261 fortgesetzt • QCIF kodierte bilder maximal 64 Kbits, CIF 256 Kbits • BCH Fehlerbehandlung (Bose, Chaudhuri and Hocquengham). • 512 Bit Block mit 492 Bit Daten, 18 parity Bits einem Framebit und einem Füllindikator Bit. • Sendefrequenz wird extern geregelt (Interface I. 420) • DCT • Quantisierung: DC = 1 alle anderen 1 bis 31 H. 261/H. 263 Lars Wolter 6

H. 261 noch mehr • Anhang A spezifiziert genauigkeit der DCT. • Anhang B

H. 261 noch mehr • Anhang A spezifiziert genauigkeit der DCT. • Anhang B spezifiziert einen Hypothetischen Referenz Dekoder. • Anhang C Codec verzögerungsmessung • Anhang D Standbildübertragung H. 261/H. 263 Lars Wolter 7

H. 263 • Für Videokonferenzen per Standleitungen oder Internet. • Spezifiziert für sub-QCIF, 4

H. 263 • Für Videokonferenzen per Standleitungen oder Internet. • Spezifiziert für sub-QCIF, 4 CIF, 16 CIF. • Wie H. 261 aber – MC wird mit Vektorwerten zwischen -16 und 15. 5 mit Halbpixeln durchgeführt. – Fehlerkorrektur ist optional Anhang H. – Es gibt viele Anhänge, von A bis X. – Zusammenfassung von Makroblocks zu GOBs oder Slices. – Fast schon MPEG 4. H. 261/H. 263 Lars Wolter 8

H. 263 Picture PSC TR PTYPE PQUANT CPM PSBI TRB DBQUANT PEI PSUPP PEI

H. 263 Picture PSC TR PTYPE PQUANT CPM PSBI TRB DBQUANT PEI PSUPP PEI GOBs ESTUF EOS PSTUF • Beschreibt ein Bild – – – Startcode(PSC), Bildreferenz(TR), Multipoint Infos (Anhang C) Bildtyp I-, PB-, EI-, EP-Frame und Bildformat (PTYPE) Anhänge: D, E, F, G, I, J, K, N, P, Q, R, S und T ((PLUS)PTYPE) Quantisierungsinformationen (DQUANT, DBQUANT) Stopfbits, Ende der Sequenz (EOS, PSTUF) • Allein mit 44 Bit für PSC und EOS ist der Header groß. • Statt PTYPE kann eine PLUSPTYPE Struktur verwendet werden … PLUSPTYPE CPM PSBI CPFMT EPAR CPCFC ETR UUI SSS ELNUM RPSMF TRPI TRP BCI H. 261/H. 263 Lars Wolter BCM RPRP … 9

H. 263 GOB GSTUF GBSC GN GSBI GFID GQUANT Macroblock Data • Eine GOB

H. 263 GOB GSTUF GBSC GN GSBI GFID GQUANT Macroblock Data • Eine GOB (Group of Blocks) enthält meist eine Reihe Makroblocks. Der erste GOB-Header ist nichtvorhanden. Die Header anderen GOBs können leer bleiben. • Stopfbits(GSTUF), 17 Bit Startcode(GBSC). • Quantisierer Wert der für alle nachfolgenden Blöcke des aktuellen Bildes gilt (GQUANT). • Alternativ dazu Slices, Anhang K – Erlauben Gruppierung von rechteckigen Bereichen im Bild. H. 261/H. 263 Lars Wolter 10

H. 263 Makroblock Picture type MB type Name COD MCBPC CBPY INTER not coded

H. 263 Makroblock Picture type MB type Name COD MCBPC CBPY INTER not coded - X INTER 0 INTER 1 INTER DQUANT X X X INTER+Q X X X 2 INTER 4 V X X X INTER 3 INTRA X X X INTER 4 INTRA+Q X X INTER 5 INTER 4 V+Q X X INTER stuffing - X X INTRA 3 INTRA X X INTRA 4 INTRA+Q X X INTRA stuffing - X MVD 2 -4 X X X X • INTER-Block mit Nullvektor ohne Differenz hat keine Daten. COD signalisiert so einen Block. • MCBPC bestimmt den Untertyp des MB • DQUANT modifiziert den momentanen QUANT Wert • Motion Vektor(en) Anhänge D und F definieren einen erweiterten Vektormodus. Die Vektoren sind VLC kodiert. H. 261/H. 263 Lars Wolter 11

H. 263 Block • Der kodierte Block besteht aus 8 Bit DC und den

H. 263 Block • Der kodierte Block besteht aus 8 Bit DC und den AC Werten als VLC. – – LAST=1 letzter AC != 0 RUN: ACs=0 vor dem AC LEVEL: Wert des ACs VLC: Der gespeichert Bitcode präfixfrei INDEX LAST RUN |LEVEL| BITS VLC CODE 0 0 0 1 3 10 s 1 0 0 2 5 1111 s 2 0 0 3 7 0101 01 s 100 1 39 1 13 0000 0101 1110 s 101 1 1 13 0000 0101 1111 s 102 ESCAPE 7 0000 011 … • Alle nicht vorhandenen Kombinationen werden mit 22 Bit als Escape(7), LAST(1), RUN(6) und LEVEL(8) kodiert. • Das klein s ist das Vorzeichen des Levels. H. 261/H. 263 Lars Wolter 12

Wir kodieren jetzt ein INTRA Bild • Wir betrachten die Kodierung eines INTRA-Bildes, da

Wir kodieren jetzt ein INTRA Bild • Wir betrachten die Kodierung eines INTRA-Bildes, da man notfalls nur mit diesen auskommt. • Es fängt mit dem Header an, dazu muss man einzelne Bits schreiben können (brauchen wir auch später oft). #define PUT_BITS(bits, n. Bits, n. Temp. Bits, temp. Bits, bit. Stream) { n. Temp. Bits += (n. Bits); // gezählte Bits erhöhen if (n. Temp. Bits > 32) { // wenn sie nicht mehr ins INT passen u_int extra = (n. Temp. Bits) - 32; // Anzahl extrabits temp. Bits |= (u_int)(bits) >> extra; // Bits dazupacken *(u_int*)bit. Stream = temp. Bits; // Alle bits speichern bit. Stream += sizeof(u_int); // Stream weitersetzen temp. Bits = (u_int)(bits) << (32 - extra); // extrabits… n. Temp. Bits = extra; // …ins temp peichern und anzahl setzen } else // ansonsten alle bits den temporären hinzufügen temp. Bits |= (u_int)(bits) << (32 - (n. Temp. Bits)); } H. 261/H. 263 Lars Wolter 13

H. 263 Kodieren (YUV) • Am Anfang haben wir das Bild. • Das brauchen

H. 263 Kodieren (YUV) • Am Anfang haben wir das Bild. • Das brauchen wir im YCRCB (auch YUV) Format. Dazu führen wir eine RGB YUV Konvertierung durch. Y=(0. 257*R)+(0. 504*G)+(0. 098*B)+16 CR=(0. 439*R)-(0. 368*G)-(0. 071*B)+128 CB=-(0. 148*R)-(0. 291*G)+(0. 439*B)+128 CR Y H. 261/H. 263 Lars Wolter CB 14

H. 263 Kodieren(DCT) Direkte Implementierung von: for(int i=0; i< 8; ++i) { for(int j=0;

H. 263 Kodieren(DCT) Direkte Implementierung von: for(int i=0; i< 8; ++i) { for(int j=0; j< 8; ++j) { float koeffizient=0. 0 f; for(int k=0; k< 8; ++k){ for(int l=0; l< 8; ++l){ koeffizient = koeffizient + bild. Block[k*8+l]* cos(i*PI*((2*k)+1)/16)* cos(j*PI*((2*l)+1)/16); }} if ((i==0)&&(j!=0))koeffizient=koeffizient*1/sqrt(2); if ((j==0)&&(i==0))koeffizient=0. 5*koeffizient; dct. Block[i*8+j]=0. 25*koeffizient; }} H. 261/H. 263 Lars Wolter 15

H. 263 Kodieren(DCT) • Beschleunigung der DCT z. B. durch Vorberechnen eines Teiles der

H. 263 Kodieren(DCT) • Beschleunigung der DCT z. B. durch Vorberechnen eines Teiles der DCT. void init_dct(){ int i, j; double s; for (i=0; i<8; i++){ s = (i==0) ? sqrt(0. 125) : 0. 5; for (j=0; j<8; j++) c[i][j] = s * cos((PI/8. 0)*i*(j+0. 5)); } } • Weitere Optimierungen sind spezielle Implementierungen für MMX, SSE, 3 DNOW H. 261/H. 263 Lars Wolter 16

H. 263 Kodieren (Quantisierung) • Die Quantisierung des DC Wertes erfolgt in 8 er

H. 263 Kodieren (Quantisierung) • Die Quantisierung des DC Wertes erfolgt in 8 er Schritten • Die AC Werte werden begrenzt auf -255 bis +255, wobei QUANT + DQUANT die Schrittgröße bestimmen. • Anhang T: Modified Quantization mode – verändert den Einfluß von DQUANT auf QUANT – erlaubt Werte bis 2040 statt 127 bei der kodierung – Unterschiedliche Quantisierung der Chrominanzwerte • Implementierung: – Level = (Coeff/QUANT-1) /2 wenn QUANT ungerade – Level = ((Coeff+1)/QUANT-1) /2 wenn QUANT gerade H. 261/H. 263 Lars Wolter 17

H. 263 Kodieren (Zig. Zag) • Nun folgt die Zig. Zag Anordnung der Daten,

H. 263 Kodieren (Zig. Zag) • Nun folgt die Zig. Zag Anordnung der Daten, H. 263 bietet hier mehrere Varianten (Anhang I : Advanced INTRA Coding mode) neben dem normalen Zig Zag. 1 2 3 4 11 12 13 14 1 5 7 21 23 37 39 53 5 6 9 10 18 17 16 15 2 6 8 22 24 38 40 54 7 8 20 19 27 28 29 30 3 9 20 25 35 41 51 55 21 22 25 26 31 32 33 34 4 10 19 26 36 42 52 56 23 24 35 36 43 44 45 46 11 18 27 31 43 47 57 61 37 38 41 42 47 48 49 50 12 17 28 32 44 48 58 62 39 40 51 52 57 58 59 60 13 16 29 33 45 49 59 63 53 54 55 56 61 62 63 64 14 15 30 34 46 50 60 64 H. 261/H. 263 Lars Wolter 18

H. 263 Kodieren (VLC) • Die AC Koeffizienten werden als (LAST, RUN, LEVEL) Tupel

H. 263 Kodieren (VLC) • Die AC Koeffizienten werden als (LAST, RUN, LEVEL) Tupel gespeichert. • Dabei werden die festgelegten Codes Variabler Länge verwendet. • Anhang T definiert hier eine neue Escapesequenz um die Werte bis 2040 in konstante 11 Bit Level zu verpacken. • Anhang I ändert die Kodierung zur Nutzung von Informationen aus Nachbarblöcken. • Anhang E definiert einen „Syntax-based Arithmetic Coding mode“ statt der VLC tabellen. H. 261/H. 263 Lars Wolter 19

H. 263 Kodieren (VLC) • Für die Implementierung greifen wir wieder stark auf das

H. 263 Kodieren (VLC) • Für die Implementierung greifen wir wieder stark auf das PUT_BITS define zurück. • Am besten legt man sich einen Hash an, der unter Eingabe des Tupels den VLC Code liefert. • Ist der Code nicht vorhanden müssen wir das Tupel direkt speichern. H. 261/H. 263 Lars Wolter 20

H. 263 Andere Frames • Bisher haben wir nur ein komplettes Bild INTRA kodiert.

H. 263 Andere Frames • Bisher haben wir nur ein komplettes Bild INTRA kodiert. • Neben den I-Frames gibt es noch einige weitere bei H. 263 die motion compensation verwenden um Platz zu sparen. • Dieser Zusatzaufwand findet zwischen YUV Kodierung und DCT statt. • Die DCT kodiert dann nur Differenzen. • Evtl. werden komplette Makroblöcke verworfen (wegen geringer Änderung). H. 261/H. 263 Lars Wolter 21

H. 263 P-Frames • Bilder mit INTER-Blocks auch bei H. 261 vorhanden • Makroblocks

H. 263 P-Frames • Bilder mit INTER-Blocks auch bei H. 261 vorhanden • Makroblocks eines Bildes können gemischt INTER und INTRA kodiert sein siehe H. 263 Makroblock. • Anhang G : PB-Frames kombinieren ein P-Frame und ein komplett bidirektional vorhergesagtes B-Frame. • Anahng M: improved PB-Frames erlaubt unidirektionale B-Frames. H. 261/H. 263 Lars Wolter 22

H. 263 Motion Compensation • Nur bei INTER-Blocks • Motionvektoren mit Halbpixeln verlangt Interpolation

H. 263 Motion Compensation • Nur bei INTER-Blocks • Motionvektoren mit Halbpixeln verlangt Interpolation • Werte zwischen -16 und 15, 5 erlauben nur kleinen Suchbereich. • Deswegen gibt es… H. 261/H. 263 Lars Wolter 23

H. 263 Motion Compensation • Anhang D: Unrestricted Motion Vector mode – Erlaubt Vektoren

H. 263 Motion Compensation • Anhang D: Unrestricted Motion Vector mode – Erlaubt Vektoren auf Pixel außerhalb des Bildes zu zeigen. Maximaler – Für den Pixelwert wird der Vektor Breite des Bildes horizontaler Wert auf den Rand projeziert 4, …, 352 [-32, 31. 5] [-64, 63. 5] – Vektoren können außerdem länger 356, …, 704 708, …, 1408 [-128, 127. 5] sein abhängig vom Format. 1412, …, 2048 [-256, 255. 5] • Anhang F: Advanced Prediction modes – Vier Vektoren pro Makroblock. – Pixelwerte werden aus einer gewichteten Summe von drei referenzierten Werten bestimmt. H. 261/H. 263 Lars Wolter 24

Alle Anhänge • Annex A Inverse transform accuracy specification • Annex B Hypothetical Reference

Alle Anhänge • Annex A Inverse transform accuracy specification • Annex B Hypothetical Reference Decoder • Annex C Considerations for Multipoint • Annex D Unrestricted Motion Vector mode • Annex E Syntax-based Arithmetic Coding mode • Annex F Advanced Prediction mode • Annex G PB-frames mode • Annex H Forward Error Correction for coded video signal H. 261/H. 263 Lars Wolter 25

Alle Anhänge • • • Annex I Advanced INTRA Coding mode Annex J Deblocking

Alle Anhänge • • • Annex I Advanced INTRA Coding mode Annex J Deblocking Filter mode Annex K Slice Structured mode Annex L Supplemental Enhancement Information Specification Annex M Improved PB-frames mode Annex N Reference Picture Selection mode Annex O Temporal, SNR, and Spatial Scalability mode Annex P Reference Picture Resampling Annex Q Reduced-Resolution Update mode H. 261/H. 263 Lars Wolter 26

Alle Anhänge • • Annex R Independent Segment Decoding mode Annex S Alternative INTER

Alle Anhänge • • Annex R Independent Segment Decoding mode Annex S Alternative INTER VLC mode Annex T Modified Quantization mode Annex U, specifying an optional Enhanced Reference Picture Selection (ERPS) mode, • Annex V, specifying an optional Data Partitioned Slice (DPS) mode, and • Annex W, specifying optional Additional Supplemental Enhancement Information • Annex X Profiles and Levels Definition H. 261/H. 263 Lars Wolter 27

H. 323 • Eine Videokonferenz hat nicht nur ein Bild • Wir brauchen was

H. 323 • Eine Videokonferenz hat nicht nur ein Bild • Wir brauchen was für: – – – Bildübertragung Tonübertragung Austausch von Einstellungen Verbindungsaushandlung Andere Datendienste (Chat, Whiteboard usw. ) • Das bietet uns H. 323 zusammen mit anderen H. XXX H. 261/H. 263 Lars Wolter 28

H. 323 Hintergrund User Interface • Entstand 1996 als Nachfolger von H. 320 welches

H. 323 Hintergrund User Interface • Entstand 1996 als Nachfolger von H. 320 welches für Videokonferenzen über ISDN gedacht ist. • Aktuell: Version 4 von 2000. • H. 323 verlangt mindestens Audio nach G. 711. • Andere Daten als Audio/Video müssen sich an den T. 120 Standard halten. • Unterstützt zentrale Verzeichnisse H. 261/H. 263 Lars Wolter Audio Video Audio Codecs G. 711 G. 722 … Video Codecs H. 261 H. 263 … Einstellungen H. 245 Call Cntrl RAS Cntrl H. 323 H. 225. 0 Layer Netzwerk Schnittstelle 29

Die Komponenten von H. 323 • H. 323 ist nicht nur ein Client Programm

Die Komponenten von H. 323 • H. 323 ist nicht nur ein Client Programm (Terminal). • Es gibt mehrere Komponenten die H. 323 verstehen. • Gatekeeper: Dieser stellt Addressübersetzung und Bandbreitenkontrolle zur Verfügung. • Multipoint Controller und Processor: Koordiniert mehrere Terminals, so dass diese gemeinsam an einer Konferenz teilnehmen können. • Proxy: Dieser kanalisiert die Verbindung zwischen Terminals z. B. durch eine Firewall. H. 261/H. 263 Lars Wolter 30

Die Hs in H. 323 • H. 225. 0 verpackt Daten fürs LAN, initiert

Die Hs in H. 323 • H. 225. 0 verpackt Daten fürs LAN, initiert und beendet Verbindungen mit Terminals, Proxys, etc. über multiple Kanäle. • H. 245 Steuerung der Medienströme, Austausch von Kompatibilitätsinformationen, Steuerung der Datenkanäle und andere Kommandos. • H. 450 Aushandlung weiterer Kommunikationsmittel • H. 235 Sicherheitsprotokolle (Authentifizierung, Verschlüsselung) • H. 332 Für die Koordination von größeren Konferenzen • G. 711 G. 722 G. 723 G. 728 G. 729 Audio Codecs mit Datenraten von 5. 3 Kbps bis 64 Kbps H. 261/H. 263 Lars Wolter 31

H. 263 mit H. 323 • Bis zu vier H. 263 Substreams werden verwendet.

H. 263 mit H. 323 • Bis zu vier H. 263 Substreams werden verwendet. • Alle vier sind komplett unabhängig. ESTUF EOSBS ESBI • Trennblock trennt die streams – End of Substream und Substream ID • Anhalten einzelner Streams mit Freeze Kommandos. – Im Picture Header kodiert. – Hält Video an bis es aufgehoben wird oder ein Timeout auftritt. – Möglichkeit Teile des Bildes einzufrieren. • Markierung von Bildern oder Videoabschnitten zur externen Verwendung (speicherung o. ä. ) H. 261/H. 263 Lars Wolter 32

Ein Beispiel • Netmeeting, ein Videokonferenztool von Microsoft. • Klein, simpel, umsonst und quasi-Standard

Ein Beispiel • Netmeeting, ein Videokonferenztool von Microsoft. • Klein, simpel, umsonst und quasi-Standard für Videokonferenzen mit Standardhardware. H. 261/H. 263 Lars Wolter 33

Fragen ? H. 261/H. 263 Lars Wolter 34

Fragen ? H. 261/H. 263 Lars Wolter 34