DE602005003506T2 - Methode und Apparat zum Verbessern der Synchronisierung einer Verarbeitungseinheit für Multimedia-streams in einer multi-threaded Umgebung - Google Patents

Methode und Apparat zum Verbessern der Synchronisierung einer Verarbeitungseinheit für Multimedia-streams in einer multi-threaded Umgebung Download PDF

Info

Publication number
DE602005003506T2
DE602005003506T2 DE602005003506T DE602005003506T DE602005003506T2 DE 602005003506 T2 DE602005003506 T2 DE 602005003506T2 DE 602005003506 T DE602005003506 T DE 602005003506T DE 602005003506 T DE602005003506 T DE 602005003506T DE 602005003506 T2 DE602005003506 T2 DE 602005003506T2
Authority
DE
Germany
Prior art keywords
timer
processing unit
data
value
filling
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.)
Active
Application number
DE602005003506T
Other languages
English (en)
Other versions
DE602005003506D1 (de
Inventor
Jürgen 31515 Schmidt
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.)
Thomson Licensing SAS
Original Assignee
Thomson Licensing SAS
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 Thomson Licensing SAS filed Critical Thomson Licensing SAS
Publication of DE602005003506D1 publication Critical patent/DE602005003506D1/de
Application granted granted Critical
Publication of DE602005003506T2 publication Critical patent/DE602005003506T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24549Run-time optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

  • Sachgebiet der Erfindung
  • Die Erfindung bezieht sich auf ein Verfahren zur Verarbeitung von Daten in einer Verarbeitungseinheit. Insbesondere bezieht sich die Erfindung auf ein Verfahren zur Verarbeitung von Daten in einer Verarbeitungseinheit, die Datenrahmen für eine Ausgangseinheit durch Kombinieren von Daten aus mehreren Eingangseinheiten erzeugt, wobei die Verarbeitungseinheit, die Eingangseinheiten und die Ausgangseinheit Threads in einem Multithreading-Umfeld sind.
  • Hintergrund
  • Audio-visuelle (AV) Darstellungen, die gemäß dem Motion-Picture-Expert-Group-(MPEG)-Standard ESO/IEC-14496-1, bekannt als MPEG-4-Systeme, kodiert werden, können aus mehreren Datenströmen bestehen, z. B. einem oder mehr Strömen für Video, einem oder mehr Strömen für Audio, oder anderen. Die Audioströme können individuelle, üblicherweise genormte Abtastraten, z. B. 8 kb/s, 16 kb/s, 22,05 kb/s, 32 kb/s, 44,1 kb/s oder 48 kb/s für verschiedene Arten von Audioströmen haben. Ferner bestehen diese Ströme aus Paketen oder Rahmen mit zugehörigen Zeitstempeln.
  • Die Wiedergabe solcher Darstellungen erfordert individuelle Dekodiereinheiten für verschiedene Ströme, eine Verarbeitungseinheit und eine oder mehrere Ausgangseinheiten. Diese Dekodier-, Verarbeitungs- und Ausgangseinheiten können in sogenannter Multi-Threading-Technik unter Verwendung eines Mikroprozessors mit Betriebssystem (OS) und Anwendungs-Software ausgeführt werden, wobei die erwähnten Einheiten als getrennte Software-Unterteilungen ausgeführt werden, die auch als „Tasks" oder „Threads" bezeichnet werden. Ein Thread ist eine unabhängige Einheit aus ausführbarer Software, die sequentiell die Steuerung des Mikroprozessors mit anderen Threads teilt. Da die Threads sequentiell aufgerufen und ausgeführt werden, arbeiten sie miteinander asynchron, und sie können mit einander über eine von dem Betriebssystem vorgesehene Mitteilungs-übermittelnde Anwendungs-Programmierungs-Schnittstelle (API) oder über Funktionsaufrufe kommunizieren. Die Übertragung von Daten zwischen Threads erfordert eine Zwischenspeicherung der Daten, wobei üblicherweise für die Zwischenspeicherung synchronisierte, FIFO-ähnliche Strukturen verwendet werden. Die Erzielung einer akzeptablen Wiedergabequalität erfordert jedoch, dass der Ausgangsdatenstrom, z. B. der Audiostrom, an der Ausgangseinheit kontinuierlich und vollständig ist, d. h. ein Zwischenspeicher-Unterlauf und ein Zwischenspeicher-Überlauf verhindert werden muss. Um eine konstante Datenverfügbarkeit an der Ausgangseinheit zu gewährleisten, wird allgemein ein großer FIFO-Zwischenspeicher zwischen der Verarbeitungseinheit und der Ausgangseinheit verwendet.
  • Ein konventionelles Audio-Verarbeitungssystem ist in 1 dargestellt. Dekodierte Datenblöcke von einem Quellenstrom werden aus einem Dekodierer 11 über einen Rahmen-FIFO 11b in eine Verarbeitungseinheit 14 gelesen, wo sie verarbeitet werden. Die verarbeiteten Datenblöcke werden in einen Block-organisierten FIFO 15 geschrieben, der den Ausgangsmodul 16 speist. Der Ausgangsmodul 16 erzeugt einen kontinuierlichen Strom 17 von Audio-Darstellungsdaten aus den Datenblöcken, die aus dem Rahmen-FIFO 15 gelesen werden, wobei mehrere dekodierte Datenblöcke gleichzeitig verwendet werden. Wenn der FIFO nicht voll ist, sendet er ein Signal 18, z. B. eine Ausnahme-Mitteilung an die Verarbeitungsar beit 14. Dann verarbeitet die Verarbeitungseinheit 14 mehr Daten von ihrem Eingang, bis der FIFO voll ist. Ein solches System kann als Echtzeit-Betriebssystem (RTOS) oder als Nicht-RTOS, wie z. B. Microsoft Windows® ausgeführt werden. Im letzteren Fall, der bevorzugt wird, weil er preiswerter und einfacher als ein RTOS ist, werden getrennte Threads 11T, 14T, 16T für den Dekodierer 11, die Verarbeitungseinheit 14 und den Ausgangsmodul 16 verwendet.
  • Zusammenfassung der Erfindung
  • Bei einigen Anwendungen ist es erwünscht, Daten von verschiedenen Quellen gleichzeitig zu verarbeiten, wobei die Quellen verschiedene Rahmenraten und/oder Abtastraten haben können, und getrennte Dekodierer benötigen können. Z. B. kann es erforderlich sein, Audiosignale aus mehreren Eingängen, z. B. zehn oder mehr, zu überlagern.
  • 2 zeigt eine unkomplizierte Lösung, bei der mehrere Dekodierer 11, 12, 13 mit der Verarbeitungseinheit 14 verbunden sind. Die Dekodierer 11, 12, 13 laufen in getrennten Threads, und die Thread-Verwaltung des OS steuert durch Aufruf der entsprechenden Threads die Reihenfolge, in der die verschiedenen Eingangsdaten verarbeitet werden. Üblicherweise ist ein Thread so lange aktiv, wie er Daten in seinem Eingangs-Zwischenspeicher zu verarbeiten und mit Zwischenräumen in einen Ausgangs-Zwischenspeicher zu schreiben hat. Die Verarbeitungseinheit 14 kombiniert Daten von allen Eingangs-Zwischenspeichern 11b, 12b, 13b und erfordert daher, dass Daten in allen Zwischenspeichern verfügbar sind. Als Ergebnis wird die Zeit zwischen aufeinanderfolgenden Aufrufen der Verarbeitungseinheit 14 länger als in einem Eingangssystem mit einem einzigen Eingang, weil jede Dekodiereinheit 11, 11, 13 versucht, ihren entsprechenden Ausgangs-zwischenspeicher 11b, 12b, 13b vollständig unter Steuerung durch die Thread-Verwaltung des OS zu füllen. Somit ist auch die Gesamtmenge von zu verarbeitenden Eingangsdaten höher als in einem System mit einem einzigen Eingang. Dies führt zu starken Schwankungen der Füllung des Ausgangs-Zwischenspeichers. Insbesondere wenn der Mikroprozessor stark belastet ist, kann das System zu langsam werden, um die Eingangs-Stromdaten zu verarbeiten, was eine Verarbeitung wie in Echtzeit erfordert, und wenn die Thread-Verwaltung für Allzweck und nicht optimiert ist, kann sie sogar auf Grund einer Art von Engpasseffekt blockieren. Dies kann zu einem Datenverlust führen, d. h. nicht alle Eingangsdaten kommen am Ausgangsmodul 16 an, was für einige Datenarten, z. B. hochqualitative Audiodaten, nicht akzeptabel ist.
  • Das beschriebene Mehrfach-Eingangssystem, das als Nicht-RTOS, z. B. bei einer Audio-Video-Darstellungsanwendung läuft, führt zu unvorhersagbarem Timingverhalten der Verarbeitungseinheit bei starker Belastung, z. B. wenn Eingangsdaten von mehreren verschiedenen Audioquellen verarbeitet werden sollen, während zusätzlich der Mikroprozessor andere Aufgaben ausführen muss. Im Ergebnis ist die Synchronisation zwischen Audio und Video wegen einer unvorhersagbaren Verzögerung zwischen der Dekodierung von Audiopaketen und Audioverarbeitung in der Ausgangseinheit schwierig. Ferner verursacht auch die lange Zeit zwischen aufeinanderfolgenden Aufrufen des Threads der Verarbeitungseinheit eine höhere Ansprechzeit auf Benutzer-Beeinflussungen, z. B. Befehle, die in einem Multi-Threading-System üblicherweise auch von der Verarbeitungseinheit ausgeführt werden. Daher dauert es länger, dass Benutzerbefehle wirksam werden.
  • Die von der Erfindung zu lösende Aufgabe besteht darin, ein Verfahren zur Verbesserung des Timing-Verhaltens einer Verarbeitungseinheit aufzuzeigen, die Daten für eine Ausgangseinheit durch Kombinieren der Daten von mehreren Eingangseinheiten erzeugt, wobei alle erwähnten Einheiten Threads in einem Multi-Threading-Umfeld sind und verschiedene Zeitbasen haben können. Eine besondere Aufgabe ist das Aufzeigen eines solchen Verfahrens für ein Audio- oder Audio-Video-Wiedergabegerät für mehrere Multimedia-Stromdaten. Diese Aufgabe wird durch das im Anspruch 1 offenbarte Verfahren gelöst.
  • Gemäß der Erfindung wird das Timing-Verhalten durch Aufrufen der Verarbeitungseinheit in kürzeren Zeitintervallen unter Verwendung eines der Thread-Verwaltung des OS übergeordneten Mechanismus verbessert. Insbesondere umfasst die Erfindung die Verwendung einer Timer-Einheit, um den Thread der Verarbeitungseinheit aufzurufen und den Timer individuell einzustellen. Vorteilhafterweise führt dies zu einer gleichmäßigeren Verteilung der Verarbeitungskapazität des Mikroprozessors. Ferner kann das erfindungsgemäße Verfahren die Priorität des Threads der Verarbeitungseinheit unabhängig von der Thread-Verwaltung des OS erhöhen und die Schwankungen der Füllung des Ausgangs-Zwischenspeichers vermindern. Dies führt zum Beispiel zu einer besseren Audio-Video-Synchronisation und zu einer kürzeren Verzögerung für wechselseitige Benutzerhandlungen.
  • Immer wenn der Thread der Verarbeitungseinheit aufgerufen wird, wird die Füllung des Ausgangs-Zwischenspeichers gemessen, und das Ergebnis der Messung dient zur Bestimmung der Zeit vor dem nächsten Aufruf des Threads der Verarbei tungseinheit. Solange die Füllung unterhalb eines definierten Schwellwerts liegt, z. B. während der Initialisierung, wiederholt die Verarbeitungseinheit den Zyklus der Verarbeitung eines Rahmens und dessen Einschreiben in den Ausgangs-Zwischenspeicher sowie die erneute Messung der Füllung des Ausgangs-Zwischenspeichers, ohne die Timer-Einheit einzustellen. Wenn der Ausgangs-Zwischenspeicher den Schwellwert erreicht hat, wird ein Timer-Wert aus der gemessenen Füllung des Ausgangs-Zwischenspeichers berechnet und die Timer-Einheit auf den berechneten Timer-Wert eingestellt, wobei der Timer den Thread der Verarbeitungseinheit aufruft, wenn seine Zeit abgelaufen ist, und der Thread der Verarbeitungseinheit kann beendet werden, bis er erneut von dem Timer oder durch die Thread-Verwaltung des OS aufgerufen wird.
  • Die durch den Timer-Wert bestimmte Zeitdauer ist so, dass die Verarbeitungseinheit üblicherweise durch den Timer aufgerufen wird und nicht durch die Thread-Verwaltung des OS. Daher hängt die Zeit zwischen der Verarbeitung aufeinanderfolgender Rahmen durch die Verarbeitungseinheit von der Füllung des Ausgangs-Zwischenspeichers ab, d. h. dass die Regelschleife geschlossen ist und dadurch die Regelung verbessert wird. Insbesondere wenn die Ausgangseinheit in regelmäßigen Zeitintervallen, z. B. 80 ms, einen Ausgangsrahmen aus dem Ausgangs-Zwischenspeicher verarbeitet und ein Ausgangsrahmen mehrere Eingangsrahmen umfasst, wobei jeder Eingangsrahmen eine spezifische Abtastrate hat, umfasst die Erfindung die Einstellung des Timers auf einen Wert, der einem gemeinsamen Vielfachen der Kehrwerte der Eingangs-Abtastraten entspricht, aber kürzer als das Zeitintervall der Ausgangseinheiten ist. Es ist insbesondere vorteilhaft, ein gemeinsames Vielfaches, oder insbesondere das kleinste gemeinsame Vielfache der Kehrwerte der Eingangs-Abtastraten auszusuchen, z. B. 20 ms für Abtastraten von 48 kHz, 44,1 kHz, 32 kHz, 22,05 kHz, 16 kHz und 8 kHz entsprechend den Kehrwerten von 20,83 µs, 22,67 µs, 31,25 µs, 45,35 µs, 62,5 µs und 125 µs.
  • Wenn ein Timer verwendet wird, um den Thread einer Verarbeitungseinheit zur Verarbeitung der Rahmen eines bestimmten Ausgangs-Datenstroms, z. B. von Audiodaten, aufzurufen und der Lastwert des Timers von der Füllung des Ausgangs-Zwischenspeichers abhängt, wie von der Erfindung vorgeschlagen, kann die Verarbeitungseinheit nach einer Initialisierungsphase in weitgehend abstandsgetreuen Zeitintervallen arbeiten. Es kann vorteilhaft sein, einen durchschnittlichen Füllwert des Zwischenspeichers für die Berechnung des Timer-Wertes zu verwenden. Der Durchschnittswert aus ein paar Messwerten von aufeinanderfolgenden Aufrufen des Threads, z. B. 2 bis 5 Messwerten, berechnet. Es kann ferner eine Tiefpassfilterung der Durchschnitts-Messwerte verwendet werden, um zum Beispiel das System-Zeitverhalten zu verbessern.
  • Es kann ein bei gängigen Mikroprozessoren vorgesehener Universal-Timer verwendet werden, um im Durchschnitt eine spezifizierte maximale Zeit zwischen der Verarbeitung aufeinanderfolgender Rahmen für eine bestimmte Ausgangseinheit einzuhalten. Der Timer läuft in Echtzeit unabhängig von der Thread-Verwaltung. Mikroprozessoren und/oder Betriebssysteme verwenden üblicherweise solche Timer. Der Universal-Timer löst den Thread der Verarbeitungseinheit zum Dekodieren des nächsten Rahmens aus. Dann wird der Timer mit einem neuen Wert geladen, der aus der Füllung des Zwischenspeichers berechnet wird.
  • Vorteilhafterweise kann eine einfache Rechnung für diesen Zweck verwendet werden, z. B. kann die durchschnittliche Füllung des Zwischenspeichers in eine lineare Gleichung eingegeben werden. In diesem Fall ist es auch möglich, erst den Messwert in eine lineare Gleichung einzugeben und dann einen Durchschnitt zu berechnen. Dieses Verfahren gewährleistet einen verlustlosen Stromzugriff, d. h. verhindert Unterlauf und Überlauf des Zwischenspeichers und gewährleistet eine konstante minimale Verzögerung während der Verarbeitung. Dies ist vorteilhaft, z. B. für bessere Audio-Video-Synchronisation und schnelleres Ansprechen auf wechselseitige Benutzerhandlungen.
  • Die von dem Timer gemessene Zeit ist eine durchschnittliche maximale Zeit in Bezug auf die Tatsache, dass der Mikroprozessor mit einer anderen Aufgabe beschäftigt sein kann, wenn er ausgelöst wird, so dass er erst die andere Aufgabe beenden muss, bevor er auf die Auslösung reagiert. Dieser Fall kann gehandhabt werden, wenn der Ausgangs-Zwischenspeicher groß genug ist, damit die Ausgangseinheit ihre Arbeit fortsetzen kann.
  • Als Konsequenz kann die durchschnittliche Zahl von Datenrahmen oder Blöcken, die in dem FIFO-Zwischenspeicher zwischen der Verarbeitungseinheit und der Ausgangseinheit gespeichert werden, kleiner als in konventionellen Systemen sein, was zum Beispiel zu kürzeren Ansprechzeiten, einer besseren Abschätzung der Darstellungszeit der Audiodaten und daher zu einer besseren Audio-Video-Synchronisation und allgemein zu einer besseren Annäherung des Echtzeitverhaltens in einem Nicht-Echtzeit-System führt.
  • Eine Vorrichtung, die das Verfahren verwendet, ist im Anspruch 8 offenbart.
  • Die erfindungsgemäße Vorrichtung zur Verarbeitung von Daten empfängt Eingangsdaten von mehreren Eingängen und umfasst einen Mikroprozessor, eine Datengruppe, z. B. Programmdaten, und einen Timer, wobei der Mikroprozessor und die Datengruppe eine Datenverarbeitungseinheit und eine Datenausgangseinheit bilden und beide Einheiten Threads in einem Multi-Threading-Umfeld sind, und wobei Daten durch einen Zwischenspeicher von der Verarbeitungseinheit zur Ausgangseinheit geschickt werden. Ferner umfasst die Vorrichtung Mittel zum Messen eines Wertes, der der Füllung des Ausgangs-Zwischenspeichers entspricht und zum Liefern des Wertes an die Verarbeitungseinheit, Mittel zum Berechnen eines Timer-Wertes in der Verarbeitungseinheit, wobei der Timer-Wert von dem Wert abhängt, der der Füllung des Ausgangs-Zwischenspeichers entspricht, und Mittel zum Einstellen des Timers auf den Timer-Wert und zum Starten des Timers, wobei der Timer eine Benachrichtigung sendet, wenn die von dem Timer-Wert spezifizierte Zeit abgelaufen ist, und die Benachrichtigung eine Aktivierung des Threads der Verarbeitungseinheit bewirkt, wenn er nicht bereits aktiv ist, oder sonst eine fortgesetzte Aktivierung des Threads der Verarbeitungseinheit bewirkt.
  • Die erfindungsgemäße Vorrichtung ist am vorteilhaftesten zu verwenden, wenn ihre Eingänge Daten mit wenigstens zwei unterschiedlichen konstanten Eingangs-Datenraten liefern. Die Erfindung sieht vor, dass der Timer nur verwendet wird, wenn die gemessene Zwischenspeicher-Füllung zwischen vorbestimmten Minimum- und Maximum-Werten liegt, und dass die von dem Timer-Wert, der sich aus einer vordefinierten durchschnittlichen Zwischenspeicher-Füllung ergibt, spezifizierte Zeit das kleinste gemeinsame Vielfache der Kehrwerte der Datenraten der Eingänge ist. Ferner kann die Beziehung zwischen dem Timer-Wert und dem Füllwert des Ausgangs-Zwischenspeichers linear sein.
  • Die Erfindung hat die folgenden Vorteile gegenüber dem Stand der Technik:
    Erstens kann eine bessere Annäherung der Echtzeit-Verarbeitung bei einem System mit Nicht-Echtzeitverhalten erreicht werden.
    Zweitens ist eine bessere Zeitabschätzung der Darstellungszeit der Ausgangseinheit möglich, was zu einer guten Synchronisation, z. B. der Audio/Video-Synchronisation führt. Drittens ist es möglich, individuellen rahmenweisen und daher optimierten Zugriff zu den Quellenströmen zu nehmen, die mit der Verarbeitungseinheit verbunden sind.
  • Vorteilhafte Ausführungsformen der Erfindung sind in den Unteransprüchen, der folgenden Beschreibung und den Zeichnungen offenbart.
  • Kurze Beschreibung der Zeichnungen
  • Ausführungsbeispiele der Erfindung werden anhand der beigefügten Zeichnungen beschrieben. In den Zeichnungen stellen dar:
  • 1 ein konventionelles Audio-Verarbeitungssystem mit einem einzigen Eingang;
  • 2 ein erweitertes konventionelles Audio-Verarbeitungssystem;
  • 3 das Timing einer stoßweisen Datenrahmen-Übertragung in einem erweiterten konventionellen Verarbeitungssystem;
  • 4 ein Zwischenspeicher-Füllungsdiagramm für ein erweitertes konventionelles Verarbeitungssystem;
  • 5 ein fortschrittliches Audio-Verarbeitungssystem gemäß der Erfindung;
  • 6 abstandsgetreue Verarbeitung von Rahmen in einem erfindungsgemäßen Verarbeitungssystem;
  • 7 ein Ablaufdiagramm des erfindungsgemäßen Datenverarbeitungsverfahrens;
  • 8 ein Zwischenspeicher-Füllungsdiagramm für das erfindungsgemäße Verarbeitungssystem; und
  • 9 das Timing-Verhalten des Threads der erfindungsgemäßen Verarbeitungseinheit.
  • Ausführliche Beschreibung der Erfindung
  • Nachfolgend wird das Problem bei bekannten Systemen in größeren Einzelheiten beschrieben, bevor bevorzugte Ausführungsformen der Erfindung beschrieben werden.
  • 2 zeigt eine Verarbeitungseinheit 14, die das Zentrum eines Systems mit mehreren Multimedia-Quellenströmen ist, die durch getrennte Dekodierer 11, 12, 13 dekodiert und in getrennten Zwischenspeichern 11b, 12b, 13b zwischengespei chert werden. Die Dekodierer 11, 12, 13 gehören zu getrennten Zeitbereichen oder Threads, die unabhängig von dem Zeitbereich der Verarbeitungseinheit 14 sind. Die Verarbeitungseinheit 14 synchronisiert die Zeitstempel zwischen den Daten von verschiedenen Quellen. Der Ausgang der Verarbeitungseinheit 14 wird einem rahmenorientierten FIFO-Zwischenspeicher 15 zugeführt. Ein Signal 18 von dem Zwischenspeicher 15 überträgt den Füllungspegel des Zwischenspeichers zu der Verarbeitungseinheit 14, um so mehr Daten anzufordern und einen Unterlauf zu verhindern, wenn die Füllung des Zwischenspeichers 15 unterhalb eines definierten Pegels liegt. Der Ausgang des Zwischenspeichers 15 wird von einem Ausgangsmodul 16 angesteuert, der in regelmäßigen Intervallen Daten am Zwischenspeicher-Ausgang 17 anfordert. Somit bestimmt der Ausgangsmodul die Füllung und auch die Rahmen-Rate des FIFO-Zwischenspeichers 15. Die Rahmengröße des Ausgangs-Zwischenspeichers 15 hängt von den Anforderungen des Ausgangsmoduls 16 ab, aber üblicherweise ist der Zwischenspeicher 15 sehr groß, z. B. fünfzehn Rahmen. Bei einer typischen Software-Realisierung eines solchen Systems läuft der Ausgangsmodul 16 in seinem eigenen Thread, der unabhängig von den anderen Threads ist, insbesondere von den Eingangs-Zwischenspeicher-Threads und dem Thread der Verarbeitungseinheit 14.
  • Der Ausgangs-Zwischenspeicher 15 ist das Kommunikationselement zwischen dem Thread der Verarbeitungseinheit 14 und dem Thread des Ausgangsmoduls 16. Wenn eine Füllung des Ausgangs-Zwischenspeichers 15 gefordert wird, schreibt die Verarbeitungseinheit 14 Daten in den Ausgangs-Zwischenspeicher 15, bis dieser voll ist. Dann wartet die Verarbeitungseinheit, d. h. tut nichts oder führt andere Aufgaben aus, bis der Ausgangsmodul 16 einen Datenblock aus dem Ausgangs-Zwischenspeicher 15 gelesen hat. Daher bestimmt der Ausgangsmodul 16 die Füllung des Ausgangs-Zwischenspeichers 15, der seinerseits die Aktivierung der Verarbeitungseinheit 14 bestimmt.
  • Diese Thread-orientierte Verarbeitung führt zu einer Charakteristik, die in 3 für einen beispielsweisen Audio-Datenstrom gezeigt ist. Bei diesem Beispiel hat der Ausgangsmodul ein Zeitäquivalent von 80 ms, d. h. er arbeitet mit 80 ms Audio-Rahmen entsprechend zum Beispiel 3840 Audio-Abtastungen bei 48 kHz, und ein Dekodierungsrahmen reicht für 20 ms Audio-Widergabe aus. Somit empfängt nach einer Ruhezeit dT von 80 ms die Verarbeitungseinheit vier Verarbeitungsaufrufe c1, ..., c4 in kurzer Folge. 4a zeigt die resultierende Füllung des Ausgangs-Zwischenspeichers, die hauptsächlich zwischen sieben oder acht und elf Dekodierungsrahmen schwankt. Eine Durchschnittsbildung der Werte wie in 4b und dann eine Tiefpassfilterung wie in 4c zeigt, dass sich im Durchschnitt in dem Zwischenspeicher zehn Dekodierungsrahmen befinden. Der verwendete konventionelle Algorithmus versucht stets, den Ausgangs-Zwischenspeicher voll zu halten.
  • 3 und 4a zeigen, dass die Verarbeitungseinheit viermal aufgerufen wird, wenn ein Datenblock von dem FIFO fortgenommen worden ist, d. h. sie wird aufgerufen, so lange der Ausgangs-Zwischenspeicher nicht voll ist. Das Zeitverhalten ist typisch für die Thread-Verwaltung eines Nicht-RTOS.
  • Eine Verarbeitungseinheit für Mehrfach-Multimedia-Stromdaten muss einen verlustlosen Stromzugriff und eine Verarbeitung mit konstanter minimaler Verzögerung gewähr leisten. Ein Beispiel ist ein Mehrfach-Eingangs-Audio-Renderer für einen MPEG-4-Spieler.
  • Gemäß der Erfindung besteht die Lösung darin, abstandsgetreue Startpunkte für die Verarbeitung durch Verwendung eines Timers anzunähern, der von der Verarbeitungseinheit eingestellt werden kann, und der der Thread-Verwaltung des OS übergeordnet ist. Dies ist in 5 dargestellt. Das System ist ähnlich dem zuvor beschriebenen System von 2 mit der Ausnahme, dass eine Timer-Einheit 21 mit der Verarbeitungseinheit 14 verbunden ist. Die Timer-Einheit ist unabhängig von der Thread-Verwaltung, und sie ist insbesondere nicht Teil des Threads der Verarbeitungseinheit. Die Verarbeitungseinheit 14 stellt den Timer 21 auf einen Wert ein, z. B. nach ihrer Signalverarbeitung, startet dann den Timer und geht in einen Wartebetrieb, so dass der Mikroprozessor andere Dinge tun kann. Wenn der Timer das Ende der programmierten Zeit erreicht, ruft er den Verarbeitungsmodul wieder auf oder „weckt" ihn. Der Verarbeitungsmodul führt seine spezifische Verarbeitung aus und stellt den Timer auf einen neuen Wert ein, so dass die Verarbeitungseinheit wieder auf eine spezifizierte Zeit warten kann, und so weiter. Der Timer-Wert kann im Prinzip vor oder nach der Signalverarbeitung berechnet werden, aber da diese Berechnung in der Verarbeitungseinheit erfolgt und der Thread der Verarbeitungseinheit unterbrochen werden kann, ist eine frühe Berechnung des Timer-Wertes vorzuziehen. Dann kann der Timer so früh wie möglich gestartet werden, so dass die Wahrscheinlichkeit für den Timer, bei einer potentiellen Thread-Unterbrechung aktiv zu werden, hoch ist.
  • Der Timer-Wert wird aus der Sättigung des Ausgangs-FIFO-Moduls in der folgenden Weise erzeugt: die aktuelle Füllung des FIFO-Zwischenspeichers wird gemessen. Ein Durchschnittswert der Füllung über den letzten vier Messwerten wird dann berechnet und tiefpassgefiltert, z. B. durch ein Filter dritter Ordnung mit normierter Grenzfrequenz von 0,1. Dieses Signal führt zu dem Timer-Wert mit einer abgeschnittenen linearen Funktion der Form Timer-Wert = k1·Füllwert + k2,worin k1 positiv sein muss und der Füllwert in diesem Fall der tiefpassgefilterte Durchschnittswert der Füllungsmessung ist. Der Parameter k2 definiert den minimalen Wert, wenn der Timer verwendet wird, während k1 die Empfindlichkeit der Regelung definiert.
  • Eine verallgemeinerte Lösung zum Finden einer Gleichung, die den Regelkreisgewinn des Systems definiert, ist wie folgt: zunächst wird der Einstellbereich der Regelung individuell begrenzt, d. h. die Zwischenspeicher-Füllung muss zwischen minimalen und maximalen Werten sein wie zum Beispiel 2 < Zwischenspeicher-Füllung < 11. Dann wird eine Zielfüllung definiert, die in diesem Beispiel acht Blöcke beträgt. Obwohl hier eine lineare Gleichung aufgrund ihrer Einfachheit verwendet wird, sind andere Arten von Gleichungen möglich. Im Prinzip kann das Beispiel auch verwendet werden, wenn die Annäherung einer linearen Gleichung um den Arbeitspunkt die Zielfüllung ist. Dann kann der Verlauf und der Offset entsprechend k1 und k2 bei dem obigen Beispiel wie folgt definiert werden: wenn der Timer-Wert der Wert ist, auf den der Timer eingestellt werden soll, und der Füllwert der zwischenspeicher-Füllwert nach Durchschnittsbildung und Tiefpassfilterung ist, soll für die untere Grenze des Arbeitsbereichs der Timer-Wert 0 für einen Füllwert von 2 sein. Daher: K2 = –2·k1Ferner soll sich bei einer Durchschnitts-Füllung des Zwischenspeichers von acht die Intervallzeit von 20 ms ergeben. Daher: 20 = k1·8 – 2·k1,was sich zu k1 = 10/3 und k2 = –20/3 rechnet. Schließlich wird der Timer-Wert auf eine ganze Zahl abgerundet: Timer-Wert = ganze Zahl (10/3·x – 20/3 + 0,5)Die Funktion wird im Hinblick darauf abgeschnitten, dass sie nur benutzt wird, wenn der Messwert ,Füllwert' wenigstens drei und nicht mehr als elf ist. Dies ist in 7 dargestellt. Wenn der Messwert bei 74 unter drei ist, wird der Timer nicht benutzt, und die Verarbeitungseinheit fährt bei 710 sofort mit dem nächsten Rahmen fort. Wenn der Messwert bei 72 über elf ist, pausiert die Verarbeitungseinheit bei 73 für eine definierte Zeit, z. B. 1 ms, wobei eine Thread-Verwaltungsfunktion verwendet wird, bevor sie bei 71 einen anderen Messwert annimmt. Die OS-Thread-Verwaltung kann jedoch den Thread der Verarbeitungseinheit jederzeit unterbrechen. Wenn der Messwert innerhalb des definierten Bereiches ist, wird bei 75 sein Durchschnitt gebildet, und er wird bei 76 tiefpassgefiltert, bevor er in die oben beschriebene Gleichung bei 77 eingegeben wird. Die Gleichung bei 77 führt zu einem Wert, der verwendet wird, einen Timer bei 78 zu setzen, während die Verarbeitung von Datenbldcken, z. B. Audio-Datenbldcken, bei 79 startet. Der Timer last dann bei 711 den nächsten Aufruf des Threads der Verarbeitungseinheit aus. Daher wird der Schritt 711 ,warten auf Timer' nicht tatsächlich Teil des Thread-Prozesses, sondern der erfindungsgemäßen Verarbeitung.
  • Beispielsweise wird k1 auf 10/3 und k2 auf –20/3 gesetzt. Dies führt zu einer Durchschnitts-Füllung des Ausgangs-Zwischenspei-chers mit acht Rahmen von jeweils 20 ms, wie oben erläutert wurde. Die Wirkung dieser Regelung für die Verarbeitungseinheit ist in 6 dargestellt. Die Punkte stellen Aufrufe der Verarbeitungseinheit über der Zeit dar und sind in einer annähernd linearen Folge, was nahezu abstandsgetreue Aufrufe der Verarbeitungseinheit bedeutet. Als wichtige Konsequenz dieses genauen Zeitverhaltens ist es möglich, die Darstellungszeit der verarbeiteten Daten besser abzuschätzen und für die Abschätzung das Zwischenspeicher-Modell des Ausgangsmoduls einzuschließen. Dies rührt daher, dass die mittlere Sättigung des Zwischenspeichers nun gut bekannt ist, da sie eingestellt werden kann, und die Verarbeitungszeit kann genauer gemessen werden. Mit dieser Kenntnis kann zum Beispiel eine bessere Audio/Video-(AV)-Synchronisation und eine verbesserte Reaktion auf Benutzer-Interaktivität für den Verarbeitungs-Algorithmus zur AV-Wiedergabe erreicht werden.
  • 8 zeigt das resultierende Verhalten eines erfindungsgemäßen Systems. 8a zeigt die Zwischenspeicher-Füllung, die flexibler und im Durchschnitt niedriger als in 4a ist. Dies bedeutet, dass sich im Durchschnitt weniger Daten in dem Ausgangs-Zwischenspeicher befinden. Dieser Effekt wird deutlicher, wenn die Durchschnitts-Zwischenspeicher-Füllung, die in 8b als Durchschnitt über vier Rahmen von 20 ms und die weitere Durchschnittsbildung durch Tiefpassfilterung die in 8c gezeigt ist, betrachtet wird. 8d zeigt schließlich die Timer-Werte, die aus den tiefpassgefilterten durchschnittlichen Füllwerten berechnet werden. Wenn der Ausgangs-Zwischenspeicher relativ voll ist, z. B. zur Zeit t81, ist der tiefpassgefilterte Durchschnitts-Füllwert in 8c hoch, und der Timer-Wert ist hoch, weil der oben erwähnte Parameter k1 positiv ist. Daher ist die Zeit zwischen aufeinanderfolgenden Aufrufen der Verarbeitungseinheit verhältnismäßig lang, um oder über 20 ms. Wenn der tiefpassgefilterte Durchschnitts-Füllwert niedrig ist, ist der Timer-Wert niedrig, oder der Timer wird sogar deaktiviert, weil der Timer-Wert unterhalb des spezifizierten Minimums von drei liegt, z. B. zur Zeit t82, so dass die Verarbeitungseinheit mehr als einen Rahmen bei jedem Aufruf verarbeitet.
  • 9 zeigt das zeitliche Verhalten der Verarbeitungseinheit gemäß einer Ausführungsform der Erfindung. Zur Zeit T0 wird ein Timer-Wert berechnet, der Timer auf diesen Wert eingestellt, und die Rahmenverarbeitung beginnt. Nach einer Zeit von t0 beendet das OS den Thread der Verarbeitungseinheit. Es wird angenommen, dass die verfügbaren Daten innerhalb dieser Zeit verarbeitet worden sind. Der Timer läuft für eine Zeit von tPO weiter und ruft dann den Thread der Verarbeitungseinheit bei T1 wieder auf, so dass die Zeitdifferenz seit dem vorhergehenden Aufruf der Verarbeitungseinheit T = t0 + tPO ist. Zur Zeit T1 wird der Thread der Verarbeitungseinheit erneut aktiv, misst die Füllung des Zwischenspeichers und berechnet einen Timer-Wert wie oben beschrieben und stellt den Timer ein. Er setzt dann seine Rahmenverarbeitung fort, bis das Thread-Management ihn nach einer Zeit von t11 unterbricht und die Verarbeitungsleistung an einen anderen Prozess übergibt. Der Timer läuft weiter. Nach tP1 ruft die Thread-Verwaltung den Thread der Verarbeitungseinheit wieder auf, um die bei T1 gestartete Verarbeitung der Datenpakete für eine zusätzliche Zeit von t12 fortzusetzen. Wenn das nächste Timer-Event bei T2 erscheint, läuft die Verarbeitung noch weiter und setzt sich für eine weitere Zeit von tD2 fort, aber das Timer-Event wird gespeichert. Wenn der aktuelle Thread bei T2 + TD2 beendet ist, wird er unmittelbar wieder gestartet und misst die Zwischenspeicher-Füllung. Unter der Annahme, dass zu dieser Zeit der Zwischenspeicher relativ leer ist, weil er kontinuierlich geleert wurde, wird ein niedrigerer Timer-Wert als zuvor berechnet, entsprechend einer kürzeren Zeit T' für die nächste Timer-Periode. Diese Zeit T' ist gleich oder nahe T – tD2 in Abhängigkeit von der linearen Gleichung, die den Timer-Wert von der Zwischenspeicher-Füllung ableitet, so dass ein weitgehend abstandsgetreues Zeitraster für die Startzeiten des Threads der Verarbeitungseinheit erzielt wird.
  • Obwohl die Startzeiten eines oder mehrerer besonderer Threads außerhalb des Zeitrasters liegen können, z. B. bei T2 + tD2, ist das erfindungsgemäße Verfahren zur Wiederherstellung des Rasters geeignet. Ferner werden die aktuellen Timer-Werte an die aktuelle Situation angepasst, und daher kann die Durchschnitts-Zeit, die die Verarbeitungseinheit hat, eingestellt werden. Die Rasterzeit T, die der Durchschnittswert zwischen aufeinanderfolgenden Aufrufen der Verarbeitungseinheit ist, kann genau auf die Anwendung durch geeignete Auswahl der Parameter k1 und k2 eingestellt werden, und daher kann das zeitliche Verhalten der Verarbeitungseinheit und das zeitliche Verhalten der Ausgangseinheit und der Eingangseinheiten angepasst werden, wodurch ein Blockieren der Verarbeitungseinheit verhindert wird.
  • Im allgemeinen ist es vorteilhaft, die Rasterzeit, d. h. die Durchschnitts-Zeit zwischen aufeinanderfolgenden Aufrufen der Verarbeitungseinheit so auszuwählen, dass sie M Millisekunden beträgt, wenn das durchschnittliche Ausgangs-Zeitintervall N·M Millisekunden ist, wobei N eine positive ganze Zahl größer als eins ist.
  • Die Erfindung umfasst verschiedene Möglichkeiten, wann die Timer-Einheit zu verwenden ist. Die Berechnung des Timer-Wertes und die Einstellung des Timers erfolgt vorzugsweise unmittelbar nach der Messung der Zwischenspeicher-Füllung, obwohl im Prinzip der Messwert gespeichert und später für die Berechnung verwendet werden kann, z. B. innerhalb einer Startsequenz oder einer Ausgangssequenz eines Threads.
  • Bei einer Ausführungsform der Erfindung wird der Timer-Wert immer vor der Verarbeitung eines Rahmens berechnet. Bei einer anderen Ausführungsform wird der Timer-Wert als eine Startsequenz des Threads immer berechnet, wenn der Thread der Verarbeitungseinheit aufgerufen wird. Bei einer noch weiteren Ausführungsform wird der Timer-Wert nur als Teil einer Ausgangssequenz des Threads berechnet, bevor der Thread der Verarbeitungseinheit beendet ist. Bei einer Ausführungsform wird die Timer-Einheit unmittelbar nach der Berechnung des Timer-Wertes eingestellt. Bei einer anderen Ausführungsform wird die Timer-Einheit später oder immer vor Beendigung des Threads der Verarbeitungseinheit als Teil einer Ausgangssequenz des Threads eingestellt.
  • Die Erfindung ist insbesondere vorteilhaft für die Ausführung eines Mehrkanal-Eingangs-Audio-Renderers, z. B. für MPEG-4 oder dergleichen in einem Multi-Threading-Umfeld, wo das Risiko einer Überlastung des Prozessors hoch ist.

