DE102020118411A1 - METHODS AND SYSTEMS FOR TRANSMITTING AN IMAGE IN Sentences - Google Patents

METHODS AND SYSTEMS FOR TRANSMITTING AN IMAGE IN Sentences Download PDF

Info

Publication number
DE102020118411A1
DE102020118411A1 DE102020118411.5A DE102020118411A DE102020118411A1 DE 102020118411 A1 DE102020118411 A1 DE 102020118411A1 DE 102020118411 A DE102020118411 A DE 102020118411A DE 102020118411 A1 DE102020118411 A1 DE 102020118411A1
Authority
DE
Germany
Prior art keywords
image
data
thumbnail
encrypted
additional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020118411.5A
Other languages
German (de)
Inventor
Aaron Patel
Jonathan Sheller
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WhatsApp LLC
Original Assignee
WhatsApp LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/878,883 external-priority patent/US11178079B1/en
Priority claimed from US16/878,902 external-priority patent/US11425205B1/en
Application filed by WhatsApp LLC filed Critical WhatsApp LLC
Publication of DE102020118411A1 publication Critical patent/DE102020118411A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/10Multimedia information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • H04L9/0844Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services

Abstract

Ausführungsbeispiele beziehen sich auf Techniken zum Verbessern der Geschwindigkeit und Wiedergabequalität eines Bildes (z. B. eines JPEGs) und sind insbesondere in einer verschlüsselten End-zu-End-Umgebung nützlich. Das Bild kann auf der Seite des sendenden Clients analysiert werden und die Bilddaten werden in mehrere Kategorien aufgeteilt. In einer Ausführungsform werden die Bilddaten in vier Sätze aufgeteilt, wobei jeder Satz (in Verbindung mit vorangegangenen Sätzen) wiedergegeben werden kann, um zunehmend hohe Qualitätsniveaus bereitzustellen (z. B. einen Miniaturansichtsatz, einen Mittelqualitätssatz, einen Hochqualitätssatz und einen Vollqualitätssatz). Das Bild wird zu einem Blob-Speicher hochgeladen und eine Nachricht wird an den empfangenden Client mit Bildinformationen gesendet. Auf der Empfängerseite werden die JPEG-Bilddaten aus dem Blob-Speicher abgerufen und jeder Satz wird mit progressiv zunehmenden Qualitätsniveaus wiedergegeben. Folglich werden Bilder schneller wiedergegeben und verbessert sich die Qualität im Verlauf der Zeit.Embodiments relate to techniques for improving the speed and rendering quality of an image (e.g., a JPEG) and are particularly useful in an end-to-end encrypted environment. The image can be analyzed on the side of the sending client and the image data is divided into several categories. In one embodiment, the image data is divided into four sets, each set (in conjunction with previous sets) can be rendered to provide increasingly high levels of quality (e.g., a thumbnail set, a medium quality set, a high quality set, and a full quality set). The image is uploaded to a blob storage and a message is sent to the receiving client with image information. On the receiving end, the JPEG image data is retrieved from the blob memory and each sentence is played back with progressively increasing quality levels. As a result, images are reproduced faster and the quality improves over time.

Description

VERWANDTE ANMELDUNGENRELATED REGISTRATIONS

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.This application claims priority of the provisional U.S. Patent Application 62,874,554 , filed July 16, 2019 and entitled "Progressive JPEGs". The contents of the above-mentioned application are hereby incorporated by reference.

HINTERGRUNDBACKGROUND

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.Some communication services, such as messaging services and social networking services, allow users to exchange communications with other users. The communications can include images (such as a JPEG image). In particular, if the image is of a relatively large size, it can take some time to receive and load on the recipient's device. For example, a common phenomenon when requesting images over a network is that the upper half of an image is initially loaded after a certain period of time, with the lower half remaining empty. As more data is received, the rest of the image will eventually be filled in.

ÜBERSICHT DER ERFINDUNGSUMMARY OF THE INVENTION

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.Accordingly, the present invention discloses a method according to the appended claims. The method includes: receiving, via an end-to-end encrypted session between a sending device and a receiving device, a message including a reference to an image; Establishing a connection to a blob storage, wherein the blob storage contains an encrypted thumbnail of the image, first additional encrypted data which, when combined with the encrypted thumbnail, results in a low quality version of the image, and second additional encrypted data which when combined with the encrypted thumbnail and the first additional encrypted data, resulting in a high quality version of the image; Retrieve the encrypted thumbnail from the blob storage, decrypt the thumbnail, and display the thumbnail; Receiving a request to display the image; Retrieving the first additional encrypted data from the blob memory, decrypting the first additional data, and merging the decrypted first additional data with the thumbnail; and displaying the low quality version of the image.

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 an embodiment of the method according to the present invention, the blob memory can transmit information to the receiving device in a data stream and the method can further include: receiving a network quality parameter; Comparing the network quality parameter to a threshold associated with the high quality version of the image; Determining that the network quality parameter does not exceed the threshold; and terminating the data stream to cancel the transmission of the second additional encrypted data.

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 another embodiment of the method according to the present invention, the retrieval of the encrypted thumbnail view from the blob memory can be carried out automatically in direct response to the receipt of the message.

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 yet another embodiment of the method according to the present invention, the encrypted thumbnail, the first additional encrypted data and the second additional encrypted data can be stored together in an image structure and the message including the reference to the image can include: a first location in the image structure that separates the encrypted thumbnail from the first additional encrypted data, and a second location in the image structure that separates the first additional encrypted data from the second additional encrypted data.

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 a further embodiment of the method according to the present invention, the method can further include: receiving a request to forward the image to a second recipient; and retransmitting the first and second locations in the image structure while renouncing transcoding of the image is dispensed with.

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 another embodiment of the method according to the present invention, the retrieval of the encrypted thumbnail view from the blob memory, the retrieval of the first additional encrypted data from the blob memory and the retrieval of the second additional encrypted data from the blob memory in response to a single request for the image referenced in the message.

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.In another embodiment of the method according to the present invention, retrieving the encrypted thumbnail may include: downloading a data set that includes at least a portion of the encrypted thumbnail; Receiving a keyed-hash message authentication code (HMAC) in connection with the data set; Computing an HMAC over the downloaded data set; and comparing the calculated HMAC to the received HMAC to verify that the encrypted thumbnail has not been changed.

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.The present invention further discloses a non-transitory computer readable medium that stores instructions configured to cause a processor to: Receive, via an end-to-end encrypted session between a sending device and a receiving device, a message which includes a reference to an image; Establishing a connection to a blob storage, wherein the blob storage contains an encrypted thumbnail of the image, first additional encrypted data which, when combined with the encrypted thumbnail, results in a low quality version of the image, and second additional encrypted data which when combined with the encrypted thumbnail and the first additional encrypted data, resulting in a high quality version of the image; Retrieve the encrypted thumbnail from the blob storage, decrypt the thumbnail, and display the thumbnail; Receiving a request to display the image; Retrieving the first additional encrypted data from the blob memory, decrypting the first additional data, and merging the decrypted first additional data with the thumbnail; and displaying the low quality version of the image.

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 one embodiment of the non-transitory computer readable medium according to the invention, the blob storage can transmit information to the receiving device in a data stream and the non-transitory computer readable medium can further store instructions for: receiving a network quality parameter; Comparing the network quality parameter to a threshold associated with the high quality version of the image; Determining that the network quality parameter does not exceed the threshold; and terminating the data stream to cancel the transmission of the second additional encrypted data.

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 another embodiment of the non-transitory computer-readable medium according to the invention, the retrieval of the encrypted thumbnail from the blob memory can be performed automatically in direct response to the receipt of the message.

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 yet another embodiment of the non-transitory computer readable medium according to the invention, the encrypted thumbnail, the first additional encrypted data and the second additional encrypted data can be stored together in an image structure and the message comprising the reference to the image can include the following : a first location in the image structure that separates the encrypted thumbnail from the first additional encrypted data, and a second location in the image structure that separates the first additional encrypted data from the second additional encrypted data.

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 another embodiment of the non-transitory computer-readable medium according to the invention, the medium can further store instructions for: receiving a request to forward the image to a second recipient; and retransmitting the first and second locations in the image structure while renouncing transcoding of the image is dispensed with.

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 another embodiment of the non-transitory computer readable medium according to the invention, the retrieval of the encrypted thumbnail from the blob memory, the retrieval of the first additional encrypted data from the blob memory and the retrieval of the second additional encrypted data from the blob memory can be combined in response to a single request for the image referenced in the message.

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 yet another embodiment of the non-transitory computer readable medium according to the invention, retrieving the encrypted thumbnail may include: downloading a data set comprising at least a portion of the encrypted thumbnail; Receiving a key hash based message authentication code (HMAC) associated with the data set; Computing an HMAC over the downloaded data set; and comparing the calculated HMAC to the received HMAC to verify that the encrypted thumbnail has not been changed.

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 another aspect, the present invention discloses a device according to the appended claims. The facility includes: a network interface configured to: receive, via an encrypted end-to-end session between a sending device and a receiving device, a message including a reference to an image; and connecting to a blob storage, wherein the blob storage contains an encrypted thumbnail of the image, first additional encrypted data that, when combined with the encrypted thumbnail, results in a low quality version of the image, and second additional encrypted data that, when combined with the encrypted thumbnail and the first additional encrypted data result in a high quality version of the image, holds; a processor configured to: retrieve the encrypted thumbnail from the blob memory, decrypt the thumbnail, and display the thumbnail; Receiving a request to display the image; and retrieving the first additional encrypted data from the blob memory, decrypting the first additional data, and merging the decrypted first additional data with the thumbnail; and a display configured to display the low quality version of the image.

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 one embodiment of the apparatus of the present invention, the blob memory can transmit information to the receiving device in a data stream and can further include: receiving a network quality parameter; Comparing the network quality parameter to a threshold associated with the high quality version of the image; Determining that the network quality parameter does not exceed the threshold; and terminating the data stream to cancel the transmission of the second additional encrypted data.

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 another embodiment of the device according to the present invention, the encrypted thumbnail, the first additional encrypted data and the second additional encrypted data can be stored together in an image structure and the message comprising the reference to the image can include: a first Location in the image structure that separates the encrypted thumbnail from the first additional encrypted data, and a second location in the image structure that separates the first additional encrypted data from the second additional encrypted data.

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 yet another embodiment of the device according to the present invention, the processor can further be configured to: receive a request to forward the image to a second recipient; and retransmitting the first and second locations in the image structure while renouncing transcoding of the image is dispensed with.

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 a further embodiment of the device according to the present invention, the retrieval of the encrypted thumbnail from the blob memory, the retrieval of the first additional encrypted data from the blob memory and the retrieval of the second additional encrypted data from the blob memory can be combined in response on a single request for the image referenced in the message.

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.In yet another embodiment of the apparatus according to the present invention, retrieving the encrypted thumbnail may include: downloading a data set comprising at least a portion of the encrypted thumbnail; Receiving a key hash based message authentication code (HMAC) associated with the data set; Computing an HMAC over the downloaded data set; and comparing the calculated HMAC to the received HMAC to verify that the encrypted thumbnail has not been changed.

