internet Low Bitrate Codec

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Internet Low Bit Rate Codec (iLBC)
Dateiendung: .lbc
MIME-Type: audio/iLBC
Magische Zahl:

Vorlage:Infobox Dateiformat/Wartung/MagischeZahlHex fehlt '#!iLBC30\n' bzw. '#!iLBC20\n'

Entwickelt von: Global IP Solutions
Aktuelle Version: Dezember 2004
Art: Sprachcodec
Standard(s): RFC 3951
Website: http://www.webrtc.org/ilbc-freeware, historisch: http://ilbcfreeware.org/

Der internet Low Bitrate Codec (iLBC) ist ein offen dokumentierter, lizenzgebührenfreier Sprachcodec, der von Global IP Solutions (GIPS) entwickelt worden ist. Er hebt sich von älteren Codecs insbesondere dadurch ab, dass er speziell für Paketvermittelte Datennetze, wie etwa das Internet konzipiert worden ist und daher sehr gut mit Paketverlust und Jitter zurechtkommt. iLBC ist folglich insbesondere für VoIP geeignet.

Eigenschaften[Bearbeiten]

Der in RFC 3951 spezifizierte Codec iLBC ist ein Schmalbandcodec, erfasst also Frequenzen bis 4000 Hz. Der Standard definiert eine Variante mit einer Blocklänge von 30 ms sowie eine mit einer Blocklänge von 20 ms bei einer Abtastrate von 8 kHz und einer Abtasttiefe von 16 Bit.

Blockunabhängiges Linear Predictive Coding[Bearbeiten]

Die Innovation hinter iLBC ist der blockunabhängige Linear Predictive Coding-(LPC)-Algorithmus mit kontrollierter Reaktion auf Paketverlust. Blockunabhängigkeit bedeutet, dass jeder Block völlig unabhängig von den vorangegangenen kodiert wird und somit keine Informationen aus den vorigen Blöcken benötigt werden, um die folgenden Blöcke richtig zu dekodieren. Bei den zuvor veröffentlichten komprimierten Sprachcodecs war das nicht so, wodurch sich Fehler in der Folge von Paketverlust in paketbasierten Datennetzen, wie z.B. dem Internet, über die nachfolgenden Blöcke hinweg fortschreiben. Beim Codec G.729 führt das z.B. zu dumpfen, explosionsartigen Geräuschen auf Empfängerseite. Die Ursache für diesen technischen Mangel liegt darin, dass diese Codecs für das traditionelle digitale Telefonnetz gedacht waren, das auf Virtuellen Verbindungen basiert, bei denen überhaupt nicht vorgesehen war, dass Blöcke verloren gehen können. Deshalb hat man diese Codecs nur gegenüber Bitfehlern robust gestaltet. Paketvermittelte Datennetze reagieren allerdings auch auf Bitfehler völlig anders als Virtuelle Verbindungen in Leitungsvermittelten Netzwerken, da die einzelnen Pakete Prüfsummen erhalten und einfach verworfen sowie gegebenenfalls neu übertragen werden, wenn ein Bitfehler festgestellt wurde. Mit dem Aufkommen von VoIP bestand daher die Notwendigkeit einen Codec zu schaffen, der mit den neuen technischen Grundlagen zurechtkommt.

Zusätzlich bietet iLBC ein Packet Loss Concealment, wie zum Beispiel der Standard ITU-T G.711, der auf Puls-Code-Modulation (PCM) basiert und mit einer festen Bitrate von 64 kbit/s arbeitet. Dabei wird für den fehlenden Teil des Audiosignals ein Ersatzsignal generiert, das aus den umliegenden Blöcken errechnet wird.

Aufgrund dieser Eigenschaften ermöglicht der iLBC-Codec eine verhältnismäßig gute Sprachqualität, selbst wenn Datenblöcke aufgrund verlorener oder verzögerter IP-Pakete fehlen.

Modi[Bearbeiten]

iLBC 30[Bearbeiten]