Claims (10)

  1. Verfahren zur Verarbeitung von Daten in einer Verarbeitungseinheit (14), die Datenrahmen für eine Ausgangseinheit (16) durch Kombinieren von Daten aus einer Mehrzahl von Eingangseinheiten (11, ..., 13) erzeugt, die wenigstens zwei verschiedene Abtastraten haben, wobei die verarbeiteten Daten in einen Ausgangs-Zwischenspeicher (15) zwischen der Verarbeitungseinheit und der Ausgangseinheit zwischengespeichert werden, und wobei die Verarbeitungseinheit, die Eingangseinheiten und die Ausgangseinheiten Threads in einem Multi-Threading-Umfeld sind und sich denselben Mikroprozessor teilen, wobei das Verfahren die Schritte umfasst: – Messen der Füllung des Ausgangs-Zwischenspeichers (15), wobei die Messung zu einem Wert führt, der äquivalent zur Füllung des Ausgangs-Zwischenspeichers ist; – Berechnen eines Timer-Wertes aus dem gemessenen Wert; – Setzen eines Timers (21) aus dem Timer-Wert und Starten des Timers, wobei die mittlere durch den Timer-Wert spezifizierte Zeit ein gemeinsames Vielfaches der Kehrwerte der Abtastraten der Eingangseinheiten ist, und wobei der Timer eine Nachricht sendet, wenn die von dem Timer-Wert spezifizierte Zeit abgelaufen ist, wobei die Nachricht sich auf den Thread der Verarbeitungseinheit bezeiht; und – Aktivieren des Threads der Verarbeitungseinheit bei Erhalt der Nachricht, wenn er nicht bereits aktiv ist, oder sonst Fortsetzung der Aktivierung des Threads der Verarbeitungseinheit.
  2. Verfahren nach Anspruch 1, bei dem die Berechnung des Timer-Werts eine Durchschnittsbildung und/oder Tiefpassfilterung über einer Mehrzahl von Messwerten der Zwischenspeicher-Füllung umfasst.
  3. Verfahren nach Anspruch 1 oder 2, bei dem der Schritt des Setzens eines Timers nur ausgeführt wird, wenn der berechnete Timer-Wert zwischen spezifizierten Minimum- und Maximum-Werten liegt, und bei dem der Schritt des Setzens des Timers für niedriger berechnete Timer-Werte übersprungen wird und für höher berechnete Timer-Werte der Timer auf den spezifischen Maximum-Wert gesetzt wird.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Ausgangseinheit (16) in einem einzigen Zugriff zu dem Ausgangs-Zwischenspeicher (15) eine Mehrzahl von verarbeiteten Datenrahmen in regelmäßigen Zeitintervallen liest, und bei dem die Zeitintervalle ein ganzzahliges Vielfaches der mittleren von dem Timer-Wert spezifizierten Zeit sind.
  5. Verfahren nach Anspruch 3 oder 4, bei dem die verarbeiteten Daten Audio-Daten sind und die Durchschnitts-Zeit zwischen aufeinanderfolgenden Aufrufen der Verarbeitungseinheit M Millisekunden und das durchschnittliche Ausgangs-Zeitintervall N·M Milli sekunden beträgt, wobei N eine positive ganze Zahl größer als eins ist.
  6. Vorrichtung zur Verarbeitung von Daten, die Eingangsdaten von einer Mehrzahl von Eingängen empfängt, wobei die Daten wenigstens zwei verschiedene Abtastraten aufweisen, und die einen Mikroprozessor, eine Datengruppe und einen Timer (21) umfasst, wobei der Mikroprozessor und die Datengruppe eine Datenverarbeitungseinheit (14) und eine Daten-Ausgangseinheit (16) bilden, wobei die Datenverarbeitungseinheit und die Datenausgangseinheit Threads in einem Multi-Threading-Umfeld sind, und wobei Daten über einen Zwischenspeicher (15) von der Verarbeitungseinheit zu der Ausgangseinheit geleitet werden, umfassend: – Mittel zur Messung eines Wertes, der äquivalent zur Füllung des Ausgangs-Zwischenspeichers (15) ist; – Mittel zur Berechnung eines Timer-Wertes aus dem gemessenen Wert; und – Mittel zum Setzen des Timers (21) auf den Timer-Wert und Starten des Timers, wobei die mittlere von dem Timer-Wert spezifizierte Zeit ein gemeinsames Vielfaches der Kehrwerte der Abtastraten der Eingänge ist, und wobei der Timer eine Nachricht sendet, wenn die von dem Timer-Wert spezifizierte Zeit abgelaufen ist, wobei die Nachricht eine Aktivierung des Threads der Verarbeitungseinheit bewirkt, wenn dieser nicht bereits aktiv ist, oder andernfalls eine fortgesetzte Aktivierung des Threads der Verarbeitungseinheit bewirkt.
  7. Vorrichtung nach Anspruch 6, bei der der Timer nur verwendet wird, wenn die gemessene Füllung des Ausgangs-Zwischenspeichers zwischen vordefinierten Minimum- und Maximum-Werten liegt.
  8. Vorrichtung nach Anspruch 6 oder 7, bei der die von dem Timer-Wert, der sich aus einem vordefinierten durchschnittlichen Zwischenspeicher-Füllwert ergibt, spezifizierte Zeit das kleinste gemeinsame Vielfache der Kehrwerte der Datenraten der Eingänge ist.
  9. Vorrichtung nach Anspruch 6 oder 7 oder Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass der Timer-Wert eine lineare Beziehung zu der gemessenen Zwischenspeicher-Füllung hat.
  10. Vorrichtung nach Anspruch 6 oder 7 oder Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass der Timer-Wert das Ergebnis einer linearen Gleichung der form ist Timer-Wert = k1·Füllwert + k2,worin k1 positiv und k1 und k2 durch definierte Minimum- und Maximum-Timer-Werte bestimmt sind, und dass der Füllwert der Wert ist, der der Füllung des Zwischenspeichers oder der durchschnittlichen und/oder tiefpassgefilterten Füllung des Zwischenspeichers entspricht.
