H.261/H.263 - PowerPoint PPT Presentation

About This Presentation
Title:

H.261/H.263

Description:

Title: Folie 1 Author: Lars W Last modified by: Lars W Created Date: 1/25/2003 3:48:36 PM Document presentation format: Bildschirmpr sentation Other titles – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 35
Provided by: Lars2153
Category:
Tags: float

less

Transcript and Presenter's Notes

Title: H.261/H.263


1
Multimediadatenformate
  • H263 / H261 und alles was dazugehört.

2
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 (MPEG4?).
  • H.323 H.263 da wo es hingehört.

3
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).

4
Übersicht über H.26X
  • Beide Spezifikationen sind für Videokonferenz-appl
    ikationen gedacht 40kbit/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 !!!

5
H.261

  • Für Videokonferenzen über ISDN Leitungen gedacht.
  • Zwei Formate CIF(352x288) und QCIF(176x144)
  • Bilddaten werden mit voller Luminance (Y) und
    halber Chrominance (CB und CR) verarbeitet.
  • Blöcke bestehen aus 8x8 Pixel, vier Y-Blöcke und
    die zwei dazugehörigen C-Blöcke bilden einen
    Makroblock.
  • Motion Compensation erlaubt einen Vektor pro
    Makroblock mit Werten zwischen -15 und 15.

1
5
6
2
4
3
Y CB CR
6
H.261 fortgesetzt
  • QCIF kodierte bilder maximal 64Kbits, 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

7
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

8
H.263
  • Für Videokonferenzen per Standleitungen oder
    Internet.
  • Spezifiziert für sub-QCIF,QCIF,CIF,4CIF,16CIF.
  • 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 viele Anhänge, von A bis X.
  • Zusammenfassung von Makroblocks zu GOBs oder
    Slices.
  • Fast schon MPEG 4.

9
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-,P-,PB-,B-,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 RLNUM RPSMF TRPI TRP BCI BCM
RPRP
10
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 der anderen GOBs
    können leer bleiben.
  • Stopfbits(GSTUF), 17Bit 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.

11
H.263 Makroblock
Picture type MB type Name COD MCBPC CBPY DQUANT MVD MVD2-4
INTER not coded - X
INTER 0 INTER X X X X
INTER 1 INTERQ X X X X X
INTER 2 INTER4V X X X X X
INTER 3 INTRA X X X
INTER 4 INTRAQ X X X X
INTER 5 INTER4VQ X X X X X X
INTER stuffing - X X
INTRA 3 INTRA X X
INTRA 4 INTRAQ X X X
INTRA stuffing - 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.

12
H.263 Block
  • Der kodierte Block besteht aus 8 Bit DC und den
    AC Werten als VLC.
  • LAST1 letzter AC ! 0
  • RUN ACs0 vor dem AC
  • LEVEL Wert des ACs
  • VLC Der gespeichertBitcode präfixfrei
  • 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.

INDEX LAST RUN LEVEL BITS VLC CODE
0 0 0 1 3 10s
1 0 0 2 5 1111 s
2 0 0 3 7 0101 01s