Bei iLBC 30 umfasst jeder Block ein Audiosignal von 30 ms bzw. 240 Samples, die in 399 Datenbits plus 1 Leerbit codiert sind. Dies entspricht 50 Oktetts bzw. Bytes pro Block.

  Netto Brutto RTP mit IPv4 Brutto RTP mit IPv6
Datenrate in kbit/s 13,33 24 29,33

Es handelt sich um die ältere der beiden Varianten von iLBC.

iLBC 20[Bearbeiten]

Bei iLBC 20 umfasst jeder Block ein Audiosignal von 20 ms bzw. 160 Samples, die in 303 Datenbits plus 1 Leerbit codiert sind. Dies entspricht 38 Oktetts bzw. Bytes pro Block.

  Netto Brutto RTP mit IPv4 Brutto RTP mit IPv6
Datenrate in kbit/s 15,2 31,2 39,2

Die Entwickler von iLBC charakterisieren den gegenüber iLBC 30 jüngeren iLBC 20 folgendermaßen:

“When […] compared to 30 ms frame size mode, this 15.2 kbps mode is characterized with: higher basic quality, higher packet loss robustness, lower complexity and algorithmic delay.”

„Verglichen mit dem 30 ms Blocklängenmodus ist dieser 15,2 kb/s Modus folgendermaßen charaktisiert: Höhere Grundqualität, größere Robustheit gegenüber Paketverlust, geringere Komplexität und weniger algorithmische Verzögerung.“

iLBCfreeware: http://www.ilbcfreeware.org/news.html

RTP Signalisierung der Modi[Bearbeiten]

Das typische Protokoll zur Übertragung von Datenströmen im Internet ist RTP. Es kommt unter Anderem bei VoIP mit SIP zur Anwendung. Um über den gesamten Übertragungsweg hinweg auszuhandeln, welche Datenformate bei den Gesprächteilnehmern und an den Servern vorhanden bzw. zulässig sind, teilen die einzelnen Punkte dies im SIP-Kopfdatenbereich als SDP Offer mit. Bei iLBC 20 sieht diese SDP Offer folgendermaßen aus:

a=rtpmap:109 iLBC/8000
a=fmtp:109 mode=20

Für iLBC 30 gilt mode=30:

a=rtpmap:109 iLBC/8000
a=fmtp:109 mode=30

Sind ausdrücklich beide Varianten vorhanden/erlaubt wird mode auf 0 gesetzt:

a=rtpmap:109 iLBC/8000
a=fmtp:109 mode=0

Fehlt hingegen mode, wird davon ausgegangen, dass iLBC 30 zu verwenden ist:

a=rtpmap:109 iLBC/8000

Wie die iLBC Blöcke mit RTP zu übertragen sind, ist eigens in RFC 3952 (Real-time Transport Protocol (RTP) Payload Format for internet Low Bit Rate Codec (iLBC) Speech) beschrieben.

Lizenz[Bearbeiten]

Ursprünglich war das Verfahren nur in der Gleitkommaversion lizenzgebührenfrei verfügbar. Für die auf Mikrocontrollern und Festkomma-DSPs notwendige Version in Festkommaarithmetik mussten an Global IP Solutions Lizenzkosten bezahlt werden.[1] Infolge der Akquise von GIPS durch Google Inc. steht das Verfahren lizenzkostenfrei zur unbedingten Nutzung für jedermann zur Verfügung und wird die Referenzimplementierung als Freie Software unter den Bedingungen einer BSD-artigen Lizenz verbreitet.[2]

Vergleich zu G.729A[Bearbeiten]

  • Grundqualität höher als G.729A, höhere Robustheit gegenüber Paketverlust
  • Berechnungskomplexität vergleichbar mit G.729A
  • Im Gegensatz zu G.729a freie Lizenz, Nutzung kostenlons

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Lizenz- und Produktinfos zu iLBC
  2. http://www.webrtc.org/ilbc-freeware