DE602005003506T 2004-06-10 2005-05-23 Methode und Apparat zum Verbessern der Synchronisierung einer Verarbeitungseinheit für Multimedia-streams in einer multi-threaded Umgebung Active DE602005003506T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP04013686 2004-06-10
EP04013686A EP1605354A1 (de) 2004-06-10 2004-06-10 Methode und Apparat zum Verbessern der Synchronisierung einer Verarbeitungseinheit für Multimedia-streams in einer multi-threaded Umgebung

Publications (2)

Publication Number Publication Date
DE602005003506D1 DE602005003506D1 (de) 2008-01-10
DE602005003506T2 true DE602005003506T2 (de) 2008-10-23

Family

ID=34925322

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005003506T Active DE602005003506T2 (de) 2004-06-10 2005-05-23 Methode und Apparat zum Verbessern der Synchronisierung einer Verarbeitungseinheit für Multimedia-streams in einer multi-threaded Umgebung

Country Status (7)

Country Link
US (1) US7680964B2 (de)
EP (1) EP1605354A1 (de)
JP (1) JP4738906B2 (de)
KR (1) KR101189842B1 (de)
CN (1) CN1707435B (de)
BR (1) BRPI0501728B1 (de)
DE (1) DE602005003506T2 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0600417D0 (en) * 2006-01-10 2006-02-15 Level 5 Networks Inc Virtualisation support
JP4519082B2 (ja) 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
JP4745904B2 (ja) * 2006-07-18 2011-08-10 株式会社日本自動車部品総合研究所 電子装置
US9654447B2 (en) 2006-08-29 2017-05-16 Digimarc Corporation Customized handling of copied content based on owner-specified similarity thresholds
US20130055072A1 (en) * 2011-08-24 2013-02-28 Robert Douglas Arnold Multi-Threaded Graphical Display System
CN102880509B (zh) * 2012-09-17 2014-09-24 北京大学 基于cuda的格网数字高程模型邻域分析的系统和方法
JP2014067074A (ja) * 2012-09-24 2014-04-17 Oki Electric Ind Co Ltd 録音システム、録音プログラム及び録音方法
CN106250108B (zh) * 2016-07-18 2019-05-17 中国电子科技集团公司第二十八研究所 一种线程中挂时控的方法
CN110501363B (zh) * 2019-08-30 2020-06-02 中国科学院长春应用化学研究所 X射线衍射仪用多线程样品测试方法
CN113377517B (zh) * 2021-06-28 2023-02-28 上海鲲宜软件技术有限公司 基于实时操作系统的线程调度方法及系统
US11695965B1 (en) * 2022-10-13 2023-07-04 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video coding using a coded picture buffer

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4727333A (en) * 1986-06-30 1988-02-23 Rca Corporation Circuitry for multiplying a PCM signal by a sinusoid
US5228859A (en) * 1990-09-17 1993-07-20 Interactive Training Technologies Interactive educational and training system with concurrent digitized sound and video output
US5377317A (en) * 1991-12-20 1994-12-27 International Business Machines Corporation Method and apparatus for distinctively displaying windows on a computer display screen
US5369729A (en) * 1992-03-09 1994-11-29 Microsoft Corporation Conversionless digital sound production
US5428789A (en) * 1993-08-27 1995-06-27 Waldron, Iii; Theodore C. Method and apparatus for optimizing user response time in a priority preemptive operating system
JPH0793168A (ja) * 1993-09-21 1995-04-07 Fuji Electric Co Ltd タスク管理方式
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6052748A (en) * 1997-03-18 2000-04-18 Edwin A. Suominen Analog reconstruction of asynchronously sampled signals from a digital signal processor
US6029194A (en) * 1997-06-10 2000-02-22 Tektronix, Inc. Audio/video media server for distributed editing over networks
JPH11312143A (ja) * 1998-04-28 1999-11-09 Clarion Co Ltd 情報処理装置及び方法、カーオーディオシステム及びその制御方法並びに情報処理用プログラムを記録した記録媒体
KR20010034920A (ko) * 1998-06-26 2001-04-25 매클린토크 샤운 엘 엠펙-4 비디오 프로그램을 작성하고 표현하기 위한 단말기
JP3636657B2 (ja) * 2000-12-21 2005-04-06 Necエレクトロニクス株式会社 クロックアンドデータリカバリ回路とそのクロック制御方法
US20030108063A1 (en) * 2001-12-07 2003-06-12 Joseph Moses S. System and method for aggregating multiple information channels across a network