FigurenlisteFigure list

  • 1A-1 E veranschaulichen das gleiche Bild mit verschiedenen Qualitätsniveaus gemäß einer Ausführungsform. 1A-1 E illustrate the same image at different quality levels according to one embodiment.
  • 2 veranschaulicht ein beispielhaftes Kommunikationssystem, das zum Übertragen eines Bildes in einer verschlüsselten End-zu-End-Weise geeignet ist. 2 Fig. 10 illustrates an exemplary communication system suitable for transmitting an image in an encrypted end-to-end manner.
  • 3 ist eine Blockdarstellung, die beispielhafte Rechensysteme veranschaulicht, die zum Umsetzen beispielhafter Ausführungsformen geeignet sind. 3 Figure 13 is a block diagram illustrating example computing systems suitable for implementing example embodiments.
  • 4A veranschaulicht eine beispielhafte Datenstruktur, die zum Speichern von Bilddaten gemäß einem Ausführungsbeispiel geeignet ist. 4A FIG. 11 illustrates an exemplary data structure suitable for storing image data according to an embodiment.
  • 4B veranschaulicht eine beispielhafte Nachrichtenstruktur gemäß einem Ausführungsbeispiel. 4B Figure 3 illustrates an example message structure according to an embodiment.
  • 5 ist eine beispielhafte Datenflussdarstellung, die den Informationsaustausch bei Rechensystemen in einer ersten Ausführungsform veranschaulicht. 5 Fig. 3 is an exemplary data flow diagram illustrating the exchange of information in computing systems in a first embodiment.
  • 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. 6A-6B 12 are flow charts illustrating example logic according to the first embodiment for encoding and sending an image from a sending client and receiving and decoding an image at the receiving client, respectively.
  • 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. 6C Figure 13 is a flow diagram illustrating exemplary image routing logic on the receiving client side for relaying a received image to another client.
  • 7 ist eine beispielhafte Datenflussdarstellung, die den Informationsaustausch bei Rechensystemen in einer zweiten Ausführungsform veranschaulicht. 7th is an exemplary data flow diagram illustrating the exchange of information in computing systems in a second embodiment.
  • 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. 8A-8B 12 are flow charts illustrating exemplary logic according to the second embodiment for encoding and sending an image from a sending client and receiving and decoding an image at the receiving client, respectively.
  • 9 ist eine Blockdarstellung, die ein Beispiel eines Systems für einen Nachrichtenübermittlungsdienst veranschaulicht; 9 Figure 13 is a block diagram illustrating an example of a system for a messaging service;
  • 10 ist eine Blockdarstellung, die eine beispielhafte Rechenvorrichtung illustriert, die zur Verwendung mit Ausführungsbeispielen geeignet ist; 10 Figure 3 is a block diagram illustrating an exemplary computing device suitable for use with embodiments;
  • 11 veranschaulicht eine beispielhafte Kommunikationsarchitektur; und 11 illustrates an exemplary communication architecture; and
  • 12 ist eine Blockdarstellung, die eine beispielhafte Multiträger-Kommunikationsvorrichtung veranschaulicht. 12 Figure 13 is a block diagram illustrating an exemplary multi-carrier communication device.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

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.Often on a network, images such as JPEGs are loaded top-down while data is being received. This is often due to the fact that such images are typically packetized and transmitted from a beginning to an end of the image data structure, which means that the image data, which form the first part of the image, completely precede the image data, the subsequent parts of the image form, be transmitted. As a result, while the image is being loaded, the user may not have a particularly good feel for the image, as initially no image data is available from the lower portion of the image.

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.To overcome this problem, some communication networks allow their users to automatically download images when communications including the images are received. In this way, the user can be provided with quick access to the full quality version of the image if he does not immediately open the message that includes the image. The problem with this is that in many cases a user never looks at the downloaded image, which means that the network bandwidth used to transmit this message has been wasted.

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.Another potential solution is to create a smaller "thumbnail" of the image. A user can view the thumbnail to see a preview of what the image will look like, and then select the thumbnail to download the full size image. This solution allows a user to preview the entire image and also has the advantage that if a user does not want to download the full image, the amount of information transmitted over the network can be reduced. If the user previews and decides they do not want to download the entire image, they can forego it and avoid the need to broadcast the full quality image - in this scenario only the smaller thumbnail was sent. In fact, if a user wishes to download the entire image, using a thumbnail in this way increases the total amount of data transmitted over the network, since both the full quality image and the smaller thumbnail have to be downloaded. Also, if the full-size image is loaded, it may still load from top to bottom. Using a conventional miniature view will therefore not cope with the problem that the full size image is loaded incrementally.

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.Another potential solution is to use a progressive JPEG. When an image is transmitted over a network, the full image is typically uploaded to an intermediate server which enables the transfer. The intermediate server scans the image multiple times using appropriate transcoding parameters to generate multiple versions of the image data. When these versions are transmitted to a recipient, the recipient can play them back in a way that is first blurry and then progressively clearer. This is an improvement over the top-down approach of non-progressive 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.However, the transmission of a progressive JPEG generally depends on the intermediate server that has to process the JPEG. With a progressive JPEG, the multiple scans of the image are performed according to a scan script that includes transcoding parameters that define the data that is encoded during each scan. A JPEG typically has three channels: a luma channel (Y) and two chroma channels (Cr and Cb). Each channel can contain 64 coefficients that provide the data for the channel: one DC coefficient and sixty-three AC coefficients. Some of the coefficients for certain channels affect the image more than others and so progressive JPEGs can send the most important, influential, and less data-intensive information in the first scan, then subsequently compensate for the effect of the rest of the data on the image with the amount of data necessary to achieve this effect in subsequent scans. To determine which of this data is included in which scan, the intermediate server analyzes the image, selects appropriate transcoding parameters, and generates or applies a scan script to define the various scans of the image. The image is then scanned multiple times according to the scanning script to generate appropriate image data which can then be streamed to a recipient device to allow the recipient device to progressively display the JPEG.

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.While this works well in traditional communication systems, there has recently been a trend towards end-to-end encrypted environments (E2EE). In an E2EE environment, the body of a communication is encrypted at the sending client and decrypted at the receiving client, in a way that ensures that no other actors can view the message. Therefore, any intermediate servers that handle the communication cannot view the communication content. If the message includes an image, the intermediate server cannot determine the transcoding parameters, making it difficult to efficiently transmit the image.

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.Embodiments overcome these and other problems related to image transmission and reception. The techniques described improve the speed and rendering quality of an image (such as a JPEG) and are particularly well suited for an end-to-end encrypted environment.

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.According to exemplary embodiments, the image can be analyzed on the side of the sending client and the image data can be divided into several categories or segments. In one embodiment, the image data is divided into two sets: a thumbnail set and a full quality image set. The full quality picture set depends on the thumbnail set so that the picture data from the thumbnail set is reused when the full picture is displayed using the full quality picture set.

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.The sending client determines the records, identifies the record sizes, and calculates hash-based message authentication codes (HMACs) on each of the records. The image data can be encrypted and uploaded to a blob memory and a notification message can be sent to the receiving client with the particular image information and an appropriate decryption key. The receiving client can first download the thumbnail set and use it to play a thumbnail; in some embodiments, the thumbnail set can be automatically downloaded when a message is received. The user on the receiving side can view the automatically downloaded thumbnail and determine if they want to download the full screen with high quality.

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).Accordingly, the low quality version of the image can be used as a thumbnail. However, this approach has several disadvantages over traditional thumbnails, which are typically smaller images that are independent (e.g., stored as a separate file) from the full quality images they represent. In the embodiments described herein, the low quality version includes data that can be combined with the medium quality data to generate a medium quality version (and then a high quality version) of the image. As a result, images are played back faster and the quality improves over time (instead of top-down loading like a traditional 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 addition, the sentences are entirely defined and processed at the clients, without the aid of the blob memory (which only holds the encrypted sentences) or the intermediate server (which simply transmits the encrypted message from the sender to the client). The intermediate server therefore does not have to process the image or prepare any transcoding parameters.

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.In another embodiment, the image data can be divided into more than two sets, each set being reproducible (in conjunction with previous sets) to provide increasingly high levels of quality. For example, if the image data is divided into four sets, the set may include a thumbnail set, a medium quality set, a high quality set, and a full quality set. At the receiving end, the image data can be retrieved from the blob memory and decrypted, and each sentence can be played back with progressively increasing quality levels. In some embodiments, clients on low quality networks can only request the sentences that result in a medium quality rendering, thereby consuming less data.

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.This brief overview is intended to serve as a non-limiting introduction to the concepts discussed in greater detail below. However, before discussing further exemplary embodiments, a brief note on data protection is provided first. A more detailed description of the privacy settings and authentication is addressed in conjunction with the following figures.

Ein Hinweis zum DatenschutzA note on data protection

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.Some embodiments described herein use training data or metrics, which may include information that is voluntarily provided by one or more users. In such embodiments, data protection can be implemented in a number of ways.

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.For example, the user may be asked to consent to data collection before user data is collected or used. The user can also be given the opportunity to decline data collection. Before the user agrees to the data collection, a description of the way in which the data will be used, how long the data will be retained and what security measures are in place to protect the data from disclosure.

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.Information that identifies the user from whom the data was collected can be deleted from or disassociated from the data. In the event that identifying information must be retained (e.g. to meet regulatory requirements), the user can determine the collection of the identifying information, the uses made with the identifying information and the period of time over which the identifying information is retained. Information that specifically identifies the user can be removed and replaced, for example, with a generic identification number or some other non-specific form of identification.

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.Once captured, the data can be stored in a secure data storage location that includes safeguards to prevent unauthorized access to the data. The data can be stored in an encrypted format. Identifying information and / or non-identifying information can be deleted from the data storage after a predetermined period of time.

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.While particular data protection techniques are described herein for purposes of illustration, one of ordinary skill in the art will recognize that data protection may be implemented in other ways. Further details regarding data protection are discussed below in the section describing network embodiments.

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 bereitgestelltAssuming a user's privacy policy is met, embodiments may be used in a variety of messaging systems, including messaging on a social network or on a mobile device (e.g., via a messaging client application or via a short messaging service), among other possibilities . Next, an overview of exemplary logic and processes for engaging in synchronous video calls in a messaging system is provided

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.To aid understanding, a number of examples are presented first, before detailed descriptions of the underlying implementations are given. It should be noted that these examples are only intended to be illustrative and that the present invention is not limited to the embodiments shown.

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.Referring now to the figures, like reference numbers are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the same. However, the novel embodiments can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form to facilitate description thereof. It is intended to cover all modifications, equivalents, and alternatives in accordance with the claimed subject matter. In the figures and the accompanying description, the terms "a" and "b" and "c" (and similar identifiers) are intended to be variables that represent any positive integer. Thus, for example, if an implementation sets a value for a = 5, then a complete set of components 122, illustrated as components 122-1 through 122-a, may include components 122-1, 122-2, 122-3, 122-4 and 122-5. The embodiments are not limited in this context.

Bilder mit verschiedenen QualitätenImages with different qualities

1A-1E veranschaulichen verschiedene Beispiele eines mit unterschiedlichen Qualitäten transcodierten Bildes gemäß einem Ausführungsbeispiel. 1A-1E illustrate various examples of an image transcoded with different qualities according to an embodiment.

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.This in 1E The final image illustrated is the full quality image encoded with 100% of the information making up the image. In the case of a JPEG, for example, this image may include data for all 64 coefficients for all three data channels (Y, Cr and Cb).

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.The first in 1A-1 B The illustrated image includes only a small amount of image data (e.g. approximately 20-45% of the image data, depending on the image). This image data can for example include all but the last two bits for the DC coefficients for all three image channels (Y, C and Cb). At full size ( 1A) this picture is clearly of a fairly low quality. However, if the size is reduced ( 1B) , the quality of the image may be sufficient to serve as a reasonable thumbnail.

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.The second in 1C Illustrated image includes additional data that corresponds to the data that the thumbnail of 1A form, supplement (e.g. approximately 36-67% of the image data, depending on the image). The low quality image data may include data from multiple scans; in one example, this may include the remaining bits from the DC coefficients for all three picture channels, as well as other data (e.g. the AC coefficients for both chroma channels and all but the last two bits of the AC coefficients of the Luma Canal). This image may be suitable for use as a low quality image. The resulting image will be of higher quality than the thumbnail, but the difference between this low quality image and the full quality image can be easily seen.

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.The third in 1D The illustrated image includes additional data that supplements the data making up the thumbnail and low quality image (e.g., approximately 56-81% of the image data, depending on the image). The medium quality image may include data from one or more samples; in one example, this may include the penultimate bit of the AC coefficients for the luma channel. This image may be suitable for use as a medium quality image. In reality, in many applications it can be difficult for the human eye to tell the difference between the mean quality image from 1D and the full quality image of 1E to make out. Therefore, especially when a user's network connection is not sufficiently fast or stable, the user's client device may choose to download only up to the medium quality image, thereby avoiding the need to transmit the rest of the data that will tell the difference between the medium quality version and the full quality version.

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.Finally, the full quality image ( 1E) include the remaining image data not captured by the thumbnail, low quality, and medium quality image data. In the example above, this would include the final bit of the AC coefficients from the Luma channel.

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.The four qualities in 1A-1E are just one example of how an image can be encoded with different qualities. In exemplary embodiments, images with only two qualities (e.g. a thumbnail version, as in 1A illustrated, and a full quality version as in 1E illustrated), three qualities (e.g. a thumbnail corresponding to the image of 1A corresponds to a low quality version similar to the image of 1C or 1D and a high quality version that matches the image of 1E corresponds to) or can be coded with more than four qualities.

Als Nächstes wird ein beispielhaftes System zum Verteilen von Bildern, wie die oben beschriebenen, mit Bezug auf 2 beschrieben.Next, an exemplary system for distributing images such as those described above will be described with reference to FIG 2 described.

Beispielhafte KommunikationsumgebungExemplary communication environment

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.As in 2 As shown, embodiments may include communication services (potentially including end-to-end encryption) and / or social network services between a sending client 202 and a receiving client 212-i , made possible by an intermediate server 204 , provide. Some embodiments described herein use server-side broadcasting to carry group messages and broadcasts. In the case of a server-side distribution process, the sending client transmits 202 a single copy of the message to the server 204 who then sends a copy of the update to the appropriate recipient clients 212-i sends. The intermediate server 204 can for this purpose client information in a client database 206 store, thereby distributing messages to the client devices 212-i becomes possible.

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.In order to transfer media and / or attachments, the communication system can also use a blob server 208 include that of a blob memory 210 hosts (this can be part of the intermediate server 204 hosted or can be deployed separately). When a message is sent that includes a media item (such as a picture or video), the media item can be sent to blob storage 210 when the message is uploaded to the receiving client 212-i is pushed. Optionally, the receiving client 212-i a low quality thumbnail can be provided while the original media item is in blob storage 210 is saved. When the receiving clients 212-i the receiving client can attempt to access the media element 212-i the media item from the blob server 208 request the requested media item from blob storage 210 and it to the receiving client 212-i sends. This can be done by establishing a streaming connection with the receiving client 212-i and transmitting the data as part of the stream.

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.The use of the blob storage 210 to transmit content (in particular in connection with the sending of an encrypted message), the content can be made available to the receiving clients 212-i enable, especially if a client is offline when the update is sent and / or if different clients 212-i try to access the content at different times.

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.In operation, embodiments may place the image processing logic that processes the images, divides them into scans, organizes the data image data in sets suitable for streaming, calculates key-hash-based message authentication code codes, routes the images, on the sending and receiving clients. The intermediate server 304 may be configured to forward only picture messages that include a reference to the picture that are then sent by the receiving clients 212-i from the blob server 208 is retrieved. Such logic is referred to below with reference to 3 described in detail.

Beispielhafte RechensystemeExemplary computing systems

3 ist eine Blockdarstellung, die ein beispielhaftes Antwortempfehlungssystem veranschaulicht, das zur Verwendung mit Ausführungsbeispielen geeignet ist. 3 Figure 13 is a block diagram illustrating an exemplary response recommendation system suitable for use with embodiments.

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.One client 300 can be used to capture an image, record an audio / video, display an image, and / or play an audio / video feed. The client 300 For example, it can be a computer, mobile device, special purpose media creation device, or any other suitable client device.

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.The client 300 can be an audio input device 302 such as a microphone. The audio input device 302 may record audio in the vicinity of the client device and pass the recorded audio to audio input logic 312 forward for processing. The audio input logic 312 can process the recorded audio, potentially with the aid of sound analysis logic to extract information from the audio (e.g. a textual transcript). The audio input logic 312 can for example perform speech-to-text processing, analyze tone and / or pitch in the audio, provide the audio directly to a machine learning system for analysis, etc.

Der Client 300 kann ferner eine Texteingabevorrichtung 304, wie etwa eine physische Tastatur oder eine Bildschirmtastatur, zum Eingeben von Text umfassen.The client 300 can also be a text input device 304 such as a physical keyboard or an on-screen keyboard for entering text.

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.The client 300 can be an image input device 306 such as a camera capable of recording still images and / or video. An image input logic 314 can process incoming graphic content, for example from the client-side image processing logic 600 and / or the client-side multi-sample logic 700 to be used.

Die Audioeingabelogik 312 und/oder die Bildeingabelogik 314 können zusätzlich oder alternativ am Server 330 liegen.The audio input logic 312 and / or the image input logic 314 can also or alternatively on the server 330 lie.

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.The client 300 can be an ad 308 such as a touch screen or other display device. The ad 308 can display a communication interface or social network interface including the in 1A-1E illustrated images.

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.The client 300 can be an audio output device 310 such as a speaker or an audio output jack. The audio output device 310 can play audio associated with an update, such as the audio track included in a video. The audio output device 310 can output the audio via an audio output logic 316 received in connection with the operating system 318 and / or an application 338 can work to provide output audio.

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.Any or all of the audio input devices 302 , the text input device 304 , the video input device 306 , the ad 308 and the audio output device 310 can / can in the client 400 be integrated or can / can outside of the client 300 deployed and with the client 300 be connected in a wired or wireless manner. These devices can also be used to support a communication application, such as a video calling application, a messaging application, or a social networking application.

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.An operating system 318 can the client 300 support and can use the audio input device 302 who have favourited the text input device 304 who have favourited video input device 306 , the ad 308 , the audio output device 310 , a memory 320 , an application 338 and / or a network interface 326 coordinate and / or control.

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.The memory 320 (e.g. RAM, ROM etc.) can contain data structures for use by the application 338 and / or the operating system 318 to save. The memory 320 can for example save a message made by the application 338 was received, the message including graphical content. In the memory 320 can take a picture 322 sent by the image input device 306 is captured and / or transferred from a sending client, as well as a miniature view 324 of the picture 322 if one is retrieved from the blob server, saved.

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.The client 300 can be an application 338 capable of sending and receiving communications on a network. These skills can also be used between multiple applications 338 be divided. The application 338 For example, it can be a communication application, a social networking application, or any other type of application that includes update and response capabilities.

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.The application 338 can include image and / or video capture logic 340 capable of capturing, processing, analyzing and displaying graphical content. The image / video capture logic 340 for example, may support interface logic configured to generate a social network interface or messaging interface.

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.The application 338 can also use an E2EE session setup logic 340 that is configured to establish an end-to-end encrypted session from a sending client to a receiving client over a communications network. The E2EE session establishment logic 340 For example, it can be configured to send an E2EE setup message from a sending client to a receiving client, the setup message including parameters (such as a decryption key) that allow the sender and recipient to encrypt and decrypt mutual messages so that Intermediate devices (such as the server 330 ) cannot read the message content.

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.For this purpose, the application 338 an encryption and decryption logic 342 that is configured to support messages sent over the E2EE connection encrypt and decrypt. The encryption and decryption logic 342 may employ any suitable encryption and decryption algorithm, such as the Advanced Encryption Standard (AES) algorithm, Diffie-Hellman algorithms and their variants, or any other suitable encryption algorithm.

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.The application 338 can also have picture coding / picture decoding logic 344 support that for processing an image 322 suitable is. The picture coding / decoding logic 344 can convert the image to a thumbnail and a full screen, as in the ones referring to 5-6B described embodiments, or in several intermediate image qualities, as in those with reference to FIG 7-8B described embodiments, split.

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.The application 338 can also include message transfer logic 346 support that is configured to generate a message containing information about the image 322 may include and the message to the server 330 to be transmitted to be retransmitted to a recipient client.

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.The application 338 , the memory 320 and the I / O devices can be accessed through the operating system 318 with a network interface 325 for communication in a network 328 such as the Internet. The network interface 326 For example, it may be a network interface card (NIC) or other suitable hardware and / or software for regulating network transmissions and receptions.

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).The client 300 can through the network interface 326 with a corresponding network interface 332 on a server 330 communicate. The server 330 can support for the application 338 and can provide messages from the client for this purpose 300 and receive them using message forwarding logic 334 forward to one or more receiving clients. The server 330 can also be a blob memory 336 to save an encoded and encrypted version of the image 322 support (or the blob storage 336 can be stored on a separate device).

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.Any or all of the logic described above can be executed via instructions on one or more hardware processors. The instructions can be stored on a physical, non-transitory, computer-readable storage medium.

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.It should be noted that although the logic and data structures in 3 be illustrated in a special configuration (with some on the client 300 and others on the server 3 30 ), other configurations are contemplated in connection with the present invention.

