-
HINTERGRUND
-
Einige Computergeräte können in der Lage sein, Audiodaten drahtlos an andere Geräte zu streamen. Beispielsweise kann ein mobiles Computergerät in der Lage sein, Audiodaten über BLUETOOTH oder eine andere drahtlose Verbindung wie Wi-Fi drahtlos an ein Paar drahtloser Kopfhörer zu streamen. Da die erfolgreiche Übertragung von Daten über eine drahtlose Verbindung nicht garantiert ist und Latenzzeiten auftreten können, können einige Geräte (sowohl sendende als auch empfangende) Puffer zum Speichern von zu übertragenden oder empfangenen Daten enthalten. Das empfangende Gerät kann die in seinem Puffer gespeicherten Audiodaten zur Wiedergabe von Audio zu einem bestimmten Zeitpunkt verwenden, auch wenn zu diesem Zeitpunkt keine zusätzlichen Audiodaten empfangen werden. Solange zusätzliche Audiodaten empfangen werden, bevor der Puffer im Empfangsgerät aufgebraucht ist, kann das Empfangsgerät kontinuierlich Audiodaten wiedergeben.
-
ZUSAMMENFASSUNG
-
Im Allgemeinen sind die Techniken dieser Offenlegung auf Techniken zur Verhinderung von Lücken in einem Audiodatenstreaming über eine drahtlose Verbindung gerichtet. Bei einem Beispiel-Quellgerät kann eine Audioquelle des Quellgeräts (z. B. ein digitaler Signalprozessor) Audiodaten an einen Kommunikationskontroller des Quellgeräts liefern, der Blöcke von Audiodaten in einem Puffer speichert. Der Kommunikationskontroller sendet typischerweise in einem First-In-First-Out-Schema Blöcke aus dem Puffer an ein Senkengerät und entfernt einen Block aus dem Puffer, wenn eine entsprechende Bestätigungsnachricht (ACK) vom Senkengerät zurück empfangen wird. Wenn eine entsprechende ACK-Nachricht für einen bestimmten Block, der übertragen wurde, nicht empfangen wird, kann der Kommunikationskontroller den bestimmten Block erneut übertragen. Wenn sich zu viele Blöcke im Puffer ansammeln (z. B. wenn die Audioquelle ständig Audiodaten an den Kommunikationskontroller liefert, aber ACK-Nachrichten aufgrund einer schlechten Funkverbindung nicht schnell genug empfangen werden), kann der Kommunikationskontroller die ältesten Blöcke aus dem Puffer löschen, ohne die gelöschten Blöcke jemals zu übertragen. Dieses Fallenlassen von Blöcken kann zu Audiolücken führen.
-
In Übereinstimmung mit einer oder mehreren Techniken dieser Offenlegung kann der Kommunikationskontroller des Quellgeräts automatisch eine Rate anpassen, mit der Audiodaten von der Audioquelle des Quellgeräts empfangen werden, basierend auf den Bedingungen der drahtlosen Verbindung zwischen dem Quellgerät und dem Senkengerät. Zum Beispiel kann der Kommunikationskontroller einen aktuellen Zustand der drahtlosen Verbindung bestimmen (z. B. basierend auf einem fehlenden Empfang von ACK-Nachrichten). Basierend auf dem ermittelten Zustand der drahtlosen Verbindung kann der Kommunikationskontroller des Quellgeräts „Gegendruck“ auf die Audioquelle des Quellgeräts ausüben, um die Rate zu reduzieren, mit der Blöcke von Audiodaten in den Puffer des Quellgeräts eingefügt werden. Durch die Reduzierung der Rate, mit der Blöcke in den Puffer eingefügt werden, kann der Kommunikationskontroller des Quellgeräts vermeiden, dass die ältesten Blöcke aus dem Puffer fallen gelassen werden müssen. Auf diese Weise ermöglichen die Techniken dieser Offenbarung dem Kommunikationskontroller des Quellgeräts, das Entstehen von Audiolücken zu vermeiden.
-
In einem Beispiel umfasst ein Verfahren das Empfangen von Audiodaten, die drahtlos an ein Senkengerät übertragen werden sollen, durch einen Kommunikationskontroller eines Quellgeräts und von einer Audioquelle der Quellgerät, wobei die Audiodaten von der Audioquelle mit einer Rate empfangen werden; das Speichern der Audiodaten als eine Sequenz von Audioblöcken durch den Kommunikationskontroller und in einem Puffer, wobei jeder Audioblock Audiodaten für eine jeweilige Ausgabezeit enthält; das Übertragen von Audioblöcken der Sequenz von Audioblöcken durch das Quellgerät und an das Senkengerät unter Verwendung einer drahtlosen Verbindung zwischen dem Quellgerät und dem Senkengerät; das Bestimmen eines aktuellen Zustands der drahtlosen Verbindung; und das automatische Einstellen der Rate, mit der Audiodaten von der Audioquelle empfangen werden, durch den Kommunikationskontroller und basierend auf dem aktuellen Zustand der drahtlosen Verbindung.
-
In einem anderen Beispiel enthält ein Quellgerät eine Kommunikationseinheit; eine Audioquelle; einen Kommunikationskontroller; und mindestens ein nicht-transitorisches computerlesbares Speichermedium, das Anweisungen speichert, die von dem Kommunikationskontroller ausgeführt werden können, um Folgendes zu tun: von der Audioquelle und mit einer Rate Audiodaten empfangen, die drahtlos zu einem Senkengerät übertragen werden sollen; die Audiodaten in einem Puffer als eine Sequenz von Audioblöcken speichern, wobei jeder Audioblock Audiodaten für eine jeweilige Ausgabezeit enthält; die Kommunikationseinheit veranlassen, Audioblöcke der Sequenz von Audioblöcken zum Senkengerät und über eine drahtlose Verbindung zwischen dem Quellgerät und dem Senkengerät zu übertragen; einen aktuellen Zustand der drahtlosen Verbindung bestimmen; und die Rate, mit der Audiodaten von der Audioquelle empfangen werden, basierend auf dem aktuellen Zustand der drahtlosen Verbindung automatisch anpassen.
-
In einem anderen Beispiel speichert ein nicht-transitorisches computerlesbares Speichermedium Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Prozessoren eines Quellgeräts veranlassen, Folgendes zu tun: von einer Audioquelle des Quellgeräts und mit einer Rate Audiodaten empfangen, die drahtlos zu einem Senkengerät zu übertragen sind; in einem Puffer die Audiodaten als eine Sequenz von Audioblöcken speichern, wobei jeder Audioblock Audiodaten für eine jeweilige Ausgabezeit enthält; eine Kommunikationseinheit des Quellgeräts veranlassen, Audioblöcke der Sequenz von Audioblöcken zum Senkengerät und über eine drahtlose Verbindung zwischen dem Quellgerät und dem Senkengerät zu übertragen; einen aktuellen Zustand der drahtlosen Verbindung bestimmen; und basierend auf dem aktuellen Zustand der drahtlosen Verbindung die Rate, mit der Audiodaten von der Audioquelle empfangen werden, automatisch anpassen.
-
Die Details von einem oder mehreren Beispielen der Offenbarung sind in den begleitenden Zeichnungen und der nachfolgenden Beschreibung dargelegt. Weitere Merkmale, Gegenstände und Vorteile der Offenbarung ergeben sich aus der Beschreibung und den Zeichnungen sowie aus den Ansprüchen.
-
Figurenliste
-
- 1 ist ein konzeptionelles Diagramm, das ein Beispiel für ein drahtloses Audio-Streaming-System mit einem Quellgerät und einem Senkengerät gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung zeigt.
- 2 ist ein Blockdiagramm, das ein Beispiel für ein Quellgerät zeigt, das so konfiguriert ist, dass es Audiodaten drahtlos an ein Senkengerät streamt, in Übereinstimmung mit einem oder mehreren Aspekten der vorliegenden Offenbarung.
- 3 ist ein Blockdiagramm, das ein Beispiel für ein Senkengerät zeigt, das zum drahtlosen Streamen von Audiodaten von einem Quellgerät konfiguriert ist, in Übereinstimmung mit einem oder mehreren Aspekten der vorliegenden Offenbarung.
- 4 ist ein Flussdiagramm, das Beispielvorgänge eines Beispiel-Quellgeräts veranschaulicht, das zum drahtlosen Streamen von Audiodaten zu einem Senkengerät konfiguriert ist, in Übereinstimmung mit einem oder mehreren Aspekten der vorliegenden Offenbarung.
-
DETAILLIERTE BESCHREIBUNG
-
1 ist ein konzeptionelles Diagramm, das ein Beispiel für ein drahtloses Audio-Streaming-System 100 mit einem Quellgerät 2 und einem Senkengerät 4 gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung zeigt. Das System 100 kann in anderen Beispielen auch andere externe Geräte umfassen, wie z. B. ein Servergerät, ein Netzwerk oder andere Kamerageräte.
-
Im Beispiel von 1 kann das Quellgerät 2 ein Mobiltelefon sein. Das Quellgerät 2 kann jedoch auch jede andere Art von Computergerät sein, wie z. B. ein Kameragerät, ein Tablet-Computer, ein persönlicher digitaler Assistent (PDA), ein Laptop-Computer, ein Spielesystem, ein Mediaplayer, ein E-Book-Reader, eine Fernsehplattform, ein Kfz-Navigationssystem oder ein tragbares Computergerät (z. B. eine computerisierte Uhr, eine computerisierte Brille, ein computerisierter Handschuh). Wie in 1 dargestellt, umfasst das Quellgerät 2 eine Audioquelle 8, einen Kommunikationskontroller 10, einen Datenpuffer 12, ein Paketverarbeitungsmodul 16, eine oder mehrere Kommunikationseinheiten 14 und einen Profiltreiber 18.
-
Die Audioquelle 8 kann Audiodaten an eine oder mehrere andere Komponenten des Quellgeräts 2 liefern. Wie im Folgenden näher erläutert, kann die Audioquelle 8 Audiodaten an den Kommunikationskontroller 10 zur drahtlosen Übertragung an ein Senkengerät, wie z. B. das Senkengerät 4, ausgeben. Die Audioquelle 8 kann einen Hardwarepfad und/oder einen Softwarepfad oder beides umfassen. Ein Beispiel für einen Hardwarepfad ist ein digitaler Signalprozessor (DSP) oder Anwendungs-DSP (aDSP), der Audiodaten (z. B. Samples) ausgibt. Ein Beispiel für einen Softwarepfad ist ein Medienserver oder ein anderer Dienst (z. B. ein Software-Codierungspfad wie AudioFlinger), der auf einem Prozessor ausgeführt wird, um Audiodaten auszugeben. Unabhängig vom Pfad kann die Audioquelle 8 die Audiodaten als Reaktion auf Anweisungen ausgeben, die von einer anderen Komponente des Quellgeräts 2 empfangen werden, z.B. von einer Anwendung, die auf dem Quellgerät ausgeführt wird.
-
Die Audioquelle 8 kann die Audiodaten als eine Sequenz von Audioblöcken ausgeben. Die Sequenz von Audioblöcken kann eine zeitbasierte Sequenz sein, indem aufeinanderfolgende Blöcke der Sequenz aufeinanderfolgenden Audiowiedergabeperioden entsprechen. Beispielsweise kann die Audioquelle 8 einen n-ten Audioblock einer Sequenz von Audioblöcken ausgeben, der Audiodaten enthält, die während einer n-ten Zeitperiode wiedergegeben werden sollen, und einen (n+1)-ten Audioblock der Sequenz von Audioblöcken, der Audiodaten enthält, die während einer (n+1)-ten Zeitperiode wiedergegeben werden sollen, die später als die n-te Zeitperiode liegt.
-
Eine oder mehrere Kommunikationseinheiten 14 des Quellgeräts 2 können mit externen Geräten über ein oder mehrere verdrahtete und/oder drahtlose Netzwerke kommunizieren, indem sie Netzwerksignale in dem einen oder den mehreren Netzwerken senden und/oder empfangen. Beispiele für Kommunikationseinheiten 14 sind eine Netzwerkschnittstellenkarte (z. B. wie eine Ethernet-Karte), ein optischer Transceiver, ein Radiofrequenz-Transceiver, ein GPS-Empfänger oder jede andere Art von Gerät, das Informationen senden und/oder empfangen kann. Andere Beispiele für Kommunikationseinheiten 14 können Kurzwellenfunkgeräte, zellulare Datenfunkgeräte, drahtlose Netzwerkfunkgeräte (z. B. Wi-Fi-Funkgeräte, BLUETOOTH-Funkgeräte usw.) sowie Universal-Serial-Bus(USB) -Kontroller umfassen.
-
Der Kommunikationskontroller 10 kann verschiedene Operationen durchführen, um die Kommunikation zwischen dem Quellgerät 2 und einem externen Gerät, wie dem Senkengerät 4, zu verwalten. Als ein Beispiel kann der Kommunikationskontroller 10 Daten von einer oder mehreren Komponenten des Quellgeräts 2 empfangen und eine oder mehrere Kommunikationseinheiten 14 veranlassen, eine Darstellung der Daten drahtlos an ein externes Gerät zu übertragen. Als weiteres Beispiel kann der Kommunikationskontroller 10 Daten von einer oder mehreren Kommunikationseinheiten 14 empfangen, die drahtlos von einem externen Gerät empfangen wurden.
-
In einigen Beispielen, z. B. wenn die drahtlose Verbindung 6 eine BLUETOOTH-Verbindung ist, kann das Quellgerät 2 einen Profiltreiber 18 enthalten, der einen oder mehrere Aspekte des Streaming von Audiodaten vom Quellgerät 2 verwalten kann. In einem spezifischen Beispiel kann der Profiltreiber 18 einen A2DP-Treiber (Advanced Audio Distribution Profile) enthalten. Der Profiltreiber 18 kann Aspekte des Audiostreamings verwalten, wie z. B. Codec-Aushandlung, Bitrate, erneute Übertragung und beliebige Dienstgüteparameter. Andere Beispiele für Profiltreiber 18 umfassen unter anderem das Freisprechprofil (HFP) und alle Low-Energy-Audioprofile (LE).
-
Das Quellgerät 2 kann eine Audioquelle 8 und einen Kommunikationskontroller 10 enthalten. Die Audioquelle 8 und der Kommunikationskontroller 10 können die beschriebenen Vorgänge mit Hilfe von Software, Hardware, Firmware oder einer Mischung aus Hardware, Software und Firmware ausführen, die sich im Quellgerät 2 befinden und/oder dort ausgeführt werden. Das Quellgerät 2 kann die Audioquelle 8 und den Kommunikationskontroller 10 mit einem oder mehreren Prozessoren ausführen. Das Quellgerät 2 kann die Audioquelle 8 und den Kommunikationskontroller 10 als virtuelle Maschine ausführen, die auf der zugrunde liegenden Hardware ausgeführt wird. Die Audioquelle 8 und der Kommunikationskontroller 10 können als ein Dienst oder eine Komponente eines Betriebssystems oder einer Computerplattform ausgeführt werden. Die Module 8 und 10 können als ein oder mehrere ausführbare Programme auf einer Anwendungsschicht einer Computerplattform ausgeführt werden. Die Audioquelle 8 und der Kommunikationskontroller 10 können auf andere Weise entfernt vom und im Fernzugriff auf das Quellgerät 2 angeordnet sein, zum Beispiel als ein oder mehrere Netzwerkdienste, die in einem Netzwerk in einer Netzwerkcloud betrieben werden.
-
Der Kommunikationskontroller 10 und die Audioquelle 8 können in verschiedenen architektonischen Schichten des Quellgeräts 2 arbeiten (z. B. in verschiedenen Schichten eines Stapels). Beispielsweise kann der Kommunikationskontroller 10 auf einer ersten architektonischen Schicht arbeiten und die Audioquelle 8 auf einer zweiten architektonischen Schicht, die an die erste architektonische Schicht angrenzt oder darüber liegt. Mit anderen Worten: Der Kommunikationskontroller 10 kann auf einer i-ten architektonischen Schicht und die Audioquelle 8 auf mindestens einer (i-1)-ten architektonischen Schicht des Quellgeräts 2 arbeiten.
-
Im Beispiel von 1 kann das Senkengerät 4 ein drahtloser Kopfhörer sein. Die Senke 4 kann jedoch auch jede andere Art von Computergerät sein, wie z. B. ein Mobiltelefon, ein Fahrzeug, ein drahtloser Lautsprecher, ein Kameragerät, ein Tablet-Computer, ein persönlicher digitaler Assistent (PDA), ein Laptop-Computer, ein Spielesystem, ein Mediaplayer, ein E-Book-Reader, eine Fernsehplattform oder ein tragbares Computergerät (z. B. eine computerisierte Uhr, eine computerisierte Brille, ein computerisierter Handschuh). Wie in 1 dargestellt, umfasst das Senkengerät 4 eine Audiosenke 24, einen Kommunikationskontroller 20, einen Datenpuffer 22, ein Paketentpackungsmodul 28, eine oder mehrere Kommunikationseinheiten 30 und einen Profiltreiber 26.
-
Der Kommunikationskontroller 20 und die Kommunikationseinheit(en) 30 können komplementäre Operationen zu dem Kommunikationskontroller 10 und der/den Kommunikationseinheit(en) 14 des Quellgeräts 2 durchführen. Als ein Beispiel kann die Kommunikationskontroller 20 Daten von einer oder mehreren Komponenten dem Senkengerät 4 empfangen und eine oder mehrere Kommunikationseinheiten 30 veranlassen, eine Darstellung der Daten drahtlos an ein externes Gerät, wie z. B. die Quellgerät 2, zu übertragen. Als weiteres Beispiel kann die Kommunikationskontroller 20 Daten von einer oder mehreren der Kommunikationseinheiten 30 empfangen, die drahtlos von einem externen Gerät, wie z. B. dem Quellgerät 2, empfangen wurden.
-
In einigen Beispielen, z. B. wenn die drahtlose Verbindung 6 eine BLUETOOTH-Verbindung ist, kann das Senkengerät 4 einen Profiltreiber 26 enthalten, der ergänzende Funktionen zum Profiltreiber 18 des Quellgeräts 2 ausführen kann. In einem speziellen Beispiel kann der Profiltreiber 26 einen A2DP-Treiber (Advanced Audio Distribution Profile) enthalten. Der Profiltreiber 26 kann Aspekte des Audiostreamings verwalten, wie z. B. Codec-Aushandlung, Bitrate, erneute Übertragung und alle Dienstgüteparameter. Andere Beispiele für Profiltreiber 26 umfassen unter anderem das Freisprechprofil (HFP) und alle Low-Energy-Audioprofile (LE).
-
Die Audiosenke 24 kann komplementäre Operationen zur Audioquelle 8 durchführen. Zum Beispiel kann die Audiosenke 24 empfangene Audiodaten in ein oder mehrere Audiosignale umwandeln, die verstärkt und über einen oder mehrere Lautsprecher wiedergegeben werden können.
-
Das Senkengerät 4 kann einen Kommunikationskontroller 20 und eine Audiosenke 24 enthalten. Der Kommunikationskontroller 20 und die Audiosenke 24 können die beschriebenen Operationen mit Hilfe von Software, Hardware, Firmware oder einer Mischung aus Hardware, Software und Firmware durchführen, die sich in dem Senkengerät 4 befinden und/oder dort ausgeführt werden. Das Senkengerät 4 kann den Kommunikationskontroller 20 und die Audiosenke 24 mit einem oder mehreren Prozessoren ausführen. Das Senkengerät 4 kann den Kommunikationskontroller 20 und die Audiosenke 24 als virtuelle Maschine ausführen, die auf der zugrunde liegenden Hardware ausgeführt wird. Der Kommunikationskontroller 20 und die Audiosenke 24 können als Dienst oder Komponente eines Betriebssystems oder einer Computerplattform ausgeführt werden. Der Kommunikationskontroller 20 und die Audiosenke 24 können als ein oder mehrere ausführbare Programme auf einer Anwendungsschicht einer Computerplattform ausgeführt werden. Der Kommunikationskontroller 20 und die Audiosenke 24 können auf andere Weise entfernt von der Senke 4 angeordnet und für diese zugänglich sein, z. B. als ein oder mehrere Netzwerkdienste, die in einem Netzwerk in einer Netzwerkcloud arbeiten.
-
Im Betrieb können der Kommunikationskontroller 10 des Quellgeräts 2 und der Kommunikationskontroller 20 des Senkengeräts 4 die drahtlose Verbindung 6 aushandeln und aufbauen. Beispielsweise können der Kommunikationskontroller 10 und der Kommunikationskontroller 20 jeweils die Kommunikationseinheiten 14 und die Kommunikationseinheiten 30 veranlassen, Daten auszutauschen, um die drahtlose Verbindung 6 herzustellen. Beispiele für drahtlose Verbindungen 6 sind unter anderem BLUETOOTH-Verbindungen (einschließlich BLUETOOTH LE), Wi-Fi-Verbindungen und dergleichen.
-
Der Kommunikationskontroller 10 kann Daten von einer oder mehreren Komponenten des Quellgeräts 2 empfangen. Zum Beispiel kann der Kommunikationskontroller 10 Audiodaten von der Audioquelle 8 empfangen. Wie oben beschrieben, können die Audiodaten in Form einer Folge von Audioblöcken vorliegen. Der Kommunikationskontroller 10 kann ein Packethüllen -Modul 16 implementieren, das die Audioblöcke in Pakete verpacken/einkapseln oder anderweitig einfügen kann. Die Pakete können jeweils einen oder mehrere der Audioblöcke enthalten. Der Kommunikationskontroller 10 kann die Kommunikationseinheiten 14 veranlassen, die Pakete drahtlos an ein externes Gerät zu übertragen. Zum Beispiel kann der Kommunikationskontroller 10 die Kommunikationseinheiten 14 veranlassen, die Pakete über die drahtlose Verbindung 6 drahtlos an das Senkengerät 4 zu übertragen.
-
Die Kommunikationseinheiten 30 und der Kommunikationskontroller 20 des Senkengeräts 4 können die Pakete vom Quellgerät 2 empfangen. Wenn ein Paket erfolgreich empfangen wurde, kann der Kommunikationskontroller 20 die Kommunikationseinheiten 30 veranlassen, eine Bestätigung des sicheren Empfangs an das Quellgerät 2 auszugeben (z. B. über die Funkverbindung 6). Zum Beispiel kann der Kommunikationskontroller 20 die Kommunikationseinheiten 30 veranlassen, eine Bestätigungsnachricht, auch ACK-Nachricht genannt, auszugeben.
-
Der Kommunikationskontroller 20 kann ein Paketentpackungsmodul 28 implementieren, um die Audioblöcke aus den Paketen zu enthüllen/entpacken oder anderweitig zu entfernen. Der Kommunikationskontroller 20 kann die entfernten Audioblöcke der Audiosenke 24 zur Verfügung stellen, welche die in den Audioblöcken enthaltenen Audiodaten über Lautsprecher, die im Senkengerät 4 enthalten oder mit ihr verbunden sind, wiedergeben oder deren Wiedergabe veranlassen kann. Auf diese Weise kann das Quellgerät 2 Audiodaten an das Senkengerät 4 streamen.
-
In einigen Beispielen stimmt die Rate, mit welcher der Kommunikationskontroller 10 die Audiodaten von der Audioquelle 8 empfängt, möglicherweise nicht immer mit der Rate überein, mit der der Kommunikationskontroller 10 die Kommunikationseinheiten 14 veranlasst, die Pakete drahtlos an das Senkengerät 4 zu übertragen. Daher kann der Kommunikationskontroller 10 einen oder mehrere Puffer implementieren, wie z. B. den Datenpuffer 12, um die Audioblöcke und/oder generierten Pakete zu speichern, bevor die Pakete übertragen werden.
-
Der Datenpuffer 12 kann eine Größe haben, die in der Lage ist, Audioblöcke oder entsprechende Pakete für eine bestimmte Zeitspanne zu speichern. Beispielsweise kann der Datenpuffer 12 in der Lage sein, 100 Millisekunden (ms), 250 ms, 300 ms, 500 ms oder eine beliebige andere Menge von Audioblöcken oder entsprechenden Paketen zu speichern.
-
Die Kommunikationskontroller 10 kann den Datenpuffer 12 nach dem FIFO-Prinzip (First-in-First-out) betreiben. Zum Beispiel kann der Kommunikationskontroller 10 bestimmen, dass der nächste zu übertragende Block/das nächste zu übertragende Paket der älteste Block/das älteste Paket im Datenpuffer 12 ist (d. h. der Block/das Paket, der/das zuletzt im Datenpuffer 12 gespeichert wurde).
-
Wie oben beschrieben, kann der Kommunikationskontroller 10 eine Bestätigungsnachricht vom Senkengerät 4 empfangen, wenn ein Paket erfolgreich empfangen wurde. Als Reaktion auf die Feststellung, dass ein bestimmtes Audiopaket erfolgreich von der Senke 4 empfangen wurde, kann der Kommunikationskontroller 10 einen Audioblock, der dem bestimmten Audiodatenpaket entspricht, aus dem Datenpuffer 12 entfernen. Ein Beispiel: Wenn der Datenpuffer 12 unverpackte (d. h. nicht paketierte) Audioblöcke speichert, kann der Kommunikationskontroller 10 den Audioblock n aus dem Datenpuffer 12 entfernen, wenn er feststellt, dass ein Paket, das den Audioblock n einkapselt, erfolgreich von der Senke 4 empfangen wurde (z. B. als Reaktion auf den Empfang einer ACK-Nachricht für das Paket). Ein weiteres Beispiel: Wenn der Datenpuffer 12 verpackte (d. h. paketierte) Audioblöcke speichert, kann der Kommunikationskontroller 10 ein Paket, das den Audioblock n einkapselt, aus dem Datenpuffer 12 entfernen, wenn er feststellt, dass das Paket, das den Audioblock n einkapselt, erfolgreich vom Senkengerät 4 empfangen wurde (z. B. als Reaktion auf den Empfang einer ACK-Nachricht für das Paket). Das Entfernen von Blöcken/Paketen aus dem Datenpuffer 12 kann als Entleeren von Paketen aus dem Datenpuffer 12 bezeichnet werden.
-
Wenn der Kommunikationskontroller 10 feststellt, dass ein Paket verworfen wurde (d. h. nicht erfolgreich vom Senkengerät 4 empfangen wurde), kann der Kommunikationskontroller 10 versuchen, das Paket erneut an das Senkengerät 4 zu übertragen. Zum Beispiel kann der Kommunikationskontroller 10 als Reaktion auf den Nicht-Empfang einer ACK-Nachricht für ein bestimmtes Paket innerhalb einer bestimmten Zeitspanne nach der Übertragung des bestimmten Pakets versuchen, das Paket erneut an das Senkengerät 4 zu übertragen. Zusätzlich oder alternativ kann der Kommunikationskontroller 10 feststellen, dass ein bestimmtes Paket als Reaktion auf den Empfang einer negativen Bestätigungsnachricht (NACK) für das bestimmte Paket verworfen wurde. Beispielsweise kann der Kommunikationskontroller 10 als Reaktion auf den Empfang einer NACK-Nachricht für ein bestimmtes Paket versuchen, das Paket erneut an das Senkengerät 4 zu übertragen.
-
Das Fallenlassen von Paketen kann die Folge von schlechten Kanalbedingungen der drahtlosen Verbindung 6 sein. Die drahtlose Verbindung 6 kann aufgrund einer beliebigen Anzahl von Umständen unter schlechten Kanalbedingungen leiden. Einige Beispielumstände sind unter anderem elektromagnetisches (EM) Rauschen, geringe Signalstärke, ein großer oder dynamischer Abstand zwischen dem Quellgerät 2 und dem Senkengerät 4, das Quellgerät 2 befindet sich in einer Umfassung (z. B. in einer Tasche, einem Beutel oder einem Kofferraum), usw. Es kann davon ausgegangen werden, dass die drahtlose Verbindung 6 unter schlechten Kanalbedingungen in anspruchsvollen Hochfrequenzumgebungen (HF) leidet.
-
In jedem Fall kann das Fallenlassen von Paketen die Rate verringern, mit der der Kommunikationskontroller 10 Blöcke/Pakete aus dem Datenpuffer 12 entnimmt (d. h. entfernt). Wenn die Rate, mit der die Kommunikationskontroller 10 Blöcke/Pakete aus dem Datenpuffer 12 entnimmt, geringer ist als die Rate, mit der Blöcke/Pakete in den Datenpuffer 12 eingefügt (z. B. gespeichert) werden, kann der Datenpuffer 12 schließlich voll werden. Wenn der Datenpuffer 12 voll ist, kann der Kommunikationskontroller 10 eine oder mehrere Aktionen durchführen, um Platz im Datenpuffer 12 freizumachen. Beispielsweise kann der Kommunikationskontroller 10 als Reaktion auf die Feststellung, dass der Datenpuffer 12 voll ist, veraltete Blöcke/Pakete aus dem Datenpuffer 12 entfernen. Bei den veralteten Blöcken/Paketen kann es sich um die ältesten Blöcke/Pakete handeln, die im Datenpuffer 12 gespeichert sind.
-
Durch das Entfernen veralteter Blöcke/Pakete kann Platz im Datenpuffer 12 frei werden, so dass der Kommunikationskontroller 10 weiterhin neue von der Audioquelle 8 empfangene Audiodaten (z. B. als Blöcke oder Pakete) speichern kann. Sobald sich die Kanalbedingungen der drahtlosen Verbindung 6 verbessern (z. B. wenn sich der Kanal öffnet), kann der Kommunikationskontroller 10 die Übertragung von Audiopaketen an das Senkengerät 4 wieder aufnehmen. Die Audiodaten, die in den entfernten veralteten Blöcken/Paketen enthalten sind, gehen jedoch verloren. Da die entfernten veralteten Blöcke/Pakete Audiodaten enthielten, die während einer bestimmten Zeitspanne wiedergegeben werden sollten, kann ein Benutzer des Senkengeräts 4 Lücken in der Wiedergabe der Audiodaten wahrnehmen.
-
In Übereinstimmung mit einer oder mehreren Techniken dieser Offenlegung kann der Kommunikationskontroller 10 automatisch eine Rate anpassen, mit der Audiodaten von der Audioquelle 8 empfangen werden, basierend auf den Bedingungen der drahtlosen Verbindung 6. Zum Beispiel kann der Kommunikationskontroller 10 einen aktuellen Zustand der drahtlosen Verbindung bestimmen (z. B. basierend auf einem fehlenden Empfang von ACK-Nachrichten). Basierend auf dem ermittelten Zustand kann der Kommunikationskontroller 10 „Gegendruck“ auf die Audioquelle 8 ausüben, um die Rate zu reduzieren, mit der die Audioquelle 8 Blöcke von Audiodaten ausgibt. Durch die Reduzierung der Rate, mit der die Audioquelle 8 Audiodatenblöcke ausgibt, kann der Kommunikationskontroller 10 die Rate reduzieren, mit der Audiodatenblöcke in den Datenpuffer 12 eingefügt werden. Durch die Reduzierung der Rate, mit der Blöcke in den Datenpuffer 12 eingefügt werden, kann der Kommunikationskontroller 10 vermeiden, dass die ältesten Blöcke aus dem Datenpuffer 12 gelöscht werden müssen. Auf diese Weise ermöglichen die Techniken dieser Offenbarung dem Kommunikationskontroller 10, Audiolücken zu vermeiden.
-
2 ist ein Blockdiagramm, das ein Beispiel für ein Quellgerät zeigt, das so konfiguriert ist, dass es Audiodaten drahtlos an ein Senkengerät streamt, in Übereinstimmung mit einem oder mehreren Aspekten der vorliegenden Offenbarung. Das Quellgerät 2 von 2 wird im Folgenden im Kontext des Systems 100 von 1 beschrieben. 2 veranschaulicht nur ein bestimmtes Beispiel für das Quellgerät 2, und viele andere Beispiele für das Quellgerät 2 können in anderen Fällen verwendet werden. Im Beispiel von 2 kann das Quellgerät 2 ein tragbares Computergerät, ein mobiles Computergerät oder ein beliebiges anderes Computergerät sein, das Audiodaten streamen kann. Das Quellgerät 2 von 2 kann eine Teilmenge der Komponenten enthalten, die im Beispiel-Quellgerät 2 enthalten sind, oder es kann zusätzliche Komponenten enthalten, die in 2 nicht dargestellt sind.
-
Wie im Beispiel von 2 gezeigt, umfasst das Quellgerät 2 ein Benutzerschnittstellengerät 42 („UID 42“), einen oder mehrere Prozessoren 36, ein oder mehrere Ausgabegeräte 38, ein oder mehrere Eingabegeräte 40, eine oder mehrere Kommunikationseinheiten 14, eine Batterie 44 und ein oder mehrere Speichervorrichtungen 46. Zu den Speichervorrichtungen 46 können auch die Audioquelle 8, der Kommunikationskontroller 10, der Datenpuffer 12 und das Kanalzustandsmodul 13 gehören.
-
Kommunikationskanäle 48 können jede der Komponenten 14, 36, 38, 40, 42, 44 und 46 für die Kommunikation zwischen den Komponenten (physikalisch, kommunikativ und/oder operativ) miteinander verbinden. In einigen Beispielen können die Kommunikationskanäle 48 einen Energiebus, einen Systembus, eine Netzwerkverbindung, eine Interprozess-Kommunikationsdatenstruktur oder eine andere Methode zur Datenkommunikation oder Energieübertragung umfassen.
-
Ein oder mehrere Ausgabegeräte 38 können eine Ausgabe erzeugen. Beispiele für die Ausgabe sind taktile, Audio- und Videoausgabe. Zu den Ausgabegeräten 38 gehören in einem Beispiel ein präsenzsensitiver Bildschirm, eine Soundkarte, eine Videografik-Adapterkarte, ein Lautsprecher, ein Kathodenstrahlröhren-Monitor (CRT), eine Flüssigkristallanzeige (LCD) oder jede andere Art von Gerät zur Erzeugung von Ausgaben für einen Menschen oder eine Maschine.
-
Ein oder mehrere Eingabegeräte 40 können Eingaben empfangen. Beispiele für Eingaben sind taktile, Audio- und Videoeingaben. Zu den Eingabegeräten 40 gehören in einigen Beispielen ein präsenzsensitiver Bildschirm, ein berührungsempfindlicher Bildschirm, eine Maus, eine Tastatur, ein sprachgesteuertes System, eine Videokamera, ein Mikrofon, ein Sensor oder jede andere Art von Gerät zur Erkennung von Eingaben durch einen Menschen oder eine Maschine.
-
Eine oder mehrere Kommunikationseinheiten 14 ähneln den Kommunikationseinheiten 14 von 1 und können einige oder alle der gleichen Merkmale der Kommunikationseinheiten 14 von 1 enthalten. Beispielsweise können die Kommunikationseinheiten 14 mit externen Geräten über ein oder mehrere verdrahtete und/oder drahtlose Netzwerke kommunizieren, indem sie Netzwerksignale in dem einen oder den mehreren Netzwerken senden und/oder empfangen.
-
UID 42 kann die Funktionalität von Eingabegeräten 40 und/oder Ausgabegeräten 38 beinhalten. Im Beispiel von 2 kann UID 42 ein präsenzsensitives Eingabegerät sein oder beinhalten. In einigen Beispielen kann ein präsenzsensitives Eingabegerät ein Objekt auf und/oder in der Nähe eines Bildschirms erkennen. Als ein Beispielbereich kann ein präsenzempfindliches Eingabegerät ein Objekt, wie z. B. einen Finger oder Stift, erkennen, das sich innerhalb von 2 Zoll oder weniger vom Bildschirm befindet. Das präsenzempfindliche Eingabegerät kann eine Position (z. B. eine (x,y)-Koordinate) eines Bildschirms bestimmen, an der das Objekt erkannt wurde. In einem anderen Beispielbereich kann ein präsenzsensitives Eingabegerät ein Objekt in einem Abstand von sechs Zoll oder weniger vom Bildschirm erkennen; andere Bereiche sind ebenfalls möglich. Das präsenzempfindliche Eingabegerät kann die Position des Bildschirms, die durch den Finger eines Benutzers ausgewählt wurde, mit Hilfe von kapazitiven, induktiven und/oder optischen Erkennungsverfahren bestimmen. In einigen Beispielen liefert die präsenzsensitive Eingabevorrichtung auch eine Ausgabe an einen Benutzer unter Verwendung von taktilen, Audio- oder Videostimuli, wie in Bezug auf die Ausgabevorrichtung 38 beschrieben, z. B. an einem Bildschirm.
-
Eine oder mehrere Speichervorrichtungen 46 innerhalb des Quellgeräts 2 können Informationen für die Verarbeitung während des Betriebs des Quellgeräts 2 speichern (z. B. kann das Quellgerät 2 Daten (z. B. Audioblöcke und/oder Pakete im Datenpuffer 12) speichern, auf welche die Module 8, 10 und 13 während der Ausführung im Quellgerät 2 zugreifen). In einigen Beispielen ist die Speichervorrichtung 46 ein temporärer Speicher, was bedeutet, dass ein primärer Zweck der Speichervorrichtung 46 nicht die langfristige Speicherung ist. Die Speichervorrichtung 46 auf dem Quellgerät 2 kann für die kurzfristige Speicherung von Informationen als flüchtiger Speicher konfiguriert sein und daher den gespeicherten Inhalt nicht beibehalten, wenn sie ausgeschaltet wird. Beispiele für flüchtige Speicher sind Direktzugriffsspeicher (RAM), dynamische Direktzugriffsspeicher (DRAM), statische Direktzugriffsspeicher (SRAM) und andere Formen von flüchtigen Speichern, die in der Technik bekannt sind.
-
Die Speichervorrichtungen 46 umfassen in einigen Beispielen ein oder mehrere computerlesbare Speichermedien. Die Speichervorrichtungen 46 können so konfiguriert sein, dass sie größere Informationsmengen als flüchtige Speicher speichern können. Speichervorrichtungen 46 können ferner für die langfristige Speicherung von Informationen als nichtflüchtiger Speicherplatz konfiguriert sein und Informationen nach Ein-/Ausschaltzyklen beibehalten. Beispiele für nichtflüchtige Speicher sind magnetische Festplatten, optische Platten, Flash-Speicher oder Formen von elektrisch programmierbaren Speichern (EPROM) oder elektrisch löschbaren und programmierbaren (EEPROM) Speichern. Die Speichervorrichtungen 46 können Programmanweisungen und/oder Informationen (z. B. Daten) in Verbindung mit den Modulen 8, 10, 13 und dem Puffer 12 speichern.
-
Ein oder mehrere Prozessoren 36 können Funktionalität implementieren und/oder Anweisungen innerhalb des Quellgeräts 2 ausführen. Beispielsweise können die Prozessoren 36 auf dem Quellgerät 2 von den Speichervorrichtungen 46 gespeicherte Anweisungen empfangen und ausführen, welche die Funktionalität der Module 8, 10 und 13 ausführen. Die Prozessoren 36 können Anweisungen der Module 8, 10 und 13 ausführen, um verschiedene Aktionen oder Funktionen des Quellgeräts 2 auszuführen.
-
Die Audioquelle 8 und der Kommunikationskontroller 10 können weitere Beispiele der Audioquelle 8 und des Kommunikationskontrollers 10 aus 1 sein, die ähnliche und einige oder alle Funktionen der Audioquelle 8 und des Kommunikationskontrollers 10 aus 1 beinhalten. Zum Beispiel kann die Audioquelle 8 einen Softwarepfad darstellen, der so konfiguriert ist, dass er Audiodaten an eine oder mehrere andere Komponenten des Quellgeräts 2 liefert.
-
Der Datenpuffer 12 kann ein Beispiel für den Datenpuffer 12 von 1 sein und kann eine ähnliche Funktionalität wie der Datenpuffer 12 von 1 aufweisen. Der Datenpuffer 12 kann beispielsweise Audioblöcke oder gekapselte Audioblöcke für das Streaming an ein externes Gerät, wie z. B. das Senkengerät 4 von 1, speichern.
-
Wie oben beschrieben und in Übereinstimmung mit einer oder mehreren Techniken dieser Offenlegung kann der Kommunikationskontroller 10 automatisch eine Rate anpassen, mit der Audiodaten von der Audioquelle 8 empfangen werden, basierend auf den Bedingungen einer drahtlosen Verbindung zwischen dem Quellgerät 2 und einem externen Gerät (z. B. dem Senkengerät 4). Zum Beispiel kann das Kanalzustandsmodul 13 einen aktuellen Zustand der drahtlosen Verbindung basierend auf einer Rate oder Menge, mit der Audiodatenpakete, die über die drahtlose Verbindung übertragen werden, verworfen werden, bestimmen. Wie oben beschrieben, kann ein Paket als verworfen gelten, wenn eine Bestätigungsnachricht nicht innerhalb einer bestimmten Zeitspanne seit der Übertragung des Pakets empfangen wird. Das Kanalzustandsmodul 13 kann die Rate der Paketverluste als Anzahl der pro Zeiteinheit verlorenen Pakete (z. B. #Pakete/Sekunde) bestimmen. Zusätzlich oder alternativ kann das Kanalzustandsmodul 13 den aktuellen Zustand der drahtlosen Verbindung auf der Grundlage des Durchsatzes der drahtlosen Verbindung bestimmen. Beispielsweise kann das Kanalzustandsmodul 13 eine Anzahl von Paketen pro Zeiteinheit bestimmen, die erfolgreich über die drahtlose Verbindung übertragen werden können.
-
Das Kanalzustandsmodul 13 kann einen Hinweis des aktuellen Zustands der drahtlosen Verbindung an den Kommunikationskontroller 10 ausgeben, der die Rate, mit der Audiodaten von der Audioquelle 8 empfangen werden, basierend auf dem Hinweis automatisch anpassen kann. Im Allgemeinen kann der Kommunikationskontroller 10 die Rate, mit der Audiodaten von der Audioquelle 8 empfangen werden, reduzieren, wenn das Kanalzustandsmodul 13 anzeigt, dass der aktuelle Zustand der drahtlosen Verbindung dazu führen kann, dass veraltete Blöcke/Pakete aus dem Datenpuffer 12 entfernt werden. Als ein Beispiel kann der Kommunikationskontroller 10 die Rate, mit der Audiodaten von der Audioquelle 8 empfangen werden, als Reaktion auf die Feststellung reduzieren, dass die Rate der Paketverluste größer als ein Schwellenwert für die Paketverlustrate ist. Als weiteres Beispiel kann der Kommunikationskontroller 10 die Rate, mit der Audiodaten von der Audioquelle 8 empfangen werden, als Reaktion auf die Feststellung reduzieren, dass der Durchsatz der drahtlosen Verbindung niedriger ist als eine aktuelle Rate, mit der Audiodaten empfangen werden.
-
Die automatische Anpassung der Rate, mit der Audiodaten empfangen werden, muss nicht immer eine Reduzierung sein. Beispielsweise kann der Kommunikationskontroller 10 die Rate zu einem ersten Zeitpunkt reduzieren und die Rate, mit der Audiodaten empfangen werden, zu einem zweiten Zeitpunkt erhöhen, nachdem er einen aktualisierten Hinweis der Kanalbedingungen erhalten hat (z. B. den Hinweis einer geringeren Ausfallrate und/oder eines höheren Durchsatzes).
-
Der Kommunikationskontroller 10 kann die Rate, mit der Audiodaten empfangen werden, auf verschiedene Weise einstellen. Zum Beispiel kann der Kommunikationskontroller 10 einen Hinweis an die Audioquelle 8 ausgeben, die anzeigt, ob der Kommunikationskontroller 10 gerade zusätzliche Audiodaten (z. B. zur drahtlosen Übertragung) akzeptiert/empfängt oder nicht. Um die Rate zu reduzieren, kann der Kommunikationskontroller 10 beispielsweise einen Hinweis an die Audioquelle 8 ausgeben, die anzeigt, dass der Kommunikationskontroller 10 derzeit keine zusätzlichen Audiodaten akzeptiert/empfängt (z. B. kann der Kommunikationskontroller 10 blockieren). In ähnlicher Weise kann der Kommunikationskontroller 10 zur Erhöhung der Rate einen Hinweis an die Audioquelle 8 ausgeben, die anzeigt, dass der Kommunikationskontroller 10 gerade zusätzliche Audiodaten akzeptiert/empfängt. Wenn der Kommunikationskontroller 10 anzeigt, dass er derzeit keine zusätzlichen Audiodaten akzeptiert/empfängt, kann die Audioquelle 8 „blockieren“ und Daten halten, bis der Kommunikationskontroller 10 anzeigt, dass er derzeit zusätzliche Audiodaten akzeptiert/empfängt.
-
Als weiteres Beispiel kann der Kommunikationskontroller 10 eine gewünschte Rate bestimmen und eine Anforderung an die Audioquelle 8 ausgeben, damit diese zusätzliche Audiodaten mit der gewünschten Rate an den Kommunikationskontroller 10 ausgibt. Der Kommunikationskontroller 10 kann die gewünschte Rate auf der Grundlage eines oder mehrerer Faktoren bestimmen. Einige Beispielfaktoren umfassen, sind aber nicht beschränkt auf eine aktuelle Rate, mit der Audiodaten von der Audioquelle 8 ausgegeben werden, den aktuellen Zustand der drahtlosen Verbindung (z. B. #Pakete/Sek. verworfen und/oder #Pakete/Sek. Durchsatz), eine aktuelle Abflussrate (z. B. #Pakete/Sek. erfolgreich übertragen), eine Größe des Datenpuffers 12 und eine Datenmenge, die derzeit im Datenpuffer 12 gespeichert ist. Als ein Beispiel kann der Kommunikationskontroller 10 die gewünschte Rate auf die gleiche Rate wie den aktuellen Durchsatz der drahtlosen Verbindung einstellen. In einem anderen Beispiel kann der Kommunikationskontroller 10 die gewünschte Rate als aktuelle Abflussrate multipliziert mit einem von der Verbindungsqualität abhängigen Skalierungsfaktor beta festlegen. Wenn die Verbindungsqualität perfekt ist, ist beta=1 und kann bei schlechter Verbindungsqualität auf ~0 herunterskaliert werden.
-
Wie oben beschrieben, kann die Audioquelle 8 auf einer Ebene über dem Kommunikationskontroller 10 arbeiten (z. B. auf einer höheren Ebene eines Stapels). Da der Kommunikationskontroller 10 die Audioquelle 8 veranlasst, die Rate zu ändern, mit der die Audioquelle 8 Audiodatenblöcke ausgibt, kann der Kommunikationskontroller 10 als „Gegendruck“ auf die Audioquelle 8 betrachtet werden. Wie oben beschrieben, kann der Kommunikationskontroller 10 durch die automatische Anpassung der Rate, mit der die Audioquelle 8 Audiodatenblöcke an den Kommunikationskontroller 10 ausgibt, vermeiden, dass veraltete Pakete/Blöcke aus dem Datenpuffer 12 gelöscht oder anderweitig entfernt werden müssen. Auf diese Weise ermöglichen die Techniken dieser Offenbarung dem Kommunikationskontroller 10, Lücken in der Audiowiedergabe zu vermeiden.
-
In einigen Beispielen kann eine Größe des Datenpuffers 12 statisch sein. Zum Beispiel kann die Größe des Datenpuffers 12 unabhängig von anderen Bedingungen gleich sein. In einigen Beispielen kann die Größe des Datenpuffers 12 dynamisch sein. Zum Beispiel kann der Kommunikationskontroller 10 zur Laufzeit die Größe des Datenpuffers 12 dynamisch anpassen. Der Kommunikationskontroller 10 kann die Speichervorrichtungen 46 auffordern, die Größe des Datenpuffers 12 in festen Längenschritten (z. B. 100ms, 250ms, 500ms) oder auf einen beliebigen ganzzahligen Wert zwischen einem Minimalwert und einem Maximalwert zu ändern (z. B. Änderung einer Speicher- oder Ablagezuweisung).
-
Der Kommunikationskontroller 10 kann den Ursprung der von der Audioquelle 8 empfangenen Audiodaten auf einer App-Ebene bestimmen, wie z. B. eine Video-Streaming-Anwendung, eine Audio-Streaming-Anwendung usw. Der Kommunikationskontroller 10 kann die Größe des Datenpuffers 12 basierend auf der Bestimmung des Audiodatenursprungs dynamisch anpassen. Unverarbeitetes Audio kann von größeren Puffergrößen profitieren. Die Kombination von Video- und Audiodaten kann jedoch eine A/V-Synchronisation erfordern, und ein großer Puffer kann zu Latenzproblemen führen.
-
Als ein spezifisches Beispiel kann ein Benutzer eine Benutzereingabe an das Quellgerät 2 geben, um eine Video-Streaming-Anwendung zu starten. Das Video der Video-Streaming-Anwendung kann auf einem Display des Quellgeräts 2 angezeigt werden, während das Audio der Video-Streaming-Anwendung zum Senkengerät 4 gestreamt werden kann. Der Kommunikationskontroller 10 kann bestimmen, dass die A/V-Synchronisation priorisiert werden soll und eine Größe für den Datenpuffer 12 auswählen. Als ein Beispiel kann der Kommunikationskontroller 10 eine Größe für den Datenpuffer 12 basierend auf einer Heuristik und unter Berücksichtigung der A/V-Synchronisation auswählen. Als weiteres Beispiel kann der Kommunikationskontroller 10 eine Größe für den Datenpuffer 12 als eine vorgegebene Puffergröße für A/V-Synchronisationsanwendungen auswählen. Als weiteres Beispiel kann die Videostreaming-Anwendung eine angeforderte Puffergröße bereitstellen und der Kommunikationskontroller 10 kann die Größe des Datenpuffers 12 auf die angeforderte Puffergröße einstellen.
-
3 ist ein Blockdiagramm, das ein Beispiel für ein Senkengerät zeigt, das zum drahtlosen Streamen von Audiodaten von einem Quellgerät konfiguriert ist, in Übereinstimmung mit einem oder mehreren Aspekten der vorliegenden Offenbarung. Das Senkengerät 4 von 3 wird im Folgenden im Kontext des Systems 100 von 1 beschrieben. 3 zeigt nur ein bestimmtes Beispiel für das Senkengerät 4, und viele andere Beispiele für das Senkengerät 4 können in anderen Fällen verwendet werden. Im Beispiel von 2 kann das Senkengerät 4 ein Paar drahtloser Kopfhörer sein. Die Senke 4 kann jedoch auch jede andere Art von mobilem Computergerät sein, wie z. B. ein Mobiltelefon, ein Fahrzeug, ein drahtloser Lautsprecher, ein Kameragerät, ein Tablet-Computer, ein persönlicher digitaler Assistent (PDA), ein Laptop-Computer, ein Spielsystem, ein Mediaplayer, ein E-Book-Reader, eine Fernsehplattform oder ein tragbares Computergerät (z. B. eine computergesteuerte Uhr, eine computergesteuerte Brille, ein computergesteuerter Handschuh). Das Senkengerä 4 von 3 kann eine Teilmenge der Komponenten enthalten, die in dem Beispiel-Senkengerät 4 enthalten sind, oder sie kann zusätzliche Komponenten enthalten, die in 3 nicht dargestellt sind.
-
Wie im Beispiel von 3 gezeigt, umfasst das Senkengerät 4 einen oder mehrere Prozessoren 50, ein oder mehrere Ausgabegeräte 56, ein oder mehrere Eingabegeräte 52, eine oder mehrere Kommunikationseinheiten 30, eine Batterie 54 und ein oder mehrere Speichervorrichtungen 58. Die Speichervorrichtungen 58 können auch die Audiosenke 24, den Kommunikationskontroller 20 und den Datenpuffer 12 umfassen.
-
Kommunikationskanäle 60 können jede der Komponenten 30, 50, 52, 54, 56 und 58 für die Kommunikation zwischen den Komponenten (physikalisch, kommunikativ und/oder operativ) miteinander verbinden. In einigen Beispielen können die Kommunikationskanäle 60 einen Energiebus, einen Systembus, eine Netzwerkverbindung, eine Interprozess-Kommunikationsdatenstruktur oder eine andere Methode zur Datenkommunikation oder Energieübertragung umfassen.
-
Ein oder mehrere Ausgabegeräte 56 können eine Ausgabe erzeugen. Beispiele für eine Ausgabe sind eine taktile, eine Audio- und eine Video-Ausgabe. Zu den Ausgabegeräten 38 gehören in einem Beispiel ein präsenzsensitiver Bildschirm, eine Soundkarte, eine Videografik-Adapterkarte, ein Lautsprecher, ein Kathodenstrahlröhren-Monitor (CRT), eine Flüssigkristallanzeige (LCD) oder jede andere Art von Gerät zur Erzeugung von Ausgaben für einen Menschen oder eine Maschine. Wie in 3 dargestellt, umfasst das Ausgabegerät 38 den/die Lautsprecher 62.
-
Ein oder mehrere Eingabegeräte 52 können Eingaben empfangen. Beispiele für eine Eingabe sind taktile, Audio- und Video-Eingaben. Zu den Eingabegeräten 52 gehören in einigen Beispielen ein präsenzsensitiver Bildschirm, ein berührungsempfindlicher Bildschirm, eine Maus, Tasten, Schalter, eine Tastatur, ein sprachgesteuertes System, eine Videokamera, ein Mikrofon, ein Sensor oder jede andere Art von Gerät zur Erkennung von Eingaben durch einen Menschen oder eine Maschine.
-
Eine oder mehrere Kommunikationseinheiten 30 ähneln den Kommunikationseinheiten 30 von 1 und können einige oder alle der gleichen Merkmale der Kommunikationseinheiten 30 von 1 aufweisen. Beispielsweise können die Kommunikationseinheiten 30 mit externen Geräten über ein oder mehrere verdrahtete und/oder drahtlose Netzwerke kommunizieren, indem sie Netzwerksignale in dem einen oder den mehreren Netzwerken senden und/oder empfangen.
-
Eine oder mehrere Speichervorrichtungen 58 innerhalb des Senkengeräts 4 können Informationen für die Verarbeitung während des Betriebs des Senkengeräts 4 speichern (z. B. kann das Senkengerät 4 Daten (z. B. Audioblöcke und/oder Pakete im Datenpuffer 22) speichern, auf welche die Module 20 und 24 während der Ausführung im Senkengerät 4 zugreifen). In einigen Beispielen ist die Speichervorrichtung 58 ein temporärer Speicher, was bedeutet, dass ein primärer Zweck der Speichervorrichtung 58 nicht die langfristige Speicherung ist. Speichervorrichtungen 58 auf dem Senkengerät 4 können für die kurzfristige Speicherung von Informationen als flüchtiger Speicher konfiguriert sein und daher den gespeicherten Inhalt nicht beibehalten, wenn sie ausgeschaltet werden. Beispiele für flüchtige Speicher sind Direktzugriffsspeicher (RAM), dynamische Direktzugriffsspeicher (DRAM), statische Direktzugriffsspeicher (SRAM) und andere Formen von flüchtigen Speichern, die in der Technik bekannt sind.
-
Die Speichervorrichtungen 58 umfassen in einigen Beispielen ein oder mehrere computerlesbare Speichermedien. Die Speichervorrichtungen 58 können so konfiguriert sein, dass sie größere Informationsmengen als flüchtige Speicher speichern können. Die Speichervorrichtungen 58 können ferner für die langfristige Speicherung von Informationen als nichtflüchtiger Speicherplatz konfiguriert sein und Informationen nach Ein-/Ausschaltzyklen beibehalten. Beispiele für nichtflüchtige Speicher sind magnetische Festplatten, optische Platten, Disketten, Flash-Speicher oder Formen von elektrisch programmierbaren Speichern (EPROM) oder elektrisch löschbaren und programmierbaren (EEPROM) Speichern. Die Speichervorrichtungen 58 können Programmanweisungen und/oder Informationen (z. B. Daten) speichern, die mit den Modulen 20 und 24 und dem Puffer 22 verbunden sind.
-
Ein oder mehrere Prozessoren 50 können Funktionalität implementieren und/oder Anweisungen innerhalb des Senkengeräts 4 ausführen. Beispielsweise können die Prozessoren 50 im Senkengerät 4 Anweisungen empfangen und ausführen, die in den Speichervorrichtungen 58 gespeichert sind und die Funktionalität der Module 20 und 24 ausführen. Die Prozessoren 50 können Anweisungen der Module 20 und 24 ausführen, um verschiedene Aktionen oder Funktionen des Senkengeräts 4 auszuführen.
-
Die Audiosenke 24 und der Kommunikationskontroller 20 können weitere Beispiele für die Audiosenke 24 und den Kommunikationskontroller 20 aus 1 sein, die ähnliche und einige oder alle Funktionen der Audiosenke 24 und des Kommunikationskontrollers 20 aus 1 enthalten. Beispielsweise kann die Audiosenke 24 einen Softwarepfad darstellen, der so konfiguriert ist, dass er Audiodaten vom Kommunikationskontroller 20 zur Wiedergabe über die Lautsprecher 62 empfängt.
-
Der Datenpuffer 22 kann ein Beispiel für den Datenpuffer 22 von 1 sein und kann eine ähnliche Funktionalität wie der Datenpuffer 22 von 1 aufweisen. Der Datenpuffer 22 kann beispielsweise Audioblöcke oder gekapselte Audioblöcke speichern, die von einem externen Gerät gestreamt werden, wie z. B. dem Quellgerät 2 von 1.
-
Wie oben beschrieben, kann das Senkengerät 4 Pakete von einem externen Gerät über eine drahtlose Verbindung empfangen. Zum Beispiel kann das Senkengerät 4 Pakete empfangen, die Blöcke von Audiodaten vom Quellgerät 2 über die drahtlose Verbindung 6 einkapseln. Als Reaktion auf den Empfang eines Pakets kann der Kommunikationskontroller 20 die Kommunikationseinheiten 30 veranlassen, eine Empfangsbestätigung an das externe Gerät auszugeben. Wie oben beschrieben, kann die Bestätigung in Form einer ACK-Nachricht erfolgen.
-
4 ist ein Flussdiagramm, das Beispielvorgänge eines Beispiel-Quellgeräts veranschaulicht, das zum drahtlosen Streamen von Audiodaten an ein Senkengerät konfiguriert ist, in Übereinstimmung mit einem oder mehreren Aspekten der vorliegenden Offenbarung. Der Betrieb des Quellgeräts 2 werden im Kontext des Systems 100 von 1 und des Quellgeräts 2 von 1 und 2 beschrieben.
-
Der Kommunikationskontroller 10 des Quellgeräts 2 kann von der Audioquelle 8 des Quellgeräts 2 und mit einer Rate Audiodaten empfangen, die drahtlos an ein Senkengerät (402) übertragen werden sollen. Zum Beispiel kann der Kommunikationskontroller 10 eine Sequenz von Audioblöcken empfangen, die jeweils Audiodaten enthalten, die zu einem oder mehreren entsprechenden Zeitpunkten wiedergegeben werden sollen. Mit anderen Worten kann jeder Audioblock Audiodaten für mindestens eine jeweilige Ausgabezeit enthalten.
-
Die Kommunikationskontroller 10 kann die empfangenen Audiodaten (404) im Datenpuffer 12 speichern. Beispielsweise kann der Kommunikationskontroller 10 die empfangenen Audiodaten im Datenpuffer 12 als eine Folge von Audioblöcken speichern. In einigen Beispielen kann der Kommunikationskontroller 10 die Audioblöcke vor dem Speichern im Datenpuffer 12 in Pakete einkapseln.
-
Das Quellgerät 2 kann über eine drahtlose Verbindung Audioblöcke der Sequenz von Audioblöcken (406) an das Senkengerät übertragen. Beispielsweise kann der Kommunikationskontroller 10 eine oder mehrere der Kommunikationseinheiten 14 veranlassen, die Audioblöcke über die drahtlose Verbindung 6 an das Senkengerät 4 zu übertragen. Wie oben beschrieben, kann der Kommunikationskontroller 10 in einigen Beispielen die Audioblöcke in Audiodatenpakete einkapseln, bevor er eine oder mehrere der Kommunikationseinheiten 14 veranlasst, die Audiodatenpakete zu übertragen.
-
Das Quellgerät 2 kann einen aktuellen Zustand der drahtlosen Verbindung (408) bestimmen. Zum Beispiel kann das Kanalzustandsmodul 13 des Quellgeräts 2 von 2 den aktuellen Zustand der drahtlosen Verbindung auf der Grundlage einer Menge von verworfenen Paketen und/oder eines aktuellen Durchsatzes der drahtlosen Verbindung oder beider bestimmen.
-
Der Kommunikationskontroller 10 kann bestimmen, ob die Rate, mit der Audiodaten von der Audioquelle (410) empfangen werden, angepasst werden soll oder nicht. Beispielsweise kann der Kommunikationskontroller 10 auf der Grundlage des aktuellen Zustands der drahtlosen Verbindung bestimmen, die Rate zu verringern, zu erhöhen oder keine Änderung vorzunehmen. Wie oben beschrieben, kann der Kommunikationskontroller 10 im Allgemeinen bestimmen, die Rate zu verringern, mit der Audiodaten von der Audioquelle 8 empfangen werden, wenn der aktuelle Zustand der drahtlosen Verbindung dazu führen kann, dass veraltete Blöcke/Pakete aus dem Datenpuffer 12 entfernt werden. Umgekehrt kann der Kommunikationskontroller 10 bestimmen, die Rate, mit der Audiodaten von der Audioquelle 8 empfangen werden, zu erhöhen, wenn der aktuelle Zustand der drahtlosen Verbindung zu einem Unterlauf des Datenpuffers 12 führen kann. Außerdem kann der Kommunikationskontroller 10 bestimmen, keine Änderung der Rate vorzunehmen, wenn der Kommunikationskontroller 10 bestimmt, die Rate weder zu verringern noch zu erhöhen.
-
Als Reaktion auf die Feststellung, dass die Rate nicht angepasst werden soll („Nein“-Zweig von 410), kann der Kommunikationskontroller 10 weiterhin Audiodaten mit der unveränderten Rate (402) empfangen. Als Reaktion auf die Bestimmung, dass die Rate angepasst werden soll („Ja“-Zweig von 410), kann der Kommunikationskontroller 10 die Rate anpassen (412) und Audiodaten mit der geänderten Rate (402) empfangen. Wie oben beschrieben, kann der Kommunikationskontroller 10 die Rate auf verschiedene Arten anpassen, einschließlich, aber nicht beschränkt auf die Anforderung, dass die Audioquelle Audiodaten mit einer vom Kommunikationskontroller 10 festgelegten Rate ausgibt, und die Information an die Audioquelle, ob der Kommunikationskontroller 10 aktuell zusätzliche Audiodaten akzeptiert, die drahtlos an das Senkengerät übertragen werden sollen, oder nicht. Als ein Beispiel kann der Kommunikationskontroller 10 anfordern, dass die Audioquelle 8 die Rate, mit der die Audioquelle 8 Abtastwerte an den Kommunikationskontroller 10 liefert, anpasst. Als Reaktion auf die Anforderung kann die Audioquelle 8 entweder direkt die Rate anpassen oder eine oder mehrere andere Aktionen durchführen (z. B. auf einer beliebigen Ebene des Stapels), um die Rate anzupassen. Ein Beispiel für eine solche Aktion ist das Veranlassen einer App, keine neuen Audiosamples mehr von ihrer Quelle (z. B. einem Server) zu ziehen.
-
Die folgenden nummerierten Beispiele können einen oder mehrere Aspekte der Offenbarung veranschaulichen:
-
Beispiel 1. Ein Verfahren, das Folgendes umfasst: Empfangen von Audiodaten, die drahtlos zu einem Senkengerät übertragen werden sollen, durch einen Kommunikationskontroller eines Quellgeräts und von einer Audioquelle des Quellgeräts, wobei die Audiodaten von der Audioquelle mit einer Rate empfangen werden; Speichern der Audiodaten als eine Sequenz von Audioblöcken durch den Kommunikationskontroller und in einem Puffer, wobei jeder Audioblock Audiodaten für eine jeweilige Ausgabezeit enthält; Übertragen von Audioblöcken der Sequenz von Audioblöcken durch das Quellgerät und an das Senkengerät unter Verwendung einer drahtlosen Verbindung zwischen dem Quellgerät und dem Senkengerät; Bestimmen eines aktuellen Zustands der drahtlosen Verbindung; und automatisches Einstellen der Rate, mit der Audiodaten von der Audioquelle empfangen werden, durch den Kommunikationskontroller und basierend auf dem aktuellen Zustand der drahtlosen Verbindung.
-
Beispiel 2: Das Verfahren aus Beispiel 1, wobei das automatische Einstellen der Rate, mit der die Audiodaten empfangen werden, das Ausgeben einer Aufforderung zum Einstellen einer Rate, mit der die Audioquelle die drahtlos an das Senkengerät zu übertragenden Audiodaten ausgibt, durch den Kommunikationskontroller und an die Audioquelle umfasst.
-
Beispiel 3: Das Verfahren aus Beispiel 1, wobei das automatische Anpassen der Rate, mit der die Audiodaten empfangen werden, das Ausgeben eines Hinweises durch den Kommunikationskontroller und an die Audioquelle umfasst, ob der Kommunikationskontroller gerade zusätzliche Audiodaten empfängt, die drahtlos an das Senkengerät übertragen werden sollen.
-
Beispiel 4: Das Verfahren nach einem der Beispiele 1 bis 3, wobei das Übertragen der Audioblöcke Folgendes umfasst: Einkapseln von Audioblöcken der Sequenz von Audioblöcken in Audiodatenpakete einer Sequenz von Audiodatenpaketen; und Übertragen der Audiodatenpakete unter Verwendung der drahtlosen Verbindung.
-
Beispiel 5: Das Verfahren aus Beispiel 4, wobei das Bestimmen des aktuellen Zustands der drahtlosen Verbindung Folgendes umfasst: Bestimmen einer Rate, mit der die Audiodatenpakete während der Übertragung unter Verwendung der drahtlosen Verbindung verworfen werden; und Bestimmen des aktuellen Zustands der drahtlosen Verbindung basierend auf der Rate, mit der die Audiopakete verworfen werden.
-
Beispiel 6. Das Verfahren von Beispiel 5, ferner umfassend: Empfangen einer oder mehrerer Bestätigungsnachrichten durch die Quellgerät und von dem Senkengerät unter Verwendung der drahtlosen Verbindung, wobei jede jeweilige Bestätigungsnachricht den Empfang eines entsprechenden Audiodatenpakets der Sequenz von Audiodatenpaketen durch das Senkengerät anzeigt; und Bestimmen, basierend darauf, ob eine Bestätigungsnachricht der einen oder mehreren Bestätigungsnachrichten, die einem bestimmten Audiodatenpaket der Sequenz von Audiodatenpaketen entspricht oder nicht, ob das bestimmte Audiodatenpaket von dem Senkengerät verworfen oder erfolgreich empfangen wurde, wobei das Bestimmen der Rate, mit der die Audiodatenpakete verworfen werden, das Bestimmen der Rate, mit der die Audiodatenpakete verworfen werden, basierend darauf, ob das bestimmte Audiodatenpaket verworfen oder erfolgreich von dem Senkengerät empfangen wurde, umfasst.
-
Beispiel 7: Das Verfahren nach einem der Beispiele 1 bis 6, das ferner Folgendes umfasst: als Reaktion auf die Feststellung, dass das bestimmte Audiopaket erfolgreich von dem Senkengerät empfangen wurde, Entfernen eines Audioblocks, der dem bestimmten Audiodatenpaket entspricht, durch den Kommunikationskontroller und aus dem Puffer.
-
Beispiel 8. Das Verfahren nach einem der Beispiele 1-7, das ferner umfasst: als Reaktion auf die Feststellung, dass der Puffer voll ist, Entfernen eines Audiodatenblocks, der einem ältesten Audiodatenpaket der Sequenz von Audiodatenblöcken entspricht, durch den Kommunikationskontroller und aus dem Puffer.
-
Beispiel 9: Das Verfahren aus einem der Beispiele 1-8, wobei die drahtlose Verbindung eine BLUETOOTH-Verbindung umfasst.
-
Beispiel 10. Quellgerät, umfassend: eine Kommunikationseinheit; eine Audioquelle; einen Kommunikationskontroller; und mindestens ein nicht-transitorisches computerlesbares Speichermedium, das Anweisungen speichert, die von dem Kommunikationskontroller ausführbar sind, um: von der Audioquelle und mit einer Rate Audiodaten zu empfangen, die drahtlos zu einem Senkengerät zu übertragen sind; in einem Puffer die Audiodaten als eine Sequenz von Audioblöcken zu speichern, wobei jeder Audioblock Audiodaten für eine jeweilige Ausgabezeit enthält; die Kommunikationseinheit zu veranlassen, zu dem Senkengerät und über eine drahtlose Verbindung zwischen dem Quellgerät und dem Senkengerät Audioblöcke der Sequenz von Audioblöcken zu übertragen; einen aktuellen Zustand der drahtlosen Verbindung zu bestimmen; und basierend auf dem aktuellen Zustand der drahtlosen Verbindung die Rate, mit der Audiodaten von der Audioquelle empfangen werden, automatisch anzupassen.
-
Beispiel 11. Das Quellgerät von Beispiel 10, wobei die Anweisungen, die den Kommunikationskontroller veranlassen, die Rate, mit der die Audiodaten empfangen werden, automatisch anzupassen, Anweisungen umfassen, die den Kommunikationskontroller veranlassen, an die Audioquelle eine Aufforderung auszugeben, eine Rate anzupassen, mit der die Audioquelle die Audiodaten ausgibt, die drahtlos an das Senkengerät übertragen werden sollen.
-
Beispiel 12. Das Quellgerät aus Beispiel 10, wobei die Anweisungen, die den Kommunikationskontroller veranlassen, die Rate, mit der die Audiodaten empfangen werden, automatisch anzupassen, Anweisungen umfassen, die den Kommunikationskontroller veranlassen, an die Audioquelle einen Hinweis auszugeben, ob der Kommunikationskontroller gerade zusätzliche Audiodaten empfängt, die drahtlos an das Senkengerät übertragen werden sollen.
-
Beispiel 13. Das Quellgerät eines der Beispiele 10-12, wobei die Anweisungen, die den Kommunikationskontroller veranlassen, die Audioblöcke zu übertragen, Anweisungen umfassen, die den Kommunikationskontroller veranlassen, Audioblöcke der Sequenz von Audioblöcken in Audiodatenpakete einer Sequenz von Audiodatenpaketen einzukapseln; und die Kommunikationseinheit veranlassen, die Audiodatenpakete unter Verwendung der drahtlosen Verbindung zu übertragen.
-
Beispiel 14. Das Quellgerät aus Beispiel 13, wobei die Anweisungen, die den Kommunikationskontroller veranlassen, den aktuellen Zustand der drahtlosen Verbindung zu bestimmen, Anweisungen umfassen, die den Kommunikationskontroller veranlassen: eine Rate zu bestimmen, mit der die Audiodatenpakete während der Übertragung unter Verwendung der drahtlosen Verbindung verworfen werden; und den aktuellen Zustand der drahtlosen Verbindung basierend auf der Rate zu bestimmen, mit der die Audiopakete verworfen werden.
-
Beispiel 15. Das Quellgerät von Beispiel 14, ferner aufweisend Anweisungen, die den Kommunikationskontroller veranlassen, von der Senkengerät eine oder mehrere Bestätigungsnachrichten unter Verwendung der drahtlosen Verbindung zu empfangen, wobei jede jeweilige Bestätigungsnachricht den Empfang eines entsprechenden Audiodatenpakets der Sequenz von Audiodatenpaketen durch das Senkengerät anzeigt, und basierend darauf, ob eine Bestätigungsnachricht der einen oder mehreren Bestätigungsnachrichten, die einem bestimmten Audiodatenpaket der Sequenz von Audiodatenpaketen entspricht oder nicht, zu bestimmen, ob das bestimmte Audiodatenpaket von dem Senkengerät verworfen oder erfolgreich empfangen wurde.
-
Beispiel 16. Das Quellgerät eines der Beispiele 10-15, ferner aufweisend Anweisungen, die den Kommunikationskontroller veranlassen, als Reaktion auf die Feststellung, dass das bestimmte Audiopaket erfolgreich von dem Senkengerät empfangen wurde, aus dem Puffer einen Audioblock zu entfernen, der dem bestimmten Audiodatenpaket entspricht.
-
Beispiel 17. Das Quellgerät nach einem der Beispiele 10-16, ferner aufweisend Anweisungen, die den Kommunikationskontroller veranlassen, als Reaktion auf die Feststellung, dass der Puffer voll ist, einen Audiodatenblock aus dem Puffer zu entfernen, der einem ältesten Audiodatenpaket der Sequenz von Audiodatenblöcken entspricht.
-
Beispiel 18. Das Quellgerät aus einem der Beispiele 10-17, wobei die drahtlose Verbindung eine BLUETOOTH-Verbindung umfasst.
-
Beispiel 19. Nicht-transitorisches computerlesbares Speichermedium, das Anweisungen speichert, die, wenn sie ausgeführt werden, einen Kommunikationskontroller eines Quellgeräts veranlassen, von einer Audioquelle des Quellgeräts Audiodaten zu empfangen, die drahtlos zu einem Senkengerät übertragen werden sollen, wobei die Audiodaten von der Audioquelle mit einer Rate empfangen werden; die Audiodaten in einem Puffer als eine Sequenz von Audioblöcken zu speichern, wobei jeder Audioblock Audiodaten für eine jeweilige Ausgabezeit enthält; eine Kommunikationseinheit des Quellgeräts zu veranlassen, Audioblöcke der Sequenz von Audioblöcken unter Verwendung einer drahtlosen Verbindung zwischen dem Quellgerät und dem Senkengerät an das Senkengerät zu übertragen; einen aktuellen Zustand der drahtlosen Verbindung zu bestimmen; und die Rate, mit der Audiodaten von der Audioquelle empfangen werden, basierend auf dem aktuellen Zustand der drahtlosen Verbindung automatisch anzupassen.
-
In einem oder mehreren Beispielen können die beschriebenen Funktionen in Hardware, Software, Firmware oder einer beliebigen Kombination davon implementiert sein. Wenn sie in Software implementiert sind, können die Funktionen als eine oder mehrere Anweisungen oder Code auf einem computerlesbaren Medium gespeichert oder darüber übertragen und von einer hardwarebasierten Verarbeitungseinheit ausgeführt werden. Zu den computerlesbaren Medien können computerlesbare Speichermedien gehören, was einem materiellen Medium, wie z. B. einem Datenspeichermedium, entspricht, oder Kommunikationsmedien, die jedes Medium umfassen, das die Übertragung eines Computerprogramms von einem Ort zu einem anderen, z. B. gemäß einem Kommunikationsprotokoll, ermöglicht. Auf diese Weise können computerlesbare Medien im Allgemeinen (1) materiellen computerlesbaren Speichermedien, die nicht übertragbar sind, oder (2) einem Kommunikationsmedium wie einem Signal oder einer Trägerwelle entsprechen. Bei den Speichermedien kann es sich um jedes verfügbare Medium handeln, auf das von einem oder mehreren Computern oder einem oder mehreren Prozessoren zugegriffen werden kann, um Anweisungen, Code und/oder Datenstrukturen zur Implementierung der in dieser Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium umfassen.
-
Als Beispiel und nicht als Einschränkung können solche computerlesbaren Speichermedien RAM, ROM, EEPROM, CD-ROM oder andere optische Plattenspeicher, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen, Flash-Speicher oder jedes andere Medium umfassen, die zum Speichern von gewünschtem Programmcode in Form von Anweisungen oder Datenstrukturen verwendet werden können und auf die ein Computer zugreifen kann. Auch jede Verbindung wird richtigerweise als computerlesbares Medium bezeichnet. Wenn beispielsweise Anweisungen von einer Website, einem Server oder einer anderen entfernten Quelle über ein Koaxialkabel, ein Glasfaserkabel, eine verdrillte Zweidrahtleitung, eine digitale Teilnehmerleitung (DSL) oder drahtlose Technologien wie Infrarot, Funk und Mikrowellen übertragen werden, dann fallen das Koaxialkabel, das Glasfaserkabel, die verdrillte Zweidrahtleitung, DSL oder drahtlose Technologien wie Infrarot, Funk und Mikrowellen unter die Definition von Medium. Es sollte jedoch verstanden werden, dass computerlesbare Speichermedien und Datenspeichermedien keine Verbindungen, Trägerwellen, Signale oder andere flüchtige Medien umfassen, sondern sich stattdessen auf nicht flüchtige, materielle Speichermedien beziehen. Disk und Disc, wie hier verwendet, umfassen Compact Disc (CD), Laser Disc, Optical Disc, Digital Versatile Disc (DVD), Floppy Disc und Blu-ray Disc, wobei Disks in der Regel Daten magnetisch reproduzieren, während Discs Daten optisch mit Lasern reproduzieren. Kombinationen der oben genannten sollten ebenfalls in den Bereich der computerlesbaren Medien aufgenommen werden.
-
Die Anweisungen können von einem oder mehreren Prozessoren ausgeführt werden, wie z. B. einem oder mehreren digitalen Signalprozessoren (DSPs), Allzweck-Mikroprozessoren, anwendungsspezifischen integrierten Schaltungen (ASICs), feldprogrammierbaren Logik-Arrays (FPGAs) oder anderen gleichwertigen integrierten oder diskreten Logikschaltungen. Dementsprechend kann sich der Begriff „Prozessor“, wie er hier verwendet wird, auf jede der vorgenannten Strukturen oder jede andere Struktur beziehen, die für die Implementierung der hier beschriebenen Techniken geeignet ist. Darüber hinaus kann in einigen Aspekten die hier beschriebene Funktionalität in dedizierten Hardware- und/oder Softwaremodulen bereitgestellt werden. Die Techniken können auch vollständig in einer oder mehreren Schaltungen oder Logikelementen implementiert sein.
-
Die Techniken dieser Offenbarung können in einer Vielzahl von Geräten oder Vorrichtungen implementiert werden, einschließlich eines drahtlosen Handgeräts, eines integrierten Schaltkreises (IC) oder eines Satzes von ICs (z. B. eines Chipsatzes). Verschiedene Komponenten, Module oder Einheiten werden in dieser Offenbarung beschrieben, um funktionale Aspekte von Geräten hervorzuheben, die zur Durchführung der offengelegten Techniken konfiguriert sind, aber nicht notwendigerweise die Realisierung durch verschiedene Hardware-Einheiten erfordern. Vielmehr können, wie oben beschrieben, verschiedene Einheiten in einer Hardware-Einheit kombiniert oder durch eine Sammlung von zusammenwirkenden Hardware-Einheiten bereitgestellt werden, einschließlich eines oder mehrerer Prozessoren wie oben beschrieben, in Verbindung mit geeigneter Software und/oder Firmware.
-
Es wurden verschiedene Beispiele für die Offenlegung beschrieben. Jede Kombination der beschriebenen Systeme, Vorgänge oder Funktionen ist denkbar. Diese und andere Beispiele fallen in den Anwendungsbereich der folgenden Ansprüche.