-
VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität der provisorischen
US-Patentanmeldung 62,874,554 , eingereicht am 16. Juli 2019 und mit dem Titel „Progressive JPEGs“. Die Inhalte der vorstehend erwähnten Anmeldung sind hiermit durch Bezugnahme einbezogen.
-
HINTERGRUND
-
Einige Kommunikationsdienste, wie etwa Nachrichtenübermittlungsdienste und soziale Netzwerkdienste, ermöglichen Benutzern, Kommunikationen mit anderen Benutzern auszutauschen. Die Kommunikationen können Bilder (wie etwa ein JPEG-Bild) umfassen. Insbesondere wenn das Bild eine relativ große Größe aufweist, kann es einige Zeit dauern, bis es auf der Vorrichtung des Empfängers empfangen und geladen wird. Ein häufiges Phänomen besteht beispielsweise darin, wenn Bilder über ein Netzwerk angefordert werden, dass die obere Hälfte eines Bildes anfänglich nach einer gewissen Zeitdauer geladen wird, wobei die untere Hälfte leer bleibt. Wenn mehr Daten empfangen werden, wird schließlich der Rest des Bildes ausgefüllt.
-
ÜBERSICHT DER ERFINDUNG
-
Demgemäß offenbart die vorliegende Erfindung ein Verfahren gemäß den anhängenden Ansprüchen. Das Verfahren beinhaltet Folgendes: Empfangen, über eine verschlüsselte End-zu-End-Sitzung zwischen einer sendenden Vorrichtung und einer empfangenden Vorrichtung, einer Nachricht, die einen Bezug auf ein Bild umfasst; Herstellen einer Verbindung zu einem Blob-Speicher, wobei der Blob-Speicher eine verschlüsselte Miniaturansicht des Bildes, erste zusätzliche verschlüsselte Daten, die, wenn mit der verschlüsselten Miniaturansicht vereint, in einer Niedrigqualitätsversion des Bildes resultieren, und zweite zusätzliche verschlüsselte Daten, die, wenn mit der verschlüsselten Miniaturansicht und den ersten zusätzlichen verschlüsselten Daten vereint, in einer Hochqualitätsversion des Bildes resultieren, hält; Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher, Entschlüsseln der Miniaturansicht und Anzeigen der Miniaturansicht; Empfangen einer Anforderung zur Anzeige des Bildes; Abrufen der ersten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher, Entschlüsseln der ersten zusätzlichen Daten und Vereinen der entschlüsselten ersten zusätzlichen Daten mit der Miniaturansicht; und Anzeigen der Niedrigqualitätsversion des Bildes.
-
In einer Ausführungsform des Verfahrens gemäß der vorliegenden Erfindung kann der Blob-Speicher Informationen an die empfangende Vorrichtung in einem Datenstream übertragen und kann das Verfahren ferner Folgendes beinhalten: Empfangen eines Netzwerkqualitätsparameters; Vergleichen des Netzwerkqualitätsparameters mit einem Grenzwert, der mit der Hochqualitätsversion des Bildes assoziiert ist; Bestimmen, dass der Netzwerkqualitätsparameter den Grenzwert nicht überschreitet; und Beenden des Datenstreams, um die Übertragung der zweiten zusätzlichen verschlüsselten Daten abzubrechen.
-
In einer anderen Ausführungsform des Verfahrens gemäß der vorliegenden Erfindung kann das Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher automatisch als direkte Reaktion auf das Empfangen der Nachricht durchgeführt werden.
-
In noch einer anderen Ausführungsform des Verfahrens gemäß der vorliegenden Erfindung können die verschlüsselte Miniaturansicht, die ersten zusätzlichen verschlüsselten Daten und die zweiten zusätzlichen verschlüsselten Daten zusammen in einer Bildstruktur gespeichert werden und kann die Nachricht, die den Bezug auf das Bild umfasst, Folgendes beinhalten: einen ersten Ort in der Bildstruktur, der die verschlüsselte Miniaturansicht von den ersten zusätzlichen verschlüsselten Daten abteilt, und einen zweiten Ort in der Bildstruktur, der die ersten zusätzlichen verschlüsselten Daten von den zweiten zusätzlichen verschlüsselten Daten abteilt.
-
In einer weiteren Ausführungsform des Verfahrens gemäß der vorliegenden Erfindung kann das Verfahren ferner Folgendes beinhalten: Empfangen einer Anforderung zur Weiterleitung des Bildes an einen zweiten Empfänger; und Weiterübertragen des ersten und zweiten Orts in der Bildstruktur, während auf ein erneutes Transcodieren des Bildes verzichtet wird.
-
In einer anderen Ausführungsform des Verfahrens gemäß der vorliegenden Erfindung können das Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher, das Abrufen der ersten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher und das Abrufen der zweiten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher zusammen als Reaktion auf eine einzelne Anforderung für das Bild, auf das in der Nachricht Bezug genommen wird, durchgeführt werden.
-
In einer anderen Ausführungsform des Verfahrens gemäß der vorliegenden Erfindung kann das Abrufen der verschlüsselten Miniaturansicht Folgendes beinhalten: Herunterladen eines Datensatzes, der mindestens einen Teil der verschlüsselten Miniaturansicht umfasst; Empfangen eines schlüssel-hash-basierten Nachrichtenauthentifizierungscodes (Keyed-Hash Message Authentication Code, HMAC) in Verbindung mit dem Datensatz; Berechnen eines HMACs über den heruntergeladenen Datensatz; und Vergleichen des berechneten HMACs mit dem empfangenen HMAC, um zu verifizieren, dass die verschlüsselte Miniaturansicht nicht geändert wurde.
-
Die vorliegende Erfindung offenbart ferner ein nicht transitorisches rechnerlesbares Medium, das Anweisungen speichert, die konfiguriert sind, um einen Prozessor zu Folgendem zu veranlassen: Empfangen, über eine verschlüsselte End-zu-End-Sitzung zwischen einer sendenden Vorrichtung und einer empfangenden Vorrichtung, einer Nachricht, die einen Bezug auf ein Bild umfasst; Herstellen einer Verbindung zu einem Blob-Speicher, wobei der Blob-Speicher eine verschlüsselte Miniaturansicht des Bildes, erste zusätzliche verschlüsselte Daten, die, wenn mit der verschlüsselten Miniaturansicht vereint, in einer Niedrigqualitätsversion des Bildes resultieren, und zweite zusätzliche verschlüsselte Daten, die, wenn mit der verschlüsselten Miniaturansicht und den ersten zusätzlichen verschlüsselten Daten vereint, in einer Hochqualitätsversion des Bildes resultieren, hält; Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher, Entschlüsseln der Miniaturansicht und Anzeigen der Miniaturansicht; Empfangen einer Anforderung zur Anzeige des Bildes; Abrufen der ersten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher, Entschlüsseln der ersten zusätzlichen Daten und Vereinen der entschlüsselten ersten zusätzlichen Daten mit der Miniaturansicht; und Anzeigen der Niedrigqualitätsversion des Bildes.
-
In einer Ausführungsform des nicht transitorischen rechnerlesbaren Mediums gemäß der Erfindung kann der Blob-Speicher Informationen an die empfangende Vorrichtung in einem Datenstream übertragen und kann das nicht transitorische rechnerlesbare Medium ferner Anweisungen für Folgendes speichern: Empfangen eines Netzwerkqualitätsparameters; Vergleichen des Netzwerkqualitätsparameters mit einem Grenzwert, der mit der Hochqualitätsversion des Bildes assoziiert ist; Bestimmen, dass der Netzwerkqualitätsparameter den Grenzwert nicht überschreitet; und Beenden des Datenstreams, um die Übertragung der zweiten zusätzlichen verschlüsselten Daten abzubrechen.
-
In einer anderen Ausführungsform des nicht transitorischen rechnerlesbaren Mediums gemäß der Erfindung kann das Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher automatisch als direkte Reaktion auf das Empfangen der Nachricht durchgeführt werden.
-
In noch einer anderen Ausführungsform des nicht transitorischen rechnerlesbaren Mediums gemäß der Erfindung können die verschlüsselte Miniaturansicht, die ersten zusätzlichen verschlüsselten Daten und die zweiten zusätzlichen verschlüsselten Daten zusammen in einer Bildstruktur gespeichert werden und kann die Nachricht, die den Bezug auf das Bild umfasst, Folgendes beinhalten: einen ersten Ort in der Bildstruktur, der die verschlüsselte Miniaturansicht von den ersten zusätzlichen verschlüsselten Daten abteilt, und einen zweiten Ort in der Bildstruktur, der die ersten zusätzlichen verschlüsselten Daten von den zweiten zusätzlichen verschlüsselten Daten abteilt.
-
In einer weiteren Ausführungsform des nicht transitorischen rechnerlesbaren Mediums gemäß der Erfindung kann das Medium ferner Anweisungen für Folgendes speichern: Empfangen einer Anforderung zur Weiterleitung des Bildes an einen zweiten Empfänger; und Weiterübertragen des ersten und zweiten Orts in der Bildstruktur, während auf ein erneutes Transcodieren des Bildes verzichtet wird.
-
In einer anderen Ausführungsform des nicht transitorischen rechnerlesbaren Mediums gemäß der Erfindung können das Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher, das Abrufen der ersten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher und das Abrufen der zweiten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher zusammen als Reaktion auf eine einzelne Anforderung für das Bild, auf das in der Nachricht Bezug genommen wird, durchgeführt werden.
-
In noch einer anderen Ausführungsform des nicht transitorischen rechnerlesbaren Mediums gemäß der Erfindung kann das Abrufen der verschlüsselten Miniaturansicht Folgendes beinhalten: Herunterladen eines Datensatzes, der mindestens einen Teil der verschlüsselten Miniaturansicht umfasst; Empfangen eines schlüssel-hash-basierten Nachrichtenauthentifizierungscodes (HMAC) in Verbindung mit dem Datensatz; Berechnen eines HMACs über den heruntergeladenen Datensatz; und Vergleichen des berechneten HMACs mit dem empfangenen HMAC, um zu verifizieren, dass die verschlüsselte Miniaturansicht nicht geändert wurde.
-
In einem anderen Aspekt offenbart die vorliegende Erfindung eine Einrichtung gemäß den anhängenden Ansprüchen. Die Einrichtung beinhaltet Folgendes: eine Netzwerkschnittstelle, die für Folgendes konfiguriert ist: Empfangen, über eine verschlüsselte End-zu-End-Sitzung zwischen einer sendenden Vorrichtung und einer empfangenden Vorrichtung, einer Nachricht, die einen Bezug auf ein Bild umfasst; und Herstellen einer Verbindung zu einem Blob-Speicher, wobei der Blob-Speicher eine verschlüsselte Miniaturansicht des Bildes, erste zusätzliche verschlüsselte Daten, die, wenn mit der verschlüsselten Miniaturansicht vereint, in einer Niedrigqualitätsversion des Bildes resultieren, und zweite zusätzliche verschlüsselte Daten, die, wenn mit der verschlüsselten Miniaturansicht und den ersten zusätzlichen verschlüsselten Daten vereint, in einer Hochqualitätsversion des Bildes resultieren, hält; einen Prozessor, der für Folgendes konfiguriert ist: Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher, Entschlüsseln der Miniaturansicht und Anzeigen der Miniaturansicht; Empfangen einer Anforderung zur Anzeige des Bildes; und Abrufen der ersten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher, Entschlüsseln der ersten zusätzlichen Daten und Vereinen der entschlüsselten ersten zusätzlichen Daten mit der Miniaturansicht; und eine Anzeige, die konfiguriert ist, um die Niedrigqualitätsversion des Bildes anzuzeigen.
-
In einer Ausführungsform der Einrichtung der vorliegenden Erfindung kann der Blob-Speicher Informationen an die empfangende Vorrichtung in einem Datenstream übertragen und kann diese ferner Folgendes beinhalten: Empfangen eines Netzwerkqualitätsparameters; Vergleichen des Netzwerkqualitätsparameters mit einem Grenzwert, der mit der Hochqualitätsversion des Bildes assoziiert ist; Bestimmen, dass der Netzwerkqualitätsparameter den Grenzwert nicht überschreitet; und Beenden des Datenstreams, um die Übertragung der zweiten zusätzlichen verschlüsselten Daten abzubrechen.
-
In einer anderen Ausführungsform der Einrichtung gemäß der vorliegenden Erfindung können die verschlüsselte Miniaturansicht, die ersten zusätzlichen verschlüsselten Daten und die zweiten zusätzlichen verschlüsselten Daten zusammen in einer Bildstruktur gespeichert werden und kann die Nachricht, die den Bezug auf das Bild umfasst, Folgendes beinhalten: einen ersten Ort in der Bildstruktur, der die verschlüsselte Miniaturansicht von den ersten zusätzlichen verschlüsselten Daten abteilt, und einen zweiten Ort in der Bildstruktur, der die ersten zusätzlichen verschlüsselten Daten von den zweiten zusätzlichen verschlüsselten Daten abteilt.
-
In noch einer weiteren Ausführungsform der Einrichtung gemäß der vorliegenden Erfindung kann der Prozessor ferner für Folgendes konfiguriert sein: Empfangen einer Anforderung zur Weiterleitung des Bildes an einen zweiten Empfänger; und Weiterübertragen des ersten und zweiten Orts in der Bildstruktur, während auf ein erneutes Transcodieren des Bildes verzichtet wird.
-
In einer weiteren Ausführungsform der Einrichtung gemäß der vorliegenden Erfindung können das Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher, das Abrufen der ersten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher und das Abrufen der zweiten zusätzlichen verschlüsselten Daten aus dem Blob-Speicher zusammen als Reaktion auf eine einzelne Anforderung für das Bild, auf das in der Nachricht Bezug genommen wird, durchgeführt werden.
-
In noch einer anderen Ausführungsform der Einrichtung gemäß der vorliegenden Erfindung kann das Abrufen der verschlüsselten Miniaturansicht Folgendes beinhalten: Herunterladen eines Datensatzes, der mindestens einen Teil der verschlüsselten Miniaturansicht umfasst; Empfangen eines schlüssel-hash-basierten Nachrichtenauthentifizierungscodes (HMAC) in Verbindung mit dem Datensatz; Berechnen eines HMACs über den heruntergeladenen Datensatz; und Vergleichen des berechneten HMACs mit dem empfangenen HMAC, um zu verifizieren, dass die verschlüsselte Miniaturansicht nicht geändert wurde.
-
Figurenliste
-
- 1A-1 E veranschaulichen das gleiche Bild mit verschiedenen Qualitätsniveaus gemäß einer Ausführungsform.
- 2 veranschaulicht ein beispielhaftes Kommunikationssystem, das zum Übertragen eines Bildes in einer verschlüsselten End-zu-End-Weise geeignet ist.
- 3 ist eine Blockdarstellung, die beispielhafte Rechensysteme veranschaulicht, die zum Umsetzen beispielhafter Ausführungsformen geeignet sind.
- 4A veranschaulicht eine beispielhafte Datenstruktur, die zum Speichern von Bilddaten gemäß einem Ausführungsbeispiel geeignet ist.
- 4B veranschaulicht eine beispielhafte Nachrichtenstruktur gemäß einem Ausführungsbeispiel.
- 5 ist eine beispielhafte Datenflussdarstellung, die den Informationsaustausch bei Rechensystemen in einer ersten Ausführungsform veranschaulicht.
- 6A-6B sind Flussdiagramme, die eine beispielhafte Logik gemäß der ersten Ausführungsform zum Codieren und Senden eines Bildes von einem sendenden Client bzw. Empfangen und Decodieren eines Bildes beim empfangenden Client veranschaulichen.
- 6C ist ein Flussdiagramm, das eine beispielhafte Bildweiterleitungslogik auf der Seite des empfangenden Clients zum Weiterübertragen eines empfangenen Bildes an einen anderen Client veranschaulicht.
- 7 ist eine beispielhafte Datenflussdarstellung, die den Informationsaustausch bei Rechensystemen in einer zweiten Ausführungsform veranschaulicht.
- 8A-8B sind Flussdiagramme, die eine beispielhafte Logik gemäß der zweiten Ausführungsform zum Codieren und Senden eines Bildes von einem sendenden Client bzw. Empfangen und Decodieren eines Bildes beim empfangenden Client veranschaulichen.
- 9 ist eine Blockdarstellung, die ein Beispiel eines Systems für einen Nachrichtenübermittlungsdienst veranschaulicht;
- 10 ist eine Blockdarstellung, die eine beispielhafte Rechenvorrichtung illustriert, die zur Verwendung mit Ausführungsbeispielen geeignet ist;
- 11 veranschaulicht eine beispielhafte Kommunikationsarchitektur; und
- 12 ist eine Blockdarstellung, die eine beispielhafte Multiträger-Kommunikationsvorrichtung veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Häufig werden in einem Netzwerk Bilder, wie etwa JPEGs, von oben nach unten geladen, während Daten empfangen werden. Dies ist häufig auf die Tatsache zurückzuführen, dass solche Bilder typischerweise paketisiert und von einem Beginn zu einem Ende der Bilddatenstruktur übertragen werden, was bedeutet, dass die Bilddaten, die den ersten Teil des Bildes bilden, vollständig vor den Bilddaten, die anschließende Teile des Bildes bilden, übertragen werden. Folglich wird der Benutzer, während das Bild geladen wird, möglicherweise kein besonders gutes Gefühl für das Bild haben, da anfangs keine Bilddaten von dem unteren Abschnitt des Bildes verfügbar sind.
-
Um dieses Problem zu bewältigen, erlauben einige Kommunikationsnetzwerke ihren Benutzern, Bilder automatisch herunterzuladen, wenn Kommunikationen, die die Bilder umfassen, empfangen werden. Auf diese Weise kann dem Benutzer ein schneller Zugriff auf die Vollqualitätsversion des Bildes bereitgestellt werden, falls er die Nachricht, die das Bild umfasst, nicht sofort öffnet. Es ist dabei problematisch, dass ein Benutzer in vielen Fällen das heruntergeladene Bild niemals ansieht, was bedeutet, dass die Netzwerkbandbreite, die zum Übertragen dieser Nachricht verwendet wird, vergeudet wurde.
-
Eine andere potenzielle Lösung besteht darin, eine kleinere „Miniaturansicht“ des Bildes zu erzeugen. Ein Benutzer kann die Miniaturansicht ansehen, um eine Vorschau, wie das Bild aussehen wird, zu erhalten, und dann die Miniaturansicht auswählen, um das Bild in voller Größe herunterzuladen. Diese Lösung erlaubt einem Benutzer, das gesamte Bild vorab anzusehen, und hat außerdem den Vorteil, dass, falls ein Benutzer das Vollbild nicht herunterladen möchte, die Menge der im Netzwerk übertragenen Informationen reduziert werden kann. Falls der Benutzer die Vorschau ansieht und entscheidet, dass er das gesamte Bild nicht herunterladen möchte, kann er darauf verzichten und die Notwendigkeit, das Vollqualitätsbild zu übertragen, vermeiden - in diesem Szenario wurde nur die kleinere Miniaturansicht gesendet. Falls ein Benutzer das gesamte Bild herunterladen möchte, wird bei einer derartigen Verwendung einer Miniaturansicht die Gesamtmenge der im Netzwerk übertragenen Daten sogar erhöht, da sowohl das Vollqualitätsbild als auch die kleinere Miniaturansicht heruntergeladen werden müssen. Außerdem wird, wenn das Bild in voller Größe geladen wird, dieses möglicherweise nach wie vor von oben nach unten geladen. Die Verwendung einer herkömmlichen Miniatursicht wird daher das Problem, dass das Bild in voller Größe schrittweise geladen wird, nicht bewältigen.
-
Eine andere potenzielle Lösung ist die Verwendung eines progressiven JPEGs. Wenn ein Bild über ein Netzwerk übertragen wird, wird typischerweise das Vollbild zu einem Zwischenserver hochgeladen, der den Transfer ermöglicht. Der Zwischenserver tastet das Bild unter Verwendung passender Transcodierungsparameter mehrere Male ab, um mehrere Versionen der Bilddaten zu generieren. Wenn diese Versionen an einen Empfänger übertragen werden, kann der Empfänger sie auf eine Weise wiedergeben, die zuerst verschwommen ist und dann progressiv klarer wird. Dies ist eine Verbesserung gegenüber dem Oben-nach-Unten-Ansatz von nicht progressiven JPEGs.
-
Die Übertragung eines progressiven JPEGs hängt jedoch generell von dem Zwischenserver ab, der das JPEG verarbeiten muss. Mit einem progressiven JPEG werden die mehreren Abtastungen des Bildes gemäß einem Abtastungsskript durchgeführt, das Transcodierungsparameter umfasst, die die Daten definieren, die während jeder Abtastung codiert werden. Ein JPEG umfasst typischerweise drei Kanäle: einen Luma-Kanal (Y) und zwei Chroma-Kanäle (Cr und Cb). Jeder Kanal kann 64 Koeffizienten umfassen, die die Daten für den Kanal bereitstellen: einen DC-Koeffizienten und dreiundsechzig AC-Koeffizienten. Einige der Koeffizienten für gewisse Kanäle beeinflussen das Bild mehr als andere und so können progressive JPEGs die wichtigsten, einflussreichsten und weniger datenintensiven Informationen in der ersten Abtastung senden, dann anschließend die Wirkung der restlichen Daten auf das Bild mit der Datenmenge ausgleichen, die notwendig ist, um diese Wirkung in anschließenden Abtastungen zu erreichen. Um zu bestimmen, welche dieser Daten in welcher Abtastung eingeschlossen werden, analysiert der Zwischenserver das Bild, wählt passende Transcodierungsparameter aus und generiert ein Abtastungsskript oder wendet ein solches an, um die verschiedenen Abtastungen des Bildes zu definieren. Das Bild wird dann mehrere Male gemäß dem Abtastungsskript abgetastet, um passende Bilddaten zu generieren, die dann an eine Empfängervorrichtung gestreamt werden können, um der Empfängervorrichtung zu erlauben, das JPEG progressiv wiederzugeben.
-
Während dies in herkömmlichen Kommunikationssystemen gut funktioniert, gab es jüngst einen Trend hin zu verschlüsselten End-zu-End-Umgebungen (End-to-End Encrypted Environment, E2EE). In einer E2EE-Umgebung wird der Körper einer Kommunikation beim sendenden Client verschlüsselt und beim empfangenden Client entschlüsselt, und zwar auf eine Weise, die sicherstellt, dass keine anderen Akteure die Nachricht ansehen können. Daher können etwaige Zwischenserver, die die Kommunikation abwickeln, die Kommunikationsinhalte nicht ansehen. Falls die Nachricht ein Bild umfasst, kann der Zwischenserver die Transcodierungsparameter nicht bestimmen, wodurch es schwierig wird, das Bild effizient zu übertragen.
-
Ausführungsbeispiele bewältigen diese und andere Probleme bezüglich Bildübertragung und -empfang. Die beschriebenen Techniken verbessern die Geschwindigkeit und Wiedergabequalität eines Bildes (wie etwa eines JPEGs) und sind besonders gut geeignet für eine verschlüsselte End-zu-End-Umgebung.
-
Gemäß Ausführungsbeispielen kann das Bild auf der Seite des sendenden Clients analysiert werden und können die Bilddaten in mehrere Kategorien oder Segmente aufgeteilt werden. In einer Ausführungsform werden die Bilddaten in zwei Sätze aufgeteilt: einen Miniaturansichtssatz und einen Vollqualitätsbildsatz. Der Vollqualitätsbildsatz hängt von dem Miniaturansichtssatz ab, sodass die Bilddaten von dem Miniaturansichtssatz wieder verwendet werden, wenn das Vollbild unter Verwendung des Vollqualitätsbildsatzes wiedergegeben wird.
-
Der sendende Client bestimmt die Sätze, identifiziert die Satzgrößen und berechnet hash-basierte Nachrichtenauthentifizierungscodes (HMACs) über jeden der Sätze. Die Bilddaten können verschlüsselt und zu einem Blob-Speicher hochgeladen werden und eine Mitteilungsnachricht kann an den empfangenden Client mit den bestimmten Bildinformationen und einem geeigneten Entschlüsselungsschlüssel gesendet werden. Der empfangende Client kann als erstes den Miniaturansichtssatz herunterladen und diesen verwenden, um eine Miniaturansicht wiederzugeben; in einigen Ausführungsformen kann der Miniaturansichtssatz automatisch heruntergeladen werden, wenn eine Nachricht empfangen wird. Der Benutzer auf der empfangenden Seite kann die automatisch heruntergeladene Miniaturansicht ansehen und bestimmen, ob er das Vollbild mit hoher Qualität herunterladen möchte.
-
Demgemäß kann die Niedrigqualitätsversion des Bildes als Miniaturansicht verwendet werden. Dieser Ansatz hat jedoch mehrere Nachteile gegenüber herkömmlichen Miniaturansichten, die typischerweise kleinere Bilder sind, die von den Vollqualitätsbildern, die sie darstellen, unabhängig sind (z. B. als getrennte Datei gespeichert). In den hierin beschriebenen Ausführungsformen umfasst die Niedrigqualitätsversion Daten, die mit den Mittelqualitätsdaten vereint werden können, um eine mittlere Qualitätsversion (und anschließend eine Hochqualitätsversion) des Bildes zu generieren. Als Resultat werden Bilder schneller wiedergegeben und verbessert sich die Qualität im Verlauf der Zeit (anstatt von oben nach unten zu laden, wie ein herkömmliches JPEG).
-
Außerdem werden die Sätze gänzlich bei den Clients definiert und verarbeitet, ohne Beihilfe des Blob-Speichers (der lediglich die verschlüsselten Sätze hält) oder des Zwischenservers (der einfach die verschlüsselte Nachricht von dem Sender an den Client übermittelt). Der Zwischenserver muss daher das Bild nicht verarbeiten und keine Transcodierungsparameter vorbereiten.
-
In einer anderen Ausführungsform können die Bilddaten in mehr als zwei Sätze aufgeteilt werden, wobei jeder Satz wiedergegeben werden kann (in Verbindung mit vorangegangenen Sätzen), um zunehmend hohe Qualitätsniveaus bereitzustellen. Falls zum Beispiel die Bilddaten in vier Sätze aufgeteilt werden, kann der Satz einen Miniaturansichtssatz, einen Mittelqualitätssatz, einen Hochqualitätssatz und einen Vollqualitätssatz umfassen. Auf der Empfängerseite können die Bilddaten aus dem Blob-Speicher abgerufen und entschlüsselt werden und jeder Satz kann mit progressiv zunehmenden Qualitätsniveaus wiedergegeben werden. In einigen Ausführungsformen können Clients in Niedrigqualitätsnetzwerken nur die Sätze anfordern, die zu einer Wiedergabe mit mittlerer Qualität führen, wodurch weniger Daten verbraucht werden.
-
Diese kurze Übersicht soll als nicht beschränkende Einführung zu den unten ausführlicher erörterten Konzepten dienen. Bevor jedoch weitere Ausführungsbeispiele erörtert werden, wird als erstes ein kurzer Hinweis zum Datenschutz bereitgestellt. Eine detailliertere Beschreibung der Datenschutzeinstellungen und Authentifizierung wird in Verbindung mit den folgenden Figuren angesprochen.
-
Ein Hinweis zum Datenschutz
-
Einige hierin beschriebene Ausführungsformen benutzen Trainingsdaten oder Metriken, die Informationen umfassen können, die von einem oder mehreren Benutzern freiwillig bereitgestellt werden. In solchen Ausführungsformen kann der Datenschutz auf verschiedene Weise wahrgenommen werden.
-
Zum Beispiel kann der Benutzer ersucht werden, einer Datenerfassung zuzustimmen, bevor Benutzerdaten erfasst oder verwendet werden. Dem Benutzer kann außerdem die Gelegenheit bereitgestellt werden, eine Datenerfassung abzulehnen. Bevor der Benutzer der Datenerfassung zustimmt, kann ihm eine Beschreibung der Art und Weise bereitgestellt werden, wie die Daten verwendet werden, wie lange die Daten aufbewahrt werden und welche Sicherheitsvorkehrungen bestehen, um die Daten vor einer Offenbarung zu schützen.
-
Informationen, die den Benutzer identifizieren, von dem die Daten erfasst wurden, können aus den Daten gelöscht oder von diesen disassoziiert werden. In dem Fall, dass identifizierende Informationen aufbewahrt werden müssen (z. B. um regulatorische Anforderungen zu erfüllen), kann der Benutzer über die Erfassung der identifizierenden Informationen, die Nutzungen, die mit den identifizierenden Informationen vorgenommen werden, und den Zeitraum, über den die identifizierenden Informationen aufbewahrt werden, informiert werden. Informationen, die den Benutzer speziell identifizieren, können entfernt werden und können zum Beispiel durch eine generische Identifizierungsnummer oder eine andere nicht spezifische Form der Identifizierung ersetzt werden.
-
Nachdem sie erfasst wurden, können die Daten an einem sicheren Datenspeicherungsort gespeichert werden, der Sicherheitsvorkehrungen umfasst, um einen unautorisierten Zugriff auf die Daten zu verhindern Die Daten können in einem verschlüsselten Format gespeichert werden. Identifizierende Informationen und/oder nicht identifizierende Informationen können nach einer vorher festgelegten Zeitdauer aus der Datenspeicherung gelöscht werden.
-
Obwohl hierin besondere Datenschutztechniken zum Zwecke der Illustration beschrieben werden, wird ein durchschnittlicher Fachmann auf dem Gebiet erkennen, dass Datenschutz auch auf andere Weise wahrgenommen werden kann. Weitere Details hinsichtlich Datenschutz werden unten in dem Abschnitt erörtert, in dem Netzwerkausführungsformen beschrieben werden.
-
Unter der Annahme, dass die Datenschutzbedingungen eines Benutzers erfüllt sind, können Ausführungsbeispiele in einer Vielfalt von Nachrichtenübermittlungssystemen eingesetzt werden, einschließlich Nachrichtenübermittlung in einem sozialen Netzwerk oder auf einer mobilen Vorrichtung (z. B. über eine Nachrichtenübermittlungsclientanwendung oder über einen Kurznachrichtendienst), neben anderen Möglichkeiten. Als Nächstes wird ein Überblick über beispielhafte Logik und Prozesse zur Beteiligung an synchronen Videogesprächen in einem Nachrichtenübermittlungssystem bereitgestellt
-
Als Verständnishilfe wird als erstes eine Reihe von Beispielen präsentiert, bevor detaillierte Beschreibungen der zugrundeliegenden Implementierungen beschrieben werden. Es wird darauf hingewiesen, dass diese Beispiele nur illustrativ sein sollen und dass die vorliegende Erfindung nicht auf die gezeigten Ausführungsformen beschränkt ist.
-
Es wird nun auf die Figuren Bezug genommen, in denen gleiche Bezugsnummern verwendet werden, um durchgehend gleiche Elemente zu bezeichnen. In der folgenden Beschreibung werden zum Zwecke der Erklärung zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis von dieser bereitzustellen. Die neuartigen Ausführungsformen können jedoch ohne diese spezifischen Details ausgeübt werden. In anderen Fällen werden gut bekannte Strukturen und Vorrichtungen in Blockdarstellungsform gezeigt, um eine Beschreibung von diesen zu ermöglichen. Es ist damit beabsichtigt, alle Modifikationen, Äquivalente und Alternativen in Übereinstimmung mit dem beanspruchten Gegenstand abzudecken. In den Figuren und der begleitenden Beschreibung sollen die Bezeichnungen „a“ und „b“ und „c“ (und ähnliche Bezeichner) Variablen sein, die eine beliebige positive Ganzzahl darstellen. Falls daher zum Beispiel eine Implementierung einen Wert für a = 5 setzt, dann kann ein vollständiger Satz Komponenten 122, illustriert als Komponenten 122-1 bis 122-a, die Komponenten 122-1, 122-2, 122-3, 122-4 und 122-5 umfassen. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
-
Bilder mit verschiedenen Qualitäten
-
1A-1E veranschaulichen verschiedene Beispiele eines mit unterschiedlichen Qualitäten transcodierten Bildes gemäß einem Ausführungsbeispiel.
-
Das in 1E veranschaulichte abschließende Bild ist das Vollqualitätsbild, das mit 100 % der Informationen, die das Bild bilden, codiert ist. In dem Fall eines JPEGs kann dieses Bild zum Beispiel Daten für alle 64 Koeffizienten für alle drei Datenkanäle (Y, Cr und Cb) umfassen.
-
Das erste in 1A-1 B veranschaulichte Bild umfasst nur eine kleine Menge von Bilddaten (z. B. ungefähr 20-45 % der Bilddaten, abhängig von dem Bild). Diese Bilddaten können beispielsweise alle, außer den letzten zwei, Bits für die DC-Koeffizienten für alle drei Bildkanäle (Y, C und Cb) umfassen. Bei vollständiger Größe (1A) ist dieses Bild eindeutig von einer recht niedrigen Qualität. Wird jedoch die Größe reduziert (1B), kann die Qualität für das Bild ausreichend sein, um als angemessene Miniaturansicht zu dienen.
-
Das zweite in 1C veranschaulichte Bild umfasst zusätzliche Daten, die die Daten, die die Miniaturansicht von 1A bilden, ergänzen (z. B. ungefähr 36-67 % der Bilddaten, abhängig von dem Bild). Die Niedrigqualitätsbilddaten können Daten von mehreren Abtastungen umfassen; in einem Beispiel kann dies die restlichen Bits von den DC-Koeffizienten für alle drei Bildkanäle umfassen, sowie andere Daten (z. B. die AC-Koeffizienten für beide Chroma-Kanäle und alle, außer den letzten zwei, Bits der AC-Koeffizienten von dem Luma-Kanal). Dieses Bild kann zur Verwendung als Niedrigqualitätsbild geeignet sein. Das resultierende Bild ist von höherer Qualität als die Miniaturansicht, aber der Unterschied zwischen diesem Niedrigqualitätsbild und dem Vollqualitätsbild kann leicht zu erkennen sein.
-
Das dritte in 1D veranschaulichte Bild umfasst zusätzliche Daten, die die Daten, die die Miniaturansicht und das Niedrigqualitätsbild bilden, ergänzen (z. B. ungefähr 56-81 % der Bilddaten, abhängig von dem Bild). Das Mittelqualitätsbild kann Daten von einer oder mehreren Abtastungen umfassen; in einem Beispiel kann dies das zweitletzte Bit der AC-Koeffizienten für den Luma-Kanal umfassen. Dieses Bild kann zur Verwendung als Mittelqualitätsbild geeignet sein. In Wirklichkeit kann es bei vielen Anwendungen für das menschliche Auge schwierig sein, den Unterschied zwischen dem Mittelqualitätsbild von 1D und dem Vollqualitätsbild von 1E auszumachen. Daher kann die Clientvorrichtung des Benutzers, speziell wenn die Netzwerkverbindung eines Benutzers nicht ausreichend schnell oder stabil ist, wählen, nur bis zu dem Mittelqualitätsbild herunterzuladen, wodurch die Notwendigkeit, vermieden wird, den Rest der Daten zu übertragen, die den Unterschied zwischen der Mittelqualitätsversion und der Vollqualitätsversion bilden.
-
Schließlich kann das Vollqualitätsbild (1E) die restlichen Bilddaten umfassen, die durch die Miniaturansichts-, Niedrigqualitäts-und Mittelqualitätsbilddaten nicht erfasst werden. In dem obigen Beispiel würde dies das abschließende Bit der AC-Koeffizienten von dem Luma-Kanal umfassen.
-
Die vier Qualitäten in 1A-1E sind nur ein Beispiel dafür, wie ein Bild mit verschiedenen Qualitäten codiert werden kann. In Ausführungsbeispielen können Bilder mit lediglich zwei Qualitäten (z. B. einer Miniaturansichtsversion, wie in 1A veranschaulicht, und einer Vollqualitätsversion, wie in 1E veranschaulicht), drei Qualitäten (z. B. einer Miniaturansicht, die dem Bild von 1A entspricht, einer Niedrigqualitätsversion, die dem Bild von 1C oder 1D entsprechen kann, und einer Hochqualitätsversion, die dem Bild von 1E entspricht) codiert werden oder können mit mehr als vier Qualitäten codiert werden.
-
Als Nächstes wird ein beispielhaftes System zum Verteilen von Bildern, wie die oben beschriebenen, mit Bezug auf 2 beschrieben.
-
Beispielhafte Kommunikationsumgebung
-
Wie in 2 gezeigt, können Ausführungsbeispiele Kommunikationsdienste (die potenziell End-zu-End-Verschlüsselung umfassen) und/oder soziale Netzwerkdienste zwischen einem sendenden Client 202 und einem empfangenden Client 212-i, ermöglicht durch einen Zwischenserver 204, bereitstellen. Einige hierin beschriebene Ausführungsformen benutzen eine serverseitige Verbreitung, um Gruppennachrichten und Rundsendungen zu übertragen. Bei einem serverseitigen Verbreitungsablauf überträgt der sendende Client 202 eine einzelne Kopie der Nachricht an den Server 204, der dann eine Kopie der Aktualisierung an die passenden Empfängerclients 212-i sendet. Der Zwischenserver 204 kann zu diesem Zweck Clientinformationen in einer Clientdatenbank 206 speichern, wodurch die Verteilung von Nachrichten an die Clientvorrichtungen 212-i möglich wird.
-
Um Medien und/oder Anhänge zu übertragen, kann das Kommunikationssystem auch einen Blob-Server 208 umfassen, der einen Blob-Speicher 210 hostet (dieser kann als Teil des Zwischenservers 204 gehostet werden oder kann getrennt bereitgestellt werden). Wenn eine Nachricht gesendet wird, die ein Medienelement (wie etwa ein Bild oder Video) umfasst, kann das Medienelement zu dem Blob-Speicher 210 hochgeladen werden, wenn die Nachricht an die empfangenden Clients 212-i gepusht wird. Optional kann den empfangenden Clients 212-i eine Niedrigqualitätsminiaturansicht bereitgestellt werden, während das Originalmedienelement im Blob-Speicher 210 gespeichert wird. Wenn die empfangenden Clients 212-i versuchen, auf das Medienelement zuzugreifen, kann der empfangende Client 212-i das Medienelement von dem Blob-Server 208 anfordern, der das angeforderte Medienelement von dem Blob-Speicher 210 abruft und es an den empfangenden Client 212-i sendet. Dies kann durch Herstellen einer Streaming-Verbindung mit dem empfangenden Client 212-i und Übertragen der Daten als Teil des Streams vorgenommen werden.
-
Die Verwendung des Blob-Speichers 210 zum Übertragen von Inhalt (insbesondere in Verbindung mit dem Senden einer verschlüsselten Nachricht) kann das Bereitstellen des Inhalts für die empfangenden Clients 212-i ermöglichen, insbesondere, falls ein Client offline ist, wenn die Aktualisierung gesendet wird, und/oder falls unterschiedliche Clients 212-i versuchen, zu unterschiedlichen Zeitpunkten auf den Inhalt zuzugreifen.
-
Im Betrieb können Ausführungsbeispiele die Bildverarbeitungslogik, die die Bilder verarbeitet, diese in Abtastungen aufteilt, die Datenbilddaten in Sätzen organisiert, die für das Streaming geeignet sind, schlüssel-hash-basierte Nachrichtenauthentifizierungscodescodes berechnet, die Bilder weiterleitet, an den sendenden und empfangenden Clients platzieren. Der Zwischenserver 304 kann konfiguriert sein, um nur Bildnachrichten weiterzuleiten, die einen Bezug auf das Bild umfassen, das dann von den empfangenden Clients 212-i von dem Blob-Server 208 abgerufen wird. Eine solche Logik wird unten mit Bezug auf 3 ausführlich beschrieben.
-
Beispielhafte Rechensysteme
-
3 ist eine Blockdarstellung, die ein beispielhaftes Antwortempfehlungssystem veranschaulicht, das zur Verwendung mit Ausführungsbeispielen geeignet ist.
-
Ein Client 300 kann verwendet werden, um ein Bild zu erfassen, ein Audio/Video aufzuzeichnen, ein Bild anzuzeigen und/oder eine Audio-/Videozuspielung zu spielen. Der Client 300 kann zum Beispiel ein Rechner, eine mobile Vorrichtung, eine Sonderzweckmedienerzeugungsvorrichtung oder eine beliebige andere geeignete Clientvorrichtung sein.
-
Der Client 300 kann eine Audioeingabevorrichtung 302 umfassen, wie etwa ein Mikrofon. Die Audioeingabevorrichtung 302 kann ein Audio in der Nähe der Clientvorrichtung aufzeichnen und das aufgezeichnete Audio an eine Audioeingabelogik 312 zum Verarbeiten weiterleiten. Die Audioeingabelogik 312 kann das aufgezeichnete Audio verarbeiten, potenziell mit Beihilfe einer Klanganalyselogik, um Informationen aus dem Audio zu extrahieren (z. B. ein textuelles Transkript). Die Audioeingabelogik 312 kann zum Beispiel Sprache-zu-Text-Verarbeitung durchführen, Ton und/oder Tonhöhe in dem Audio analysieren, das Audio direkt einem Maschinenlernsystem zur Analyse bereitstellen etc.
-
Der Client 300 kann ferner eine Texteingabevorrichtung 304, wie etwa eine physische Tastatur oder eine Bildschirmtastatur, zum Eingeben von Text umfassen.
-
Der Client 300 kann eine Bildeingabevorrichtung 306, wie etwa eine Kamera, umfassen, die fähig ist, Festbilder und/oder ein Video aufzuzeichnen. Eine Bildeingabelogik 314 kann eingehenden grafischen Inhalt verarbeiten, um zum Beispiel von der clientseitigen Bildverarbeitungslogik 600 und/oder der clientseitigen Multiabtastungslogik 700 verwendet zu werden.
-
Die Audioeingabelogik 312 und/oder die Bildeingabelogik 314 können zusätzlich oder alternativ am Server 330 liegen.
-
Der Client 300 kann eine Anzeige 308 umfassen, wie etwa einen Berührungsbildschirm oder eine andere Anzeigevorrichtung. Die Anzeige 308 kann eine Kommunikationsschnittstelle oder soziale Netzwerkschnittstelle anzeigen, einschließlich der in 1A-1E veranschaulichten Bilder.
-
Der Client 300 kann eine Audioausgabevorrichtung 310 umfassen, wie etwa einen Lautsprecher oder eine Audioausgabebuchse. Die Audioausgabevorrichtung 310 kann ein Audio spielen, das mit einer Aktualisierung assoziiert ist, wie etwa die in einem Video eingeschlossene Audiospur. Die Audioausgabevorrichtung 310 kann das Audio über eine Audioausgabelogik 316 empfangen, die in Verbindung mit dem Betriebssystem 318 und/oder einer Anwendung 338 arbeiten kann, um ein Ausgabeaudio bereitzustellen.
-
Jede oder alle der Audioeingabevorrichtung 302, der Texteingabevorrichtung 304, der Videoeingabevorrichtung 306, der Anzeige 308 und der Audioausgabevorrichtung 310 kann/können in dem Client 400 integriert sein oder kann/können außerhalb des Clients 300 bereitgestellt und mit dem Client 300 in einer drahtgebundenen oder drahtlosen Weise verbunden werden. Diese Vorrichtungen können auch verwendet werden, um eine Kommunikationsanwendung zu unterstützen, wie etwa eine Anwendung zum Führen von Videoanrufen, eine Nachrichtenübermittlungsanwendung oder eine soziale Netzwerkanwendung.
-
Ein Betriebssystem 318 kann den Client 300 unterstützen und kann die Audioeingabevorrichtung 302, die Texteingabevorrichtung 304, die Videoeingabevorrichtung 306, die Anzeige 308, die Audioausgabevorrichtung 310, einen Speicher 320, eine Anwendung 338 und/oder eine Netzwerkschnittstelle 326 koordinieren und/oder steuern.
-
Der Speicher 320 (z. B. RAM, ROM etc.) kann Datenstrukturen zur Verwendung durch die Anwendung 338 und/oder das Betriebssystem 318 speichern. Der Speicher 320 kann zum Beispiel eine Nachricht speichern, die durch die Anwendung 338 empfangen wurde, wobei die Nachricht grafischen Inhalt umfasst. In dem Speicher 320 können ein Bild 322, das durch die Bildeingabevorrichtung 306 erfasst wird und/oder von einem sendenden Client transferiert wird, sowie eine Miniaturansicht 324 des Bildes 322, falls eine aus dem Blob-Server abgerufen wird, gespeichert werden.
-
Der Client 300 kann eine Anwendung 338 ausführen, die fähig ist, Kommunikationen in einem Netzwerk zu senden und zu empfangen. Diese Fähigkeiten können auch zwischen mehreren Anwendungen 338 aufgeteilt werden. Die Anwendung 338 kann zum Beispiel eine Kommunikationsanwendung, eine soziale Netzwerkanwendung oder eine andere Art von Anwendung sein, die Aktualisierungs- und Antwortfähigkeiten enthält.
-
Die Anwendung 338 kann eine Bild- und/oder Videoerfassungslogik 340 unterstützen, die fähig ist, grafischen Inhalt zu erfassen, zu verarbeiten, zu analysieren und anzuzeigen. Die Bild-/Videoerfassungslogik 340 kann zum Beispiel eine Schnittstellenlogik unterstützen, die konfiguriert ist, um eine soziale Netzwerkschnittstelle oder Nachrichtenübermittlungsschnittstelle zu generieren.
-
Die Anwendung 338 kann auch eine E2EE-Sitzungsaufbaulogik 340 unterstützen, die konfiguriert ist, um eine verschlüsselte End-zu-End-Sitzung von einem sendenden Client zu einem empfangenden Client über ein Kommunikationsnetzwerk herzustellen. Die E2EE-Sitzungsaufbaulogik 340 kann zum Beispiel konfiguriert sein, um eine E2EE-Aufbaunachricht von einem sendenden Client an einen empfangenden Client zu senden, wobei die Aufbaunachricht Parameter (wie etwa einen Entschlüsselungsschlüssel) umfasst, die dem Sender und Empfänger erlauben, gegenseitige Nachrichten zu verschlüsseln und zu entschlüsseln, sodass Zwischenvorrichtungen (wie etwa der Server 330) den Nachrichteninhalt nicht lesen können.
-
Zu diesem Zweck kann die Anwendung 338 eine Verschlüsselungs- und Entschlüsselungslogik 342 unterstützen, die konfiguriert ist, um Nachrichten, die über die E2EE-Verbindung gesendet werden, zu verschlüsseln und zu entschlüsseln. Die Verschlüsselungs- und Entschlüsselungslogik 342 kann einen beliebigen geeigneten Verschlüsselungs- und Entschlüsselungsalgorithmus anwenden, wie etwa den Advanced-Encryption-Standard-Algorithmus (AES-Algorithmus), Diffie-Hellman-Algorithmen und ihre Varianten oder einen beliebigen anderen geeigneten Verschlüsselungsalgorithmus.
-
Die Anwendung 338 kann auch eine Bildcodierungs-/Bilddecodierungslogik 344 unterstützen, die für das Verarbeiten eines Bildes 322 geeignet ist. Die Bildcodierungs-/Bilddecodierungslogik 344 kann das Bild in eine Miniaturansicht und ein Vollbild, wie in den mit Bezug auf 5-6B beschriebenen Ausführungsformen, oder in mehrere Zwischenbildqualitäten, wie in den mit Bezug auf 7-8B beschriebenen Ausführungsformen, aufteilen.
-
Die Anwendung 338 kann ferner eine Nachrichtenübertragungslogik 346 unterstützen, die konfiguriert ist, um eine Nachricht zu generieren, die Informationen über das Bild 322 umfassen kann, und die Nachricht an den Server 330 zu übertragen, um an einen Empfängerclient weiterübertragen zu werden.
-
Die Anwendung 338, der Speicher 320 und die I/O-Vorrichtungen können über das Betriebssystem 318 mit einer Netzwerkschnittstelle 325 zur Kommunikation in einem Netzwerk 328, wie etwa dem Internet, kommunizieren. Die Netzwerkschnittstelle 326 kann zum Beispiel eine Netzwerkschnittstellenkarte (Network Interface Card, NIC) oder eine andere geeignete Hardware und/oder Software zum Regeln von Netzwerkübertragungen und -empfängen sein.
-
Der Client 300 kann über die Netzwerkschnittstelle 326 mit einer entsprechenden Netzwerkschnittstelle 332 auf einem Server 330 kommunizieren. Der Server 330 kann Unterstützung für die Anwendung 338 bereitstellen und kann zu diesem Zweck Nachrichten von dem Client 300 empfangen und diese unter Verwendung einer Nachrichtenweiterleitungslogik 334 an einen oder mehrere empfangende Clients weiterleiten. Der Server 330 kann auch einen Blob-Speicher 336 zum Speichern einer codierten und verschlüsselten Version des Bildes 322 unterstützen (oder der Blob-Speicher 336 kann auf einer getrennten Vorrichtung gespeichert sein).
-
Jede oder alle der oben beschriebenen Logiken können über Anweisungen auf einem oder mehreren Hardwareprozessoren ausgeführt werden. Die Anweisungen können auf einem physischen, nicht transitorischen rechnerlesbaren Speicherungsmedium gespeichert sein.
-
Es wird darauf hingewiesen, dass, obwohl die Logiken und Datenstrukturen in 3 in einer besonderen Konfiguration veranschaulicht werden (mit einigen am Client 300 und anderen am Server 3 30), auch andere Konfigurationen in Verbindung mit der vorliegenden Erfindung vorgesehen sind.
-
Beispielhafte Datenstrukturen
-
4A veranschaulicht eine Datenstruktur, die zum Speichern von Bilddaten 404 in verschlüsselten Nutzdaten 402 geeignet ist. Die Bilddaten 404 können in mehrere Qualitäten 404-i aufgeteilt werden, die durch die sendende Clientvorrichtung bestimmt und konstruiert werden können. Die Qualitäten 404-i können jeweils eine oder mehrere Bildabtastungen umfassen und können in den Bilddaten 404 in einer sequenziellen Reihenfolge dargestellt sein, sodass die Bildqualität zunimmt, wenn von einer Qualität (404-i) zur nächsten (404-i+1) gegangen wird. Zum Beispiel umfasst die erste Qualität in 4A Daten, die einer Miniaturansichtsqualität 404-1 entsprechen, während die zweite Qualität Daten umfasst, die einer niedrigen Qualität 404-2 entsprechen, wenn diese in Verbindung mit den Daten von der Miniaturansichtsqualität 404-1 wiedergegeben werden.
-
Die Menge der Bilddaten, die jeder Qualität 404-i entspricht, kann variieren. In diesem Beispiel umfasst die Miniaturansichtsqualität 404-1 beispielsweise acht Blöcke mit Daten, für eine Datenlänge 406-1 von 8. Die Niedrigqualitätsdaten 404-2 umfassen vierundzwanzig Blöcke mit Daten, für eine Datenlänge 406-2 von 24. Ein erster Teiler 408-1 nach acht Blöcken mit Daten stellt einen konzeptionellen Teilungspunkt (er kann tatsächlichen in der Datenstruktur gespeicherten Informationen entsprechen oder nicht) zwischen den Miniaturansichtsdaten 404-1 und den Niedrigqualitätsdaten 404-2 dar. Gleichermaßen stellt ein zweiter Teiler 408-2 nach zweiunddreißig Blöcken mit Daten einen konzeptionellen Teilungspunkt zwischen den Niedrigqualitätsdaten 404-2 und den Mittelqualitätsdaten 404-3 dar.
-
Wenn die Bilddaten 402 von dem Blob-Speicher an den empfangenden Client übertragen werden, können sie als Teil eines verschlüsselten Datenstreams übertragen werden. Solche Datenstreams können in Sätzen übertragen werden, wobei jede Satzgröße ein Vielfaches der AES-Blockgröße (z. B. 16 Bytes) sein kann. Es besteht jedoch keine Garantie, dass die Teiler 408-i zwischen den unterschiedlichen Qualitäten 404-i den Teilungspunkten zwischen Sätzen entsprechen werden. In dem in 4A veranschaulichten Beispiel weist der erste Satz einen Endpunkt 410-1 nach 16 Blöcken auf, während der zweite Satz einen Endpunkt 410-2 nach 32 Blöcken aufweist. Wenn daher der erste Satz übertragen wird, wird das sämtliche Miniaturansichtsdaten 404-1 und ein Drittel der Niedrigqualitätsdaten 404-2 umfassen. Der zweite Satz wird den Rest der Niedrigqualitätsdaten 404-2 umfassen.
-
Die HMACs für den verschlüsselten Datenstream werden generell über jeden Satz berechnet. Demgemäß kann der sendende Client die Abtastungen des Bildes bestimmen und durchführen und kann auch bestimmen, wo die Teilungspunkte zwischen den verschiedenen Sätzen liegen werden. Der sendende Client kann die HMACs über diese Sätze berechnen. Der sendende Client kann die Bilddaten zum Blob-Speicher hochladen und kann eine Bildnachricht, die Informationen über das Bild enthält, an den empfangenden Client übertragen. Ein Beispiel für eine solche Bildnachricht 450 wird in 4B veranschaulicht.
-
Die Bildnachricht 450 kann den Empfänger oder die Empfänger 452 für die Nachricht identifizieren. Diese Informationen können von dem Server verwendet werden, um die Nachricht an die passenden empfangenden Clientvorrichtungen zu leiten.
-
Die Bildnachricht 450 kann auch verschlüsselte Nachrichtendaten 454 umfassen, die durch die Verschlüsselungs-/Entschlüsselungslogik 342 auf der Clientvorrichtung 300 verschlüsselt/entschlüsselt werden können. Die Nutzdaten 454 können verschiedene verschlüsselte Nachrichtendaten umfassen. Beispielsweise kann ein Nachrichtenkörper 456 Nachrichteninformationen umfassen, die an einer Schnittstelle einer Nachrichtenübermittlungsanwendung anzuzeigen sind. Der Nachrichtenkörper 456 kann beispielsweise Text umfassen, der in der Nachricht anzuzeigen ist. Falls die Nachricht ein Bild umfasst (oder aus einem solchen besteht), kann der Nachrichtenkörper 456 einen Bezug 458 auf das Bild umfassen, der entfernt im Blob-Speicher gespeichert werden kann. Der Bezug 458 kann zum Beispiel einen Zeiger auf das Bild im Blob-Speicher oder eine Identifizierung für das Bild umfassen, sodass das Bild aus dem Blob-Speicher abgerufen werden kann.
-
Die Nutzdaten 454 können ferner Informationen umfassen, die beschreiben, wie das Bild in verschiedene Qualitäten aufgeteilt wird, sodass es durch die Empfängervorrichtung sequenziell rekonstruiert werden kann. Zum Beispiel können die Nutzdaten 454 die Länge(n) 460 der Daten umfassen, die jeder Qualität entsprechen. In dem Fall, bei dem die Bilddaten in Miniaturansichts- und Vollbilddaten aufgeteilt sind, kann/können die Länge(n) 460 ein einzelner Wert sein, der der Länge der Miniaturansichtsdaten 404-1 entspricht. Falls die Daten in Zwischenqualitäten aufgeteilt werden, können die Länge(n) 460 als Array oder Liste dargestellt werden, die die Länge der Daten umfasst, die jeder Bildqualität entsprechen.
-
Durch Verwendung dieser Information kann der empfangende Client bestimmen, wo innerhalb von jedem Satz etwaige Teilungslinien zwischen Bilddaten von unterschiedlichen Qualitäten sein können. Der empfangende Client kann diese Informationen verwenden, um das Bild mit der entsprechenden Qualität wiederzugeben und/oder um den Datenstream vor dem Herunterladen des Vollbildes zu beenden, falls die Netzwerkqualität relativ niedrig ist.
-
Alternativ oder zusätzlich können die Nutzdaten 454 eine Liste darüber umfassen, wo jede Abtastung von einem progressiven Abtastungsskript beginnt. Demgemäß kann das Bild als progressives Bild (z. B. ein progressives JPEG) geladen werden, indem die UI jedes Mal aktualisiert wird, wenn eine neue Abtastung empfangen wird. Dies kann weitere Zwischenstadien innerhalb einer besonderen Bildqualität erlauben, falls sich die Bildqualität aus mehreren Abtastungen zusammensetzt (siehe z. B. das Niedrigqualitätsbeispiel in Tabelle 1 unten).
-
Die Nutzdaten 454 können auch die vom Sender berechneten HMACs 462 für jeden Bildsatz umfassen. Nach Empfangen eines Satzes kann der Empfänger seinen eigenen HMAC für den Satz berechnen und diesen mit dem HMAC 462 in der Bildnachricht 450 vergleichen. Falls die HMACs gleich sind, kann der Empfänger die Integrität der empfangenen Daten verifizieren. Falls sich die HMACs unterscheiden, dann wurden die Daten bei der Übertragung entweder korrumpiert oder manipuliert. Der Empfänger kann in diesem Fall eine passende Maßnahme ergreifen, wie etwa Anfordern einer neuen Kopie der Daten oder Beenden der Übertragung.
-
Ausführungsform zum Bereitstellen einer Miniaturansicht und eines Vollbilds
-
5-6B stellen Datenflussdarstellungen und Flussdiagramme bereit, die eine erste Ausführungsform beschreiben, bei der ein Bild in eine Miniaturansicht und ein Vollqualitätsbild aufgeteilt wird. Es ist vorgesehen, dass die in 5A-6B veranschaulichte Ausführungsform in Verbindung mit beliebigen der oben beschriebenen Miniaturansicht-/Vollbildausführungsformen eingesetzt werden kann und mit den in 7-8B veranschaulichten Multiabtastungsausführungsformen erweitert werden kann.
-
Wie in 5 gezeigt, kann der sendende Client als erstes eine End-zu-End-Verschlüsselungs-Aufbaunachricht (E2EE-Aufbaunachricht) 502 an den Zwischenserver senden. Der Zwischenserver kann die E2EE-Aufbaunachricht 502 an den empfangenden Client weiterleiten. Der empfangende Client kann eine E2EE-Aufbauantwort 504 generieren und die Antwort 504 an den Server übertragen. Der Server kann die Antwort 504 an den sendenden Client übermitteln. Die Aufbaunachricht 502 und die Antwort 504 können alle notwendigen Informationen umfassen, um eine E2EE-Sitzung zwischen dem sendenden Client und dem empfangenden Client herzustellen.
-
Beim sendenden Client kann ein Benutzer mit einer Kommunikationsanwendung arbeiten, um eine Nachricht zu verfassen (Prozess 506). Die Nachricht kann ein Bild umfassen. Als Reaktion auf das Empfangen einer Anforderung zum Übertragen der Nachricht kann das Bild unter Verwendung des in 6A beschriebenen Prozesses codiert und verschlüsselt werden. Die verschlüsselten Bilddaten 508 können zu dem Blob-Server hochgeladen werden, der mit einem Ort 510 des Bildes im Blob-Server antworten kann.
-
Es kann eine Bildnachricht 512 generiert werden, die einen verschlüsselten Nachrichteninhalt umfasst; der verschlüsselte Nachrichteninhalt kann die Längen von jedem Satz Daten, die unterschiedlichen Bildqualitäten entsprechen (siehe 4A-4B), die HMACs von jedem Datensatz in den Bilddaten und einen Bezug auf das Bild umfassen. Der Bezug kann der von dem Blob-Speicher empfangene Bildort 510 sein oder von diesem abgeleitet sein. Die Bildnachricht 512 kann an den Server übertragen und dann von dem Server an den empfangenden Client übermittelt werden.
-
Der empfangende Client kann die Bildnachricht unter Verwendung der Informationen von den E2EE-Aufbau- und Antwortnachrichten 502, 504 entschlüsseln. Der empfangende Client kann erkennen, dass die entschlüsselte Nachricht einen Bezug auf ein Bild umfasst, und kann bestimmen, ob automatisches Herunterladen von Bildminiaturansichten aktiviert ist. Automatisches Herunterladen kann zum Beispiel in einer Einstellung der Kommunikationsanwendung des Benutzers aktiviert oder deaktiviert werden und automatisches Herunterladen kann in gewissen Kontexten deaktiviert werden (z. B. falls der Benutzer in einem Mobilfunkdatennetzwerk ist, falls das Netzwerk instabil oder langsam ist etc.). Falls automatisches Herunterladen aktiviert ist, kann der empfangende Client eine Anforderung 514 an den Blob-Speicher zum Herunterladen des Miniaturansichtsabschnitts der Bilddaten übertragen. Dies kann den Aufbau eines Datenstreams mit dem Blob-Speicher, das Initiieren einer Herunterladung 516 der Bilddaten, auf die in der Bildnachricht Bezug genommen wird, und das Beenden des Datenstreams, sobald genügend Bilddaten empfangen wurden, um die Miniaturansicht bei 518 wiederzugeben, umfassen.
-
Die Kommunikationsanwendung kann anfordern 520, dass das Bild aus dem Blob-Speicher abgerufen wird. Diese Anforderung 520 kann als Reaktion auf das Anfordern des Vollbildes durch einen Benutzer (z. B. durch Anklicken der Miniaturansicht) erfolgen, falls automatisches Herunterladen aktiviert und durchgeführt wurde. Alternativ oder zusätzlich kann das Bild als Reaktion darauf heruntergeladen werden, dass ein Faden, der die Nachricht umfasst, in der Kommunikationsanwendung geöffnet wird.
-
Als Reaktion auf die Anforderung 520 für die Bilddaten kann der Blob-Server einen Datenstream 522 an den empfangenden Client übertragen. Die Bilddaten können sequenziell gestreamt werden, sodass die Miniaturansichtsdaten als erstes übertragen werden und die Vollbilddaten als zweites übertragen werden. Falls die Miniaturansichtsdaten bei 516 bereits übertragen wurden, dann können nur Daten als Reaktion auf die anschließende Bildanforderung 520 übertragen werden, die noch nicht abgerufen wurden. Nachdem die Miniaturansichtsdaten bei 516 heruntergeladen wurden, können sie in einem Miniaturansichtsverzeichnis gespeichert werden, sodass sie verfügbar bleiben, um mit den bei 522 abgerufenen Daten vereint zu werden. Falls automatisches Herunterladen nicht aktiviert ist, kann das gesamte Bild (als erstes die Miniaturansichtsdaten, anschließend die Vollbilddaten) als Reaktion auf die einzelne Bildanforderung 520 abgerufen werden.
-
Während die Daten empfangen werden, können sie am empfangenden Client wiedergegeben werden. In dem Fall einer Miniaturansicht-/Vollbildausführungsform kann die Miniaturansicht als erstes bei 524 wiedergegeben werden und kann dann die UI aktualisiert werden, wenn das Vollbild bei 526 verfügbar ist.
-
Zu einem gewissen Zeitpunkt kann der empfangende Benutzer anfordern, dass der empfangende Client das Bild weiterleitet. Falls der empfangende Client in seinem Speicher noch eine Kopie des Bildbezugs, der Datenlängen und HMACs, wie sie in der verschlüsselten Nachricht 512 empfangen wurden, gespeichert hat, können diese Informationen einfach an den nächsten Client weitergeleitet werden 528, ohne das Bild erneut zu codieren.
-
Diese Nachrichten können in Übereinstimmung mit den in den Flussdiagrammen von 6A (senderseitig) und 6B (empfängerseitig) veranschaulichten Abläufen generiert und übertragen werden. Die beispielhafte Logik kann in Hardware, Software oder eine Kombination aus Hardware und Software (z. B. mindestens teilweise in Hardware implementiert) implementiert sein. Die Logik kann zum Beispiel als digitale Logik enthalten sein, die mindestens teilweise in Hardware implementiert sein kann und die Anweisungen für eine Prozessorschaltung zum Durchführen der unten beschriebenen Schritte enthält. Obwohl 6A-6B (und 8A-8B) eine besondere Anordnung logischer Elemente in einer besonderen Reihenfolge veranschaulichen, versteht es sich, dass die veranschaulichten Konfigurationen lediglich ein Beispiel sind. In anderen Ausführungsformen können mehr Elemente bereitgestellt sein und/oder einige Elemente ausgelassen sein, können einige Elemente parallel durchgeführt werden und/oder können Elemente in einer unterschiedlichen Reihenfolge durchgeführt werden. In einigen Ausführungsformen können einige der veranschaulichten Elemente in unterschiedlichen Systemen durchgeführt werden.
-
In der Bildverarbeitungslogik auf der Seite des sendenden Clients 600 kann das Verarbeiten bei Block 602 beginnen, wobei der sendende Client eine E2EE-Sitzung mit einem empfangenden Client aufbaut. Der sendende Client kann die E2EE-Sitzung als Reaktion auf das Empfangen einer Anforderung zum Übertragen einer Nachricht von dem sendenden Client an den empfangenden Client aufbauen. Das Aufbauen der E2EE-Sitzung kann zum Beispiel das Austauschen von Verschlüsselungs- und Entschlüsselungsschlüsseln zwischen dem sendenden Client und dem empfangenden Client umfassen.
-
Bei 604 kann der sendende Client eine Anforderung in einer Schnittstelle einer Kommunikationsanwendung empfangen, um eine Nachricht an den empfangenden Client zu verfassen (Block 604 kann in einigen Ausführungsformen dem Block 602 vorausgehen). Die Nachricht kann einen Anhang, wie etwa ein Bild, umfassen, der in einem Speicher oder einer Speicherung des sendenden Clients gespeichert werden kann. Demgemäß kann die Kommunikationsanwendung bei Block 606 das Bild aus der Speicherung oder dem Speicher abrufen. Alternativ kann das Bild entfernt gespeichert werden und kann die Kommunikationsanwendung bei Block 606 eine Kopie des Bildes von dem entfernten Ort anfordern.
-
Bei Block 608 kann das System bestimmen, ob Multiabtastung aktiviert ist. In einigen Ausführungsformen kann Multiabtastung verwendet werden, um das Bild mit einer Miniaturansichtsqualität und mit mindestens einer zusätzlichen Zwischenqualität zwischen der Miniaturansichtsqualität und der Vollbildqualität abzutasten. Multiabtastung kann standardmäßig, basierend auf Benutzereinstellungen oder in gewissen Kontexten (z. B. falls erwartet wird, dass das Bild von einem unzuverlässigen oder langsamen Netzwerk heruntergeladen wird) aktiviert sein. Falls zutreffend, kann die Verarbeitung mit Block 802 fortfahren (siehe 8A).
-
Falls Multiabtastung nicht aktiviert ist, dann kann das Bild bei Block
610 mit zwei Qualitäten abgetastet werden. Zum Beispiel kann das Bild unter Verwendung eines Abtastungsskripts als progressives JPEG abgetastet werden. Ein Beispiel eines Abtastungsskripts, das zwei oder vier Bildqualitäten bereitstellt, ist wie folgt:
-
In diesem Beispiel ist die erste Abtastung die anfängliche Abtastung für die DC-Koeffizienten der Y-, Cr- und Cb-Kanäle, minus den niedrigsten zwei Bits. Diese Informationen sind für die Verwendung als Miniaturansicht für das Bild geeignet.
-
Die nächsten fünf Abtastungen produzieren ein Niedrigqualitätsbild. Von diesen erfassen die ersten zwei (Abtastung Nr. 2 und 3) das vorletzte bzw. letzte Bit der DC-Koeffizienten für die Y-, Cr- und Cb-Kanäle. Die dritte (Abtastung Nr. 4) erfasst die AC-Koeffizienten für den Cr-Chroma-Kanal, während die vierte (Abtastung Nr. 5) die AC-Koeffizienten für den Cb-Chroma-Kanal erfasst. Die fünfte (Abtastung Nr. 6) erfasst bis auf die letzten zwei alle Bits der AC-Koeffizienten für den Y-Luma-Kanal.
-
Typischerweise umfassen die AC-Koeffizienten für den Luma-Kanal die meisten Daten und werden sie als letztes heruntergeladen. Die nächste Abtastung (Abtastung Nr. 7), die mit den vorangegangenen Abtastungen vereint werden kann, um ein Mittelqualitätsbild zu produzieren, liest daher das vorletzte Bit der AC-Koeffizienten für den Y-Luma-Kanal ein. Die abschließende Abtastung (Abtastung Nr. 8) produziert das Hochqualitätsvollbild (wenn mit den vorangegangenen Abtastungen vereint) durch Einlesen des niedrigsten Bits der AC-Koeffizienten für den Y-Luma-Kanal.
-
Es wird darauf hingewiesen, dass diese besondere Abtastungsskriptkonfiguration lediglich beispielhaft ist und besondere Daten verwendet, bei denen in der Praxis festgestellt wurde, dass sie die Größe von jeder jeweiligen Abtastung in angemessener Weise mit der Qualität ausgleichen, die aus der Wiedergabe der Abtastung in Verbindung mit vorangegangenen Abtastungen resultiert. Beispielsweise neigt die erste Abtastung, die eine progressive Miniaturansicht produziert, dazu, eine relativ hohe Menge von Informationen in einer relativ geringen Menge von Daten bereitzustellen. Die Qualität ist nicht ausreichend, damit diese Informationen ein Mittelqualitätsbild darstellen, ist aber für die Verwendung als Miniaturansicht ausreichend. In der Praxis neigen die Niedrigqualitätsabtastungen dazu, etwa die Hälfte der Bilddaten aufzunehmen (etwa 36-67 %, bei einem Durchschnitt von etwa 48 %), während die Mittelqualitätsabtastungen dazu neigen, 56-81 % der Bilddaten aufzunehmen, bei einem Durchschnitt von rund 66 %. In vielen Fällen sind die Mittelqualitätsbilder für einen Menschen von dem originalen Vollqualitätsbild nicht zu unterscheiden.
-
In Ausführungsformen, die eine Miniaturansicht und ein Vollbild bereitstellen (d. h. ohne dazwischen liegende Niedrigqualitäts- und Mittelqualitätswiedergabe), können die zweiten bis achten Abtastungen als Vollbilddaten behandelt werden. Es ist zu bemerken, dass sowohl bei der Multiabtastungs- als auch der Miniaturansichts-/Vollbildausführungsform das Bild nach wie vor als progressives JPEG verarbeitet werden kann. Die Clients können jedoch konfiguriert sein, um die erste Abtastung (oder Abtastungen) als Miniaturansichtsdaten zu behandeln, und können die anderen Ebenen (Niedrigqualität und Mittelqualität) verwenden, um andere Verarbeitungsschritte durchzuführen. Zum Beispiel kann der empfangende Client, abhängig von der Netzwerkqualität und verfügbaren Bandbreite, wählen, nur die Datenmenge zu empfangen, die zu einem Niedrigqualitäts- oder Mittelqualitätsbild führt. In einer solchen Ausführungsform können für verschiedene Netzwerkqualitätsparameter Grenzen definiert werden (z. B. Durchsatz, Bitrate, Paket-Fallenlassen-Rate etc.). Falls die Netzwerkqualität über einem ersten (niedrigen) Grenzniveau liegt, dann wird das Niedrigqualitätsbild empfangen und kann der empfangende Client den Datenstream nach Empfangen der Abtastungen, die dem Niedrigqualitätsbild entsprechen, beenden. Falls die Netzwerkqualität über einem zweiten (dazwischen liegenden) Grenzniveau liegt, dann wird das Bild mit mittlerer Qualität empfangen und kann der empfangende Client den Datenstream nach Empfangen der Abtastungen, die dem Bild mit mittlerer Qualität entsprechen, beenden. Falls die Netzwerkqualität über einem dritten (hohen) Grenzniveau liegt, dann kann das Vollbild empfangen werden und kann der empfangende Client den Datenstream nach Empfangen aller verfügbaren Abtastungen beenden.
-
Das System kann das Abtastungsskript anpassen oder kann aus verschiedenen Gründen ein unterschiedliches Abtastungsskript anwenden. Zum Beispiel kann die Verwendung von unterschiedlichen Transcodierungsparametern in einer kleineren Dateigröße resultieren und solche Parameter können ausgewählt werden, um die Menge der über das Netzwerk übertragenen Daten zu reduzieren. Zusätzlich kann das System, da jede Abtastung des Bildes Verarbeitungs- und andere Rechenressourcen verbraucht und da diese Ressourcen bei einer Endbenutzer-Clientvorrichtung beschränkter als bei einem zentralen Server sein können, abhängig von der Qualität der Hardware bei der Endbenutzer-Clientvorrichtung wählen, weniger Abtastungen durchzuführen.
-
Als Resultat des Abtastens des Bildes bei Block 610 werden Bilddaten erzeugt, wobei die Bilddaten Daten umfassen, die der/den Miniaturansichtsabtastung(en) und den restlichen Bilddaten entsprechen. Bei Block 612 kann das System die Länge der Miniaturansichtsabtastung(en) berechnen. Dies kann zum Beispiel unter Verwendung eines progressiven JPEG-Parsers vorgenommen werden, der den Ort in den Bilddaten identifiziert, der dem Punkt entspricht, an dem eine bestimmte Abtastung endet und die nächste Abtastung beginnt.
-
Bei Block 614 kann das System die generierten Bilddaten unter Verwendung eines geeigneten Verschlüsselungsalgorithmus verschlüsseln. Bei Block 616 kann das System die codierten Bilddaten in Übereinstimmung mit einem Verschlüsselte-Daten-Streaming-Algorithmus in Sätze teilen und bei Block 618 kann der HMAC für jeden Satz berechnet werden.
-
Bei Block 620 können die verschlüsselten Bilddaten zu dem Blob-Speicher hochgeladen werden und der Blob-Speicher kann die sendende Vorrichtung über den Ort im Blob-Speicher, an dem das Bild gespeichert ist (oder über die Identifizierung des Bildes, die verwendet werden kann, um das Bild in dem Blob-Speicher zu finden) informieren.
-
Unter Verwendung der bei Block 612, 618 und 620 generierten Informationen kann das System bei Block 622 eine Bildnachricht generieren. Die Bildnachricht kann einen Bezug auf das Bild, der den Ort und/oder die ID umfassen kann, die von dem Blob-Speicher bei Block 620 ausgegeben werden, die Miniaturansichtslänge, die bei Block 612 berechnet wird (und/oder andere Längen, die bei Block 810 berechnet werden), sowie die Satz-HMACs, die bei Block 618 berechnet werden, umfassen. Der Inhalt der Bildnachricht kann verschlüsselt sein und bei Block 624 kann die Bildnachricht an ihre(n) geplanten Empfänger übertragen werden.
-
Der in 6A (und 8A) veranschaulichte Ablauf kann parallel oder in Verbindung mit einem Ablauf, der in der empfängerseitigen Vorrichtung ausgeführt wird, durchgeführt werden. 6B (und 8B) ist ein Flussdiagramm, das eine beispielhafte Logik 650 (und 850) veranschaulicht, die durch ein System, wie etwa einen empfangenden Client, durchgeführt wird, um ein progressives Bild anzufordern und anzuzeigen.
-
Bei Block 652 kann der empfangende Client einen E2EE-Sitzungsaufbau durchführen. Block 652 kann das Gegenstück von Block 602 sein und kann ähnliche oder entsprechende Schritte umfassen.
-
Bei Block 654 kann der empfangende Client unter Verwendung der in Block 652 aufgebauten E2EE-Sitzung eine Bildnachricht empfangen. Die Bildnachricht kann verschlüsselten Inhalt, wie etwa einen verschlüsselten Bezug auf ein Bild, Datenlängen und HMACs, umfassen.
-
Bei Block 656 kann das System die Längen von mindestens einigen der Daten abrufen, die den jeweiligen Bildqualitäten entsprechen, die in Bilddaten des Bildes, auf das Bezug genommen wird, eingeschlossen sind (wie etwa die Länge der Miniaturansichtsdaten). Wie zuvor erwähnt, entsprechen die Datenlängen möglicherweise nicht genau den Satzlängen des E2EE-Datenstreams, und das System kann somit diese Informationen verwenden, um zu bestimmen, wie viele Sätze benötigt werden, um die Daten zu erhalten, die jeder jeweiligen Bildqualität entsprechen.
-
Bei Block 658 kann das System bestimmen, ob automatisches Herunterladen von Miniaturansichten aktiviert ist. Falls nicht zutreffend, fährt die Verarbeitung mit Block 660 fort und wartet das System auf eine Anforderung zum Anzeigen der Bildnachricht, bevor die Miniaturansichtsdaten heruntergeladen werden. Eine derartige Anforderung kann in Form einer Anforderung zum Laden eines Fadens, der die Bildnachricht enthält, oder zum Blättern zu einem Punkt in dem Faden, an dem das Bild angesehen werden kann, vorliegen. Alternativ kann die Verarbeitung, falls automatisches Herunterladen aktiviert ist, direkt mit Block 662 fortfahren.
-
Bei Block 662 ruft das System die Bilddaten, die der Miniaturansicht entsprechen, aus dem Blob-Speicher ab. Dies kann das Initiieren eines Datenstreams mit dem Blob-Speicher beinhalten, um die Bilddaten abzurufen, die dem Bezug in der originalen Bildnachricht entsprechen. Das System kann einen oder mehrere Sätze herunterladen, die der Miniaturansicht entsprechen.
-
Bei Block 664 kann das System die abgerufenen Miniaturansichtsdaten gemäß den Parametern der bei Block 652 aufgebauten E2EE-Sitzung entschlüsseln. Bei Block 666 kann das System einen HMAC über die verschlüsselten Daten berechnen (Block 666 kann in einigen Ausführungsformen Block 664 vorausgehen), um zu verifizieren, dass die Daten nicht korrumpiert und unverändert sind. Unter der Annahme, dass dies der Fall ist, kann das System bei Block 668 die entschlüsselte Miniaturansicht anzeigen. Sobald die Miniaturansichtsdaten heruntergeladen wurden, kann das System optional das Herunterladen der restlichen Daten unterbrechen und/oder den Datenstream mit dem Blob-Speicher beenden.
-
Bei Block 670 kann das System eine Anforderung zur Anzeige des Vollbildes empfangen. Dies kann als Reaktion auf eine Auswahl der Miniaturansicht erfolgen, die darauf hinweist, dass der Benutzer eine Version mit höherer Qualität des Bildes ansehen möchte. Alternativ oder zusätzlich kann das System einfach fortsetzen, die Bilddaten herunterzuladen, nachdem die Miniaturansicht heruntergeladen wurde.
-
Bei Block 672 kann das System einen Datenstream mit dem Blob-Speicher initiieren und bei Block 674 eine Anforderung an den Blob-Speicher übertragen, um die Bilddaten herunterzuladen (oder kann alternativ fortsetzen, Daten über einen existierenden Datenstream herunterzuladen). In einigen Ausführungsformen wird nur eine Anforderung benötigt, um alle Bilddaten mit den verschiedenen Qualitäten herunterzuladen, mit denen das Bild codiert wurde (da die Bilddaten fortsetzen, zusätzliche Daten sequenziell zu streamen, die kumulativ angewandt werden können, um das Bild mit zunehmenden Qualitätsniveaus wiederzugeben).
-
Bei Block 676 bestimmt das System, ob Multiabtastungsfähigkeiten aktiviert sind (ähnlich wie bei Block 608 von 6A). Falls zutreffend, fährt die Verarbeitung mit Block 852 fort (siehe 8B). Andernfalls fährt die Verarbeitung mit Block 678 fort und wird ein Satz von Daten über die Streaming-Verbindung von Block 672 abgerufen.
-
Bei Block 680 kann das System den empfangenen Satz entschlüsseln und bei Block 682 den Satz-HMAC verifizieren (Block 680 und 682 können in einigen Ausführungsformen umgekehrt werden). Bei Block 684 aktualisiert das System die UI basierend auf den neu empfangenen Bilddaten (unter der Annahme, dass der jüngste Satz Daten bis zu dem Ende von einer der Bildabtastungen umfasste; andernfalls kann Block 684 in dieser Iteration der Schleife ausgelassen werden).
-
Bei Block 686 bestimmt das System, ob weitere Sätze zum Herunterladen aus dem Blob-Speicher verbleiben. Falls zutreffend, kehrt die Verarbeitung zum Block 678 zurück und kann der nächste Satz abgerufen werden. Falls nicht zutreffend (d. h. es wurden alle Sätze heruntergeladen), kann die Verarbeitung beendet werden, da das Bild mit voller Qualität wiedergegeben wurde.
-
Nachdem der empfangende Client die Bilddaten empfangen hat, kann der empfangende Benutzer anfordern, dass das Bild an einen anderen Benutzer weitergeleitet wird. 6C ist ein Flussdiagramm, das eine beispielhafte Logik 690 zum Weiterleiten des Bildes an einen zweiten empfangenden Benutzer beschreibt.
-
Bei Block 692 kann das System eine Anforderung zum Weiterleiten eines zuvor heruntergeladenen Bildes an den empfangenden Client empfangen. Die Anforderung kann lauten, das Bild an einen zweiten empfangenden Client weiterzuleiten, mit dem der erste empfangende Client eine E2EE-Sitzung bei Block 694 aufbauen kann.
-
Da die Bilddaten bereits im Blob-Speicher vorliegen und da die verschiedenen Abtastungen und Bildqualitäten bereits verarbeitet wurden und die HMACs über die relevanten Sätze berechnet wurden, ist es nicht notwendig, diese Verarbeitung noch einmal durchzuführen (unter der Annahme, dass der empfangende Client noch eine Kopie der relevanten Datenlängen und HMACs von dem originalen sendenden Client aufweist).
-
Demgemäß generiert das System bei Block 696 eine neue Bildnachricht für den zweiten empfangenden Client, die die Daten-/Abtastungslängen von dem originalen Sender und die HMACs von dem originalen Sender umfasst. Der Bezug auf das Bild von dem originalen Sender kann ebenfalls in der neuen Bildnachricht eingeschlossen sein.
-
Die neue Bildnachricht kann bei Block 698 an den zweiten Empfänger weitergeleitet werden. Demgemäß kann der zweite Empfänger die Informationen in der neuen Bildnachricht verwenden, um das Bild aus dem Blob-Speicher auf die gleiche Weise wie für den ersten Empfänger herunterzuladen.
-
Ausführungsform zum Bereitstellen von mehrfachen Abtastungen
-
7, 8A und 8B ergänzen die in 5, 6A und 6B gezeigten Abläufe, um ein System bereitzustellen, das Zwischenbildqualitäten zwischen der Miniaturansichtsqualität und der Vollbildqualität generiert.
-
Die Datenflussdarstellung von 7 ist der in 5 veranschaulichten in vielen Aspekten ähnlich. Der Kürze halber wurde in 5 und 7 ähnlicher Nachrichtenaustausch mit den gleichen Bezugsnummern gekennzeichnet und wird hier eine Beschreibung dieser ähnlichen Schritte der Kürze halber ausgelassen. Ein Unterschied zwischen der in 5 getroffenen Maßnahme und der in 7 getroffenen Maßnahme besteht darin, dass, wenn das Bild bei 506 codiert und verschlüsselt wird, dieses mit mehreren unterschiedlichen Qualitäten codiert werden kann, wie in 8A dargelegt. Dementsprechend wird ein neuer Ablauf 702 hinzugefügt, um das Bild mit Zwischenqualitäten wiederzugeben, wie in Verbindung mit 8B beschrieben.
-
Außerdem wird der Ablauf 528 zum Weiterleiten des Bildes an einen neuen Empfänger ausgelassen, um Platz zu sparen, dieser Ablauf (beschrieben in 6C) kann aber in Verbindung mit der in 7-8B gezeigten Ausführungsform in der gleichen Weise verwendet werden, wie oben für die Miniaturansichts-/Vollqualitätsausführungform beschrieben (mit der Ausnahme, dass die Datenlängen, die den Zwischenbildqualitäten und nicht nur der Miniaturansichtsqualität entsprechen, in die neue Bildnachricht geladen werden).
-
Mit Bezug auf 8A wird ein Ablauf zum Speichern der Bilddaten beschrieben, sodass das Bild in Zwischenqualitäten zwischen der Miniaturansicht und dem Vollbild dargestellt werden kann. Die Logik 800 beginnt bei Block 802, welcher auf Block 610 von 6A folgt. Bei Block 608 kann das System die Bildabtastungen, die verwendet werden, um die Bilddaten zu generieren (siehe z. B. Tabelle 1), in N-Qualitäten teilen. Die Zahl N von Qualitäten kann von der Zahl der Zwischenstadien abhängen, die von einem Administrator des Kommunikationsdienstes gewünscht werden. Generell werden zum Beispiel mindestens zwei Bildqualitäten verwendet (die Miniaturansichtsqualität und die Vollbildqualität). Es kann außerdem mindestens eine Zwischenbildqualität für die Verwendung über Netzwerkverbindungen wünschenswert sein, die möglicherweise instabil oder relativ langsam sind. Weitere Zwischenqualitäten können verwendet werden, um mehr Granularität bereitzustellen - zum Beispiel eine niedrige Qualität für sehr schlechte Verbindungen und eine Zwischen- oder Mittelqualität für bessere Verbindungen, die nichtsdestotrotz suboptimal sind.
-
Optional kann das System zwischen unterschiedlichen verfügbaren Abtastungsprofilen wählen oder kann ein Abtastungsskript anpassen, um eine unterschiedliche Zahl oder unterschiedliche Konfigurationen von Abtastungen bereitzustellen. Dies kann basierend auf verfügbaren Netzwerk- und/oder Clienthardwareinformation durchgeführt werden, sowie basierend darauf, welche Abtastungsskripte/Konfigurationen die geringsten Gesamtbilddaten (oder die geringsten Bilddaten für gewisse Bildqualitäten) ergeben. Das System kann die Abtastungen, die im Abtastungsskript bezeichnet sind, zwischen den unterschiedlichen N Bildqualitäten zuweisen.
-
Bei den Blöcken 804-806 kann das System das Bild iterativ abtasten, bis alle Abtastungen im Abtastungsskript durchgeführt wurden. Bei Block 808 kann das System die Größe der Daten entsprechend jedem Qualitätsniveau bestimmen. Zum Beispiel kann das System einen progressiven JPEG-Parser anwenden, um zu identifizieren, wo in den Bilddaten die Teilungslinien zwischen aufeinanderfolgenden Abtastungen liegen. Unter Verwendung dieser Informationen und der Zuweisung von bestimmten Abtastungen zu unterschiedlichen Bildqualitäten in Block 802 kann das System bestimmen, wie viele Daten jeder jeweiligen Abtastung entsprechen. Diese Mengen können in einem Array (oder in einer anderen geeigneten Struktur) bei Block 810 gespeichert werden. Dieses Array kann verwendet werden, um die Datenlängen in der Bildnachricht darzustellen.
-
Mit Bezug auf 8B wird ein Ablauf zum Wiedergeben eines Bildes unter Verwendung der in 8A gespeicherten Zwischenqualitäten beschrieben. Die Logik 850 beginnt bei Block 852, der auf Block 676 von 6B folgt. Bei Block 852 bestimmt das System, ob die Daten, die dem aktuell verarbeiteten Qualitätsniveau entsprechen, vollständig heruntergeladen wurden. Das System wird zum Beispiel am Start des Ablaufs Bilddaten herunterladen, die der Miniaturansichtsqualität entsprechen. Falls mehr Daten verbleiben, die mit dem aktuellen Qualitätsniveau herunterzuladen sind, kann die Verarbeitung mit Block 854 fortfahren. Die Blöcke 854-864 entsprechen generell den Blöcken 678-686 von 6B, und die Beschreibung dieser Blöcke wird hier ausgelassen, um eine Wiederholung zu vermeiden. Diese Blöcke werden wiederholt durchgeführt, bis damit aufgehört wird, Bilddaten für das aktuelle Qualitätsniveau über den Datenstream herunterzuladen.
-
Sobald damit aufgehört wird, Daten für das aktuelle Qualitätsniveau herunterzuladen („Ja“ bei Block 852), fährt die Verarbeitung mit Block 866 fort. Hier empfängt das System Parameter, die den Status der Netzwerkverbindung beschreiben (z. B. Netzwerkdurchsatz, Bandbreite, Bitrate, Rate fallen gelassener Pakete etc.). Bei Block 868 vergleicht das System diese Parameter mit vorher festgelegten Netzwerkqualitätsgrenzen für das nächste Qualitätsniveau. Falls das System zum Beispiel gerade mit der Verarbeitung für die Miniaturansichtsqualität aufgehört hat, kann das System evaluieren, ob die Netzwerkverbindung gut genug ist, um Bilddaten mit der niedrigen Qualität herunterzuladen.
-
Falls zutreffend, fährt die Verarbeitung mit Block 854 fort und setzt das System fort, Datensätze aus den Bilddaten herunterzuladen, bis das nächste Qualitätsniveau erreicht wird. Falls nicht zutreffend, fährt die Verarbeitung mit Block 870 fort und kann das System den Datenstream mit dem Blob-Server beenden. Folglich verzichtet das System darauf, zusätzliche Bilddaten für die höheren Qualitäten des Bildes herunterzuladen. Das System gibt daher das Bild mit der höchsten heruntergeladenen Qualität wieder, kann aber vermeiden, große Herunterladungen durchzuführen, wenn die Netzwerkqualität nicht ausreichend ist.
-
Die oben beschriebenen Ausführungsformen können durch eine Nachrichtenübermittlungsarchitektur durchgeführt werden, ein Beispiel dafür wird als Nächstes mit Bezug auf 9 beschrieben.
-
Nachrichtenübermittlungsarchitektur
-
9 illustriert eine Ausführungsform einer Vielzahl von Servern, die verschiedene Funktionen eines Nachrichtenübermittlungsdienstes 900 implementieren, die zur Verwendung mit Ausführungsbeispielen geeignet sind. Es wird nachvollziehbar sein, dass unterschiedliche Verteilungen von Arbeit und Funktionen in verschiedenen Ausführungsformen eines Nachrichtenübermittlungsdienstes 900 verwendet werden können.
-
Der Nachrichtenübermittlungsdienst 900 kann ein Domänennamen-Frontend 902 beinhalten. Dem Domänennamen-Frontend 902 können ein oder mehrere Domänennamen zugewiesen werden, die mit dem Nachrichtenübermittlungsdienst 900 im Domänennamensystem (DNS) assoziiert sind. Das Domänennamen-Frontend 902 kann eingehende Verbindungen empfangen und die Verbindungen an Server verteilen, die verschiedene Nachrichtenübermittlungsdienste bereitstellen.
-
Der Nachrichtenübermittlungsdienst 902 kann einen oder mehrere Chat-Server 904 beinhalten. Die Chat-Server 904 können Frontend-Server zum Empfangen und Übertragen von Benutzer-zu-Benutzer-Nachrichtenübermittlungsaktualisierungen, wie etwa Chat-Nachrichten, beinhalten. Eingehende Verbindungen können den Chat-Servern 904 durch das Domänennamen-Frontend 902 basierend auf Arbeitsbelastungsausgleich zugewiesen werden.
-
Der Nachrichtenübermittlungsdienst 900 kann Backend-Server 908 beinhalten. Die Backend-Server 908 können spezialisierte Aufgaben zur Unterstützung der Chat-Operationen der Frontend-Chat-Server 904 durchführen. Es kann eine Vielzahl von unterschiedlichen Arten von Backend-Servern 908 verwendet werden. Es wird nachvollziehbar sein, dass die Zuweisung der Arten von Aufgaben zu unterschiedlichen Backend-Servern 908 in unterschiedlichen Ausführungsformen variieren kann. In einigen Ausführungsformen können einige der durch zweckgebundene Server bereitgestellten Backend-Dienste in einem einzelnen Server oder einem Satz von Servern vereint werden, die jeweils mehrere Aufgaben durchführen, die in der hierin beschriebenen Ausführungsformen zwischen unterschiedlichen Servern geteilt werden. Gleichermaßen können in einigen Ausführungsformen Aufgaben von einigen der zweckgebundenen Backend-Server, wie hierin beschrieben, zwischen unterschiedlichen Servern von unterschiedlichen Servergruppen geteilt werden.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Offline-Speicherungsserver 910 beinhalten. Der eine oder die mehreren Offline-Speicherungsserver 910 können Nachrichtenübermittlungsinhalt für Nachrichtenübermittlungsclients, die aktuell offline sind, speichern, die gehalten werden, bis die Nachrichtenübermittlungsclients wieder verbunden werden.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Sitzungsserver 912 beinhalten. Der eine oder die mehreren Sitzungsserver 912 können den Sitzungsstatus von verbundenen Nachrichtenübermittlungsclients pflegen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Präsenzserver 914 beinhalten. Der eine oder die mehreren Präsenzserver 914 können Präsenzinformationen für den Nachrichtenübermittlungsdienst 900 pflegen. Präsenzinformationen können benutzerspezifischen Informationen entsprechen, die angeben, ob ein gegebener Benutzer einen Online-Nachrichtenübermittlungsclient hat und für ein Chatten verfügbar ist, einen Online-Nachrichtenübermittlungsclient aufweist, aber aktuell von diesem entfernt ist, keinen Online-Nachrichtenübermittlungsclient aufweist, sowie andere Präsenzzustände angeben.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Push-Speicherungsserver 916 beinhalten. Der eine oder die mehreren Push-Speicherungsserver 916 können Push-Anforderungen zwischenspeichern und die Push-Anforderungen an die Nachrichtenübermittlungsclients übertragen. Push-Anforderungen können verwendet werden, um Nachrichtenübermittlungsclients aufzuwecken, um Nachrichtenübermittlungsclients zu benachrichtigen, dass eine Nachrichtenübermittlungsaktualisierung verfügbar ist, und um anderweitig serverseitig angesteuerte Interaktionen mit Nachrichtenübermittlungsclients durchzuführen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Gruppenserver 918 beinhalten. Der eine oder die mehreren Gruppenserver 918 können Listen von Gruppen pflegen, Benutzer zu Gruppen hinzufügen, Benutzer aus Gruppen entfernen und den Empfang, das Zwischenspeichern und Weiterleiten von Gruppen-Chat-Nachrichten durchführen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Blockierlistenserver 920 beinhalten. Der eine oder die mehreren Blockierlistenserver 920 können benutzerspezifische Blockierlisten pflegen, wobei die benutzerspezifischen Blockierlisten für Eingänge für jeden Benutzer den einen oder die mehreren anderen Benutzer angeben, denen verboten ist, Nachrichten an diesen Benutzer zu übertragen. Alternativ oder zusätzlich können der eine oder die mehreren Blockierlistenserver 920 benutzerspezifische Blockierlisten für Ausgänge pflegen, die für jeden Benutzer den einen oder die mehreren anderen Benutzer angeben, für die es diesem Benutzer verboten ist, Nachrichten zu übertragen. Es wird nachvollziehbar sein, dass Blockierlisten für Eingänge und Blockierlisten für Ausgänge im Verbund zum Beispiel in einer Datenbank gespeichert werden können, wobei die Blockierlisten für Eingänge und Blockierlisten für Ausgänge unterschiedliche Ansichten des gleichen Pools von Blockierinformationen darstellen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Zuletzt-Gesehene-Informationen-Server 922 beinhalten. Der eine oder die mehreren Zuletzt-Gesehene-Informationen-Server 922 können Informationen empfangen, speichern und pflegen, die den zuletzt gesehenen Ort, Status, Nachrichtenübermittlungsclient und andere Elemente einer letzten Verbindung eines Benutzers mit dem Nachrichtenübermittlungsdienst 900 angeben.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Schlüsselserver 924 beinhalten. Der eine oder die mehreren Schlüsselserver können öffentliche Schlüssel für eine mit öffentlichem/privatem Schlüssel verschlüsselte Kommunikation hosten.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Profilfotoserver 926 beinhalten. Der eine oder die mehreren Profilfotoserver 926 können für die Vielzahl von Benutzern des Nachrichtenübermittlungsdienstes 900 Profilfotos speichern und zum Abruf verfügbar machen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Spam-Protokollierungsserver 928 beinhalten. Der eine oder die mehreren Spam-Protokollierungsserver 928 können bekannten und vermuteten Spam (z. B. ungewünschte Nachrichten, insbesondere jene mit Werbecharakter) protokollieren. Der eine oder die mehreren Spam-Protokollierungsserver 928 können betriebsfähig sein, um Nachrichten zu analysieren, um zu bestimmen, ob sie Spam sind, und in einigen Ausführungsformen repressive Maßnahmen gegen vermutete Spammer (Benutzer, die Spam-Nachrichten senden) durchzuführen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Statistikserver 930 beinhalten. Der eine oder die mehreren Statistikserver können Statistikinformationen bezogen auf den Betrieb des Nachrichtenübermittlungsdiensts 900 und das Verhalten der Benutzer des Nachrichtenübermittlungsdienstes 900 kompilieren und speichern.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Webserver 932 beinhalten. Der eine oder die mehreren Webserver 932 können an Hypertext-Transport-Protokoll-Verbindungen (HTTP-Verbindungen) und Hypertext-Transport-Protokoll-Secure-Verbindungen (HTTPS-Verbindungen) mit Webbrowsern teilnehmen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Chat-Aktivitätsüberwachungsserver 934 beinhalten. Der eine oder die mehreren Chat-Aktivitätsüberwachungsserver 934 können die Chats von Benutzern überwachen, um nicht autorisiertes oder nicht gut geheißenes Verhalten von den Benutzern des Nachrichtenübermittlungsdienstes 900 zu überwachen. Der eine oder die mehreren Chat-Aktivitätsüberwachungsserver 934 können in Zusammenwirkung mit den Spam-Protokollierungsservern 928 und Blockierlistenservern 920 arbeiten, wobei der eine oder die mehreren Chat-Aktivitätsüberwachungsserver 934 Spam oder anderes nicht gut geheißenes Verhalten identifizieren und den Spam-Protokollierungsservern 928 Spam-Informationen und den Blockierlistenservern 920 gegebenenfalls Blockierungsinformationen bereitstellen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Syncserver 936 beinhalten. Der eine oder die mehreren Syncserver 936 können das Nachrichtenübermittlungssystem 500 mit Kontaktinformationen von einem Nachrichtenübermittlungsclient synchronisieren, wie etwa ein Adressbuch in einem Mobiltelefon, um Kontakte für einen Benutzer im Nachrichtenübermittlungsdienst 900 zu bestimmen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Multimedienserver 938 beinhalten. Der eine oder die mehreren Multimedienserver können Multimedien (z. B. Bilder, Video, Audio), die sich im Transit zwischen Nachrichtenübermittlungsclients befinden, Multimedien, die für Offline-Endpunkte zwischengespeichert sind, speichern und können an Multimedien eine Transcodierung durchführen.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Zahlungsserver 940 beinhalten. Der eine oder die mehreren Zahlungsserver 940 können Zahlungen von Benutzern verarbeiten. Der eine oder die mehreren Zahlungsserver 940 können mit externen Drittparteiservern für die Durchführung von Zahlungen verbunden sein.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Registrierungsserver 942 beinhalten. Der eine oder die mehreren Registrierungsserver 942 können neue Benutzer des Nachrichtenübermittlungsdienstes 900 registrieren.
-
Der Nachrichtenübermittlungsdienst 900 kann einen oder mehrere Sprachübermittlungsserver 944 beinhalten. Der eine oder die mehreren Sprachübermittlungsserver 944 können Voice-over-Internet-Protokoll-Sprachkommunikation (VolP-Sprachkommunikation) zwischen Nachrichtenübermittlungsclients für die Durchführung von VolP-Anrufen übermitteln.
-
Die oben beschriebenen Verfahren können als Anweisungen in einem rechnerlesbaren Medium oder als Teil einer Rechenarchitektur enthalten sein. 10 illustriert eine Ausführungsform einer beispielhaften Rechenarchitektur 1000, die zum Implementieren verschiedener Ausführungsformen, wie zuvor beschrieben, geeignet ist. In einer Ausführungsform kann die Rechenarchitektur 1000 eine elektronische Vorrichtung, wie etwa einen Rechner 1001, beinhalten oder als Teil einer solchen implementiert sein. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
-
Wie in dieser Anmeldung verwendet, sollen die Begriffe „System“ und „Komponente“ eine rechnerbezogene Entität, entweder Hardware, eine Kombination aus Hardware und Software, Software oder Software in Ausführung, bezeichnen, wobei Beispiele für diese durch die beispielhafte Rechnerarchitektur 1000 bereitgestellt werden. Eine Komponente kann zum Beispiel unter anderem ein auf einem Prozessor laufender Prozess, ein Prozessor, ein Festplattenlaufwerk, mehrere Speicherungslaufwerke (mit optischem und/oder magnetischem Speicherungsmedium), ein Objekt, ein ausführbares Element, ein Ausführungsfaden, ein Programm und/oder ein Rechner sein. Zwecks Illustration können sowohl eine Anwendung, die auf einem Server läuft, als auch der Server eine Komponente sein. Es können eine oder mehrere Komponenten in einem Prozess und/oder Ausführungsfaden vorliegen und eine Komponente kann sich in einem Rechner befinden und/oder zwischen zwei oder mehreren Rechnern verteilt sein. Des Weiteren können Komponenten durch verschiedene Arten von Kommunikationsmedien miteinander kommunikativ gekoppelt sein, um Operationen zu koordinieren. Die Koordination kann den eindirektionalen oder bidirektionalen Austausch von Informationen beinhalten. Beispielsweise können die Komponenten Informationen in Form von Signalen kommunizieren, die über die Kommunikationsmedien kommuniziert werden. Die Informationen können als Signale implementiert werden, die verschiedenen Signalleitungen zugeteilt sind. Bei solchen Zuteilungen ist jede Nachricht ein Signal. Weitere Ausführungsformen können jedoch alternativ Datennachrichten einsetzen. Solche Datennachrichten können über verschiedene Verbindungen gesendet werden. Beispielhafte Verbindungen umfassen parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen.
-
Die Rechenarchitektur 1000 umfasst verschiedene gängige Rechenelemente, wie etwa einen oder mehrere Prozessoren, Multikernprozessoren, Coprozessoren, Speichereinheiten, Chipsätze, Controller, Peripherien, Schnittstellen, Oszillatoren, Zeitsteuerungsvorrichtungen, Videokarten, Audiokarten, Multimedien-Eingangs-/- Ausgangskomponenten (I/O-Komponenten), Stromversorgungen usw. Die Ausführungsformen sind jedoch nicht auf eine Implementierung durch die Rechenarchitektur 1000 beschränkt.
-
Wie in 10 gezeigt, umfasst die Rechenarchitektur 1000 eine Bearbeitungseinheit 1002, einen Systemspeicher 1004 und einen Systembus 1006. Die Verarbeitungseinheit 1002 kann ein beliebiger von verschiedenen kommerziell erhältlichen Prozessoren sein, einschließlich ohne Einschränkung, Athlon®-, Duron®- und Opteron®-Prozessoren von AMD®; ARM®-Anwendung, eingebettete und sichere Prozessoren; DragonBall®- und PowerPC®-Prozessoren von IBM® und Motorola®; IBM- und Sony®-Zellprozessoren; Celeron®-, Core-(2)-Duo®-, Itanium®-, Pentium®-, Xeon®- und XScale®-Prozessoren von Intel®; und ähnliche Prozessoren. Duale Mikroprozessoren, Multikernprozessoren und andere Multiprozessorarchitekturen können ebenfalls als Verarbeitungseinheit 1002 eingesetzt werden.
-
Der Systembus 1006 stellt eine Schnittstelle für Systemkomponenten bereit, einschließlich, aber nicht beschränkt auf den Systemspeicher 1004 mit der Verarbeitungseinheit 1002. Der Systembus 1006 kann eine beliebige von mehreren Arten einer Bussstruktur sein, die weiter mit einem Speicherbus (mit oder ohne Speichercontroller), einem Peripheriebus und einem lokalen Bus unter Verwendung einer Reihe von kommerziell verfügbaren Busarchitekturen verbunden sein kann. Schnittstellenadapter können mit dem Systembus 1006 über eine Steckplatzarchitektur verbunden sein. Beispielhafte Steckplatzarchitekturen können ohne Einschränkung Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA) und dergleichen umfassen.
-
Die Rechenarchitektur 1000 kann verschiedene Herstellungsartikel beinhalten oder implementieren. Ein Herstellungsartikel kann ein rechnerlesbares Speicherungsmedium zum Speichern von Logik beinhalten. Beispiele für ein rechnerlesbares Speicherungsmedium können beliebige greifbare Medien umfassen, die fähig sind, elektronische Daten zu speichern, einschließlich flüchtige Speicher oder nicht flüchtige Speicher, entfernbare oder nicht entfernbare Speicher, löschbare oder nicht löschbare Speicher, beschreibbare oder wiederbeschreibbare Speicher usw. Beispiele für Logik können ausführbare Rechnerprogrammanweisungen umfassen, die unter Verwendung eines geeigneten Codetyps implementiert werden, wie etwa Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code, objektorientierter Code, visueller Code und dergleichen. Ausführungsformen können außerdem mindestens teilweise als Anweisungen implementiert werden, die in oder auf einem nicht transitorischen rechnerlesbaren Medium enthalten sind, welche von einem oder mehreren Prozessoren gelesen und ausgeführt werden können, um die Durchführung der hierin beschriebenen Operationen zu ermöglichen.
-
Der Systemspeicher 1004 kann verschiedene Arten von rechnerlesbaren Speicherungsmedien in Form von einer oder mehreren Hochgeschwindigkeitsspeichereinheiten umfassen, wie etwa Festwertspeicher (Read-Only Memory (ROM)), Direktzugriffsspeicher (Random-Access Memory (RAM)), dynamischer RAM (DRAM), Doppeldatenraten-DRAM (DDRAM), synchroner DRAM (SDRAM), statischer RAM (SRAM), programmierbarer ROM (PROM), löschbarer programmierbarer ROM (EPROM), elektrisch löschbarer programmierbarer ROM (EEPROM), Flash-Speicher, Polymer-Speicher, wie etwa ferroelektrischer Polymer-Speicher, Ovonic-Speicher, Phasenwechsel- oder ferroelektrischer Speicher, SiliziumOxid-Nitrid-Oxid-Silizium-Speicher (SONOS-Speicher), magnetische oder optische Karten, ein Array aus Vorrichtungen, wie etwa Redundant-Array-of-Independent-Disks-Laufwerke (RAID-Laufwerke), Festkörperspeichervorrichtungen (z. B. USB-Speicher, Festkörperlaufwerke (Solid State Drives, SSD) und andere Arten von Speicherungsmedien, die zum Speichern von Informationen geeignet sind. In der illustrierten in 10 gezeigten Ausführungsform kann der Systemspeicher 1004 einen nicht flüchtigen Speicher 1008 und/oder flüchtigen Speicher 1010 umfassen. Ein elementares Eingabe-/Ausgabesystem (Basic Input/output System, BIOS) kann in dem nicht flüchtigen Speicher 1008 gespeichert werden.
-
Die Rechenarchitektur 1000 kann verschiedene Arten von rechnerlesbaren Speicherungsmedien in Form von einer oder mehreren Niedriggeschwindigkeitsspeichereinheiten umfassen, einschließlich ein internes (oder externes) Festplattenlaufwerk (Hard Disk Drive, HDD) 1012, ein Magnetdiskettenlaufwerk (Floppy Disk Drive, FDD) 1014 zum Lesen von oder Schreiben auf eine entfernbare magnetische Diskette 1016 und ein optisches Diskettenlaufwerk 1018 zum Lesen von oder Schreiben auf eine entfernbare optische Diskette 1020 (z. B. eine CD-ROM oder DVD). Das HDD 1012, FDD 1014 und optische Diskettenlaufwerk 1020 können mit dem Systembus 1006 über eine HDD-Schnittstelle 1022, eine FDD-Schnittstelle 1024 bzw. eine optische Laufwerkschnittstelle 1026 verbunden sein. Die HDD-Schnittstelle 1022 für externe Laufwerkimplementierungen kann mindestens eine oder beide der Universal-Serial-Bus(USB)- und IEEE-694-Schnittstellentechnologien umfassen.
-
Die Laufwerke und assoziierten rechnerlesbaren Medien stellen eine flüchtige und/oder nicht flüchtige Speicherung von Daten, Datenstrukturen, rechenausführbaren Anweisungen usw. bereit. Zum Beispiel kann eine Reihe von Programmmodulen in den Laufwerken und Speichereinheiten 1008, 1012 gespeichert werden, einschließlich eines Betriebssystems 1028, eines oder mehrerer Anwendungsprogramme 1030, anderer Programmmodule 1032 und Programmdaten 1034. In einer Ausführungsform können das eine oder die mehreren Anwendungsprogramme 1030, anderen Programmmodule 1032 und Programmdaten 1034 zum Beispiel die verschiedenen Anwendungen und/oder Komponenten des Nachrichtenübermittlungssystems 500 umfassen.
-
Ein Benutzer kann Befehle und Informationen in den Rechner 1001 über eine oder mehrere drahtgebundene/drahtlose Eingabevorrichtungen eingeben, zum Beispiel eine Tastatur 1036 und eine Zeigevorrichtung, wie etwa eine Maus 1038. Andere Eingabevorrichtungen können Mikrofone, Infrarot-Fernsteuerungen (IR-Fernsteuerungen), Funkfrequenz-Fernsteuerungen (RF-Fernsteuerungen), Gamepads, Eingabestifte, Kartenleser, Kopierschutzstecker, Fingerabdruckleser, Handschuhe, Grafik-Tablets, Joysticks, Tastaturen, Netzhautleser, Berührungsbildschirme (z. B. kapazitive, resistive etc.), Trackkugeln, Trackpads, Sensoren, Stifte und dergleichen umfassen. Diese und andere Eingabevorrichtungen werden häufig mit der Verarbeitungseinheit 1002 über eine Eingabevorrichtungsschnittstelle 1040 verbunden, die mit dem Systembus 1006 gekoppelt ist, können aber auch über andere Schnittstellen verbunden werden, wie etwa einen Parallelport, einen IEEE-694-Seriellport, einen Gameport, einen USB-Port, eine IR-Schnittstelle usw.
-
Ein Monitor 1042 oder eine andere Anzeigevorrichtung ist ebenfalls mit dem Systembus 1006 über eine Schnittstelle, wie etwa einen Videoadapter 1044, verbunden. Der Monitor 1042 kann innerhalb oder außerhalb des Rechners 1001 sein. Zusätzlich zu dem Monitor 1042 umfasst ein Rechner typischerweise andere periphere Ausgabevorrichtungen, wie etwa Lautsprecher, Drucker usw.
-
Der Rechner 1001 kann in einer vernetzten Umgebung unter Verwendung von logischen Verbindungen über drahtgebundene und/oder drahtlose Kommunikationen mit einem oder mehreren entfernten Rechnern, wie etwa einem entfernten Rechner 1044, arbeiten. Der entfernte Rechner 1044 kann eine Workstation, ein Serverrechner, ein Router, ein persönlicher Rechner, ein tragbarer Rechner, ein mikroprozessorbasiertes Unterhaltungsgerät, eine Peer-Vorrichtung oder ein anderer gängiger Netzwerkknoten sein und umfasst typischerweise viele oder alle Elemente, die bezüglich des Rechners 1001 beschrieben werden, obwohl zum Zweck der Kürze nur eine Speicher-/Speicherungsvorrichtung 1046 illustriert wird. Die veranschaulichten logischen Verbindungen umfassen eine drahtgebundene/drahtlose Konnektivität mit einem lokalen Netzwerk (Local Area Network, LAN) 1048 und/oder größeren Netzwerken, zum Beispiel einem Weitbereichsnetzwerk (Wide Area Network, WAN) 1050. Solche LAN- und WAN-Netzwerkumgebungen sind in Büros und Unternehmen gängig und ermöglichen unternehmensweite Rechnernetzwerke, wie etwa Intranets, die allesamt mit einem globalen Kommunikationsnetzwerk, zum Beispiel dem Internet, verbunden werden können.
-
Wenn er in einer LAN-Netzwerkumgebung verwendet wird, wird der Rechner 1001 mit dem LAN 1048 über eine/einen drahtgebundene(n) und/oder drahtlose(n) Kommunikationsnetzwerkschnittstelle oder -adapter 1052 verbunden. Der Adapter 1052 kann drahtgebundene und/oder drahtlose Kommunikationen mit dem LAN 1048 ermöglichen, das auch einen darin angeordneten Zugangspunkt zum Kommunizieren mit der drahtlosen Funktionalität des Adapters 1052 umfasst.
-
Wenn er in einer WAN-Netzwerkumgebung verwendet wird, kann der Rechner 1001 ein Modem 1054 umfassen, oder er ist mit einem Kommunikationsserver im WAN 1050 verbunden, oder er weist Mittel zum Herstellen von Kommunikationen über das WAN 1050 auf, wie etwa mittels des Internets. Das Modem 1054, das innerhalb oder außerhalb und eine drahtgebundene und/oder drahtlose Vorrichtung sein kann, ist mit dem Systembus 1006 über die Eingabevorrichtungsschnittstelle 1040 verbunden. In einer vernetzten Umgebung können Programmmodule, die bezüglich des Rechners 1001 veranschaulicht werden, oder Abschnitte davon, in der entfernten Speicher-/Speicherungsvorrichtung 1046 gespeichert werden. Es wird nachvollziehbar sein, dass die gezeigten Netzwerkverbindungen beispielhaft sind und andere Mittel zum Herstellen einer Kommunikationsverbindung zwischen den Rechnern verwendet werden können.
-
Der Rechner 1001 ist betriebsfähig, um mit drahtgebundenen und drahtlosen Vorrichtungen oder Entitäten unter Verwendung der IEEE-802-Normenreihe zu kommunizieren, wie etwa drahtlosen Vorrichtungen, die betriebsfähig in drahtloser Kommunikation angeordnet sind (z. B. IEEE 802.13-Über-die-Luft-Modulationstechniken). Dies umfasst unter anderem mindestens die drahtlosen Technologien WiFi (oder Wireless Fidelity), WiMax und Bluetooth™. Die Kommunikation kann daher eine vordefinierte Struktur, wie bei einem herkömmlichen Netzwerk, oder einfach eine Ad-hoc-Kommunikation zwischen mindestens zwei Vorrichtungen sein. WiFi-Netzwerke verwenden Funktechnologien, sogenannte IEEE 802.13x (a, b, g, n etc.), um eine sichere, zuverlässige, schnelle drahtlose Konnektivität bereitzustellen. Ein WiFi-Netzwerk kann verwendet werden, um Rechner miteinander, mit dem Internet und mit drahtgebundenen Netzwerken (die IEEE 802.3-bezogene Medien und Funktionen verwenden) zu verbinden.
-
11 ist eine Blockdarstellung, die eine beispielhafte Kommunikationsarchitektur 1100 veranschaulicht, die zum Implementieren verschiedener Ausführungsformen, wie zuvor beschrieben, geeignet ist. Die Kommunikationsarchitektur 1100 umfasst verschiedene gängige Kommunikationselemente, wie etwa Sender, Empfänger, Sendeempfänger, Funkgerät, Netzwerkschnittstelle, Basisbandprozessor, Antenne, Verstärker, Filter, Stromversorgungen usw. Die Ausführungsformen sind jedoch nicht auf eine Implementierung durch die Kommunikationsarchitektur 1100 beschränkt.
-
Wie in 11 gezeigt, umfasst die Kommunikationsarchitektur 1100 einen oder mehrere Clients 1102 und Server 1104. Die Clients 1102 können die Clientvorrichtung 510 implementieren. Die Server 1104 können die Servervorrichtung 526 implementieren. Die Clients 1102 und die Server 1104 sind mit einem oder mehreren jeweiligen Clientdatenspeichern 1106 und Serverdatenspeichern 1108 betriebsfähig verbunden, die eingesetzt werden können, um Informationen lokal zu den jeweiligen Clients 1102 und Servern 1104 zu speichern, wie etwa Cookies und/oder assoziierte kontextuelle Informationen.
-
Die Clients 1102 und die Server 1104 können Informationen untereinander unter Verwendung eines Kommunikationsrahmens 1110 kommunizieren. Der Kommunikationsrahmen 1110 kann beliebige gut bekannte Kommunikationstechniken und -protokolle implementieren. Der Kommunikationsrahmen 1110 kann als ein paketvermitteltes Netzwerk (z. B. öffentliche Netzwerke, wie etwa das Internet, private Netzwerke, wie etwa ein Unternehmensintranet usw.), ein leitungsvermitteltes Netzwerk (z. B. das öffentliche Telefonnetz) oder eine Kombination aus einem paketvermittelten Netzwerk und einem leitungsvermittelten Netzwerk (mit geeigneten Gateways und Translatoren) implementiert werden.
-
Der Kommunikationsrahmen 1110 kann verschiedene Netzwerkschnittstellen implementieren, die angeordnet sind, um ein Kommunikationsnetzwerk zu akzeptieren, mit diesem zu kommunizieren und verbunden zu werden. Eine Netzwerkschnittstelle kann als eine spezielle Form einer Eingabe-/Ausgabeschnittstelle betrachtet werden. Netzwerkschnittstellen können Verbindungsprotokolle einsetzen, einschließlich ohne Einschränkung Direct-Connect, Ethernet (z. B. Thick-, Thin-, Twisted-Pair -10/100/1000-Base-T und dergleichen), Token-Ring, drahtlose Netzwerkschnittstellen, Mobilfunknetzwerkschnittstellen, IEEE 802.11a-x-Netzwerkschnittstellen, IEEE 802.16-Netzwerkschnittstellen, IEEE 802.20-Netzwerkschnittstellen und dergleichen. Des Weiteren können mehrere Netzwerkschnittstellen verwendet werden, um mit verschiedenen Kommunikationsnetzwerktypen zu arbeiten. Zum Beispiel können mehrere Netzwerkschnittstellen eingesetzt werden, um die Kommunikation über Broadcast-, Multicast- und Unicast-Netzwerke zu erlauben. Sollten Verarbeitungsanforderungen eine größere Geschwindigkeit und Kapazität verlangen, können verteilte Netzwerkcontrollerarchitekturen in ähnlicher Weise eingesetzt werden, um die von Clients 1102 und den Servern 1104 erforderliche Kommunikationsbandbreite zu bündeln, für diese einen Lastausgleich vorzunehmen oder diese anderweitig zu erhöhen. Ein Kommunikationsnetzwerk kann ein beliebiges und die Kombination von drahtgebundenen und/oder drahtlosen Netzwerken sein, einschließlich ohne Einschränkung eine direkte Verbindung, eine gesicherte kundenspezifische Verbindung, ein privates Netzwerk (z. B. ein Unternehmensintranet), ein öffentliches Netzwerk (z. B. das Internet), ein persönliches Bereichsnetzwerk (Personal Area Network, PAN), ein lokales Netzwerk (LAN), ein breitbandiges Telekommunikationsnetz (Metropolitan Area Network, MAN), ein Operating-Missions-as-Nodes-on-the-Internet (OMNI), ein Weitbereichsnetzwerk (WAN), ein drahtloses Netzwerk, ein Mobilfunknetzwerk und andere Kommunikationsnetzwerke.
-
12 illustriert eine Ausführungsform einer Vorrichtung 1200 zur Verwendung in einem Multiträger-OFDM-System, wie etwa dem Nachrichtenübermittlungssystem 500. Die Vorrichtung 1200 kann zum Beispiel Softwarekomponenten 1202, wie mit Bezug auf die Nachrichtenübermittlungskomponentenlogik 600, die Absichtsbestimmungslogik 700 und die Gruppenauswahllogik 800 beschrieben, implementieren. Die Vorrichtung 1200 kann auch eine Logikschaltung 1204 implementieren. Die Logikschaltung 1204 kann physische Schaltungen umfassen, um für das Nachrichtenübermittlungssystem 500 beschriebene Operationen durchzuführen. Wie in 12 gezeigt, kann die Vorrichtung 1200 eine Funkschnittstelle 1206, Basisbandschalttechnik 1208 und eine Rechenplattform 1210 umfassen, obwohl Ausführungsformen nicht auf diese Konfiguration beschränkt sind.
-
Die Vorrichtung 1200 kann einen Teil oder die gesamte Struktur und/oder einige oder alle der Operationen für das Nachrichtenübermittlungssystem 500 und/oder die Logikschaltung 1204 in einer einzelnen Rechenentität, wie etwa gänzlich innerhalb einer einzelnen Vorrichtung, implementieren. Alternativ kann die Vorrichtung 1200 Abschnitte der Struktur und/oder Operationen für das Nachrichtenübermittlungssystem 500 und/oder die Logikschaltung 1204 einer verteilten Systemarchitektur über mehrere Rechenentitäten verteilen, wie etwa unter Verwendung einer Client-Server-Architektur, einer 3-Ebenen-Architektur, einer N-Ebenen-Architektur, einer eng gekoppelte oder gruppierte Architektur, einer Peer-to-Peer-Architektur, einer Master-Slave-Architektur, einer geteilten Datenbankarchitektur und anderer Typen von verteilten Systemen. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
-
In einer Ausführungsform kann die Funkschnittstelle 1206 eine Komponente oder Kombination von Komponenten umfassen, die angepasst sind zum Übertragen und/oder Empfangen von modulierten Einzelträger- oder Multiträger-Signalen (z. B. einschließlich Complementary-Code-Keying-Symbole (CCK-Symbole) und/oder Orthogonal-Frequency-Division-Multiplexing-Symbole (OFDM-Symbole)), obwohl die Ausführungsformen nicht auf ein spezifisches Über-die-Luft-Schnittstellen- oder Modulations-Schema beschränkt sind. Die Funkschnittstelle 1206 kann zum Beispiel einen Empfänger 1212, einen Sender 1214 und/oder einen Frequenzsynthesizer 1216 umfassen. Die Funkschnittstelle 1206 kann Bias-Steuerungen, einen Quarzoszillator und/oder eine oder mehrere Antennen 1218 umfassen. In einer anderen Ausführungsform kann die Funkschnittstelle 1206 je nach Wunsch externe spannungsgesteuerte Oszillatoren (Voltage-Controlled Oscillators, VCOs), Akustische-Oberflächenwellenfilter, Zwischenfrequenzfilter (IF-Filter, IF = Intermediate Frequency) und/oder RF-Filter verwenden. Aufgrund der Vielfalt von potenziellen RF-Schnittstellendesigns wird eine expansive Beschreibung von diesen ausgelassen.
-
Die Basisbandschalttechnik 1208 kann mit der Funkschnittstelle 1206 kommunizieren, um Signale zu empfangen und/oder zu übertragen, und kann zum Beispiel einen Analog-zu-Digital-Wandler 1220 zum Abwärtswandeln von empfangenen Signalen und einen Digital-zu-Analog-Wandler 1222 zum Aufwärtswandeln von Signalen zur Übertragung umfassen. Des Weiteren kann die Basisbandschalttechnik 1208 eine Basisbandverarbeitungsschaltung oder eine Bitübertragungsschichtverarbeitungsschaltung (PHY-Verarbeitungsschaltung, PHY = Physical Layer) 1224 zur PHY-Verbindungsschichtverarbeitung von jeweiligen Empfangs-/Sendesignalen umfassen. Die Basisbandschalttechnik 1208 kann zum Beispiel eine Verarbeitungsschaltung 1226 zur Medienzugriffssteuerungsverarbeitung (MAC-Verarbeitung, MAC = Medium Access Control)/Datenverbindungsschichtverarbeitung umfassen. Die Basisbandschalttechnik 1208 kann einen Speichercontroller 1228 zum Kommunizieren mit der Verarbeitungsschaltung 1226 und/oder einer Rechenplattform 1210, zum Beispiel über eine oder mehrere Schnittstellen 1230, umfassen.
-
In einigen Ausführungsformen kann die PHY-Verarbeitungsschaltung 1224 eine Rahmenonstruktions- und/oder ein Detektionsmodul, in Kombination mit zusätzlicher Schatltechnik, wie etwa einem Pufferspeicher, umfassen, um Kommunikationsrahmen, wie etwa Funkrahmen zu konstruieren und/oder dekonstruieren. Alternativ oder zusätzlich kann die MAC-Verarbeitungsschaltung 1226 die Verarbeitung für gewisse dieser Funktionen teilen oder diese Prozesse unabhängig von der PHY-Verarbeitungsschaltung 1224 durchführen. Bei einigen Ausführungsformen kann die MAC- und PHY-Verarbeitung in eine einzelne Schaltung integriert sein.
-
Die Rechenplattform 1210 kann eine Rechenfunktionalität für die Vorrichtung 1200 bereitstellen. Wie gezeigt, kann die Rechenplattform 1210 eine Verarbeitungskomponente 1232 umfassen. Zusätzlich oder alternativ zu der Basisbandschalttechnik 1208 kann die Vorrichtung 1200 Verarbeitungsoperationen oder Logik für das Nachrichtenübermittlungssystem 500 und die Logikschaltung 1204 unter Verwendung der Verarbeitungskomponente 1232 ausführen. Die Verarbeitungskomponente 1232 (und/oder die PHY 1224 und/oder MAC 1226) kann verschiedene Hardwareelemente, Softwareelemente oder eine Kombination von beiden beinhalten. Beispiele für Hardwareelemente können Vorrichtungen, logische Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Prozessorschaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare logische Vorrichtungen (PLD), digitale Signalprozessoren (DSP), ein frei programmierbares Gatearray (FPGA), Speichereinheiten, Logikgates, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze usw. umfassen. Beispiele für Softwareelemente können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Softwareentwicklungsprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Abläufe, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API), Anweisungssätze, Rechencode, Rechnercode, Codesegmente, Rechnercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon umfassen. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, wird gemäß einer Reihe von Faktoren je nach Wunsch für eine gegebene Implementierung variieren, wie etwa gewünschte rechnerische Rate, Leistungsniveaus, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingabedatenraten, Ausgabedatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und andere Design- oder Performancebeschränkungen.
-
Die Rechenplattform 1210 kann ferner andere Plattformkomponenten 1234 umfassen. Andere Plattformkomponenten 1234 umfassen gängige Rechenelemente, wie etwa einen oder mehrere Prozessoren, Multikernprozessoren, Coprozessoren, Speichereinheiten, Chipsätze, Controller, Peripherien, Schnittstellen, Oszillatoren, Zeitsteuerungsvorrichtungen, Videokarten, Audiokarten, Multimedien-Eingangs-/- Ausgangskomponenten (I/O-Komponenten) (z. B. digitale Anzeigen), Stromversorgungen usw. Beispiele für Speichereinheiten können ohne Einschränkung verschiedene Arten von rechnerlesbaren und maschinenlesbaren Speicherungsmedien in Form von einer oder mehreren Hochgeschwindigkeitsspeichereinheiten umfassen, wie etwa Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), dynamischer RAM (DRAM), Doppeldatenraten-DRAM (DDRAM), synchroner DRAM (SDRAM), statischer RAM (SRAM), programmierbarer ROM (PROM), löschbarer programmierbarer ROM (EPROM), elektrisch löschbarer programmierbarer ROM (EEPROM), Flash-Speicher, Polymer-Speicher, wie etwa ferroelektrischer Polymer-Speicher, Ovonic-Speicher, Phasenwechsel- oder ferroelektrischer Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium-Speicher (SONOS-Speicher), magnetische oder optische Karten, ein Array aus Vorrichtungen, wie etwa Redundant-Array-of-Independent-Disks-Laufwerke (RAID-Laufwerke), Festkörperspeichervorrichtungen (z. B. USB-Speicher, Festkörperlaufwerke (SSD) und andere Arten von Speicherungsmedien, die zum Speichern von Informationen geeignet sind.
-
Die Vorrichtung 1200 kann zum Beispiel eine Ultramobilvorrichtung, eine Mobilvorrichtung, eine Festvorrichtung, eine Maschine-zu-Maschine(M2M)-Vorrichtung, ein persönlicher digitaler Assistent (PDA), eine mobile Rechenvorrichtung, ein Smartphone, ein Telefon, ein digitales Telefon, ein Mobilfunktelefon, ein Benutzergerät, eBook-Lesegeräte, ein Handapparat, ein Einweg-Pager, ein Zweiweg-Pager, eine Nachrichtenübermittlungsvorrichtung, ein Rechner, ein persönlicher Rechner (PC), ein Tischrechner, ein Laptoprechner, ein Notebookrechner, ein Netbookrechner, ein handgehaltener Rechner, ein Tabletrechner, ein Server, ein Serverarray oder eine Serverfarm, ein Webserver, ein Netzwerkserver, ein Internetserver, eine Workstation, ein Minirechner, ein Großrechner, ein Supercomputer, ein Netzwerkgerät, ein Webgerät, ein verteiltes Rechensystem, Multiprozessorsysteme, prozessorbasierte Systeme, Verbraucherelektronik, programmierbare Verbraucherelektronik, Gamevorrichtungen, ein Fernsehgerät, ein digitales Fernsehgerät, eine Set-Top Box, ein drahtloser Zugangspunkt, eine Basisstation, ein Knoten B, ein evolvierter Knoten B (eNB), eine Teilnehmerstation, ein mobiles Teilnehmerzentrum, ein Funknetzwerkcontroller, ein Router, ein Hub, ein Gateway, eine Brücke, ein Schalter, eine Maschine oder eine Kombination davon sein. Demgemäß können Funktionen und/oder spezifische Konfigurationen der hierin beschriebenen Vorrichtung 1200 in verschiedenen Ausführungsformen der Vorrichtung 1200 je nach Wunsch eingeschlossen oder ausgelassen werden. In einigen Ausführungsformen kann die Vorrichtung 1200 konfiguriert sein, um mit Protokollen und Frequenzen kompatibel zu sein, die mit einer/einem oder mehreren der 3GPP-LTE-Spezifikationen und/oder IEEE 1402.16-Standards für WMANs und/oder andere drahtlose Breitbandnetzwerke, wie hierin zitiert, assoziiert sind, obwohl die Ausführungsformen in dieser Hinsicht nicht beschränkt sind.
-
Ausführungsformen der Vorrichtung 1200 können unter Verwendung von Einzeleingabe-Einzelausgabe-Architekturen (SISO-Architekturen, SISO = Single Input Single Output) implementiert werden. Gewisse Implementierungen können jedoch mehrere Antennen (z. B. Antennen 1218) zur Übertragung/und oder zum Empfang unter Verwendung adaptiver Antennentechniken für Strahlenformung oder Spatial-Division-Multiple-Access (SDMA) und/oder unter Verwendung von MIMO-Kommunikationstechniken umfassen.
-
Die Komponenten und Merkmale der Vorrichtung 1200 können unter Verwendung einer beliebigen Kombination von diskreter Schalttechnik, anwendungsspezifischen integrierten Schaltungen (ASICs), Logikgates und/oder Einzelchiparchitekturen implementiert werden. Des Weiteren können die Merkmale der Vorrichtung 1200 unter Verwendung von Mikrocontrollern, programmierbaren Logikarrays und/oder Mikroprozessoren oder einer beliebigen Kombination der Vorstehenden, wo geeignet, implementiert werden. Es wird darauf hingewiesen, dass Hardware-, Firmware- und/oder Softwareelemente hierin zusammen oder individuell als „Logik“ oder „Schaltung“ bezeichnet sein können.
-
Es wird nachvollziehbar sein, dass die in der Blockdarstellung von 12 gezeigte beispielhafte Vorrichtung 1200 ein funktionell beschreibendes Beispiel vieler potenzieller Implementierungen darstellen kann. Demgemäß lässt eine Teilung, eine Auslassung oder ein Einschluss von Blockfunktionen, die in den begleitenden Figuren veranschaulicht werden, nicht darauf schließen, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen zwangsläufig in Ausführungsformen geteilt, ausgelassen oder eingeschlossen sind.
-
Mindestens ein rechnerlesbares Speicherungsmedium 1236 kann Anweisungen umfassen, die, wenn sie ausgeführt werden, ein System veranlassen, beliebige der hierin beschriebenen rechnerimplementierten Verfahren durchzuführen.
-
Generelle Hinweise zur Terminologie
-
Einige Ausführungsformen können unter Verwendung des Ausdrucks „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ samt deren Ableitungen beschrieben sein. Diese Begriffe bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, beschrieben in Verbindung mit der Ausführungsform, in mindestens einer einzelnen Ausführungsform der Erfindung eingeschlossen ist. Der Ausdruck „in einer einzelnen Ausführungsform“ an verschiedenen Stellen in dieser Patentschrift bezieht sich nicht unbedingt auf die gleiche Ausführungsform. Außerdem ist zu erkennen, sofern nichts anderes angegeben, dass die oben beschriebenen Merkmale in einer beliebigen Kombination zusammen verwendet werden können. Daher können etwaige getrennt erörterte Merkmale miteinander in Kombination eingesetzt werden, es sei denn, es wird angegeben, dass die Merkmale nicht miteinander kompatibel sind.
-
Mit generellem Bezug auf die hierin verwendeten Notationen und die hierin verwendete Nomenklatur können die detaillierten Beschreibungen hierin im Hinblick auf Programmabläufe präsentiert werden, die in einem Rechner oder einem Netzwerk von Rechnern ausgeführt werden. Diese Ablaufbeschreibungen und Darstellungen werden von Fachleuten auf dem Gebiet verwendet, um den Inhalt ihrer Arbeit anderen Fachleuten auf dem Gebiet am effektivsten zu vermitteln.
-
Ein Ablauf gilt hier und generell als eine in sich konsistente Sequenz von Operationen, die zu einem gewünschten Ergebnis führen. Diese Operationen sind jene, die physische Manipulationen von physischen Größen erfordern. Gewöhnlich, aber nicht unbedingt, liegen diese Größen in Form von elektrischen, magnetischen oder optischen Signalen vor, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat sich manchmal als praktisch erwiesen, prinzipiell aus Gründen gemeinsamer Nutzung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Nummern oder dergleichen zu bezeichnen. Es sollte jedoch beachtet werden, dass alle diese und ähnliche Begriffe mit entsprechenden physischen Größen assoziiert sein sollen und lediglich praktische Bezeichnungen für diese Größen sind.
-
Des Weiteren werden die durchgeführten Manipulationen häufig mit Begriffen wie Hinzufügen oder Vergleichen bezeichnet, die gängigerweise mit mentalen Operationen assoziiert sind, die von einem menschlichen Bediener durchgeführt werden. Eine solche Fähigkeit eines menschlichen Bedieners ist in den meisten Fällen bei den hierin beschriebenen Operationen, die Teil von einer oder mehreren Ausführungsformen bilden, nicht notwendig oder wünschenswert. Vielmehr sind die Operationen Maschinenoperationen. Nützliche Maschinen zum Durchführen von Operationen von verschiedenen Ausführungsformen umfassen digitale Allzweckrechner oder ähnliche Vorrichtungen.
-
Einige Ausführungsformen können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ samt deren Ableitungen beschrieben sein. Diese Begriffe sind nicht unbedingt als Synonyme füreinander gedacht. Einige Ausführungsformen können zum Beispiel unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ beschrieben sein, um anzugeben, dass sich zwei oder mehrere Elemente in direktem physischen oder elektrischen Kontakt miteinander befinden. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass sich zwei oder mehrere Elemente nicht in direktem Kontakt miteinander befinden, aber dennoch miteinander zusammenwirken oder interagieren.
-
Verschiedene Ausführungsformen beziehen sich auch auf Einrichtungen oder Systeme zum Durchführen dieser Operationen. Diese Einrichtung kann speziell für den erforderlichen Zweck konstruiert sein oder kann einen Allzweckrechner beinhalten, der durch ein im Rechner gespeichertes Rechnerprogramm selektiv aktiviert oder rekonfiguriert wird. Die hierin präsentierten Abläufe beziehen sich nicht inhärent auf einen bestimmten Rechner oder eine andere Einrichtung. Es können verschiedene Allzweckmaschinen mit Programmen, die gemäß den hierin beschriebenen Lehren geschrieben sind, verwendet werden, oder es kann sich als praktisch erweisen, eine spezialisiertere Einrichtung zu bauen, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für eine Reihe dieser Maschinen wird aus der gegebenen Beschreibung ersichtlich sein.
-
Es wird betont, dass die Zusammenfassung der Offenbarung bereitgestellt wird, um einem Leser zu erlauben, die Art der technischen Offenbarung schnell festzustellen. Sie wird mit dem Verständnis eingereicht, dass sie nicht verwendet werden wird, um den Umfang oder die Bedeutung der Ansprüche zu interpretieren oder zu begrenzen. Darüber hinaus geht aus der vorliegenden detaillierten Beschreibung hervor, dass zum Zweck der Rationalisierung der Offenbarung verschiedene Merkmale in einer einzelnen Ausführungsform zusammengefasst sind. Dieses Verfahren der Offenbarung ist nicht als eine Absicht dahingehend zu interpretieren, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als in jedem Patentanspruch ausdrücklich zitiert sind. Vielmehr liegt, wie die folgenden Patentansprüche zeigen, der erfinderische Gegenstand in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform vor. Daher sind die folgenden Ansprüche hiermit in die detaillierte Beschreibung eingebunden, wobei jeder Anspruch für sich allein als separate Ausführungsform steht. In den anhängenden Ansprüchen werden die Begriffe „umfassend“ und „bei denen“ jeweils als einfache Äquivalente der jeweiligen Begriffe „beinhaltend“ und „wobei“ verwendet. Außerdem werden die Begriffe „erste/r/s“, „zweite/r/s“ und „dritte/r/s“ usw. nur als Kennzeichnungen verwendet und sollen ihren Objekten keine numerischen Anforderungen auferlegen.
-
Das oben Beschriebene umfasst Beispiele der offenbarten Architektur. Es ist natürlich nicht möglich, jede denkbare Kombination von Komponenten und/oder Methodologien zu beschreiben, ein durchschnittlicher Fachmann auf dem Gebiet wird jedoch erkennen, dass viele weitere Kombinationen und Permutationen möglich sind. Demgemäß soll die neuartige Architektur alle Abwandlungen, Modifikationen und Varianten einschließen, die innerhalb des Wesens und des Umfangs der anhängenden Ansprüche fallen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-