Beispielhafte DatenstrukturenExemplary data structures

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. 4A illustrates a data structure used to store image data 404 in encrypted user data 402 suitable is. The image data 404 can come in several qualities 404-i which can be determined and constructed by the sending client device. The qualities 404-i may each comprise one or more image samples and may be included in the image data 404 be presented in a sequential order so that the image quality increases when of a quality ( 404-i) going to the next (404-i + 1). For example, the first includes quality in 4A Data that is of thumbnail quality 404-1 while the second quality includes data that is of low quality 404-2 when this in conjunction with the data of the thumbnail quality 404-1 be reproduced.

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.The amount of image data that each quality 404-i may vary. In this example, thumbnail quality includes 404-1 for example eight blocks of data, for one data length 406-1 of 8. The low quality data 404-2 comprise twenty four blocks of data, for one data length 406-2 of 24. A first divisor 408-1 after eight blocks of data, there is a conceptual split point (it may or may not correspond to actual information stored in the data structure) between the thumbnail data 404-1 and the low quality data 404-2 represents. Likewise represents a second divisor 408-2 after thirty-two blocks of data, a conceptual split point between the low quality data 404-2 and the medium quality data 404-3 represent.

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.When the image data 402 are transmitted from the blob storage to the receiving client, they can be transmitted as part of an encrypted data stream. Such data streams can be transmitted in sets, with each set size being a multiple of the AES block size (e.g. 16 bytes). However, there is no guarantee that the dividers will 408-i between the different qualities 404-i will correspond to the division points between sentences. In the in 4A In the example illustrated, the first sentence has an endpoint 410-1 after 16 blocks, while the second set has an end point 410-2 after 32 blocks. Therefore, when the first sentence is transmitted, it becomes all of the thumbnail data 404-1 and one third of the low quality data 404-2 include. The second set becomes the rest of the low quality data 404-2 include.

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.The HMACs for the encrypted data stream are generally calculated over each record. Accordingly, the sending client can determine and perform the scans of the image and can also determine where the division points will be between the various sets. The sending client can calculate the HMACs using these records. The sending client can upload the image data to the blob storage and can transmit an image message containing information about the image to the receiving client. An example of such a picture message 450 is in 4B illustrated.

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.The picture message 450 can be the recipient or recipients 452 identify for the message. This information can be used by the server to route the message to the appropriate receiving client devices.

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.The picture message 450 can also encrypt message data 454 included by the encryption / decryption logic 342 on the client device 300 can be encrypted / decrypted. The payload 454 may include various encrypted message data. For example, a message body 456 Message information to be displayed on an interface of a messaging application. The message body 456 for example, may include text to be displayed in the message. If the message includes (or consists of) an image, the message body may 456 a reference 458 on the image, which can be stored remotely in blob memory. The reference 458 For example, it may include a pointer to the image in the blob memory or an identifier for the image so that the image can be retrieved from the blob memory.

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.The payload 454 may further include information describing how the image is broken down into different qualities so that it can be sequentially reconstructed by the receiving device. For example, the payload 454 the length (s) 460 of the data corresponding to each quality. In the case where the image data is divided into thumbnail and full image data, the length (s) 460 may be a single value that is the length of the thumbnail data 404-1 corresponds. If the data is divided into intermediate qualities, the length (s) 460 can be represented as an array or list comprising the length of the data corresponding to each image quality.

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.Using this information, the receiving client can determine where within each set any dividing lines between image data of different qualities may be. The receiving client can use this information to display the image with the appropriate quality and / or to end the data stream before downloading the full image if the network quality is relatively low.

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).Alternatively or additionally, the user data 454 include a list of where each scan of a progressive scan script begins. Accordingly, the image can be loaded as a progressive image (e.g. a progressive JPEG) by updating the UI each time a new sample is received. This can allow further intermediate stages within a particular image quality if the image quality is composed of several scans (see e.g. the low quality example in Table 1 below).

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.The payload 454 can also use the HMACs calculated by the transmitter 462 include for each image set. After receiving a sentence, the receiver can calculate its own HMAC for the sentence and use this with the HMAC 462 in the picture message 450 to compare. If the HMACs are the same, the receiver can verify the integrity of the received data. If the HMACs differ, then the data was either corrupted or manipulated during transmission. In this case, the recipient can take appropriate action, such as requesting a new copy of the data or terminating the transmission.

