IP Library Granted Patent US 11,425,205
Granted Patent B1
US 11,425,205 · App. 16/878,902 · Granted Aug 23, 2022

Methods and systems for transmitting an image in chunks

Inventors: Aaron Patel (Menlo Park, CA); Jonathan Sheller (San Francisco, CA)
Assignee: WHATSAPP INC.
H04L67/141G06T3/4092H04L1/08H04L9/3242H04L43/16H04L63/0428
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,425,205
App. No.
16/878,902
Granted
Aug 23, 2022
Kind
B1
Abstract

Exemplary embodiments relate to techniques for improving the speed and rendering quality of an image (e.g., a JPEG), and are especially useful in an end-to-end encrypted environment. The image may be analyzed on the sending-client side and the image data is broken into multiple categories. In one embodiment, the image data is broken into four chunks, where each chunk could be rendered (in conjunction with previous chunks) to provide increasingly high levels of quality (e.g., a thumbnail chunk, a mid-quality chunk, a high-quality chunk, and a full-quality chunk). The image is uploaded to a blob store, and a message is sent to the receiving client with image information. At the recipient side, the JPEG image data is retrieved from the blob store and each chunk is rendered at progressively increasing levels of quality. Consequently, images are rendered faster, and the quality increases over time.

Claims (67)

1. A method, comprising:

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 store, the blob store holding 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, results in a high-quality version of the image;

retrieving the encrypted thumbnail from the blob store, decrypting the thumbnail, and displaying the thumbnail;

receiving a request to display the image;

retrieving the first additional encrypted data from the blob store, decrypting the first additional data, and combining the decrypted first additional data with the thumbnail; and

displaying the low-quality version of the image based on a network quality parameter.

2. The method of claim 1 , wherein the blob store transmits information to the receiving device in a data stream and further comprising:

receiving the network quality parameter;

comparing the network quality parameter with a threshold value associated with the high-quality version of the image;

determining that the network quality parameter does not exceed the threshold value; and

terminating the data stream to cancel transmission of the second additional encrypted data.

3. The method of claim 1 , wherein retrieving the encrypted thumbnail from the blob store is performed automatically in direct response to receiving the message.

4. The method of 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 including the reference to the image comprises: a first location in the image structure that divides the encrypted thumbnail from 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.

5. The method of 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 refraining from retranscoding the image.

6. The method of claim 1 , wherein retrieving the encrypted thumbnail from the blob store, retrieving the first additional encrypted data from the blob store, and retrieving the second additional encrypted data from the blob store are performed together in response to a single request for the image referenced in the message.

7. The method of claim 1 , wherein retrieving the encrypted thumbnail comprises: downloading a data chunk including at least some of the encrypted thumbnail;

receiving a keyed-hash message authentication code (HMAC) in connection with the data chunk;

calculating an HMAC over the downloaded data chunk; and

comparing the calculated HMAC to the received HMAC to verify that the encrypted thumbnail has not been altered.

8. A non-transitory computer-readable medium storing 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 including a reference to an image;

establish a connection to a blob store, the blob store holding 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, results in a high-quality version of the image;

retrieve the encrypted thumbnail from the blob store, decrypt the thumbnail, and display the thumbnail;

receive a request to display the image;

retrieve the first additional encrypted data from the blob store, decrypt the first additional data, and combine the decrypted first additional data with the thumbnail; and

display the low-quality version of the image based on a network quality parameter.

9. The medium of claim 8 , wherein the blob store transmits information to the receiving device in a data stream and further storing instructions for:

receiving the network quality parameter;

comparing the network quality parameter with a threshold value associated with the high-quality version of the image;

determining that the network quality parameter does not exceed the threshold value; and

terminating the data stream to cancel transmission of the second additional encrypted data.

10. The medium of claim 8 , wherein retrieving the encrypted thumbnail from the blob store is performed automatically in direct response to receiving the message.

11. The medium of claim 8 , 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 including the reference to the image comprises: a first location in the image structure that divides the encrypted thumbnail from 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.

12. The medium of claim 11 , further storing 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 refraining from retranscoding the image.

13. The medium of claim 8 , wherein retrieving the encrypted thumbnail from the blob store, retrieving the first additional encrypted data from the blob store, and retrieving the second additional encrypted data from the blob store are performed together in response to a single request for the image referenced in the message.

14. The medium of claim 8 , wherein retrieving the encrypted thumbnail comprises: downloading a data chunk including at least some of the encrypted thumbnail;

receiving a keyed-hash message authentication code (HMAC) in connection with the data chunk;

calculating an HMAC over the downloaded data chunk; and

comparing the calculated HMAC to the received HMAC to verify that the encrypted thumbnail has not been altered.

15. An apparatus, comprising:

a network interface configured to:

receive, via an end-to-end encrypted session between a sending device and a receiving device, a message including a reference to an image; and

establishing a connection to a blob store, the blob store holding 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, results in a high-quality version of the image;

a processor configured to:

retrieve the encrypted thumbnail from the blob store, decrypt the thumbnail, and display the thumbnail;

receive a request to display the image; and

retrieve the first additional encrypted data from the blob store, decrypt the first additional data, and combine the decrypted first additional data with the thumbnail; and

a display configured to display the low-quality version of the image based on a network quality parameter.

16. The apparatus of claim 15 , wherein the blob store transmits information to the receiving device in a data stream and further comprising:

receiving the network quality parameter;

comparing the network quality parameter with a threshold value associated with the high-quality version of the image;

determining that the network quality parameter does not exceed the threshold value; and

terminating the data stream to cancel transmission of the second additional encrypted data.

17. The apparatus of claim 15 , 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 including the reference to the image comprises: a first location in the image structure that divides the encrypted thumbnail from 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.

18. The apparatus of claim 17 , wherein the processor is further configured for:

receiving a request to forward the image to a second recipient; and

retransmitting the first and second locations in the image structure while refraining from retranscoding the image.

19. The apparatus of claim 15 , wherein retrieving the encrypted thumbnail from the blob store, retrieving the first additional encrypted data from the blob store, and retrieving the second additional encrypted data from the blob store are performed together in response to a single request for the image referenced in the message.

20. The apparatus of claim 15 , wherein retrieving the encrypted thumbnail comprises: downloading a data chunk including at least some of the encrypted thumbnail;

receiving a keyed-hash message authentication code (HMAC) in connection with the data chunk;

calculating an HMAC over the downloaded data chunk; and

comparing the calculated HMAC to the received HMAC to verify that the encrypted thumbnail has not been altered.

Assignments (2)
CHANGE OF NAME Recorded Jun 22, 2021
From: WHATSAPP INC.
To: WHATSAPP LLC
Reel/Frame 056646/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2020
From: PATEL, AARON; SHELLER, JONATHAN
To: WHATSAPP INC.
Reel/Frame 052966/0959 →
Continuity (1)
Provisional Application 62874554 · Jul 16, 2019
Cited By (1)
US 12,407,651