Also Published As

Publication number Publication date
US7680964B2 (en) 2010-03-16
DE602005003506D1 (de) 2008-01-10
CN1707435A (zh) 2005-12-14
JP2006012150A (ja) 2006-01-12
CN1707435B (zh) 2010-04-28
JP4738906B2 (ja) 2011-08-03
BRPI0501728A (pt) 2006-01-24
US20050278473A1 (en) 2005-12-15
BRPI0501728B1 (pt) 2017-03-07
EP1605354A1 (de) 2005-12-14
KR101189842B1 (ko) 2012-10-11
KR20060048312A (ko) 2006-05-18

Similar Documents

Publication Publication Date Title
DE602005003506T2 (de) Methode und Apparat zum Verbessern der Synchronisierung einer Verarbeitungseinheit für Multimedia-streams in einer multi-threaded Umgebung
DE60114650T2 (de) Adaptive videobestellung
DE19635116C2 (de) Verfahren zur Videokommunikation
DE112005000307T5 (de) Verfahren zum Verringern des Energieverbrauchs gepufferter Anwendungen, die einen simultanen Multi-Thread-Prozessor verwenden
EP0517324B1 (de) Vorrichtung zur Steuerung des Quantisierers eines Hybridkodierers
DE102007013026B4 (de) Kodierung einer Mehrzahl von Informationssignalen unter Verwendung einer gemeinsamen Rechenleistung
DE60132312T2 (de) Lastregelung
DE10196554B4 (de) Synchronisation von Audio- und Videosignalen
DE102006002247A1 (de) Verfahren und System zum Aktualisieren von Echtzeitdaten zwischen Intervallen
DE102012224362B4 (de) Anpassung einer Testhäufigkeit für die Ressourcenauslastung
DE102015209298A1 (de) Synchronisation von unabhängigen ausgabeströmen
DE60106640T2 (de) Prozessorzuweisung für kanäle in einem videomultiprozessorsystem
DE3788326T2 (de) Verfahren und Apparat zur Kodierung von Bewegtbildsignalen.
DE60302168T2 (de) Datenratenkontroller
EP1076847B1 (de) Verfahren zum a/d-wandeln analoger signale sowie entsprechende a/d-wandleranordnung
DE60003326T2 (de) Verfahren zur reduzierung der, für die sprachkodierung erforderlichen verarbeitungskapazität und netzwerkelement
DE69017838T2 (de) Vorrichtung zum Kodieren von Bildern.
DE69636272T2 (de) Audiokodier- und -dekodiergerät
EP0253215B1 (de) Verfahren und Vorrichtung zur Verarbeitung von Impulsen eines Signals, das durch vorausgehende Uebertragung verzerrt ist
DE69923219T2 (de) Bildverarbeitungsgerät
DE69734186T2 (de) Verfahren und Vorrichtung zur Kodierung von Videodaten
EP0905954A2 (de) Verfahren zum Aufzeichnen eines digitalisierten Audiosignals und Telefonanrufbeantworter
DE69733442T2 (de) Digitaler Audiosignalprozessor mit einem kleinen Eingabepuffer
DE102021124135B4 (de) Verfahren und Vorrichtung zur digitalen Signalverarbeitung
DE69834885T2 (de) Datenverarbeitungsverfahren und Aufzeichnungsmedium

Legal Events

Date Code Title Description
8320 Willingness to grant licences declared (paragraph 23)
8364 No opposition during term of opposition