Ausführungsform zum Bereitstellen einer Miniaturansicht und eines VollbildsEmbodiment for providing a thumbnail and a full image

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. 5-6B provide data flow diagrams and flow charts describing a first embodiment in which an image is divided into a thumbnail and a full quality image. It is intended that the in 5A-6B illustrated embodiment in conjunction with any of the above thumbnail / full-screen embodiments described can be used and with the in 7-8B illustrated multi-sampling embodiments can be expanded.

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.As in 5 shown, the sending client can first send an end-to-end encryption setup message (E2EE setup message) 502 send to the intermediate server. The intermediate server can send the E2EE setup message 502 forward to the receiving client. The receiving client can send an E2EE setup response 504 and generate the answer 504 transferred to the server. The server can answer 504 to the sending client. The setup message 502 and the answer 504 may include all the information necessary to establish an E2EE session between the sending client and the receiving client.

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.At the sending client, a user can work with a communication application to compose a message (process 506 ). The message can include an image. In response to receiving a request to transmit the message, the image can be viewed using the in 6A process described are encoded and encrypted. The encrypted image data 508 can be uploaded to the blob server that comes with a place 510 of the image in the blob server can respond.

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.It can be a picture message 512 generated comprising encrypted message content; the encrypted message content can have the lengths of each set of data corresponding to different image qualities (see 4A-4B) , which include HMACs from each record in the image data and a reference to the image. The reference can be the image location received from the blob memory 510 be or be derived from it. The picture message 512 can be transmitted to the server and then transmitted from the server to the receiving client.

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.The receiving client can view the image message using the information from the E2EE setup and response messages 502 , 504 decrypt. The receiving client can recognize that the decrypted message includes a reference to an image and can determine whether automatic downloading of image thumbnails is enabled. For example, automatic downloading can be activated or deactivated in a setting of the user's communication application and automatic downloading can be deactivated in certain contexts (e.g. if the user is on a cellular data network, if the network is unstable or slow, etc.). If automatic download is enabled, the receiving client can make a request 514 transferred to the blob memory for downloading the thumbnail portion of the image data. This can build a data stream with the blob storage, initiate a download 516 of the image data referenced in the image message and terminating the data stream as soon as enough image data has been received to display the thumbnail 518 to reproduce.

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.The communication application can request 520 that the image is retrieved from the blob memory. This requirement 520 can take place in response to a user requesting the full picture (e.g. by clicking the thumbnail) if automatic downloading has been activated and performed. Alternatively or additionally, the image can be downloaded in response to a thread including the message being opened in the communication application.

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.In response to the request 520 the blob server can use a data stream for the image data 522 transmitted to the receiving client. The image data can be streamed sequentially so that the thumbnail data is transmitted first and the frame data is transmitted second. If the thumbnail data is at 516 have already been transmitted, then only data can be sent in response to the subsequent image request 520 that have not yet been retrieved. After the thumbnail data at 516 downloaded, they can be saved in a thumbnail directory so that they remain available to refer to with 522 retrieved data to be united. If automatic download is not activated, the entire image (first the thumbnail data, then the full-screen data) can be downloaded in response to the individual image request 520 can be accessed.

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.While the data is being received, it can be played back on the receiving client. In the case of a thumbnail / full screen embodiment, the thumbnail can first be shown at 524 and then the UI can be updated when the frame is available at 526.

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.At some point in time, the receiving user can request that the receiving client forward the image. If the receiving client still has a copy of the image reference, the data lengths and HMACs in its memory, as in the encrypted message 512 received, saved, this information can simply be forwarded to the next client 528 without re-encoding the image.

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.These messages can be generated in accordance with the flowcharts of 6A (on the transmitter side) and 6B (on the receiver side) illustrated processes are generated and transmitted. The example logic can be implemented in hardware, software, or a combination of hardware and software (e.g., implemented at least in part in hardware). For example, the logic may be included as digital logic that may be implemented at least in part in hardware and that includes instructions for a processor circuit to perform the steps described below. Even though 6A-6B (and Figures 8A-8B) illustrate a particular arrangement of logical elements in a particular order, it should be understood that the configurations illustrated are merely an example. In other embodiments, more elements can be provided and / or some elements can be omitted, some elements can be performed in parallel, and / or elements can be performed in a different order. In some embodiments, some of the elements illustrated may be performed in different systems.

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.In the image processing logic on the side of the sending client 600 can processing at block 602 begin with the sending client establishing an E2EE session with a receiving client. The sending client can establish the E2EE session in response to receiving a request to transmit a message from the sending client to the receiving client. Establishing the E2EE session can include, for example, the exchange of encryption and decryption keys between the sending client and the receiving client.

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.At 604 the sending client can receive a request in an interface of a communication application in order to compose a message for the receiving client (block 604 may in some embodiments the block 602 precede). The message can include an attachment, such as a picture, that can be stored in memory or storage of the sending client. Accordingly, the communication application at Block 606 retrieve the image from memory or memory. Alternatively, the image can be saved remotely and the communication application can block 606 request a copy of the image from the remote location.

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).At block 608 the system can determine whether multi-sampling is enabled. In some embodiments, multi-scanning can be used to scan the image with a thumbnail quality and with at least one additional intermediate quality between the thumbnail quality and the full-frame quality. Multi-sampling can be enabled by default, based on user preferences or in certain contexts (e.g. if the image is expected to be downloaded from an unreliable or slow network). If applicable, processing can be done with Block 802 continue (see 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:

Figure DE102020118411A1_0001
Figure DE102020118411A1_0002
If multi-scanning is not activated, then the image can be displayed at Block 610 can be scanned with two qualities. For example, the image can be scanned as a progressive JPEG using a scanning script. An example of a scan script that provides two or four image qualities is as follows:
Figure DE102020118411A1_0001
Figure DE102020118411A1_0002

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.In this example, the first sample is the initial sample for the DC coefficients of the Y, Cr, and Cb channels, minus the lowest two bits. This information is suitable for use as a thumbnail for the image.

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.The next five scans produce a low quality image. Of these, the first two (samples 2 and 3) capture the penultimate and last bit, respectively, of the DC coefficients for the Y, Cr, and Cb channels. The third (sample # 4) captures the AC coefficients for the Cr chroma channel, while the fourth (sample # 5) captures the AC coefficients for the Cb chroma channel. The fifth (sample no. 6) captures all bits of the AC coefficients for the Y luma channel except for the last two.

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.Typically, the AC coefficients for the Luma channel comprise most of the data and are downloaded last. The next sample (sample # 7), which can be combined with the previous samples to produce a medium quality image, therefore reads in the penultimate bit of the AC coefficients for the Y luma channel. The final scan (scan # 8) produces the high quality frame (when merged with the previous scans) by reading in the lowest bit of the AC coefficients for the Y luma channel.

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.It should be understood that this particular scan script configuration is exemplary only and uses particular data that has been found in practice to adequately balance the size of each respective scan with the quality obtained from rendering the scan in conjunction with previous scans results. For example, the first scan that produces a progressive thumbnail tends to provide a relatively large amount of information in a relatively small amount of data. The quality is not sufficient for this information to represent a medium quality image, but is sufficient for use as a thumbnail. In practice, the low quality samples tend to take in about half of the image data (around 36-67%, with an average of around 48%), while the medium quality samples tend to take 56-81% of the image data, with an average of around 66 %. In many cases, the medium quality images are indistinguishable for a human from the original full quality image.

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.In embodiments that provide a thumbnail and full image (ie, with no intervening low quality and medium quality rendition), the second through eighth samples can be treated as full image data. It should be noted that in both the multi-scan and thumbnail / full-frame embodiments, the image can still be processed as a progressive JPEG. However, the clients can be configured to treat the first sample (or samples) as thumbnail data and can use the other layers (low quality and medium quality) to perform other processing. For example, depending on the network quality and available bandwidth, the receiving client may choose to receive only the amount of data that results in a low quality or medium quality image. In such an embodiment, limits can be defined for various network quality parameters (e.g. throughput, bit rate, packet dropping rate, etc.). If the network quality is above a first (low) threshold level, then the low quality image is received and the receiving client can access the data stream after receiving the samples corresponding to the Match the low quality image, exit. If the network quality is above a second (intermediate) threshold level, then the medium quality image is received and the receiving client can terminate the data stream after receiving the samples corresponding to the medium quality image. If the network quality is above a third (high) limit level, then the full image can be received and the receiving client can terminate the data stream after receiving all available samples.

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.The system can customize the scan script or it can use a different scan script for various reasons. For example, the use of different transcoding parameters can result in a smaller file size, and such parameters can be selected to reduce the amount of data transmitted over the network. Additionally, since each scan of the image consumes processing and other computational resources, and since these resources may be more limited on an end-user client device than on a central server, depending on the quality of the hardware on the end-user client device, the system may choose to perform fewer scans .

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.As a result of scanning the image at block 610 image data is generated, the image data including data corresponding to the thumbnail scan (s) and the remainder of the image data. At block 612 the system can calculate the length of the thumbnail scan (s). This can be done, for example, using a progressive JPEG parser which identifies the location in the image data that corresponds to the point at which a particular scan ends and the next scan begins.

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.At block 614 the system can encrypt the generated image data using a suitable encryption algorithm. At block 616 the system can divide the encoded image data into sets and blocks in accordance with an encrypted data streaming algorithm 618 the HMAC can be calculated for each rate.

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.At block 620 the encrypted image data can be uploaded to the blob memory and the blob memory can tell the sending device about the location in the blob memory where the image is stored (or about the identification of the image that can be used to identify the image in the blob memory).

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.Using the at block 612 , 618 and 620 The system can block the generated information 622 generate a picture message. The picture message may have a reference to the picture, which may include the location and / or the ID retrieved from the blob memory at block 620 are output, the thumbnail length, which is the block 612 is calculated (and / or other lengths that are specified in Block 810 are calculated), as well as the record HMACs that are used in Block 618 calculated include. The content of the picture message can be encrypted and by block 624 the picture message can be transmitted to its intended recipient (s).

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.The in 6A (8 and 8A) can be performed in parallel with or in conjunction with a process executed in the receiver-side device. 6B (and FIG. 8B) is a flow diagram illustrating example logic 650 (and 850 ) which is performed by a system such as a receiving client to request and display a progressive image.

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.At block 652 the receiving client can establish an E2EE session. block 652 can be the counterpart of block 602 and may include similar or equivalent steps.

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.At block 654 the receiving client can use the in block 652 receive a picture message when the E2EE session has been established. The picture message may include encrypted content such as an encrypted reference to a picture, data lengths, and HMACs.

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.At block 656 For example, the system may retrieve the lengths of at least some of the data corresponding to the respective image qualities included in image data of the referenced image (such as the length of the thumbnail data). As previously mentioned, the data lengths may not exactly match the record lengths of the E2EE data stream, and thus the system can use this information to determine how many records it will take to obtain the data corresponding to each respective image quality.

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.At block 658 allows the system to determine whether automatic thumbnail downloading is enabled. If not applicable, processing continues with block 660 and the system waits for a request to display the picture message before downloading the thumbnail data. Such a request may be in the form of a request to load a thread containing the picture message or to scroll to a point in the thread where the picture can be viewed. Alternatively, if automatic downloading is activated, processing can be carried out directly with Block 662 Continue.

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.At block 662 the system retrieves the image data corresponding to the thumbnail from the blob memory. This may include initiating a data stream with the blob memory to retrieve the image data corresponding to the reference in the original image message. The system can download one or more sentences that match the thumbnail.

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.At block 664 the system can retrieve the thumbnail data according to the parameters of the block 652 decrypt the established E2EE session. At block 666 the system can calculate an HMAC using the encrypted data (block 666 may in some embodiments block 664 to verify that the data is not corrupted and unchanged. Assuming this is the case, the system can at Block 668 view the decrypted thumbnail. Once the thumbnail data has been downloaded, the system can optionally pause the download of the rest of the data and / or end the data stream with the blob memory.

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.At block 670 the system can receive a request to display the full screen. This can be done in response to a thumbnail selection indicating that the user would like to view a higher quality version of the image. Alternatively or additionally, the system can simply continue to download the image data after the thumbnail has been downloaded.

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).At block 672 the system can initiate a data stream with the blob memory and at block 674 transmit a request to the blob memory to download the image data (or alternatively may continue to download data over an existing data stream). In some embodiments, only one request is needed to download all of the image data with the various qualities with which the image was encoded (as the image data continues to sequentially stream additional data that can be cumulatively applied to render the image at increasing levels of quality) .

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.At block 676 the system determines whether multi-sampling capabilities are enabled (similar to Block 608 of 6A) . If applicable, processing continues with block 852 away (see 8B) . Otherwise processing continues with block 678 continues and becomes a set of data on the streaming connection from block 672 retrieved.

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).At block 680 the system can decrypt the received sentence and with block 682 verify the sentence HMAC (block 680 and 682 can be reversed in some embodiments). At block 684 the system updates the UI based on the newly received image data (assuming the most recent set included data up to the end of one of the image samples; otherwise, block 684 be omitted in this iteration of the loop).

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.At block 686 the system determines whether there are more records to download from the blob memory. If so, processing returns to the block 678 back and the next sentence can be called up. If not applicable (ie all sets have been downloaded), processing can be stopped because the image was reproduced at full quality.

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.After the receiving client has received the image data, the receiving user can request that the image be forwarded to another user. 6C Figure 3 is a flow diagram showing example logic 690 for forwarding the image to a second receiving user.

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.At block 692 the system can receive a request to forward a previously downloaded image to the receiving client. The request can be to forward the image to a second receiving client with which the first receiving client will block an E2EE session 694 can build.

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).Since the image data is already in the blob memory and since the various scans and image qualities have already been processed and the HMACs have been calculated using the relevant sentences, it is not necessary to perform this processing again (assuming that the receiving client still has a copy of the relevant data lengths and HMACs from the original sending client).

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.Accordingly, the system generates at block 696 a new image message for the second receiving client comprising the data / sample lengths from the original sender and the HMACs from the original sender. The reference to the picture from the original sender can also be included in the new picture message.

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.The new picture message can be sent to Block 698 forwarded to the second recipient. Accordingly, the second recipient can use the information in the new picture message to download the picture from the blob memory in the same manner as for the first recipient.

Ausführungsform zum Bereitstellen von mehrfachen AbtastungenEmbodiment for providing multiple samples

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. 7th , 8A and 8B complement the in 5 , 6A and 6B in order to provide a system that generates intermediate image qualities between thumbnail quality and full image quality.

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.The data flow representation of 7th is the in 5 illustrated similar in many respects. For the sake of brevity, in 5 and 7th Similar message exchanges are identified by the same reference numbers and a description of those similar steps is omitted here for brevity. A difference between the in 5 measure taken and the in 7th The measure taken is that if the image is encoded and encrypted at 506, it can be encoded with several different qualities, as in FIG 8A set out. Accordingly, there will be a new process 702 added to reproduce the image with intermediate qualities as in connection with 8B described.

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).Also the expiration 528 For forwarding the image to a new recipient, this procedure (described in 6C ) can be used in connection with the in 7-8B may be used in the same manner as described above for the thumbnail / full quality embodiment (except that the data lengths corresponding to the intermediate image qualities, not just the thumbnail quality, are loaded into the new image message).

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.Regarding 8A describes a sequence for storing the image data so that the image can be displayed in intermediate qualities between the miniature view and the full image. The logic 800 starts at block 802 which on block 610 of 6A follows. At block 608 For example, the system can divide the image samples that are used to generate the image data (see e.g. Table 1) into N grades. The number N of qualities may depend on the number of intermediate stages desired by an administrator of the communication service. In general, for example, at least two image qualities are used (the thumbnail quality and the full image quality). At least some intermediate image quality may also be desirable for use over network connections that may be unstable or relatively slow. Other intermediate grades can be used to provide more granularity - for example, low quality for very bad connections and intermediate or medium quality for better connections that are nonetheless suboptimal.

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.Optionally, the system can choose between different scan profiles available, or can adapt a scan script to provide different numbers or different configurations of scans. This can be done based on available network and / or client hardware information, as well as based on which scan scripts / configurations result in the lowest overall image data (or the lowest image data for certain image qualities). The system can assign the scans, which are designated in the scan script, between the different N image qualities.

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.At the blocks 804-806 the system can iteratively scan the image until all scans in the scan script have been performed. At block 808 the system can determine the size of the data according to each quality level. For example, the system can use a progressive JPEG parser to identify where in the image data the dividing lines lie between successive scans. Using this information and the assignment of certain samples to different image qualities in block 802 the system can determine how much data corresponds to each respective sample. These quantities can be in an array (or in some other suitable structure) at block 810 get saved. This array can be used to represent the data lengths in the picture message.

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.Regarding 8B a procedure for reproducing an image using the in 8A stored intermediate qualities. The logic 850 starts at block 852 that on block 676 of 6B follows. At block 852 the system determines whether the data corresponding to the currently processed quality level has been downloaded in full. For example, at the start of the sequence, the system will download image data that corresponds to the thumbnail quality. If more data remains to be downloaded with the current quality level, processing with Block 854 Continue. The blocks 854-864 generally correspond to the blocks 678-686 of 6B , and the description of these blocks is omitted here to avoid repetition. These blocks are repeated until the downloading of image data for the current quality level via the data stream is stopped.

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.As soon as you stop downloading data for the current quality level (“Yes” to Block 852 ), processing continues with block 866 away. Here the system receives parameters that describe the status of the network connection (e.g. network throughput, bandwidth, bit rate, rate of dropped packets, etc.). At block 868 the system compares these parameters with previously defined network quality limits for the next quality level. For example, if the system has just stopped processing for the thumbnail quality, the system can evaluate whether the network connection is good enough to download the low quality image data.

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.If applicable, processing continues with block 854 and the system continues to download records from the image data until the next level of quality is reached. If not applicable, processing continues with block 870 and the system can end the data stream with the blob server. As a result, the system refrains from downloading additional image data for the higher qualities of the image. The system will therefore display the image with the highest downloaded quality, but it can avoid large downloads if the network quality is insufficient.

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.The embodiments described above may be implemented by a messaging architecture, an example of which will be described next with reference to FIG 9 described.

