Multimediadatenformate H 263 H 261 und alles was
- Slides: 34
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. 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 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 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 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 • 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 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 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 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 (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 - 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 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 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 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; 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 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 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 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 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 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. • 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 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 • 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 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 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 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 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 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 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 (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 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. • 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 für Videokonferenzen mit Standardhardware. H. 261/H. 263 Lars Wolter 33
Fragen ? H. 261/H. 263 Lars Wolter 34
- Das alles ist deutschland das alles sind wir
- Alles is geoorloofd maar niet alles is nuttig
- Isys 263
- Cs 263
- 4832 rounded to the nearest 10
- Https://slidetodoc.com/6-4-b-the-piano-method-aka-sticks/
- 263 papa
- 40 cfr 273
- Sec. 8 of r.a. no. 6132
- Isys 263
- Sami asked 50 people which drinks they liked
- Stat 261
- Texas family code 261
- Emt 261
- Dlpp-261
- Ekvatoru 2 dəfə kəsən çay
- Bcbs 261
- Cs 261
- Fuvarozói szakmai irányító
- Tp 261
- Alles in 1 groep 4
- Symbool droogkuis
- Tapferkeit freiheit automatic
- Voor alles is een oplossing
- Alles wat adem heeft love de heer psalm 150
- An dir mag ich besonders
- Du bist nichts dein volk ist alles
- Laat alles wat ademt in vrede bestaan
- Alles wat adem heeft
- Winternacht eichendorff
- Herzlich willkommen zum elternabend
- Chemie einfach alles
- Zerbrich dir nicht den kopf
- Eines tages wird alles gut sein das ist unsere hoffnung
- Feuer freund oder feind grundschule