DE60038661T2 - Algorithmus zur Anpassung des Jitterspeichers - Google Patents

Algorithmus zur Anpassung des Jitterspeichers Download PDF

Info

Publication number
DE60038661T2
DE60038661T2 DE2000638661 DE60038661T DE60038661T2 DE 60038661 T2 DE60038661 T2 DE 60038661T2 DE 2000638661 DE2000638661 DE 2000638661 DE 60038661 T DE60038661 T DE 60038661T DE 60038661 T2 DE60038661 T2 DE 60038661T2
Authority
DE
Germany
Prior art keywords
jitter
memory
current
size
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE2000638661
Other languages
English (en)
Other versions
DE60038661D1 (de
Inventor
Mark Boca Raton Grosberg
Mark Boynton Beach Flanagan
Kristin Boynton Beach Butcher
Jeff Lake Worth Cripe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens Communications Inc
Original Assignee
Siemens Communications Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Communications Inc filed Critical Siemens Communications Inc
Application granted granted Critical
Publication of DE60038661D1 publication Critical patent/DE60038661D1/de
Publication of DE60038661T2 publication Critical patent/DE60038661T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/062Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
    • H04J3/0632Synchronisation of packets and cells, e.g. transmission of voice via a packet network, circuit emulation service [CES]

Description

  • Die vorliegende Erfindung bezieht sich auf eine Paketübertragung und insbesondere ein System und ein Verfahren zur Optimierung eines Jitterspeichers.
  • Wenn Sprachdaten über Paketnetze übermittelt werden, z. B. Telephony-over-LAN-Netze (ToL) oder Voice-over-IP-Netze (VoIP), werden die Sprachinhalte in der Regel komprimiert, paketiert und schließlich über das Netz an das Ziel gesendet. Wenn die Pakete in das Netz hinein gesendet werden, werden sie mit einer konstanten Rate generiert. Bedingt durch das Verhalten des Paketnetzes gehen jedoch die gleichmäßigen Zeitintervalle zwischen den Paketen verloren, während die Pakete das Netz durchlaufen. Diese Unregelmäßigkeit der Pakettrennung wird auch „Jitter" genannt. Jitter kann zu Klickgeräuschen, Verzögerungen und sonstigen Unannehmlichkeiten bei Multimediaübertragungen führen, was eine allgemein schlechte Wiedergabequalität mit sich bringt. Ein Jitterspeicher wird vielfach verwendet, um die Pakettrennung gleichmäßiger zu gestalten. Bei einem Jitterspeicher handelt es sich um einen FIFO-Pufferspeicher („First in, first out"-Speicher), bei dem Pakete den Speicher mit einer vordefinierten, konstanten Rate verlassen. Wichtig ist eine Minimierung des Ausmaßes der tatsächlichen Jitterpufferspeicherung, da der Jitterpufferungsprozess Verzögerungen bei der Signalwiedergabe mit sich bringt. Eine übermäßige Pufferspeicherung verzögert die Ausgabe der übertragenen Daten, während eine zu geringe Pufferspeicherung Datenlücken mit sich bringt.
  • Die Jitterwerte schwanken während einer Übertragungssequenz. Unter „Jitterwert" versteht man die mittlere Abweichung bei den Paketankunftzeiten. Gemessen wird er, wenn Pakete im Verlauf eines implementierungsspezifischen Intervalls eintreffen. Der in der Literatur (gemäß IETF RFC 1889) angegebene Jitter-Istwert ist ein exponentiell gemittelter Wert der Jitter-Werte für jedes Paket während des Intervalls.
  • Die Verteilung des mittleren Jitterwertes unterscheidet sich signifikant von den Jitter-Istwerten, so dass übliche auf der Warteschlangentheorie basierende Lösungen nicht anwendbar sind.
  • Ein Jitterspeicher, der mit einer konstanten, vordefinierten Größe ausgelegt wird, wird als „statischer Jitterspeicher" bezeichnet. Ein statischer Jitterspeicher erkennt nicht die einzigartigen Jittermerkmale jeder Sequenz und kann sich selbst nicht so anpassen, dass der Bedarf einzelner Sequenzen abgedeckt wird. Die mangelnde Flexibilität des statischen Jitterspeichers reduziert die Glättungsfähigkeiten des Jitterpufferungsprozesses, so dass er bei einigen Sequenzen nicht für ausreichende Pufferung sorgen kann, während er andere Sequenzen unnötig verzögert.
  • Die Implementierung eines dynamischen Jitterspeichers ist von der US-Patentschrift 4.453.247 her bekannt, bei der die Größe eines so genannten abweichungsabsorbierenden Pufferspeichers dynamisch geändert werden kann, um eine Schwankung der Übertragungsverzögerungszeit bei Sprachpaketen aufzufangen. Basierend auf der Abweichungskalkulation ist die Größe des abweichungsabsorbierenden Pufferspeichers modifizierbar.
  • Die erwähnten und andere Nachteile des bisherigen Stands der Technik werden zu großen Teilen durch ein System und ein Verfahren gemäß Ausführungsformen der vorliegenden Erfindung überwunden.
  • Die Erfindung wird in den unabhängigen Ansprüchen definiert, auf die hier Bezug genommen werden sollte. Weitere vorteilhafte Merkmale werden in den abhängigen Ansprüchen ausführlich behandelt.
  • Eine Jitterspeichersteuerung gemäß einer Ausführungsform der vorliegenden Erfindung erlaubt es, die Größe des Jitterspeichers dynamisch entsprechend dem abweichenden Jitter der aktuellen Sequenz anzupassen. Die Jitterspeichersteuerung unterhält einen Cachespeicher mit den vorhergehenden Jitterwerten. Dieser Cachespeicher enthält exponentiell gemittelte Werte, die das langfristige Verhalten der Jittermerkmale eines spezifischen Ziels darstellen, d. h. ein „jitterspezifisches Gedächtnis" bilden. Diese Werte können benutzt werden, um die Größe des Jitterspeichers zu initialisieren. Der Jittercachespeicher verhindert, dass die Größe des Speichers mit einem willkürlichen Wert initialisiert wird, der die früheren Jittermerkmale des spezifischen Ziels unbeachtet lässt.
  • Die Jitterspeichersteuerung arbeitet mit zwei Hauptvariablen, um die Größe des Jitterspeichers anzupassen: „current_depth" (aktuelle Größe) und „rise" (Anstieg). Die Variable „current_depth" berücksichtigt den aktuellen Jitter, während die Variable „rise" Größenanstiege auf der Basis früherer Jitter „abfedert". Diese beiden Variablen werden verwendet, um eine genauere Speichergröße zu generieren, die an schwankende Jitterwerte anpassungsfähig ist. Die Jitterspeichergröße kann sich im Verlauf einer einzelnen Datensequenz auf der Basis der Schwankung des wirksamen Jitters ändern.
  • Die Erfindung lässt sich besser verstehen, wenn die folgende ausführliche Beschreibung der Ausführungsformen in Verbindung mit den folgenden Zeichnungen herangezogen wird, wobei:
  • 1 ein Blockdiagramm eines beispielhaften Telephony-over-LAN-Netzes (ToL) gemäß einer Ausführungsform der Erfindung ist; und
  • 2 ein Blockdiagramm eines beispielhaften Codec gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • Die 1 bis 2 verdeutlichen ein System und ein Verfahren zur Anpassung von Jitterspeichern gemäß einer Implementierung der vorliegenden Erfindung. Gemäß einer Ausführungsform der Erfindung wird die Größe eines Jitterspeichers auf der Basis eines aktuellen Jitters und einer Historie früherer Jitter angepasst. Es sei darauf hingewiesen, dass die technische Lehre der vorliegenden Erfindung auf jedes Übertragungsmedium anwendbar ist, bei dem Daten mit einer konstanten Rate generiert werden, bei dem jedoch das Übertragungsmedium die Übertragungsrate stört. Die Abbildungen dienen also lediglich als Beispiele.
  • Bezug nehmend auf 1 wird ein beispielhaftes Telekommunikationssystem 100 gemäß einer Ausführungsform der Erfindung gezeigt. Das Telekommunikationssystem 100 beinhaltet ein Local Area Network (LAN) oder Paketnetz 101. Wie in der Abbildung gezeigt, ist das Telekommunikationsnetz als ein H.323-kompatibles Netz ausgeführt. Es sei jedoch darauf hingewiesen, dass jede Art von Multimedia-Paketnetz oder jedes Netz für die Übertragung zeitabhängiger Daten verwendet werden kann. Wie dargestellt, sind mit dem LAN 101 verschiedene H.323-Endgeräte 102a und 102b, eine Multipoint Control Unit (MCU) 104, ein H.323-Gateway 106, ein H.323-Gatekeeper 108, ein LAN-Server 112 sowie eine Mehrzahl anderer Geräte wie etwa Personal Computer (PCs – nicht dargestellt) gekoppelt.
  • Die H.323-Endgeräte 102a und 102b erfüllen die H.323-Empfehlung. Auf diese Weise unterstützen die H.323-Endgeräte 102a und 102b die H.245-Steuerungssignalisierung für die Verhandlung der Medienkanalbelegung, Q.931 (H.225.0) für die Rufsignalisierung und den Rufaufbau, H.225.0-Registrierung, -Zulassung, und -Status (RAS) sowie RTP/RTCP für die Sequenzierung von Audio- und Videopaketen. Die H.323-Endgeräte 102a und 102b können weiterhin Audio- und Video-Codecs, T.120-Datenkonferenzschaltungsprotokolle und MCU-Funktionalitäten implementieren. Weitere Einzelheiten zu der H.323-Empfehlung sind bei der International Telecommunications Union erhältlich.
  • Weiterhin können – wie ausführlicher weiter unten erläutert – eine oder mehrere Netzeinheiten, z. B. das Gateway 106, einen Jitterspeicher 113 und eine Jitterspeichersteuerung 110 gemäß der vorliegenden Erfindung beinhalten. Wie ausführlicher weiter unten beschrieben, dient die Jitterspeichersteuerung 110 der Ermittlung des aktuellen und des früheren Jitterverhaltens. Die Jitterspeichergröße wird auf der Basis dieser Analyse angepasst.
  • Eine beispielhafte Schnittstelle, einschließlich eines Jitterspeichersystems gemäß einer Ausführungsform der vorliegenden Erfindung, ist in 2 zu sehen. Ein Codec 14 beinhaltet einen Encoder 88 zur Kodierung von Audiodaten und einen Decoder 96 zur Dekodierung kommender Audiodaten. Der Decoder 86 ist mit einem Digital/Analog-Wandler 82 gekoppelt. In gleicher Weise ist der Encoder 88 mit einem Analog/Digital-Wandler 84 gekoppelt. Ein Jitterspeicher 113 ist am Eingang zum Decoder 86 vorgesehen. Ein Paketierer 80 ist am Ausgang des Encoders 88 vorgesehen. Der Paketierer 80 formatiert gehende Audiodaten zu Datenpaketen zwecks Übertragung über das Datennetz. Eine Steuerung 110, die durch einen bekannten Mikro-Controller verkörpert werden kann, steuert den Betrieb des Jitterspeichers 113 und des Paketierers 80. Wie unten ausführlicher erläutert wird, überwacht die Steuerung 110 in Verbindung mit dem Jittercachespeicher 109 das Jitterverhalten und passt die Jitterspeichergröße auf der Basis der Analyse des aktuellen und des vergangenen Jitters an. Der Jittercachespeicher enthält einen exponentiell gemittelten Wert, der die statistischen Jitterhistorien spezifischer Ziele darstellt.
  • Eine dynamische Jitterspeichersteuerung gemäß einer Ausführungsform der vorliegenden Erfindung passt dynamisch eine Jitterspeichergröße entsprechend einer „aktuellen Größe" und eines „Anstiegs" an. Die aktuelle Größe („current_depth") ist ein Parameter, der sich auf die gemessene Größe des Jitterspeichers bezieht. Der Anstieg („rise") ist die errechnete „Abfederung", die an die Jitterspeichergröße angehängt wird (zu der aktuellen Größe addiert wird), um die frühere Jitterhistorie einer Datenverbindung zu berücksichtigen. Jedes Mal, wenn ein erhöhter Jitterwert abgetastet wird, wird dem Anstieg ein vordefinierter Zuschlagswert hinzugefügt, der das Volumen des bereitgestellten „zusätzlichen" Pufferspeicherplatzes erhöht. Der „rise"-Zuschlagswert ist ein konstanter positiver Wert, der nur dazu dienen kann, den Wert des Anstiegs zu erhöhen. Wenn der Algorithmus einen Jitterwert feststellt, der höher als das ist, was der Pufferspeicher vorsieht, wird ein vordefinierter „rise"-Zuschlagswert zum aktuellen Anstieg hinzugefügt, so dass die Gesamtgröße des Jitterpufferspeichers erhöht wird. Die Erhöhung des Gesamtanstiegs des Jitterspeichers bereitet den Pufferspeicher so vor, dass er eine Erhöhung des Jitters während der gesamten Übertragung bewältigen kann. Die Variable „rise" erlaubt es dem System zu „lernen", dass eine negative Entwicklung erneut negativ werden könnte, und sich schneller an diese anzupassen, während die Variable „current_depth" für die Anpassung an die aktuellen Jittermerkmale zuständig ist. Die Verzögerung wird bei guten Datenverbindungen minimiert, jedoch die Variable „rise” erlaubt es dem System dann, stabil zu bleiben, wenn die Verbindung erneut mit Jitter konfrontiert wird.
    Parameter Beschreibung
    Current_depth Aktuelle Größe des Algorithmus. Die Variable „current_depth" ist nicht zu verwechseln mit der Gesamtgröße des Jitterspeichers. Die Gesamtgröße des Jitterspeichers beinhaltet sowohl die Variable „current_depth" als auch die Variable „rise".
    rise Die „Abfederung" zur Erhöhung der Größe auf Grund des Vorhandenseins der früheren Jitterhistorie. Dies ist eine monoton steigende Variable.
    Tabelle 1
  • Die verwendeten Parameter beinhalten einen Maximum- und einen Minimum-Schwellenwert sowie Anstiegsinkremente, wie sie in der nachstehenden Tabelle 2 beschrieben werden:
    Parameter Beschreibung Wertbereich
    Minimum_depth Dies ist die absolut niedrigste Größe, auf die der Jitterspeicher angepasst werden kann. Mindestpufferung, die für eine „optimale" Netzkonfiguration erforderlich ist.
    Maximum_depth Dies ist die höchste Größe, auf die der Jitterspeicher angepasst werden kann. Maximaler Pufferungswert, der mit einer akzeptablen Regeneration der Originaldaten kompatibel ist.
    Initial_depth Dies ist der anfängliche Wert, der der Variable „current_depth" zugewiesen wird, ehe die erste Jitterabtastung empfangen wird, wenn keine Informationen im Jittercachespeicher verfügbar sind. Abgestimmter Wert auf der Basis der mittleren Netzübermittlungszeit dividiert durch die Nennpaketrate.
    Initial_rise Dies ist der anfängliche Wert für die Anstiegzuschlagsabfederung, wenn keine Informationen im Jittercachespeicher verfügbar sind. Abgestimmter Wert auf der Basis der Standardabweichung der mittleren Netz-Paketübermittlungszeit (verdoppelt) dividiert durch die Nennpaketrate.
    Maximum_constant_rise Dies ist der maximale geschätzte Anstiegszuschlag, der auf die Jitterspeichergröße anwendbar ist. Dieser Wert begrenzt den Pufferungsbetrag „über" den vom aktuellen Jitter abgeleiteten angewandten Wert hinaus. Abgestimmter Wert, um eine schnelle Anpassung an sich verschlechternde Netzbedingungen und zugleich eine akzeptable Leistung im Hinblick auf das Nennverhalten des Netzes zu erreichen. In der Regel etwas weniger als die maximale Größe abzüglich der anfänglichen Größe.
    Rise_penalty Eine konfigurierbare Konstante, die zum Anstieg hinzuaddiert wird, um den Jitter zu berücksichtigen. Diese „Rise_penalty" dient dazu, den Anstieg zu erhöhen, wenn es vom Algorithmus für notwendig gehalten wird, wobei es sich um den Betrag handelt, um den der gecachte Anstieg anfangs wegen Langzeitabklingen dekrementiert wird. Abgestimmter Wert, der mehrere Anstiegsinkremente berücksichtigt.
  • Wie oben angegeben, ist die Jitterspeichergröße eine Kombination aus einem „current_depth"-Wert und einem „rise"-Wert. Diese Werte dienen der Jitterspeichersteuerung dazu, die Jitterspeichergröße an die spezifischen Bedürfnisse jeder Sequenz anzupassen.
  • Die Jitterspeichergröße wird initialisiert, wenn eine neue Sequenz beginnt. Während der anfänglichen Jittermessungen reichen die Jitterabtastdaten nicht aus, um eine neue Jitterspeichergröße abzuleiten, die individuell auf die aktuelle Übertragung zugeschnitten ist. Eine bestimmte Anzahl von Jitterabtastungen muss empfangen werden, ehe eine präzise Jitterspeichergröße bestimmbar ist. Der Jittercachespeicher verhindert, dass dieser Datenmangel die Jitterleistung während dieses anfänglichen Zeitraums verschlechtert.
  • Um das System für eine bestimmte Übertragungssequenz unter Verwendung einer bestimmten Pfadkennung zu initialisieren, wird folgende Operation durchgeführt:
    Figure 00090001
  • Dieser Prozess zur Initialisierung des Jittercachespeichers wird unter Bezugnahme auf dem oben genannten Pseudo-Code beschrieben. Anfangs wird der Jittercachespeicher 109 auf aktuelle Daten durchsucht, d. h. auf Daten, die die Jitterhistorie des aktuellen Ziels betreffen. Wenn der Jittercachespeicher Daten enthält, die das aktuelle Ziel betreffen, werden die anfängliche Größe und der anfängliche Anstieg auf der Basis der statistischen Daten dieses Ziels initialisiert. Der anfängliche Anstieg wird dann um ein Inkrement (rise_penalty) abwärts angepasst, um die langfristige Reduzierung des Gesamt- und des gecachten Anstiegswertes zu berücksichtigen. Die anfängliche Größe wird um den gleichen Betrag nach oben angepasst, um die Speichergröße auf der Basis des gecachten Wertes zu berücksichtigen. Wenn jedoch keine Daten, die das aktuelle Ziel betreffen, vorhanden sind, werden die Größe und der Anstieg mit vordefinierten Werten, z. B. dem Durchschnitt der gesamten Warteschlange, initialisiert.
  • Der Jittercachespeicher wird erneut zur Bestimmung eines präzisen Anstiegswertes benutzt, während eine Jitterabtastung, d. h. ein Durchschnittswert der Pakettrennungen der aktuellen Übertragung während eines bestimmten Zeitraums, erfasst wird. Die Jitterabtastungen werden regelmäßig während einer Übertragung erfasst und statistisch gemittelt. Zur Bestimmung des Durchschnittswertes kann jedes Verfahren verwendet werden. Auf diese Weise wird der Jitterspeicher während des Datenempfangs dynamisch aktualisiert. Der anfängliche Anstieg wird dann auf den Anstiegswert eingestellt, der auf der Basis der vorherigen Jitterwerthistorie des Ziels mittels des wie oben beschrieben angepassten Jittercachespeichers berechnet wurde. Wenn keine Daten, die das aktuelle Ziel betreffen, vorhanden sind, wird der anfängliche Anstieg auf den Durchschnittswert des gesamten wie oben beschrieben angepassten Cachespeichers eingestellt. Wenn der Cachespeicher leer ist, ist der Wert der vordefinierte Initialisierungswert. Für jede gemeldete Jitterabtastung wird dann wie nachfolgend beschrieben eine Reihe von Maßnahmen durchgeführt:
    Figure 00100001
    Figure 00110001
  • Eine Variable namens „new_depth" wird berechnet, indem der aktuelle Abtastwert herangezogen und durch die Frame-Länge dividiert wird. Die Frame-Länge stellt die Quantifizierungsteilung des ursprünglich kontinuierlichen Datenstroms dar. Eine Vorglättungsoperation („Pre-smoothing") kann ebenfalls durchgeführt werden. Das Vorglätten ist optional und wird weiter unten ausführlicher beschrieben. Die Variable „new_depth" wird auf die Größe des Jitterspeichers angewandt, wenn dies von der Steuerung für notwendig erachtet wird. Sobald die mögliche neue Speichergröße („new_depth") bestimmt worden ist, wird eine Reihe von Vergleichen durchgeführt, um festzustellen, ob eine Anpassung der Jitterspeichergröße erforderlich ist.
  • Wenn „new_depth" kleiner als die vorkonfigurierte Mindestgröße ist, dann wird die neue Größe auf den Wert der Mindestgröße geändert. Wenn „new_depth” dem maximalen Größenwert („maximum_depth") entspricht, dann wird ermittelt, ob die aktuelle Größe („current_depth") dem maximalen Größenwert entspricht, und es erfolgt keine Anpassung. In dieser Situation wird eine Warnung ausgegeben, die darauf hinweist, dass der Jitter für dieses Ziel sehr hoch ist. Wenn new_depth jedoch den akzeptablen maximalen Größenwert überschritten hat, dann wird „new_depth" gleich „maximum_depth” gesetzt. So wird die verbesserte Genauigkeit der Jitterspeichergröße berücksichtigt, ohne dass die Grenzen überschritten werden, die zu einer übermäßigen Verzögerung führen.
  • Wenn der berechnete Wert für „new_depth plus 1" größer als der „current_depth”-Wert ist, jedoch keine der vorstehend genannten Bedingungen erfüllt, sind Anpassungen sowohl für den „rise"- als auch den „current_depth"-Wert erforderlich. Ein Anstiegszuschlag wird zum aktuellen Anstiegswert hinzugefügt. Wenn „new_rise" kleiner/gleich „maximum_constant_rise" ist, wird der Anstieg auf den neuen Anstieg eingestellt. Wie oben beschrieben handelt es sich beim Anstiegszuschlag um einen monoton steigenden Wert, der die Abweichung früherer Jitterwerte berücksichtigt. Dieser Wert verhindert auch, dass sporadisch oder zyklisch auftretender Jitter die Präzision der Jitterspeicheranpassung verzerrt. Anschließend wird der Wert für „current_depth" auf „new_depth plus rise" eingestellt. Es kann eine Nachglättungsoperation geben, wie weiter unten ausführlicher beschrieben wird. Die Cachespeichergröße wird auf die aktuelle Größe aktualisiert.
  • Jedes Mal, wenn der Wert für „current_depth" oder „rise" geändert wird, wird der Jittercachespeicher aktualisiert, um die neusten Zustände dieser Variablen widerzuspiegeln. Das bedeutet, dass neue Werte für „new_cache_depth" und „new_cache_rise" bestimmt werden.
  • Insbesondere enthält der Jittercachespeicher – wie oben bereits erwähnt – exponentiell gemittelte Werte, die die Größen- und Anstiegswerthistorie eines bestimmten Ziels darstellen. Jeder Wert ist eine Kombination aus dem aktuellen Zustand der Variable, der eingegeben wird, und einem Wert, der die vergangenen Zustände der Variable als Ganzes darstellt. Eine Gleichung des Typs „exponentieller gleitender Durchschnitt" wird verwendet, um sowohl den Größen- als auch den Anstiegswert im Cachespeicher zu aktualisieren. Dies ermöglicht es, den Werten für den aktuellen Anstieg und die aktuelle Größe eine vordefinierte Gewichtung zu geben, wenn sie zur Aktualisierung des Jittercachespeichers benutzt werden. Der Parameter „Alpha" bestimmt das exponentielle Verhalten dieses Cachespeichers, wenn neue Daten hinzugefügt werden. Der Alpha-Wert verhält sich indirekt proportional zum Effekt der neuen Werte auf den Cachespeicher. Alpha kann zwischen „0" und „1" einschließlich liegen. Ein hoher Alpha-Wert deutet darauf hin, dass neue Aktualisierungen einen geringen Effekt auf den Cachespeicher haben und umgekehrt. Wie oben erwähnt, können entweder die Eingangsdaten („new_depth") oder die Ausgangsdaten („current_depth") oder beide exponentiell an den angegebenen Punkten geglättet werden (Vorglätten („PreSmoothing") oder Nachglätten („PostSmoothing") oder beides). Glätten kann eine größere Stabilität bewirken, indem die Jitterspeichergröße seltener geändert wird. Doch lässt das Glätten die durchschnittliche Jitterspeichergröße in der Regel etwas höher ausfallen, so dass die Entscheidung, die Daten zu glätten, von der Anwendung abhängig ist.
  • „PreSmoothing" errechnet sich wie folgt: smoothed_depth = depth_alpha·smoothed_depth + (1 – depth_alpha)·new_depth
  • Dann wird der geglättete Wert („smoothed_depth") an Stelle des neuen Wertes („new_depth") verwendet. Der „depth_alpha"-Wert kann sich zwischen 0 bis 1 bewegen.
  • „Postsmoothing” errechnet sich wie folgt: jitter_depth = jitter_alpha·jitter_depth + (1 – jitter_alpha)·current_depth
  • Die Jitterspeicher-Istgröße wird dann auf die errechnete Jitterspeichergröße an Stelle des „current_depth"_Wertes eingestellt. Der „jitter_alpha"-Wert kann sich zwischen 0 bis 1 bewegen.

Claims (6)

  1. Verfahren, einschließlich des Empfangs von Daten in einem Jitterspeicher (113), wobei das Verfahren Folgendes umfasst: Anpassen der Größe des besagten Jitterspeichers (113) durch Analyse einer Jitterhistorie, wobei das besagte Anpassen die Analyse des Jitters einer aktuellen Übertragungssequenz von Paketen beinhaltet; dadurch gekennzeichnet, dass besagte Anpassung die Bestimmung der aktuellen Größe des besagten Jitterspeichers (113) und eines Anstiegswertes beinhaltet, wobei der besagte Anstiegswert eine monoton steigende Variable ist und der besagte Anstiegswert einen Betrag definiert, um den die besagte aktuelle Größe erhöht werden kann, wobei der besagte Anstieg und die besagte aktuelle Größe die Gesamtgröße des Jitterspeichers definieren.
  2. Verfahren nach Anspruch 1, wobei die besagte Anpassung die Bestimmung eines anfänglichen aktuellen Größen- und eines anfänglichen Anstiegswertes auf der Basis eines Wertes beinhaltet, der in einem Jittercachespeicher (109) gespeichert ist, bevor die besagte aktuelle Paketübertragungssequenz empfangen wird.
  3. Verfahren nach Anspruch 1, wobei die besagte Anpassung das Aktualisieren des besagten Wertes beinhaltet, der im Jittercachespeicher (109) während der besagten Paketübertragungssequenz gespeichert ist.
  4. Telekommunikationssystem oder -gerät, einschließlich eines Jitterspeichers (113), wobei der Jitterspeicher Folgendes beinhaltet: einen Jittercachespeicher (109), der so konfiguriert ist, dass er eine Jitterhistorie übertragener Daten speichert; und eine Jitterspeichersteuerung (110), die so konfiguriert ist, dass sie die Größe des besagten Jitterspeichers auf der Basis der Analyse der besagten Historie anpasst; wobei bei dem besagten Telekommunikationssystem oder -gerät die besagte Jitterspeichersteuerung (110) ferner so konfiguriert ist, dass sie den Jitter einer aktuellen Paketübertragungssequenz analysiert; dadurch gekennzeichnet, dass die besagte Jitterspeichersteuerung (110) so konfiguriert ist, dass sie die aktuelle Größe des besagten Jitterspeichers (113) und eines Anstiegswertes bestimmt, wobei der besagte Anstiegswert eine monoton steigende Variable ist und einen Betrag definiert, um den die besagte aktuelle Größe erhöht werden kann, wobei der besagte Anstiegswert und die besagte aktuelle Größe die Gesamtgröße des Jitterspeichers definieren.
  5. Telekommunikationssystem oder -gerät nach Anspruch 4, wobei die besagte Jitterspeichersteuerung (110) so konfiguriert ist, dass sie einen anfänglichen aktuellen Größen- und einen anfänglichen Anstiegswert auf der Basis eines Wertes bestimmen, der im Jittercachespeicher (109) gespeichert ist, bevor die besagte aktuelle Paketübertragungssequenz empfangen wird.
  6. Telekommunikationssystem oder -gerät nach einem der vorhergehenden Ansprüche, wobei die besagte Jitterspeichersteuerung (110) so konfiguriert ist, dass sie den besagten im Jitterspeicher (109) gespeicherten Wert während der besagten Paketübertragungssequenz aktualisiert.
DE2000638661 1999-11-15 2000-11-09 Algorithmus zur Anpassung des Jitterspeichers Expired - Lifetime DE60038661T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/440,215 US6747999B1 (en) 1999-11-15 1999-11-15 Jitter buffer adjustment algorithm
US440215 1999-11-15

Publications (2)

Publication Number Publication Date
DE60038661D1 DE60038661D1 (de) 2008-06-05
DE60038661T2 true DE60038661T2 (de) 2009-05-28

Family

ID=23747902

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2000638661 Expired - Lifetime DE60038661T2 (de) 1999-11-15 2000-11-09 Algorithmus zur Anpassung des Jitterspeichers

Country Status (4)

Country Link
US (1) US6747999B1 (de)
EP (1) EP1104958B1 (de)
AT (1) ATE393505T1 (de)
DE (1) DE60038661T2 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6870837B2 (en) * 1999-08-19 2005-03-22 Nokia Corporation Circuit emulation service over an internet protocol network
US7170856B1 (en) * 1999-08-19 2007-01-30 Nokia Inc. Jitter buffer for a circuit emulation service over an internet protocol network
US6980569B1 (en) * 1999-10-18 2005-12-27 Siemens Communications, Inc. Apparatus and method for optimizing packet length in ToL networks
JP3344401B2 (ja) * 2000-03-03 2002-11-11 日本電気株式会社 ゆらぎバッファ制御装置
SE0004839D0 (sv) * 2000-12-22 2000-12-22 Ericsson Telefon Ab L M Method and communication apparatus in a communication system
US7787447B1 (en) * 2000-12-28 2010-08-31 Nortel Networks Limited Voice optimization in a network having voice over the internet protocol communication devices
US6757292B2 (en) * 2001-07-11 2004-06-29 Overture Networks, Inc. Automatic adjustment of buffer depth for the correction of packet delay variation
US20030023745A1 (en) * 2001-07-26 2003-01-30 Neoplanet, Inc. Method and system for adaptively downloading data from a network device
EP1444811A4 (de) * 2001-09-12 2006-03-01 Lycium Networks B V I Ltd Verfahren zur berechnung eines jitter-puffers und einer paketisierungsverzögerung
US7382793B1 (en) * 2002-01-17 2008-06-03 Juniper Networks, Inc. Systems and methods for determining the bandwidth used by a queue
US7110422B1 (en) * 2002-01-29 2006-09-19 At&T Corporation Method and apparatus for managing voice call quality over packet networks
US7099820B1 (en) * 2002-02-15 2006-08-29 Cisco Technology, Inc. Method and apparatus for concealing jitter buffer expansion and contraction
DE10210651A1 (de) * 2002-03-11 2003-10-09 Siemens Ag Verfahren für eine Qualitäts-Analyse bei der Übertragung von echtzeit-kritischen Daten in einem paket-orientierten Netzwerk
DE50201096D1 (de) * 2002-03-28 2004-10-28 Siemens Schweiz Ag Zuerich Verfahren zur Einstellung eines Jitterpuffers in einem Media Gateway
GB2392062A (en) * 2002-05-24 2004-02-18 Zarlink Semiconductor Ltd Method of organising data packets in a buffer
US7415044B2 (en) * 2003-08-22 2008-08-19 Telefonaktiebolaget Lm Ericsson (Publ) Remote synchronization in packet-switched networks
GB2405773B (en) 2003-09-02 2006-11-08 Siemens Ag A method of controlling provision of audio communication on a network
CN1320805C (zh) 2003-09-17 2007-06-06 上海贝尔阿尔卡特股份有限公司 一种分组交换网络自适应抖动缓冲区调整方法
CN100373890C (zh) * 2004-04-19 2008-03-05 腾讯科技(深圳)有限公司 一种解决网络抖动的方法
CN100426784C (zh) * 2004-06-25 2008-10-15 腾讯科技(深圳)有限公司 一种解决网络抖动的方法
US7970020B2 (en) * 2004-10-27 2011-06-28 Telefonaktiebolaget Lm Ericsson (Publ) Terminal having plural playback pointers for jitter buffer
US7370126B2 (en) * 2004-11-03 2008-05-06 Cisco Technology, Inc. System and method for implementing a demand paging jitter buffer algorithm
JP4318651B2 (ja) * 2005-02-25 2009-08-26 富士通株式会社 出力方法、出力装置及び通信システム
US20060203737A1 (en) * 2005-03-04 2006-09-14 Sprint Communications Company L.P. Traffic delay processing
US7599399B1 (en) 2005-04-27 2009-10-06 Sprint Communications Company L.P. Jitter buffer management
US7916742B1 (en) 2005-05-11 2011-03-29 Sprint Communications Company L.P. Dynamic jitter buffer calibration
US7701980B1 (en) * 2005-07-25 2010-04-20 Sprint Communications Company L.P. Predetermined jitter buffer settings
US7742413B1 (en) 2006-02-01 2010-06-22 Sprint Communications Company, L.P. Utilizing a null jitter buffer to monitor session traffic
US8213444B1 (en) 2006-02-28 2012-07-03 Sprint Communications Company L.P. Adaptively adjusting jitter buffer characteristics
TWI305101B (en) * 2006-03-10 2009-01-01 Ind Tech Res Inst Method and apparatus for dynamically adjusting playout delay
CN101548500A (zh) * 2006-12-06 2009-09-30 艾利森电话股份有限公司 抖动缓冲器控制
FR2922401B1 (fr) * 2007-10-10 2010-04-16 Sagem Comm Dispositif de reception en continu de paquets de donnees audio et/ou video
JP5153891B2 (ja) * 2008-01-25 2013-02-27 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ネットワーク・ノードのための簡易な適応ジッタ・バッファリング・アルゴリズム
EP2114034A1 (de) * 2008-04-28 2009-11-04 British Telecommunications Public Limited Company Kommunikationsnetzwerk
US8355338B2 (en) * 2009-07-14 2013-01-15 Hong Kong Applied Science And Technology Research Institute Co. Ltd. Method of processing sequential information in packets streamed over a network
EP2302845B1 (de) 2009-09-23 2012-06-20 Google, Inc. Verfahren und Vorrichtung zur Bestimmung eines Jitterpuffer-Niveaus
US8630412B2 (en) 2010-08-25 2014-01-14 Motorola Mobility Llc Transport of partially encrypted media
US8477050B1 (en) 2010-09-16 2013-07-02 Google Inc. Apparatus and method for encoding using signal fragments for redundant transmission of data
US8856212B1 (en) 2011-02-08 2014-10-07 Google Inc. Web-based configurable pipeline for media processing
US9787416B2 (en) 2012-09-07 2017-10-10 Apple Inc. Adaptive jitter buffer management for networks with varying conditions
CN103888381A (zh) * 2012-12-20 2014-06-25 杜比实验室特许公司 用于控制抖动缓冲器的装置和方法
US9634947B2 (en) 2015-08-28 2017-04-25 At&T Mobility Ii, Llc Dynamic jitter buffer size adjustment
US11233836B2 (en) * 2019-05-31 2022-01-25 Apple Inc. Concurrent audio streaming to multiple wireless audio output devices

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1074199B (it) 1976-12-23 1985-04-17 Italiana Telecomunicazioni Ora Memoria elastica per la soppressione del disturbo di fase (jitter)nei sistemi di trasmissione per segnali digitali
JPS57159192A (en) * 1981-03-27 1982-10-01 Hitachi Ltd Audio packet exchange system
US5146477A (en) 1987-03-17 1992-09-08 Antonio Cantoni Jitter control in digital communication links
EP0454605A3 (en) 1990-04-25 1992-04-22 International Business Machines Corporation Bus request device in a direct memory access (dma) system
CN1079001C (zh) 1993-03-26 2002-02-06 英国电讯有限公司 代码转换器
US5479457A (en) 1993-08-27 1995-12-26 Vlsi Technology Inc. Method and apparatus for attenuating jitter in a digital transmission line
FR2711435B1 (fr) 1993-10-20 1995-12-29 Cit Alcatel Dispositif pour justifier à intervalles réguliers un train numérique.
EP0683945B1 (de) * 1993-11-19 2002-10-30 Codex Corporation Verfahren zur adaptiven glättung von verzögerungen in sprachpaketanwendungen
JP3130425B2 (ja) 1994-03-18 2001-01-31 富士通株式会社 ジッタ抑圧回路
US5534937A (en) 1994-04-14 1996-07-09 Motorola, Inc. Minimum-delay jitter smoothing device and method for packet video communications
US5528598A (en) 1994-06-03 1996-06-18 Transwitch Corporation Apparatus and method for limiting jitter in a telecommunications signal
US5652627A (en) 1994-09-27 1997-07-29 Lucent Technologies Inc. System and method for reducing jitter in a packet-based transmission network
DE4442654C1 (de) 1994-11-30 1996-05-23 Siemens Ag Verfahren zur Reduktion von Laufzeitschwankungen von ATM-Zellen
US5640388A (en) 1995-12-21 1997-06-17 Scientific-Atlanta, Inc. Method and apparatus for removing jitter and correcting timestamps in a packet stream
US5881245A (en) 1996-09-10 1999-03-09 Digital Video Systems, Inc. Method and apparatus for transmitting MPEG data at an adaptive data rate
US5940479A (en) 1996-10-01 1999-08-17 Northern Telecom Limited System and method for transmitting aural information between a computer and telephone equipment
US6097698A (en) 1996-12-16 2000-08-01 Cascade Communications Corporation Cell loss balance system and method for digital network
US5778218A (en) 1996-12-19 1998-07-07 Advanced Micro Devices, Inc. Method and apparatus for clock synchronization across an isochronous bus by adjustment of frame clock rates
US5872823A (en) 1997-04-02 1999-02-16 Sutton; Todd R. Reliable switching between data sources in a synchronous communication system
JPH1132055A (ja) 1997-07-14 1999-02-02 Fujitsu Ltd バッファ制御装置及びバッファ制御方法
CA2254706A1 (en) * 1997-12-02 1999-06-02 Northern Telecom Limited Speech reception via a packet transmission facility
US6301251B1 (en) 1998-02-19 2001-10-09 Fore Systems, Inc. ATM communications system, UBR-ABR gateway, and method
US6167465A (en) 1998-05-20 2000-12-26 Aureal Semiconductor, Inc. System for managing multiple DMA connections between a peripheral device and a memory and performing real-time operations on data carried by a selected DMA connection
US6452950B1 (en) * 1999-01-14 2002-09-17 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive jitter buffering
US6377931B1 (en) 1999-09-28 2002-04-23 Mindspeed Technologies Speech manipulation for continuous speech playback over a packet network

Also Published As

Publication number Publication date
US6747999B1 (en) 2004-06-08
EP1104958A3 (de) 2004-10-06
ATE393505T1 (de) 2008-05-15
EP1104958A2 (de) 2001-06-06
EP1104958B1 (de) 2008-04-23
DE60038661D1 (de) 2008-06-05

Similar Documents

Publication Publication Date Title
DE60038661T2 (de) Algorithmus zur Anpassung des Jitterspeichers
DE60032458T2 (de) Selbstanpassender Zitterspufferspeicher
DE60129327T2 (de) Anordnung und verfahren in bezug auf die vermittlung von sprache
DE60308930T2 (de) Übertragungssystem für Videoinformation und Programm und Vorrichtung zur Übertragung von Videoinformation
US8804773B2 (en) Method and apparatus for managing voice call quality over packet networks
DE60305793T2 (de) Verfahren, Sender und Empfänger zur Anpassung der Kodierrate an eine wechselnde Übertragungsrate
WO2003026341A2 (de) Verteilte übermittlung von informationen in einem verbindungslosen, paketorientierten kommunikationsnetz
DE3101775A1 (de) Sprachdetektor mit mehrfachem, variablem schwellenwert
DE102005037586A1 (de) IP-Telefon mit Code-Auswahl nach Netzkapazität
DE60302168T2 (de) Datenratenkontroller
DE102005039192A1 (de) Verfahren zur Störungsanalyse eines Datenstroms, insbesondere eines Echtzeit-Datenstroms, in einem Datennetz, Kommunikationssystem und Überwachungsrechner
DE102009008092B4 (de) Verfahren und Vorrichtung zum Kompensieren von Abtastratenschwankungen
DE10050447A1 (de) Verfahren und Vorrichtung zum Optimieren der Paketlänge in ToL-Netzwerken
DE10306293B4 (de) Verfahren zur Übertragungsbandbreitenzuteilung in einer paketorientierten Kommunikationseinrichtung
EP1209860A1 (de) Bandbreitenreservierung in Datennetzwerken
DE60319506T2 (de) Verfahren zur Bestimmung der Bandbreite in Sprache-über-IP Netzwerken
DE60106284T2 (de) Netzwerkübertragungeinheit mit übertragungsprioritäten und zugehöriges Verfahren
EP0459563B1 (de) Vermittlungssystem mit einer Konferenzeinrichtung
EP1124342A2 (de) Verfahren zum Verbessern der Qualität einer Audioübertragung über ein Kommunikationsnetz mit Verwendung der Paketübertragung und Kommunikationseinrichtung zur Realisierung des Verfahrens
DE602004007685T2 (de) Verfahren und server zur steuerung von datenflüssen in einem telekommunikationsnetz
EP1349334B1 (de) Verfahren zur Einstellung eines Jitterpuffers in einem Media Gateway
DE10138363A1 (de) Verfahren zur Gewährleistung der Dienstgüte von Internet-Anwendungen bei optimaler Ausnutzung der aktuellen Netzressourcen
DE69632738T2 (de) Minimierung der verzögerung für eine schaltungsemulator über ein packetvermittlungsnetz (atm)
DE102012206910A1 (de) Verfahren und Vorrichtung zur Signalisierung eines Sendezeitpunktes und/oder eines Systemtaktes
EP1237348A2 (de) Verfahren und Anordnung zur Prüfung der Übertragungsqualität einer Sprachübertragung über ein IP-Netz

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: FRITZSCHE, T., DIPL.-CHEM. DR.RER.NAT., PAT.-ANW.,