NachrichtenübermittlungsarchitekturMessaging architecture

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. 9 illustrates one embodiment of a plurality of servers performing various functions of a messaging service 900 implement that are suitable for use with exemplary embodiments. It will be understood that different distributions of work and functions in different embodiments of a messaging service 900 can be used.

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.The messaging service 900 can be a domain name front end 902 include. The domain name front end 902 One or more domain names can be assigned to the messaging service 900 are associated in the Domain Name System (DNS). The domain name front end 902 can receive incoming connections and distribute the connections to servers that provide various messaging services.

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.The messaging service 902 can be one or more chat servers 904 include. The chat server 904 may include front end servers for receiving and transmitting user-to-user messaging updates, such as chat messages. Incoming connections can be made to the chat servers 904 through the domain name front end 902 allocated based on workload balancing.

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.The messaging service 900 can backend server 908 include. The backend server 908 can perform specialized tasks in support of the chat operations of the frontend chat server 904 carry out. There can be a variety of different types of backend servers 908 be used. It will be traceable to the assignment of the types of tasks to different backend servers 908 may vary in different embodiments. In some embodiments, some of the backend services provided by dedicated servers may be consolidated into a single server or set of servers each performing multiple tasks that, in the embodiments described herein, are shared between different servers. Likewise, in some embodiments, tasks from some of the dedicated backend servers as described herein may be shared between different servers from different server groups.

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.The messaging service 900 can have one or more offline storage servers 910 include. The one or more offline storage servers 910 can messaging content for messaging clients that are currently offline, which will be held until the messaging clients are reconnected.

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.The messaging service 900 can be one or more session servers 912 include. The one or more session servers 912 can maintain the session status of connected messaging clients.

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.The messaging service 900 can be one or more presence servers 914 include. The one or more presence servers 914 can provide presence information for the messaging service 900 care for. Presence information may correspond to user-specific information indicating whether a given user has an online messaging client and is available to chat, has an online messaging client, but is currently removed from it, does not have an online messaging client, and other presence states.

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.The messaging service 900 can be one or more push storage servers 916 include. The one or more push storage servers 916 can cache push requests and transmit the push requests to the messaging clients. Push requests can be used to wake up messaging clients, notify messaging clients that a messaging update is available, and otherwise perform server-driven interactions with messaging clients.

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.The messaging service 900 can be one or more group servers 918 include. The one or more group servers 918 can maintain lists of groups, add users to groups, remove users from groups, and receive, cache and forward group chat messages.

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.The messaging service 900 can be one or more block list servers 920 include. The one or more block list servers 920 can maintain user-specific block lists, the user-specific block lists for inputs for each user specifying the one or more other users who are prohibited from transmitting messages to that user. Alternatively or additionally, the one or more block list servers 920 Maintain user-specific block lists for outlets which specify for each user the one or more other users for whom this user is prohibited from transmitting messages. It will be understandable that blocking lists for inputs and blocking lists for outputs can be stored in a network, for example in a database, whereby the blocking lists for inputs and blocking lists for outputs represent different views of the same pool of blocking information.

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.The messaging service 900 can be one or more Last Seen Information servers 922 include. The one or more Last Seen Information servers 922 can receive, store, and maintain information including last seen location, status, messaging client, and other elements of a user's last connection with the messaging service 900 specify.

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.The messaging service 900 can be one or more key servers 924 include. The one or more key servers can host public keys for public / private key encrypted communication.

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.The messaging service 900 can have one or more profile photo servers 926 include. The one or more profile photo servers 926 can for the wide variety of users of the messaging service 900 Save profile photos and make them available for retrieval.

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.The messaging service 900 can have one or more spam logging servers 928 include. The one or more spam logging servers 928 can log known and suspected spam (e.g. unwanted messages, especially those with an advertising character). The one or more spam logging servers 928 may be operable to analyze messages to determine if they are spam and, in some embodiments, take repressive action against suspected spammers (users who send spam messages).

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.The messaging service 900 can be one or more statistics servers 930 include. The one or more statistics servers can provide statistical information related to the operation of the Messaging service 900 and the behavior of the users of the messaging service 900 compile and save.

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.The messaging service 900 can be one or more web servers 932 include. The one or more web servers 932 can participate in Hypertext Transport Protocol connections (HTTP connections) and Hypertext Transport Protocol Secure connections (HTTPS connections) with web browsers.

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.The messaging service 900 can have one or more chat activity monitoring servers 934 include. The one or more chat activity monitoring servers 934 can monitor the chats of users to detect unauthorized or improper behavior from users of the messaging service 900 to monitor. The one or more chat activity monitoring servers 934 can interact with the spam logging servers 928 and block list servers 920 operate, the one or more chat activity monitoring servers 934 Identify spam or other unapproved behavior and the spam logging servers 928 Spam information and the block list servers 920 provide blocking information if necessary.

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.The messaging service 900 can have one or more sync servers 936 include. The one or more sync servers 936 can use the messaging system 500 with contact information from a messaging client, such as an address book in a cell phone, to get contacts for a user in the messaging service 900 to determine.

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.The messaging service 900 can be one or more multimedia servers 938 include. The one or more multimedia servers can store multimedia (e.g. images, video, audio) that are in transit between messaging clients, multimedia that are cached for offline endpoints, and can perform transcoding on multimedia.

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.The messaging service 900 can be one or more payment servers 940 include. The one or more payment servers 940 can process payments from users. The one or more payment servers 940 may be connected to external third-party servers to process payments.

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.The messaging service 900 can be one or more registration servers 942 include. The one or more registration servers 942 can new users of the messaging service 900 to register.

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.The messaging service 900 can be one or more voice delivery servers 944 include. The one or more voice delivery servers 944 can convey Voice over Internet Protocol (VoIP) voice communication between messaging clients for making VoIP calls.

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.The methods described above can be contained as instructions in a computer-readable medium or as part of a computing architecture. 10 illustrates one embodiment of an exemplary computing architecture 1000 which is suitable for implementing various embodiments as previously described. In one embodiment, the computing architecture 1000 an electronic device such as a calculator 1001 , contain or be implemented as part of such. The embodiments are not limited in this context.

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.As used in this application, the terms “system” and “component” are intended to denote a computer-related entity, either hardware, a combination of hardware and software, software or software in execution, examples of these being given by the exemplary computer architecture 1000 to be provided. A component can be, for example, a process running on a processor, a processor, a hard disk drive, multiple storage drives (with optical and / or magnetic storage media), an object, an executable element, an execution thread, a program and / or a computer . For purposes of illustration, both an application running on a server and the server can be a component. There can be one or more components in a process and / or execution thread and a component can be located in a computer and / or distributed between two or more computers. Furthermore, components can be communicatively coupled to one another through various types of communication media in order to coordinate operations. The coordination can include the unidirectional or bidirectional exchange of information. For example, the components can communicate information in the form of signals that are communicated over the communication media. The information can be implemented as signals allocated to different signal lines. With such assignments, every message is a signal. However, other embodiments may alternatively employ data messages. Such data messages can be sent over various connections. Exemplary connections include parallel interfaces, serial interfaces, and bus interfaces.

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.The computing architecture 1000 includes various common computing elements, such as one or more processors, multi-core processors, coprocessors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input / output components (I / O components), power supplies etc. However, the embodiments are not intended to be implemented by the computational architecture 1000 limited.

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.As in 10 shown includes the computing architecture 1000 a processing unit 1002 , a system memory 1004 and a system bus 1006 . The processing unit 1002 can be any of various commercially available processors including, without limitation, Athlon®, Duron®, and Opteron® processors from AMD®; ARM® application, embedded and secure processors; DragonBall® and PowerPC® processors from IBM® and Motorola®; IBM and Sony® cell processors; Celeron®, Core (2) -Duo®, Itanium®, Pentium®, Xeon® and XScale® processors from Intel®; and similar processors. Dual microprocessors, multi-core processors and other multi-processor architectures can also be used as processing units 1002 can be used.

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.The system bus 1006 provides an interface for system components including, but not limited to, system memory 1004 with the processing unit 1002 . The system bus 1006 may be any of several types of bus structure that may be further connected to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using a number of commercially available bus architectures. Interface adapters can be connected to the system bus 1006 be connected via a slot architecture. Sample slot architectures can be used without restriction 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), and the like.

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.The computing architecture 1000 may include or implement various articles of manufacture. An article of manufacture may include a computer readable storage medium for storing logic. Examples of computer readable storage medium can include any tangible media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, etc. Examples of logic can be executable computer program instructions implemented using any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, object-oriented code, visual code, and the like. Embodiments can also be implemented, at least in part, as instructions contained in or on a non-transitory computer-readable medium that can be read and executed by one or more processors to enable the operations described herein to be performed.

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.The system memory 1004 may include various types of computer readable storage media in the form of one or more high speed storage devices such as read-only memory (ROM), random access memory (RAM), dynamic RAM (DRAM), dual data rate DRAM (DDRAM) ), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, Ovonic memory, phase change or ferroelectric memory, silicon oxide-nitride-oxide-silicon memory (SONOS memory), magnetic or optical cards, an array of devices such as redundant-array-of-independent-disks drives (RAID Drives), solid-state storage devices (e.g., USB memory devices, solid-state drives (SSD), and other types of storage media that are suitable for storing information are. In the illustrated in 10 The embodiment shown can be the system memory 1004 a non-volatile memory 1008 and / or volatile memory 1010 include. A basic input / output system (BIOS) can be stored in the non-volatile memory 1008 get saved.

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.The computing architecture 1000 may include various types of computer readable storage media in the form of one or more low speed storage devices, including an internal (or external) hard disk drive (HDD) 1012, a magnetic floppy disk drive (FDD) 1014 for reading from or writing to a removable magnetic floppy disk 1016 and an optical disk drive 1018 for reading from or writing to a removable optical disk 1020 (e.g. a CD-ROM or DVD). The HDD 1012 , FDD 1014 and optical disk drive 1020 can with the system bus 1006 via an HDD interface 1022 , an FDD interface 1024 or an optical drive interface 1026 be connected. The HDD interface 1022 for external drive implementations, it may include at least one or both of the Universal Serial Bus (USB) and IEEE-694 interface technologies.

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.The drives and associated computer readable media provide volatile and / or non-volatile storage of data, data structures, computational instructions, and so on. For example, a number of program modules can be in the drives and storage units 1008 , 1012 including an operating system 1028 , one or more application programs 1030 , other program modules 1032 and program data 1034 . In one embodiment, the one or more application programs 1030 , other program modules 1032 and program data 1034 for example the various applications and / or components of the messaging system 500 include.

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.A user can enter commands and information into the calculator 1001 Enter via one or more wired / wireless input devices, for example a keyboard 1036 and a pointing device such as a mouse 1038 . Other input devices can be microphones, infrared remote controls (IR remote controls), radio frequency remote controls (RF remote controls), gamepads, input pens, card readers, copy protection plugs, fingerprint readers, gloves, graphics tablets, joysticks, keyboards, retina readers, touch screens (e.g. capacitive, resistive, etc.), track balls, track pads, sensors, pens, and the like. These and other input devices are often used with the processing unit 1002 via an input device interface 1040 connected to the system bus 1006 but can also be connected via other interfaces, such as a parallel port, an IEEE-694 serial port, a game port, a USB port, an IR interface, etc.

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.One monitor 1042 or another display device is also on the system bus 1006 through an interface such as a video adapter 1044 , connected. The display 1042 can be inside or outside the computer 1001 be. In addition to the monitor 1042 A computer typically includes other peripheral output devices such as speakers, printers, etc.

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.The computer 1001 can be in a networked environment using logical connections over wired and / or wireless communications with one or more remote computers, such as a remote computer 1044 , work. The remote computer 1044 may be a workstation, server computer, router, personal computer, portable computer, microprocessor-based entertainment device, peer device, or other common network node and typically includes many or all of the elements relating to the computer 1001 will be described, although for brevity only a storage / storage device 1046 is illustrated. The illustrated logical connections include wired / wireless connectivity to a local area network (LAN) 1048 and / or larger networks, for example a wide area network (WAN) 1050 . Such LAN and WAN network environments are common in offices and companies and enable company-wide computer networks, such as intranets, which can all be connected to a global communication network, for example the Internet.

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.When used in a LAN network environment, the calculator will 1001 with the LAN 1048 via a wired and / or wireless communication network interface or adapter 1052 connected. The adapter 1052 can have wired and / or wireless communications with the LAN 1048 enable that also has an access point arranged therein for communicating with the wireless functionality of the adapter 1052 includes.

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.When used in a WAN network environment, the computer can 1001 a modem 1054 include, or it is with a communication server in the WAN 1050 connected, or it has means for establishing communications over the WAN 1050 on, such as via the Internet. The modem 1054 that can be inside or outside and a wired and / or wireless device is with the system bus 1006 via the input device interface 1040 connected. In a networked environment, program modules relating to the computer 1001 illustrated, or sections thereof, in the remote storage / storage device 1046 get saved. It will be understood that the network connections shown are exemplary and that other means of establishing a communication connection between the computers can be used.

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.The computer 1001 is operable to communicate with wired and wireless devices or entities using the IEEE 802 suite of standards, such as wireless devices operable in wireless communication (e.g., IEEE 802.13 over-the-air modulation techniques) . This includes at least the wireless technologies WiFi (or Wireless Fidelity), WiMax and Bluetooth ™. The communication can therefore be a predefined structure, as in a conventional network, or simply an ad hoc communication between at least two devices. WiFi networks use radio technologies called IEEE 802.13x (a, b, g, n etc.) to provide secure, reliable, fast wireless connectivity. A WiFi network can be used to connect computers to each other, to the Internet, and to wired networks (which use IEEE 802.3-related media and functions).

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. 11 Fig. 3 is a block diagram showing an exemplary communication architecture 1100 10 that is suitable for implementing various embodiments as previously described. The communication architecture 1100 includes various common communication elements such as transmitters, receivers, transceivers, radio, network interface, baseband processor, antenna, amplifier, filter, power supplies, etc. However, the embodiments are not limited to implementation by the communication architecture 1100 limited.

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.As in 11 shown includes the communication architecture 1100 one or more clients 1102 and server 1104 . The clients 1102 can the client device 510 to implement. The servers 1104 can use the server device 526 to implement. The clients 1102 and the servers 1104 are with one or more respective client data stores 1106 and server data stores 1108 operably connected, which can be used to provide information locally to the respective clients 1102 and servers 1104 to store such as cookies and / or associated contextual information.

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.The clients 1102 and the servers 1104 can share information using a communication framework 1110 communicate. The communication framework 1110 can implement any well-known communication technique and protocol. The communication framework 1110 may be a packet-switched network (e.g., public networks such as the Internet, private networks such as a corporate intranet, etc.), a circuit-switched network (e.g., the public switched telephone network), or a combination of a packet-switched network and a circuit-switched network (with suitable gateways and translators).

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.The communication framework 1110 can implement various network interfaces arranged to accept, communicate with, and connect to a communication network. A network interface can be viewed as a special form of input / output interface. Network interfaces can use connection protocols, including without limitation Direct Connect, Ethernet (e.g. thick, thin, twisted pair -10 / 100/1000-Base-T and the like), Token-Ring, wireless network interfaces, cellular network interfaces, IEEE 802.11ax network interfaces, IEEE 802.16 network interfaces, IEEE 802.20 network interfaces, and the like. In addition, multiple network interfaces can be used to work with different communication network types. For example, multiple network interfaces can be used to allow communication over broadcast, multicast, and unicast networks. Should processing requirements require greater speed and capacity, distributed network controller architectures can be used in a similar manner to those of clients 1102 and the servers 1104 bundle the required communication bandwidth, load balance these or otherwise increase them. A communications network can be any and combination of wired and / or wireless networks including, without limitation, a direct connection, a secured custom connection, a private network (e.g. a corporate intranet), a public network (e.g. the Internet), a Personal Area Network (PAN), a local area network (LAN), a broadband telecommunications network (Metropolitan Area Network, MAN), an Operating-Missions-as-Nodes-on-the-Internet (OMNI), a wide area network (WAN), a wireless network, a cellular network, and other communication networks.

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. 12 illustrates one embodiment of an apparatus 1200 for use in a multi-carrier OFDM system such as the messaging system 500 . The device 1200 can for example Software components 1202 as with regard to messaging component logic 600 , the intent setting logic 700 and the group selection logic 800 described, implement. The device 1200 can also be a logic circuit 1204 to implement. The logic circuit 1204 may include physical circuitry in order for the messaging system 500 perform the operations described. As in 12 shown, the device 1200 a radio interface 1206 , Baseband switching technology 1208 and a computing platform 1210 although embodiments are not limited to this configuration.

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.The device 1200 may include some or all of the structure and / or some or all of the operations for the messaging system 500 and / or the logic circuit 1204 implement in a single computing entity, such as entirely within a single device. Alternatively, the device 1200 Sections of the structure and / or operations for the messaging system 500 and / or the logic circuit 1204 a distributed system architecture across multiple computing entities, such as using a client-server architecture, a 3-level architecture, an N-level architecture, a tightly coupled or grouped architecture, a peer-to-peer architecture, a Master-slave architecture, a shared database architecture, and other types of distributed systems. The embodiments are not limited in this context.

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.In one embodiment, the radio interface 1206 comprise a component or combination of components that are adapted to transmit and / or receive modulated single-carrier or multi-carrier signals (e.g. including complementary code keying symbols (CCK symbols) and / or orthogonal frequency symbols Division Multiplexing (OFDM) symbols, although the embodiments are not limited to any specific over-the-air interface or modulation scheme. The radio interface 1206 can for example be a recipient 1212 , a transmitter 1214 and / or a frequency synthesizer 1216 include. The radio interface 1206 can have bias controls, a crystal oscillator and / or one or more antennas 1218 include. In another embodiment, the radio interface 1206 Use external voltage-controlled oscillators (VCOs), surface acoustic wave filters, intermediate frequency filters (IF filters, IF = Intermediate Frequency) and / or RF filters as required. Because of the variety of potential RF interface designs, an expansive description of these is omitted.

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.The baseband switching technology 1208 can with the radio interface 1206 communicate to receive and / or transmit signals and may, for example, use an analog-to-digital converter 1220 for down-converting received signals and a digital-to-analog converter 1222 for up-converting signals for transmission. Furthermore, the baseband switching technology 1208 a baseband processing circuit or a physical layer (PHY) processing circuit 1224 for PHY link layer processing of respective receive / transmit signals. The baseband switching technology 1208 for example a processing circuit 1226 for media access control (MAC) processing / data link layer processing. The baseband switching technology 1208 can be a memory controller 1228 to communicate with the processing circuit 1226 and / or a computing platform 1210 , for example via one or more interfaces 1230 , include.

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.In some embodiments, the PHY processing circuit 1224 a frame construction and / or a detection module, in combination with additional box technology, such as a buffer memory, to construct and / or deconstruct communication frames, such as radio frames. Alternatively or additionally, the MAC processing circuit 1226 share the processing for certain of these functions or these processes independently of the PHY processing circuit 1224 carry out. In some embodiments, MAC and PHY processing can be integrated into a single circuit.

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.The computing platform 1210 can be a computing functionality for the device 1200 provide. As shown, the computing platform 1210 a processing component 1232 include. Additionally or alternatively to the baseband switching technology 1208 can the device 1200 Processing operations or logic for the messaging system 500 and the logic circuit 1204 using the processing component 1232 To run. The processing component 1232 (and / or the PHY 1224 and / or MAC 1226 ) can contain various hardware elements, software elements, or a combination of both. Examples of hardware elements can include devices, logic devices, components, processors, microprocessors, circuits, processor circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, etc.), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices ( PLD), digital signal processors (DSP) freely programmable gate array (FPGA), memory units, logic gates, registers, a semiconductor device, chips, microchips, chipsets, etc. Examples of software elements can be software components, programs, applications, computer programs, application programs, system programs, software development programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, processes, processes, software interfaces, application program interfaces (API), instruction sets, arithmetic code, computer code , Code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether to implement an embodiment using hardware elements and / or software elements will vary according to a number of factors as desired for a given implementation, such as desired computational rate, performance levels, thermal tolerances, processing cycle budget, input data rates, output data rates, memory resources, Data bus speeds and other design or performance limitations.

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.The computing platform 1210 can also use other platform components 1234 include. Other platform components 1234 include common computing elements, such as one or more processors, multi-core processors, coprocessors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input / output components (I / O components) (e.g. Examples of storage devices may include, without limitation, various types of computer-readable and machine-readable storage media in the form of one or more high-speed storage devices, such as read only memory (ROM), random access memory (RAM), dynamic RAM (DRAM), dual data rate -DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric Polymer storage, Ovonic storage, phase change or ferroelectrisc memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, an array of devices such as redundant array-of-independent disks (RAID drives), solid-state storage devices (e.g. B. USB storage devices, solid state drives (SSD), and other types of storage media that are suitable for storing information.

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.The device 1200 For example, an ultra-mobile device, a mobile device, a fixed device, a machine-to-machine (M2M) device, a personal digital assistant (PDA), a mobile computing device, a smartphone, a telephone, a digital telephone, a cellular telephone User device, eBook readers, handset, one-way pager, two-way pager, messaging device, calculator, personal calculator (PC), desktop calculator, laptop calculator, notebook calculator, netbook calculator, handheld calculator, tablet calculator , a server, a server array or a server farm, a web server, a network server, an Internet server, a workstation, a mini-computer, a mainframe computer, a supercomputer, a network device, a web device, a distributed computing system, multiprocessor systems, processor-based systems, consumer electronics, programmable consumer electronics , Game devices, a television set, a digital television set, a set-top box, a wireless access point, a base station, a node B, an evolved node B (eNB), a subscriber station, a mobile subscriber center, a radio network controller, a router, a hub, a gateway, a bridge, a switch, be a machine or a combination thereof. Accordingly, functions and / or specific configurations of the device described herein 1200 in different embodiments of the device 1200 be included or left out as desired. In some embodiments, the device 1200 configured to be compatible with protocols and frequencies associated with one or more of the 3GPP LTE specifications and / or IEEE 1402.16 standards for WMANs and / or other wireless broadband networks as cited herein, although the Embodiments are not limited in this regard.

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.Embodiments of the device 1200 can be implemented using single input single output architectures (SISO architectures, SISO = Single Input Single Output). However, certain implementations may have multiple antennas (e.g. antennas 1218 ) for transmission / or reception using adaptive antenna techniques for beam shaping or spatial division multiple access (SDMA) and / or using MIMO communication techniques.

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.The components and features of the device 1200 can be implemented using any combination of discrete circuitry, application specific integrated circuits (ASICs), logic gates, and / or single chip architectures. Furthermore, the features of the device 1200 using microcontrollers, programmable logic arrays, and / or microprocessors, or any combination of the foregoing, where appropriate. It will pointed out that hardware, firmware and / or software elements may be referred to herein collectively or individually as “logic” or “circuit”.

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.It will be understandable that the block diagram of 12 exemplary device shown 1200 can be a functionally descriptive example of many potential implementations. Accordingly, division, omission, or inclusion of block functions illustrated in the accompanying figures does not imply that the hardware components, circuits, software, and / or elements for implementing these functions are necessarily divided, omitted, or included in embodiments.

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.At least one computer-readable storage medium 1236 may include instructions that, when executed, cause a system to perform any of the computer-implemented methods described herein.

Generelle Hinweise zur TerminologieGeneral notes on terminology

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.Some embodiments may be described using the phrase “a single embodiment” or “an embodiment” and its derivatives. These terms mean that a particular feature, structure, or property described in connection with the embodiment is included in at least one single embodiment of the invention. The phrase "in a single embodiment" in various places throughout this specification does not necessarily refer to the same embodiment. In addition, unless otherwise stated, it can be seen that the features described above can be used together in any combination. Therefore, any separately discussed features may be used in combination, unless it is stated that the features are incompatible.

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.With general reference to the notations and nomenclature used herein, the detailed descriptions herein may be presented in terms of program flows that are executed on a computer or network of computers. These process descriptions and illustrations are used by those skilled in the art to most effectively convey the content of their work to others skilled in the art.

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.A process is here and generally considered to be a self-consistent sequence of operations that lead to a desired result. These operations are those that require physical manipulations of physical quantities. Usually, but not necessarily, these quantities are in the form of electrical, magnetic, or optical signals that can be stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be noted, however, that all of these and similar terms are intended to be associated with corresponding physical quantities and are merely practical names for these quantities.

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.Furthermore, the manipulations performed are often referred to using terms such as adding or comparing, which are commonly associated with mental operations performed by a human operator. Such ability of a human operator is in most instances not necessary or desirable in the operations described herein that form part of one or more embodiments. Rather, the operations are machine operations. Useful machines for performing the operations of various embodiments include general purpose digital computers or similar devices.

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.Some embodiments may be described using the terms “coupled” and “connected” and their derivatives. These terms are not necessarily meant to be synonyms for one another. For example, some embodiments may be described using the terms “connected” and / or “coupled” to indicate that two or more elements are in direct physical or electrical contact with one another. The term “coupled” can, however, also mean that two or more elements are not in direct contact with one another, but nevertheless cooperate or interact with one another.

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.Various embodiments also relate to devices or systems for performing these operations. This facility may be specially designed for the required purpose or may include a general purpose computer selectively operated by a computer program stored in the computer activated or reconfigured. The procedures presented herein do not inherently relate to any particular computer or other device. Various general purpose machines may be used with programs written in accordance with the teachings described herein, or it may be convenient to build more specialized equipment to perform the required procedural steps. The required structure for a number of these machines will be apparent from the description given.

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.It is emphasized that the abstract of the disclosure is provided to allow a reader to quickly determine the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, it can be seen from the present detailed description that, for the purpose of streamlining the disclosure, various features are combined into a single embodiment. This method of disclosure is not to be interpreted as an intention that the claimed embodiments require more features than are expressly cited in each claim. Rather, as the following claims show, the inventive subject matter is present in less than all features of a single disclosed embodiment. Therefore, the following claims are hereby incorporated into the detailed description, with each claim standing on its own as a separate embodiment. In the appended claims, the terms “comprising” and “for which” are used as simple equivalents of the respective terms “including” and “where”. In addition, the terms “first”, “second” and “third” etc. are only used as identifiers and are not intended to impose any numerical requirements on your objects.

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.What has been described above includes examples of the disclosed architecture. It is of course not possible to describe every conceivable combination of components and / or methodologies, but one of ordinary skill in the art will recognize that many other combinations and permutations are possible. Accordingly, the novel architecture is intended to embrace all variations, modifications, and variations that come within the spirit and scope of the appended claims.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN THE DESCRIPTION

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.This list of the documents listed by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent literature cited

  • US 62874554 [0001]US 62874554 [0001]

Claims (9)

Ein Verfahren, das Folgendes beinhaltet: 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.A process that includes: Receiving, via an end-to-end encrypted session between a sending device and a receiving device, a message comprising a reference to an image; Establishing a connection to a blob storage, wherein the blob storage contains an encrypted thumbnail of the image, first additional encrypted data which, when combined with the encrypted thumbnail, results in a low quality version of the image, and second additional encrypted data which when combined with the encrypted thumbnail and the first additional encrypted data, resulting in a high quality version of the image; Retrieve the encrypted thumbnail from the blob storage, decrypt the thumbnail, and display the thumbnail; Receiving a request to display the image; Retrieving the first additional encrypted data from the blob memory, decrypting the first additional data, and merging the decrypted first additional data with the thumbnail; and displaying the low quality version of the image. Verfahren gemäß Anspruch 1, wobei der Blob-Speicher Informationen an die empfangende Vorrichtung in einem Datenstream überträgt, und das ferner Folgendes beinhaltet: 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.Procedure according to Claim 1 wherein the blob store transmits information to the receiving device in a data stream, and further includes: receiving a network quality parameter; Comparing the network quality parameter to a threshold associated with the high quality version of the image; Determining that the network quality parameter does not exceed the threshold; and terminating the data stream to cancel the transmission of the second additional encrypted data. Verfahren gemäß Anspruch 1, wobei das Abrufen der verschlüsselten Miniaturansicht aus dem Blob-Speicher automatisch als direkte Reaktion auf das Empfangen der Nachricht durchgeführt wird.Procedure according to Claim 1 wherein the retrieval of the encrypted thumbnail from the blob memory is performed automatically in direct response to receiving the message. Verfahren gemäß Anspruch 1, wobei 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 die Nachricht, die den Bezug auf das Bild umfasst, Folgendes beinhaltet: 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.Procedure according to Claim 1 wherein the encrypted thumbnail, the first additional encrypted data, and the second additional encrypted data are stored together in an image structure, and the message comprising the reference to the image includes: a first location in the image structure representing the encrypted thumbnail of dividing the first additional encrypted data, and a second location in the image structure that divides the first additional encrypted data from the second additional encrypted data. Verfahren gemäß Anspruch 4, das ferner Folgendes beinhaltet: 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.Procedure according to Claim 4 further comprising: receiving a request to forward the image to a second recipient; and retransmitting the first and second locations in the image structure while renouncing transcoding of the image is dispensed with. Verfahren gemäß Anspruch 1, wobei 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.Procedure according to Claim 1 wherein retrieving the encrypted thumbnail from the blob storage, retrieving the first additional encrypted data from the blob storage, and retrieving the second additional encrypted data from the blob storage together in response to a single request for the image referred to in the message. Verfahren gemäß Anspruch 1, wobei das Abrufen der verschlüsselten Miniaturansicht Folgendes beinhaltet: 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.Procedure according to Claim 1 wherein retrieving the encrypted thumbnail includes: downloading a data set that includes at least a portion of the encrypted thumbnail; Receiving a key hash based message authentication code (HMAC) associated with the data set; Computing an HMAC over the downloaded data set; and comparing the calculated HMAC to the received HMAC to verify that the encrypted thumbnail has not been changed. Ein nicht transitorisches rechnerlesbares Medium, das Anweisungen speichert, die konfiguriert sind, um einen Prozessor zu veranlassen, das Verfahren gemäß einem der Ansprüche 1 bis 7 oder Folgendes durchzuführen: 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.A non-transitory computer readable medium that stores instructions configured to cause a processor to perform the method according to any one of the Claims 1 to 7th or perform: receiving, via an end-to-end encrypted session between a sending device and a receiving device, a message including a reference to an image; Connect to a blob storage, the blob storage having an encrypted thumbnail of the image, first additional encrypted data that when using the encrypted thumbnail merged, resulting in a low quality version of the image and holding second additional encrypted data which, when merged with the encrypted thumbnail and the first additional encrypted data, results in a high quality version of the image; Retrieve the encrypted thumbnail from the blob storage, decrypt the thumbnail, and display the thumbnail; Receiving a request to display the image; Retrieving the first additional encrypted data from the blob memory, decrypting the first additional data, and merging the decrypted first additional data with the thumbnail; and displaying the low quality version of the image. Eine Einrichtung, die Folgendes beinhaltet: eine Netzwerkschnittstelle, die konfiguriert ist, um das Verfahren gemäß einem der Ansprüche 1 bis 7 oder Folgendes durchzuführen: 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.A device comprising: a network interface configured to perform the method according to any one of the Claims 1 to 7th or perform: receiving, via an end-to-end encrypted session between a sending device and a receiving device, a message including a reference to an image; and connecting to a blob storage, wherein the blob storage contains an encrypted thumbnail of the image, first additional encrypted data that, when combined with the encrypted thumbnail, results in a low quality version of the image, and second additional encrypted data that, when combined with the encrypted thumbnail and the first additional encrypted data result in a high quality version of the image, holds; a processor configured to: retrieve the encrypted thumbnail from the blob memory, decrypt the thumbnail, and display the thumbnail; Receiving a request to display the image; and retrieving the first additional encrypted data from the blob memory, decrypting the first additional data, and merging the decrypted first additional data with the thumbnail; and a display configured to display the low quality version of the image.
DE102020118411.5A 2019-07-16 2020-07-13 METHODS AND SYSTEMS FOR TRANSMITTING AN IMAGE IN Sentences Pending DE102020118411A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201962874554P 2019-07-16 2019-07-16
US62/874,554 2019-07-16
US16/878,883 US11178079B1 (en) 2019-07-16 2020-05-20 Methods and systems for transmitting an image with thumbnail data
US16/878,902 2020-05-20
US16/878,902 US11425205B1 (en) 2019-07-16 2020-05-20 Methods and systems for transmitting an image in chunks
US16/878,883 2020-05-20

Publications (1)

Publication Number Publication Date
DE102020118411A1 true DE102020118411A1 (en) 2021-01-21

Family

ID=74093442

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020118411.5A Pending DE102020118411A1 (en) 2019-07-16 2020-07-13 METHODS AND SYSTEMS FOR TRANSMITTING AN IMAGE IN Sentences

Country Status (2)

Country Link
CN (1) CN112242946A (en)
DE (1) DE102020118411A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014990A (en) * 2021-03-02 2021-06-22 卡莱特云科技股份有限公司 Program picture fast playing method, playing box and playing system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414742B (en) * 2013-07-03 2016-12-28 百度在线网络技术(北京)有限公司 A kind of picture transmission method and system
WO2015099613A1 (en) * 2013-12-26 2015-07-02 Singapore University Of Technology And Design A method and apparatus for reducing data bandwidth between a cloud server and a thin client
US9661321B2 (en) * 2014-10-15 2017-05-23 Nucleushealth, Llc Remote viewing of large image files
CN109493304B (en) * 2017-09-13 2022-11-08 腾讯科技(深圳)有限公司 Image data processing method and device
CN108109191A (en) * 2017-12-26 2018-06-01 深圳创维新世界科技有限公司 Rendering intent and system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014990A (en) * 2021-03-02 2021-06-22 卡莱特云科技股份有限公司 Program picture fast playing method, playing box and playing system
CN113014990B (en) * 2021-03-02 2024-04-12 卡莱特云科技股份有限公司 Quick playing method, playing box and playing system for program pictures

Also Published As

Publication number Publication date
CN112242946A (en) 2021-01-19

Similar Documents

Publication Publication Date Title
DE112010004319B4 (en) Arranging communications between different networks based on device capabilities
DE102013104691B4 (en) A method of transferring data between a first device and a second device
DE112012001557B4 (en) Predictive placement of content through network analysis
DE102014108903B4 (en) Scalable Web Real-Time Communications (WebRTC) media engines and related processes, systems and computer-readable media
DE112015004267T5 (en) Storage and transfer of application data between devices
DE112012006217T5 (en) Techniques for monitoring connection paths in networked devices
DE69913953T2 (en) METHOD AND DEVICE FOR PROCESSING ELECTRONIC MAIL
DE69434896T2 (en) Access method to a wireless local ad hoc network over a cellular wide area network coupled with the LAN MAC packet header.
DE602004004165T2 (en) Data Sharing in a Multimedia Communication System
DE602004009622T2 (en) data transfer
DE102014107943B4 (en) Bandwidth-efficient archiving of interactive real-time flows and related processes, systems and computer-readable media
DE102014108904A1 (en) Virtual Web Real Time Communications (WebRTC) gateways and related methods, systems and computer readable media
DE112015003106T5 (en) Wireless LAN network access
DE102014108888A1 (en) Back-to-back Web Real Time Communications (WebRTC) virtual agents and related processes, systems, and computer readable media
DE112013002674T5 (en) Apply, discover, and use services through virtual access point interfaces
DE102009043276A1 (en) Multimedia communication session coordination across heterogeneous transport networks
DE112015003686T5 (en) Handling wireless traffic on a per-user basis
CN116546454A (en) Network auxiliary information providing method and related equipment
DE102013101817A1 (en) METHOD FOR PROVIDING A COMMUNICATION SESSION AND DEVICE
DE112018003798T5 (en) GENERATING AND ANALYZING NETWORK PROFILE DATA
DE102011120635A1 (en) This call
DE112015005025T5 (en) METHOD AND SYSTEMS FOR IDENTIFYING AND REDUCING LTE SYSTEM COVER HOLES OVER EXTERNAL INTERFERENCE
DE112018001007T5 (en) PROCESS FOR PROVIDING A CUSTOMIZED USER INTERFACE FOR GROUP COMMUNICATION ON A COMMUNICATION DEVICE
DE112016000400T5 (en) Improving the quality experience for communication sessions
DE112005001833T5 (en) System and method for establishing the secure use of networks

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: WHATSAPP LLC, MENLO PARK, US

Free format text: FORMER OWNER: WHATSAPP INC., MENLO PARK, CA, US

R082 Change of representative

Representative=s name: MURGITROYD & COMPANY, DE