100 1 39 1 13 0000 0101 1110s
101 1 1 13 0000 0101 1111s
102 ESCAPE 7 0000 011
13
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, nBits, nTempBits,
tempBits, bitStream) \ nTempBits
(nBits)\ // gezählte Bits erhöhen if
(nTempBits gt 32) \ // wenn sie nicht mehr ins
INT passen u_int extra (nTempBits) - 32\ //
Anzahl extrabits tempBits (u_int)(bits) gtgt
extra\ // Bits dazupacken (u_int)bitStream
tempBits\ // Alle bits speichern bitStream
sizeof(u_int)\ // Stream weitersetzen tempBits
(u_int)(bits) ltlt (32 - extra)\ //
extrabits nTempBits extra\ // ins temp
peichern und anzahl setzen else\ //
ansonsten alle bits den temporären
hinzufügen tempBits (u_int)(bits) ltlt (32 -
(nTempBits)) \
14
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.257R)(0.504G)(0.098B)16 CR(0.439R)-(0
.368G)-(0.071B)128 CB-(0.148R)-(0.291G)(0.4
39B)128
CR
CB
Y
15
H.263 Kodieren(DCT)
Direkte Implementierung von
for(int i0ilt 8i) for(int j0jlt 8j)
float koeffizient0.0f for(int
k0klt 8k) for(int l0llt
8l) koeffizient koeffizient
bildBlockk8l
cos(iPI((2k)1)/16)
cos(jPI((2l)1)/16) if
((i0)(j!0))koeffizientkoeffizient1/sqrt(2)
if ((j0)(i!0))koeffizientkoeffizien
t1/sqrt(2) if ((j0)(i0))koeffizien
t0.5koeffizient dctBlocki8j0.25ko
effizient
16
H.263 Kodieren(DCT)
  • Beschleunigung der DCT z.B. durch Vorberechnen
    eines Teiles der DCT.
  • Weitere Optimierungen sind spezielle
    Implementierungen für MMX,SSE,3DNOW

void init_dct() int i, j double s
for (i0 ilt8 i) s (i0) ?
sqrt(0.125) 0.5 for (j0 jlt8
j) cij s cos((PI/8.0)i(j0
.5))
17
H.263 Kodieren (Quantisierung)
  • Die Quantisierung des DC Wertes erfolgt in 8er
    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 ((Coeff1)/QUANT-1) /2 wenn QUANT gerade

18
H.263 Kodieren (ZigZag)
  • Nun folgt die ZigZag 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
19
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.

20
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.

21
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).

22
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 bi-direktional vorhergesagtes
    B-Frame.
  • Anahng M improved PB-Frameserlaubt
    unidirektionale B-Frames.

23
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

24
H.263 Motion Compensation
  • Anhang D Unrestricted Motion Vector mode
  • Erlaubt Vektoren auf Pixel außerhalb des Bildes
    zu zeigen.
  • Für den Pixelwert wird der Vektor auf den Rand
    projeziert
  • Vektoren können außerdem länger sein abhängig
    vom Format.
  • Anhang F Advanced Prediction modes
  • Vier Vektoren pro Makroblock.
  • Pixelwerte werden aus einer gewichteten Summe
    von drei referenzierten Werten bestimmt.

Breite des Bildes Maximaler horizontaler Wert
4, , 352 -32, 31.5
356, , 704 -64, 63.5
708, , 1408 -128, 127.5
1412,, 2048 -256, 255.5
25
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

26
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

27
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

28
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

29
H.323 Hintergrund
  • 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

30
Die Komponenten von H.323
  • H.323 ist nicht nur ein Client Programm
    (Terminal).
  • Es gibt mehrere Komponenten die H.323 verstehen.
  • GatekeeperDieser stellt Addressübersetzung und
    Bandbreitenkontrolle zur Verfügung.
  • Multipoint Controller und ProcessorKoordiniert
    mehrere Terminals, so dass diese gemeinsam an
    einer Konferenz teilnehmen können.
  • ProxyDieser kanalisiert die Verbindung zwischen
    Terminals z.B. durch eine Firewall.

31
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äts-informationen, Steuerung der
    Datenkanäle und andere Kommandos.
  • H.450 Aushandlung weiterer Kommunikationsmittel
  • H.235Sicherheitsprotokolle (Authentifizierung,
    Verschlüsselung)
  • H.332Für die Koordination von größeren
    Konferenzen
  • G.711 G.722 G.723 G.728 G.729Audio Codecs mit
    Datenraten von 5.3 Kbps bis 64 Kbps

32
H.263 mit H.323
  • Bis zu vier H.263 Substreams werden verwendet.
  • Alle vier sind komplett unabhängig.
  • 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.ä.)

ESTUF EOSBS ESBI
33
Ein Beispiel
  • Netmeeting, ein Videokonferenztool von Microsoft.
  • Klein, simpel, umsonst und quasi-Standard für
    Videokonferenzen mit Standardhardware.

34
Fragen ?
Write a Comment
User Comments (0)
About PowerShow.com