CN112242946A - 用于按组块传输图像的方法和系统 - Google Patents

用于按组块传输图像的方法和系统 Download PDF

Info

Publication number
CN112242946A
CN112242946A CN202010687916.4A CN202010687916A CN112242946A CN 112242946 A CN112242946 A CN 112242946A CN 202010687916 A CN202010687916 A CN 202010687916A CN 112242946 A CN112242946 A CN 112242946A
Authority
CN
China
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
CN202010687916.4A
Other languages
English (en)
Inventor
亚伦·帕特尔
乔纳森·谢勒
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,902 external-priority patent/US11425205B1/en
Priority claimed from US16/878,883 external-priority patent/US11178079B1/en
Application filed by WhatsApp LLC filed Critical WhatsApp LLC
Publication of CN112242946A publication Critical patent/CN112242946A/zh
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
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本申请涉及用于按组块传输图像的方法和系统。示例性实施例涉及用于提高图像(例如,JPEG)的速度和呈现质量的技术,并且在端到端加密环境中特别有用。图像可以在发送客户端侧分析,并且图像数据被分解成多个类别。在一个实施例中,图像数据被分解成四个组块,其中每个组块可以被呈现(结合先前的组块),以提供越来越高的质量水平(例如,缩略图组块、中等质量组块、高质量组块和完整质量组块)。图像被上传到blob储存器,并且带有图像信息的消息被发送到接收客户端。在接收者侧,从blob储存器检索JPEG图像数据,并且以逐渐增加的质量水平呈现每个组块。因此,图像被更快地呈现,并且质量随着时间提高。

Description

用于按组块传输图像的方法和系统
相关申请
本申请要求于2019年7月16日提交的且题为“Progressive JPEGs”的美国临时专利申请62,874,554、于2020年5月20日提交的且题为“Methods And Systems ForTransmitting An Image With Thumbnail Data”的美国非临时专利申请16/878,883以及于2020年5月20日提交的且题为“Methods And Systems For Transmitting An Image InChunks”的美国非临时专利申请16/878,902的优先权。上述申请的内容在此通过引用被并入。
背景
诸如消息传送(messaging)服务和社交网络服务的一些通信服务允许用户与其他用户交换消息。通信可以包括图像(如JPEG图像)。特别是当图像尺寸相对较大时,其可能需要一些时间才能被接收并加载到接收者的设备上。例如,当通过网络请求图像时,一种常见的现象是图像的上半部分将在一段时间后开始加载,而下半部分为空白。最终,当接收到更多数据时,图像的剩余部分被填充。
附图简述
图1A-1E描绘了根据实施例的不同质量水平的同一图像。
图2描绘了适用于以端到端(end-to-end)加密方式传输图像的示例性通信系统。
图3是描绘适用于实践示例性实施例的示例性计算系统的框图。
图4A描绘了根据示例性实施例的适用于存储图像数据的示例性数据结构。
图4B描绘了根据示例性实施例的示例性消息结构。
图5是描绘在第一实施例中的计算系统之间的信息交换的示例性数据流图。
图6A-6B是描绘根据第一实施例的示例性逻辑的流程图,分别用于从发送客户端编码和发送图像以及在接收客户端处接收和解码图像。
图6C是描绘用于将接收到的图像重新传输到另一客户端的示例性接收客户端侧图像转发逻辑的流程图。
图7是描绘在第二实施例中的计算系统之间的信息交换的示例性数据流图。
图8A-8B是描绘根据第二实施例的示例性逻辑的流程图,分别用于从发送客户端编码和发送图像以及在接收客户端处接收和解码图像。
图9是描绘用于消息传送服务的系统的示例的框图;
图10是示出适用于与示例性实施例一起使用的示例性计算设备的框图;
图11描绘了示例性通信架构;以及
图12是描绘示例性多载波通信设备的框图。
详细描述
通常在网络中,图像(如JPEG)会随着数据被接收而从上到下加载。这通常是由于这样的事实,即这种图像通常被打包并从图像数据结构的开头到结尾进行传输,这意味着构成图像的第一部分的图像数据在构成图像的后续部分的图像数据之前被完全传输。因此,在加载图像时,用户可能对图像没有特别好的感觉,因为最初来自图像底部部分的图像数据不可用。
为了解决这个问题,一些通信网络允许它们的用户在接收到包括图像的通信时自动下载图像。通过这种方式,如果用户没有立即打开包括图像的消息,他们就可以被提供对图像的完整质量(full-quality)版本的快速访问。问题是,在许多情况下,用户根本不查看下载的图像,这意味着浪费了用于传输该消息的网络带宽。
另一个潜在的解决方案是创建图像的较小“缩略图(thumbnail)”。用户可以查看缩略图以获得图像外观的预览,然后可以选择缩略图来下载完整尺寸的图像。该解决方案允许用户预览整个图像,并且也具有这样的优点,即如果用户不希望下载完整图像,则可以减少在网络上传输的信息量。如果用户查看预览并决定他们不希望下载整个图像,则他们可以不这样做,并避免传输完整质量图像的需要,在这种场景下只发送了较小的缩略图。不幸的是,如果用户确实希望下载整个图像,那么以这种方式使用缩略图实际上增加了在网络上传输的数据总量,因为需要下载完整质量图像和较小的缩略图两者。此外,当加载完整尺寸图像时,它仍然可能从上到下加载。因此,传统缩略图的使用没有解决递增地加载完整尺寸图像的问题。
另一个潜在的解决方案是使用渐进式(progressive)JPEG。当图像通过网络传输时,典型地会将完整图像上传到中间服务器以方便传递。中间服务器使用适当的转码(transcoding)参数多次扫描图像,以生成图像数据的多个版本。当这些版本向接收者传输时,接收者可以首先以模糊的方式呈现(render)它们,然后逐渐变得更加清晰。这是对从上到下的非渐进式JPEG方法的改进。
然而,渐进式JPEG传输通常依赖于中间服务器来处理JPEG。对于渐进式JPEG,图像的多次扫描是根据扫描脚本执行的,该扫描脚本包括定义在每次扫描期间编码的数据的转码参数。例如,JPEG典型地包括三个通道:一个亮度通道(Y)和两个色度通道(Cr和Cb)。每个通道可以包括针对该通道提供数据的64个系数:一个DC系数和63个AC系数。特定通道的某些系数对图像的影响比其他系数更大,因此渐进式JPEG可能会在第一次扫描中发送最重要的有影响的且数据密集性较低的信息,然后在后续扫描中平衡图像上剩余数据的影响与实现该影响所需的数据量。为了确定该数据中的哪些将被包括在哪次扫描中,中间服务器分析图像,选择适当的转码参数,并生成或应用扫描脚本来定义图像的各次扫描。然后,根据扫描脚本对图像进行多次扫描,以生成适当的图像数据,该图像数据然后可以被流式传输到接收者设备,以允许接收者设备渐进地呈现JPEG。
虽然这在传统通信系统中运行良好,但近来趋势已经朝向端到端加密(E2EE)环境发展。在E2EE环境中,通信的主体在发送客户端上加密,并且在接收客户端处解密,以确保没有其他参与者可以查看消息。因此,处理通信的任何中间服务器都不能查看通信内容。如果消息包括图像,则中间服务器无法确定转码参数,使得难以有效地传输图像。
示例性实施例解决了与图像发送和接收相关的这些和其他问题。所描述的技术提高了图像(例如JPEG)的速度和呈现质量,并且特别适合于端到端加密环境(E2EE)。
根据示例性实施例,可以在发送客户端侧分析图像,并且可以将图像数据分解成多个类别或片段。在一个实施例中,图像数据被分解成两个组块(chunk):缩略图组块和高质量图像组块。完整质量图像组块取决于缩略图组块,使得当使用高质量图像组块呈现完整图像时,来自缩略图组块的图像数据被重新使用。
发送客户端确定组块,识别组块尺寸,并计算每个组块上基于散列的消息认证码(HMAC)。图像数据可以被加密并上传到blob储存器,并且通知消息可以与确定的图像信息和合适的解密密钥一起被发送到接收客户端。接收客户端可以首先下载缩略图组块,并使用它来呈现缩略图;在一些实施例中,当接收到消息时,可以自动下载缩略图组块。接收侧的用户可以查看自动下载的缩略图,并确定他们是否希望下载高质量的完整图像。
相应地,图像的低质量版本可以用作缩略图。然而,这种方法具有优于传统缩略图的几个优点,传统缩略图典型地是独立于它们所表示的完整质量图像的较小图像(例如,被存储为单独的文件)。在本文描述的实施例中,低质量版本包括可以与中等质量数据组合以生成图像的中等质量(以及随后的高质量)版本的数据。因此,图像被更快地呈现,质量随着时间提高(而不是像传统的JPEG那样从上到下加载)。
此外,组块完全在客户端处定义和处理,而不需要blob储存器(其仅保存加密的组块)或中间服务器(其仅将加密的消息从发送者中继到客户端)的帮助。因此,中间服务器不需要处理图像并准备转码参数。
在另一个实施例中,图像数据可以被分解成两个以上的组块,其中每个组块可以被呈现(结合先前的组块)以提供越来越高的质量水平。例如,如果图像数据被分解成四个组块,则组块可以包括缩略图组块、中等质量组块、高质量组块和完整质量组块。在接收者侧,图像数据可以从blob储存器被检索并解密,并且每个组块可以以逐渐增加的质量水平呈现。在一些实施例中,低质量网络中的客户端可以仅请求导致中等质量呈现的组块,从而消耗更少的数据。
该简要概述旨在用作对下面更详细讨论的概念的非限制性介绍。然而,在讨论另外的示例性实施例之前,首先提供关于数据隐私的简要注释。将与下面的附图一起处理隐私设置和认证的更详细描述。
关于数据隐私的注释
本文描述的一些实施例利用可以包括由一个或更多个用户自愿提供的信息的训练数据或度量。在这样的实施例中,可以用多种方式保护数据隐私。
例如,在用户数据被收集或使用之前,用户可能需要决定加入任何数据收集。也可以给用户提供决定退出任何数据收集的机会。在决定加入数据收集之前,用户可以被提供有数据将被使用的方式、数据将被保留多长时间以及在适当的位置上以保护数据不被泄露的保护措施的描述。
识别数据从其被收集的用户的任何信息可以被清除或与数据分离。在任何识别信息需要被保留(例如,以满足管理要求)的情况下,可以向用户通知识别信息的收集、识别信息将被做出的用途以及识别信息将被保留的时间量。具体识别用户的信息可以被移除,并且可以用例如通用标识号或其他非特定形式的标识来代替。
被收集后,数据可以存储在包括保护措施以防止对数据的未经授权的访问的安全数据存储位置上。数据可以以加密格式被存储。识别信息和/或非识别信息可以在预定时间段后从数据存储库中被清除。
尽管在本文为了说明的目的描述了特定的隐私保护技术,但是本领域中的普通技术人员将认识到,隐私也以其他方式被保护。将在下面在描述网络实施例的章节中讨论关于数据隐私的另外的细节。
假设用户的隐私条件被满足,示例性实施例可以部署在各种各样的消息传送系统中,包括在社交网络中或在移动设备上的消息传送(例如,通过消息传送客户端应用或经由短消息服务)连同其他可能性。接下来提供用于参与在消息传送系统中的同步视频对话的示例性逻辑和过程的概述。
作为对理解的帮助,在描述基本实现的详细描述之前,将首先提出一系列示例。注意,这些示例被规定为是仅仅说明性的,以及本发明不限于所示的实施例。
现在参考附图,其中通篇相似的参考数字用于指相似的元素。在下面的描述中,为了解释的目的,阐述了许多具体细节,以便提供对其的彻底理解。然而,可以在没有这些具体细节的情况下实施新的实施例。在其它实例中,众所周知的结构和设备以框图形式示出,以便便于其描述。意图是涵盖与所主张的主题一致的所有修改、等同物和备选方案。
在附图和附随的描述中,标号“a”、“b”和“c”(以及类似的指示符)旨在是表示任何正整数的变量。因此例如,如果一个实现设置a=5的值,那么被示为部件122-1至122-a的部件122的完整集合可以包括部件122-1、122-2、122-3、122-4和122-5。实施例在这个背景下不被限制。
不同质量的图像
图1A-1E描绘了根据示例性实施例以不同质量转码的图像的各种示例。
图1E中描绘的最终图像是完整质量图像,用构成图像的100%的信息编码。例如,在JPEG的情况下,该图像可以包括对于所有三个数据通道(Y、Cr和Cb)的所有64个系数的数据。
图1A-1B中描绘的第一图像仅包括少量图像数据(例如,图像数据的大致20-45%,这取决于图像)。例如,该图像数据可以包括对于所有三个图像通道(Y、Cr和Cb)的DC系数的除最后两位之外的所有位。在完整尺寸(图1A)下,这个图像明显具有相当低的质量。然而,当尺寸减小时(图1B),该质量可能足以使图像充当合理的缩略图。
图1C中描绘的第二图像包括附加数据,该附加数据补充构成图1A的缩略图的数据(例如,图像数据的大致36-67%,这取决于图像)。低质量图像数据可能包括来自几次扫描的数据;在一个示例中,这可能包括来自对于所有三个图像通道的DC系数的剩余位,以及其他数据(例如,对于两个色度通道的AC系数和来自亮度通道的AC系数的除最后两个位之外的所有位)。该图像可能适合用作低质量图像。生成的图像具有比缩略图高的质量,但这个低质量图像和完整质量图像之间的差异可以很明显。
图1D中描绘的第三图像包括附加数据,该附加数据补充构成缩略图和低质量图像的数据(例如,图像数据的大致56-81%,这取决于图像)。中等质量图像可以包括来自一次或几次扫描的数据;在一个示例中,这可能包括对于亮度通道的AC系数的倒数第二位。该图像可以适合用作中等质量图像。事实上,在许多应用中,人眼可能难以区分图1D的中等质量图像和图1E的完整质量图像之间的差异。因此,特别是当用户的网络连接不够快或不够稳定时,用户的客户端设备可以选择只下载到中等质量图像,从而避免了需要传输构成中等质量版本和完整质量版本之间的差异的剩余数据。
最后,完整质量图像(图1E)可以包括未被缩略图、低质量和中等质量图像数据捕获的剩余图像数据。在上面的示例中,这将包括来自亮度通道的AC系数的剩余的最后一位。
图1A-1E中的四种质量仅仅是如何以不同质量对图像进行编码的一个示例。在示例性实施例中,图像可以用少至两种质量(例如,如图1A所描绘的缩略图版本和如图1E所描绘的完整质量版本)、三种质量(例如,对应于来自图1A的图像的缩略图、可对应于来自图1C或图1D的图像的低质量版本以及对应于来自图1E的图像的高质量版本)来编码,或者可以用多于四种质量来编码。
接下来参照图2描述用于分发图像(如上面描述的那些)的示例性系统。
示例性通信环境
如图2所示,示例性实施例可以在发送客户端202和接收客户端212-i之间提供由中间服务器204促进的通信服务(潜在地包括端到端加密)和/或社交网络服务。本文描述的一些实施例利用服务器侧扇出(fan out)来传输组消息和广播。在服务器侧扇出过程中,发送客户端202向服务器204传输消息的单个副本,然后服务器204向适当的接收者客户端212-i传输更新的副本。为此,中间服务器204可以在客户端数据库206中存储客户端信息,这允许向客户端设备212-i分发消息。
为了传输媒体和/或附件,通信系统也可以包括托管blob储存器210的blob服务器208(blob储存器210可以作为中间服务器204的一部分被托管,或者可以单独提供)。当发送包括媒体项目(如图像或视频)的消息时,在消息被推出到接收客户端212-i时,媒体项目可以被上传到blob储存器210。可选地,低质量缩略图可以被提供给接收客户端212-i,而原始媒体项目被存储在blob储存器210中。当接收客户端212-i试图访问媒体项目时,接收客户端212-i可以从blob服务器208请求媒体项目,blob服务器208从blob储存器210检索所请求的媒体项目,并将其发送到接收客户端212-i。这可以通过建立到接收客户端212-i的流式连接并作为流的一部分传输数据来实现。
特别是如果在发送更新时客户端离线和/或如果不同的客户端212-i试图在不同时间访问内容,那么使用blob储存器210来传输内容(特别地与发送加密消息相结合)可以促进将内容提供给接收客户端212-i。
在操作中,示例性实施例可以在发送客户端和接收客户端处放置图像处理逻辑,该图像处理逻辑处理图像、将图像分解成扫描、将数据图像组织成适于流式传输的组块、计算键控散列消息认证码、转发图像。中间服务器204可以被配置成仅转发包括对图像的引用的图像消息,该图像然后由接收客户端212-i从blob服务器208检索。以下参照图3更详细地描述这种逻辑。
示例性计算系统
图3是描绘适合与示例性实施例一起使用的示例性回复推荐系统的框图。
客户端300可用于捕获图像、记录音频/视频、显示图像和/或播放音频/视频信息流(feed)。客户端300可以是例如计算机、移动设备、专用媒体创建设备或任何其他合适的客户端设备。
客户端300可以包括音频输入设备302,如麦克风。音频输入设备302可以在客户端设备附近记录音频,并将记录的音频转发给音频输入逻辑312进行处理。音频输入逻辑312可以潜在地在声音分析逻辑的帮助下处理记录的音频,以便从音频中提取信息(例如,文本抄本(textual transcript))。音频输入逻辑312可以例如执行语音到文本处理、分析音频中的音调和/或音高、将音频直接提供给机器学习系统进行分析等。
客户端300还可以包括文本输入设备304,如用于输入文本的物理或屏幕键盘。
客户端300可以包括图像输入设备306,如能够记录静止图像和/或视频的照相机。图像输入逻辑314可以处理传入的图形内容,例如,将由客户端侧图像处理逻辑600和/或客户端侧多扫描逻辑700使用的图形内容。
音频输入逻辑312和/或图像输入逻辑314可以附加地或替代地位于服务器330处。
客户端300可以包括显示器308,如触摸屏或其他显示设备。显示器308可以显示包括如图1A-1E所描绘的图像的通信或社交网络界面。
客户端300可以包括音频输出设备310,如扬声器或音频输出插孔。音频输出设备310可以播放与更新相关联的音频,如包括在视频内的音轨。音频输出设备310可以通过音频输出逻辑316接收音频,音频输出逻辑316可以与操作系统318和/或应用338结合工作以提供输出音频。
音频输入设备302、文本输入设备304、视频输入设备306、显示器308和音频输出设备310中的任何一个或全部可以与客户端300集成,或者可以在客户端300外部提供,并且以有线或无线方式连接到客户端300。这些设备也可以用于支持通信应用,如用于进行视频呼叫的应用、消息传送应用或社交网络应用。
操作系统318可以支持客户端300,并且可以协调和/或控制音频输入设备302、文本输入设备304、视频输入设备306、显示器308、音频输出设备310、存储器320、应用338和/或网络接口326。
存储器320(例如,RAM、ROM等)可以存储供应用338和/或操作系统318使用的数据结构。例如,存储器320可以存储已经由应用338接收的消息,其中该消息包括图形内容。由图像输入设备306捕获和/或从发送客户端传递的图像322(以及图像322的缩略图324,如果该图像从blob服务器被检索的话)可以存储在存储器320中。
客户端300可以执行能够在网络上发送和接收通信的应用338。这些能力也可以在多个应用338之间分割。应用338可以是例如通信应用、社交网络应用或结合了更新和回复能力的其他类型的应用。
应用338可以支持能够捕获、处理、分析和显示图形内容的图像和/或视频捕获逻辑340。例如,图像/视频捕获逻辑340可以支持被配置成生成社交网络或消息传送接口的接口逻辑。
应用338也可以支持E2EE会话(session)建立逻辑340,该会话建立逻辑340被配置成通过通信网络建立从发送客户端到接收客户端的端到端加密会话。E2EE会话建立逻辑340可以被配置成例如从发送客户端向接收客户端发送E2EE建立消息,其中建立消息包括允许发送者和接收者加密和解密彼此消息的参数(如解密密钥),使得中间设备(如服务器330)无法读取消息内容。
为此,应用338可以支持加密和解密逻辑342,该加密和解密逻辑342被配置成加密和解密通过E2EE连接发送的消息。加密和解密逻辑342可以应用任何合适的加密和解密算法,如高级加密标准(AES)算法、Diffie-Hellman算法及其变体、或者任何其他合适的加密算法。
应用338也可以支持适于处理图像322的图像编码/解码逻辑344。图像编码/解码逻辑344可以将图像分解成缩略图和完整图像(如在参照图5-6B描述的实施例中),或者分解成多个中间图像质量(如在参照图7-8B描述的实施例中)。
应用338还可以支持消息传输逻辑346,该消息传输逻辑346被配置成生成可以包括关于图像322的信息的消息,并且将该消息传输到服务器330以被重新传输到接收者客户端。
应用338、存储器320和I/O设备可以通过操作系统318与用于在网络328(如因特网)上通信的网络接口325通信。网络接口326可以是例如网络接口卡(NIC)或用于管理网络发送和接收的其他合适的硬件和/或软件。
客户端300可以通过网络接口326与服务器330上的对应网络接口332通信。服务器330可以为应用338提供支持,并且为此,可以从客户端300接收消息,并且使用消息转发逻辑334将它们转发给一个或更多个接收客户端。服务器330也可以支持用于存储图像322的编码和加密版本的blob储存器336(或者blob储存器336可以存储在单独的设备上)。
任何或所有上述逻辑可以经由一个或更多个硬件处理器上的指令来执行。指令可以存储在物理的非暂时性计算机可读存储介质上。
注意,尽管逻辑和数据结构在图3中的特定配置中被描绘(其中一些在客户端300上,而其他在服务器330上),但是也考虑了与本发明相关的其他配置。
示例性数据结构
图4A描绘了适用于将图像数据404存储在加密有效载荷402中的数据结构。图像数据404可以被分解成多个质量404-i,这些质量可以由发送客户端设备来确定和构建。质量404-i中的每一个可以包括一次或更多次图像扫描,并且可以在图像数据404中以顺序次序表示,使得当从一个质量(404-i)移动到下一个质量(404-i+1)时,图像质量提高。例如,图4A中的第一质量包括对应于缩略图质量404-1的数据,而当结合来自缩略图质量404-1的数据呈现时,第二质量包括对应于低质量404-2的数据。
对应于每个质量404-i的图像数据量可以变化。例如,在该示例中,缩略图质量404-1包括八个数据块,数据长度406-1为8。低质量数据404-2包括24个数据块,数据长度406-2为24。八个数据块之后的第一划分器408-1表示缩略图数据404-1和低质量数据404-2之间的概念划分点(它可以对应于或不对应于存储在数据结构中的实际信息)。类似地,三十二个数据块之后的第二划分器408-2表示低质量数据404-2和中等质量数据404-3之间的概念划分点。
当图像数据404从blob储存器传输到接收客户端时,它可以作为加密数据流的一部分被传输。这样的数据流可以按组块传输,其中每个组块的尺寸可以是AES块尺寸的倍数(例如,16个字节)。然而,不能保证不同质量404-i之间的划分器408-i将对应于组块之间的划分点。在图4A所描绘的示例中,第一组块在16个块之后具有结束点410-1,而第二组块在32个块之后具有结束点410-2。因此,当传输第一组块时,它将包括所有缩略图数据404-1和三分之一的低质量数据404-2。第二组块将包括低质量数据404-2的剩余部分。
对于加密数据流的HMAC通常是在每个组块上计算的。相应地,发送客户端可以确定并执行图像的扫描,并且也可以确定各组块之间的划分点将位于何处。发送客户端可以在这些组块上计算HMAC。发送客户端可以上传图像数据到blob储存器,并且可以向接收客户端传输包含关于图像的信息的图像消息。在图4B中描绘了这样的图像消息450的示例。
图像消息450可以识别该消息的一个或更多个接收者452。服务器可以使用该信息将消息路由到适当的接收客户端设备。
图像消息450也可以包括加密的消息数据454,该加密的消息数据可以由客户端设备300上的加密/解密逻辑342来加密/解密。有效载荷454可以包括各种加密的消息数据。例如,消息主体456可以包括要在消息应用的界面中显示的消息信息。消息主体456可以包括例如要在消息中显示的文本。如果消息包括图像(或由图像组成),则消息主体456可以包括对图像的引用458,该图像可以远程存储在blob储存器上。引用458可以包括例如指向blob储存器上的图像的指针,或者该图像的标识符,以便可以从blob储存器检索图像。
有效载荷454还可以包括描述图像如何被分解成各种质量的信息,以便它可以被接收者设备顺序地重建。例如,有效载荷454可以包括对应于每个质量的数据的长度460。在图像数据被分解成缩略图和完整图像数据的情况下,长度460可以是对应于缩略图数据404-1长度的单个值。如果数据被分解成中间质量,则长度460可以表示为包括对应于每个图像质量的数据长度的数组(array)或列表。
使用该信息,接收客户端可以在每个组块内确定不同质量图像数据之间的任何划分线可能在哪里。接收客户端可以使用该信息以对应的质量呈现图像,和/或如果网络质量相对较低,则在下载完整图像之前停止数据流。
替代地或附加地,有效载荷454可以包括渐进式扫描脚本的每次扫描开始的位置列表。相应地,每次接收到新的扫描时,通过刷新UI,可以将图像加载为渐进式图像(例如,渐进式JPEG)。如果特定图像质量由多次扫描构成(例如,参见下面表1中的低质量示例),这可以允许该图像质量内另外的中间状态。
有效载荷454也可以包括针对每个图像组块的发送者计算的HMAC462。接收到组块之后,接收者可以针对该组块计算它自己的HMAC,并将其与图像消息450中的HMAC 462进行比较。如果HMAC相同,接收者可以验证接收数据的完整性。如果HMAC不同,则数据在传输过程中已被破坏或篡改。在这种情况下,接收者可以采取适当的动作,如请求数据的新副本,或者终止传输。
用于提供缩略图和完整图像的实施例
图5-6B提供了描述第一实施例的数据流图和流程图,其中图像被分解成缩略图和完整质量图像。可以设想,图5-6B中所描绘的实施例可以关联上述任何缩略图/完整图像实施例来使用,并且可以利用图7-8B中所描绘的多重扫描实施例来扩展。
如图5中所示,发送客户端可以首先向中间服务器发送端到端加密(E2EE)建立消息502。中间服务器可以将E2EE建立消息502转发给接收客户端。接收客户端可以生成E2EE建立响应504,并向服务器传输该响应504。服务器可以将响应504中继到发送客户端。建立消息502和响应504可以包括在发送客户端和接收客户端之间建立E2EE会话所需的所有信息。
在发送客户端上,用户可以参与通信应用来撰写消息(过程506)。消息可以包括图像。响应于接收到传输消息的请求,可以使用图6A中描述的过程对图像进行编码和加密。加密的图像数据508可以上传到blob服务器,该blob服务器可以用图像在blob服务器上的位置510来响应。
可以生成图像消息512,其包括加密的消息内容;加密的消息内容可以包括对应于不同图像质量(参见图4A-4B)的每个数据集的长度、图像数据中每个数据组块的HMAC、以及对图像的引用。该引用可以是从blob储存器接收的图像位置510,或者可以由从blob储存器接收的图像位置510导出。图像消息512可以被传输到服务器,然后从服务器中继到接收客户端。
接收客户端可以使用来自E2EE建立消息502和响应消息504的信息来解密图像消息。接收客户端可以识别到解密的消息包括对图像的引用,并且可以确定是否启用了图像缩略图的自动下载。例如,在用户的通信应用的设置中,可以启用或禁用自动下载,并且在特定背景中可以禁用自动下载(例如,如果用户在蜂窝数据网络上,如果网络不稳定或速度慢等)。如果自动下载被启用,则接收客户端可以向blob储存器传输下载图像数据的缩略图部分的请求514。这可以包括建立与blob储存器的数据流,发起图像消息中引用的图像数据的下载516,并且在518处接收到足够的图像数据来呈现缩略图之后,就终止数据流。
通信应用可以请求520从blob储存器检索图像。如果启用并执行了自动下载,则该请求520可以响应于用户请求完整图像(例如,通过点击缩略图)。替代地或附加地,可以响应于包括在通信应用中打开的消息的线程(thread)来下载图像。
响应于对图像数据的请求520,blob服务器可以向接收客户端传输数据流522。图像数据可以被顺序地流式传输,从而首先传输缩略图数据,然后传输完整图像数据。在516处如果已经传输了缩略图数据,那么响应于随后的图像请求520,可以仅传输尚未被检索的数据。在516处下载了缩略图数据之后,它可以被存储在缩略图文件夹中,使得它保持可用于与在522处检索的数据组合。如果未启用自动下载,则响应于单个图像请求520,可以检索整个图像(首先是缩略图数据,然后是后续的完整图像数据)。
当数据被接收时,它可以在接收客户端处被呈现。在缩略图/完整图像实施例的情况下,在524处可以首先呈现缩略图,然后在526处当完整图像可用时可以更新UI。
在某个点处,接收用户可以请求接收客户端转发图像。如果接收客户端仍然在它的存储器中存储了如在加密消息512中接收的图像引用、数据长度和HMAC的副本,则该信息可以只是被转发528到下一个客户端,而无需对图像进行重新编码。
这些消息可以根据图6A(发送者侧)和图6B(接收者侧)的流程图中所描绘的过程来生成和传输。示例性逻辑可以用硬件、软件或硬件和软件的组合来实现(例如,至少部分地用硬件来实现)。例如,该逻辑可以体现为数字逻辑,其可以至少部分地在硬件中实现,体现用于处理器电路执行下面描述的步骤的指令。尽管图6A-6B(和图8A-8B)以特定顺序描绘了逻辑元素的特定布置,但是应当理解,所描绘的配置仅仅是一个示例。在其他实施例中,可以提供更多的元素和/或可以省略一些元素,一些元素可以并行执行,和/或元素可以以不同的顺序执行。在一些实施例中,一些所描绘的元素可以在不同的系统上执行。
在发送客户端侧图像处理逻辑600中,处理可以开始于块602,其中发送客户端建立与接收客户端的E2EE会话。发送客户端可以响应于接收到从发送客户端向接收客户端传输消息的请求而建立E2EE会话。建立E2EE会话可以包括例如在发送客户端和接收客户端之间交换加密和解密密钥。
在604处,发送客户端可以在通信应用的接口中接收请求,以撰写到接收客户端的消息(在一些实施例中,块604可以在块602之前)。消息可以包括诸如图像的附件,该图像可以存储在发送客户端的存储器或存储装置中。相应地,在块606处,通信应用可以从存储装置或存储器检索图像。替代地,图像可以被远程存储,并且在块606处,通信应用可以从远程位置请求图像的副本。
在块608处,系统可以确定是否启用了多重扫描。在一些实施例中,多重扫描可用于以缩略图质量以及缩略图质量和完整图像质量之间的至少一个附加中间质量来扫描图像。基于用户设置,或者在特定背景(例如,如果图像预期从不可靠或缓慢的网络下载)下,可以默认启用多重扫描。如果是,则处理可以前进到块802(参见图8A)。
如果未启用多重扫描,则在块610处,可以用两种质量扫描图像。例如,可以使用扫描脚本将图像扫描为渐进式JPEG。提供两种或四种图像质量的扫描脚本的一个示例如下:
表1
Figure BDA0002588246110000161
在该示例中,第一次扫描是对Y、Cr和Cb通道的DC系数的初始扫描,减去最低的两位。该信息适合用作图像的缩略图。
接下来的五次扫描产生低质量图像。其中,前两次(扫描号2和3)分别捕获Y、Cr和Cb通道的DC系数的倒数第二位和最后一位。第三次(扫描号4)捕获Cr色度通道的AC系数,而第四次(扫描号5)捕获Cb色度通道的AC系数。第五次(扫描号6)捕获Y亮度通道的AC系数的除最后两位以外的所有位。
典型地,亮度通道的AC系数包括最多的数据,并且是最后下载的。因此,下一次扫描(扫描号7)(其可以与先前的扫描组合以产生中等质量图像)读取Y亮度通道的AC系数的倒数第二位。最终扫描(扫描号8)通过读取Y亮度通道的AC系数的最低位来产生完整的高质量图像(当与先前的扫描组合时)。
注意,这种特定的扫描脚本配置仅仅是示例性的,并且使用在实践中已经发现的特定数据来合理地平衡每次相应扫描的尺寸与结合先前扫描呈现扫描所产生的质量。例如,产生渐进式缩略图的第一次扫描倾向于在相对少量的数据中提供相对大量的信息。该信息的质量不足以表示中等质量图像,但足以用作缩略图。在实践中,低质量扫描倾向于带来大约一半的图像数据(大约36-67%,平均大约48%),而中等质量扫描倾向于带来56-81%的图像数据,平均大约66%。在许多情况下,中等质量图像对于人类来说与原始的完整质量图像是难以区分的。
在提供缩略图和完整图像的实施例中(即,没有中间的低质量和中等质量的呈现),第二次至第八次扫描可以被视为完整图像数据。注意,在多重扫描和缩略图/完整图像实施例中,图像仍然可以被处理为渐进式JPEG。然而,客户端可以被配置成将第一次扫描(或多次扫描)视为缩略图数据,并且可以利用其他层(tier)(低质量和中等质量)来执行其他处理步骤。例如,根据网络质量和可用带宽,接收客户端可以选择只接收导致低质量或中等质量图像的数据量。在这样的实施例中,可以为各种网络质量参数(例如,吞吐量、比特率、丢包率等)定义阈值。如果网络质量高于第一(低)阈值水平,则接收低质量图像,并且接收客户端可以在接收到对应于低质量图像的扫描时终止数据流。如果网络质量高于第二(中间)阈值水平,则接收中等质量图像,并且接收客户端可以在接收到对应于中等质量图像的扫描时终止数据流。如果网络质量高于第三(高)阈值,则可以接收完整图像,并且接收客户端可以在接收到所有可用扫描后终止数据流。
由于各种原因,系统可以调整扫描脚本,或应用不同的扫描脚本。例如,使用不同的转码参数可以导致较小的文件尺寸,并且可以选择这样的参数以减少通过网络传输的数据量。此外,因为图像的每次扫描消耗处理和其他计算资源,并且因为这些资源在终端用户客户端设备上可能比在中央服务器上更受限制,所以系统可以根据终端用户客户端设备上的硬件质量来选择执行更少的扫描。
作为在块610处扫描图像的结果,创建图像数据,其中图像数据包括对应于缩略图扫描的数据和剩余图像数据。在块612处,系统可以计算缩略图扫描的长度。例如,这可以通过使用渐进式JPEG解析器来完成,该解析器识别图像数据中对应于特定扫描结束和下一次扫描开始的位置。
在块614处,系统可以使用任何合适的加密算法来加密生成的图像数据。在块616处,系统可以根据加密的数据流式传输算法将编码的图像数据划分成组块,并且在块618处,可以计算每个组块的HMAC。
在块620处,加密的图像数据可以被上传到blob储存器,并且blob储存器可以通知发送设备在blob储存器上保存图像的位置(或者可以用于在blob储存器上定位图像的图像的标识符)。
使用在块612、618和620处生成的信息,系统可以在块622处生成图像消息。图像消息可以包括对图像的引用,该引用可以包括在块620处由blob储存器返回的位置和/或ID、在块612处计算的缩略图长度(和/或在块810处计算的任何其他长度)、以及在块618处计算的组块HMAC。图像消息的内容可以被加密,并且在块624处,图像消息可以被传输到其预期的接收者。
图6A(和图8A)中描绘的过程可以与在接收者侧设备上执行的过程并行或结合执行。图6B(和图8B)是描绘由诸如接收客户端的系统执行的用于请求和显示渐进式图像的示例性逻辑650(和850)的流程图。
在块652处,接收客户端可以执行E2EE会话建立。块652可以是块602的对应部分,并且可以包括相似或相应的步骤。
在块654处,接收客户端可以使用在块652中建立的E2EE会话来接收图像消息。图像消息可以包括加密内容,如对图像、数据长度和HMAC的加密引用。
在块656处,系统可以检索对应于被包括在引用图像的图像数据中的相应图像质量的至少一些数据的长度(如缩略图数据的长度)。如先前所注意到的,数据长度可能不精确对应于E2EE数据流的组块长度,因此系统可以使用该信息来确定需要多少组块,以便获得对应于每个相应图像质量的数据。
在块658处,系统可以确定是否启用了缩略图的自动下载。如果没有,则处理前进到块660,并且系统在下载缩略图数据之前等待显示图像消息的请求。这种请求可以是加载包含图像消息的线程的请求的形式,或者是滚动到线程中可以查看图像的点的请求的形式。替代地,如果启用了自动下载,则处理可以直接前进到块662。
在块662处,系统从blob储存器检索对应于缩略图的图像数据。这可以涉及发起与blob储存器的数据流,以便检索对应于原始图像消息中的引用的图像数据。系统可以下载对应于缩略图的一个或更多个组块。
在块664处,系统可以根据在块652处建立的E2EE会话的参数解密检索到的缩略图数据。在块666处,系统可以在加密数据上计算HMAC值(在一些实施例中,块666可以在块664之前),以验证数据未被破坏并且未被改动。假设是这种情况,在块668处,系统可以显示解密的缩略图。下载了缩略图数据之后,系统可以可选地暂停下载剩余的数据和/或终止与blob储存器的数据流。
在块670处,系统可以接收显示完整图像的请求。这可以响应于缩略图的选择,该选择指示用户希望查看图像的更高质量版本。替代地或附加地,系统可以在缩略图已经被下载之后简单地继续下载图像数据。
在块672处,系统可以发起与blob储存器的数据流,并且在块674处,可以向blob储存器传输下载图像数据的请求(或者替代地,可以继续通过现有数据流下载数据)。在一些实施例中,仅需要一个请求来下载图像被编码的各种质量的所有图像数据(因为图像数据继续顺序地流式传输附加数据,这些附加数据可以被累积地应用来以不断增加的质量水平呈现图像)。
在块676处,系统确定是否启用了多重扫描能力(类似于图6A的块608)。如果是这样,处理前进到块852(见图8B)。否则,处理前进到块678,并且通过块672的流式传输连接来检索数据组块。
在块680处,系统可以解密接收的组块,并且在块682处,验证组块HMAC(在一些实施例中,块680和682可以反转)。在块684处,系统基于新接收的图像数据更新UI(假设最近的组块包括直到一次图像扫描结束的数据;否则,在循环的这次迭代中,可以省略块684)。
在块686处,系统确定是否还有更多组块有待从blob储存器下载。如果是,处理返回到块678,并且可以检索下一个组块。如果没有(即,已经下载了所有组块),处理可以终止,因为图像已经以完整质量呈现。
在接收客户端已经接收到图像数据之后,接收用户可以请求将图像转发给另一个用户。图6C是描述用于将图像转发给第二接收用户的示例性逻辑690的流程图。
在块692处,系统可以接收将先前下载的图像转发给接收客户端的请求。该请求可以是将图像转发给第二接收客户端,在块694处,第一接收客户端可以建立与第二接收客户端的E2EE会话。
因为图像数据已经驻留在blob储存器处,并且因为已经处理了各种扫描和图像质量,并且已经在相关组块上计算了HMAC,所以没有必要再次执行它的处理(假设接收客户端仍然具有来自原始发送客户端的相关数据长度和HMAC的副本)。
相应地,在块696处,系统为第二接收客户端生成新的图像消息,该新的图像消息包括来自原始发送者的数据/扫描长度和来自原始发送者的HMAC。来自原始发送者的对图像的引用也可以包括在新的图像消息中。
在块698处,新的图像消息可以被转发给第二接收者。相应地,第二接收者可以使用新的图像消息中的信息来以与第一接收者相同的方式从blob储存器下载图像。
用于提供多重扫描的实施例
图7、图8A和图8B补充了图5、图6A和图6B中所示的过程,以便提供生成缩略图质量和完整图像质量之间的中间图像质量的系统。
图7的数据流图在许多方面类似于图5中所描绘的数据流图。为了简洁起见,类似的消息交换在图5和图7中用相同的参考数字标记,并且为了简洁起见,这里省略了对这些类似步骤的描述。图5中采取的动作和图7中采取的动作之间的一个区别在于,当图像在506处被编码和加密时,它可以以多种不同的质量被编码,如图8A所示。对应地,如关联图8B所描述的,增加新的过程702来以中间质量呈现图像。
此外,为了节省空间,省略了用于将图像转发给新接收者的过程528,但是(在图6C中描述的)该过程可以与图7-8B中所示的实施例关联使用,其方式与上述缩略图/完整图像实施例相同(除了对应于中间图像质量(而不仅仅是缩略图质量)的数据长度将被加载到新的图像消息中)。
转到图8A,描述了用于存储图像数据以使得图像可以以缩略图和完整图像之间的中间质量来表示的过程。逻辑800开始于块802,该块802在图6A的块610之后。在块608处,系统可以将用于生成图像数据的图像扫描(例如,参见表1)划分成N个质量。质量的数量N可以取决于通信服务的管理员所期望的中间状态的数量。例如,通常至少使用两种图像质量(缩略图质量和完整图像质量)。至少一个中间图像质量也可能是期望的,用于可能不稳定或相对较慢的网络连接。进一步的中间质量可以用来提供更多的粒度,例如,针对非常差的连接的低质量,和针对次优的较好连接的中间或中等质量。
可选地,系统可以在不同的可用扫描简档(profile)之间进行选择,或者可以调整扫描脚本,以提供不同数量或配置的扫描。这可以基于可用的网络和/或客户端硬件信息,以及基于哪个扫描脚本/配置产生最小的总图像数据(或者针对特定图像质量最小的图像数据)来执行。系统可以在N种不同的图像质量之间分配扫描脚本上指定的扫描。
在块804-806处,系统可以迭代地扫描图像,直到已经执行了扫描脚本中的全部扫描。在块808处,系统可以确定对应于每个质量水平的数据尺寸。例如,系统可以应用渐进式JPEG解析器来识别连续扫描之间的划分线在图像数据中的位置。在块802中,使用该信息和特定扫描对不同图像质量的分配,系统可以确定多少数据对应于每个相应的扫描。在块810处,这些量可以存储在数组(或其他合适的结构)中。该数组可用于表示图像消息中的数据长度。
转向图8B,描述了使用存储在图8A中的中间质量呈现图像的过程。逻辑850从块852开始,块852在图6B的块676之后。在块852处,系统确定对应于当前正在处理的质量水平的数据是否已经完全下载。例如,在过程开始时,系统将下载对应于缩略图质量的图像数据。如果在当前质量水平下还有更多数据需要下载,则处理可以前进到块854。块854-864通常对应于图6B的块678-686,并且这里省略了对这些块的描述以避免重复。重复执行这些块,直到当前质量水平的图像数据通过数据流下载完毕。
当前质量水平的数据完成下载(块852处的“是”)之后,处理前进到块866。这里,系统接收描述网络连接状态的参数(例如,网络吞吐量、带宽、比特率、丢包率等)。在块868处,系统将这些参数与下一质量水平的预定网络质量阈值进行比较。例如,如果系统刚刚完成缩略图质量的处理,则系统可以评估网络连接是否足够好以下载低质量的图像数据。
如果是,处理前进到块854,并且系统继续从图像数据下载数据组块,直到达到下一质量水平。如果不是,处理可以前进到块870,并且系统可以终止与blob服务器的数据流。因此,为了图像的更高质量,系统避免下载附加的图像数据。因此,系统以下载的最高质量呈现图像,但是当网络质量不足时,可以避免执行大量下载。
上述实施例可以由消息传送架构执行,消息传送架构的示例接下来参考图9被描述。
消息传送架构
图9示出了实现适合于供示例性实施例使用的消息传送服务900的各种功能的多个服务器的实施例。将认识到,在消息传送服务900的各种实施例中可以使用工作和功能的不同分布。
消息传送服务900可以包括域名前端902。域名前端902可以被分配与在域名系统(DNS)中的消息传送服务900相关联的一个或更多个域名。域名前端902可以接收传入连接,并将连接分配到提供各种消息传送服务的服务器。
消息传送服务902可以包括一个或更多个聊天服务器904。聊天服务器904可以包括用于接收和发送用户到用户消息传送更新(例如聊天消息)的前端服务器。传入连接可以基于工作负载平衡由域名前端902分配到聊天服务器904。
消息传送服务900可以包括后端服务器908。后端服务器908可以执行支持前端聊天服务器904的聊天操作的专门任务。可以使用多个不同类型的后端服务器908。将认识到,在不同的实施例中,任务类型对不同的后端服务器908的分配可以改变。在一些实施例中,由专用服务器提供的一些后端服务可以被组合到单个服务器或一组服务器上,每个服务器在本文所述的实施例中执行在不同服务器之间划分的多个任务。类似地,在一些实施例中,本文描述的一些专用后端服务器的任务可以在不同服务器组中的不同服务器之间被划分。
消息传送服务900可以包括一个或更多个离线储存服务器910。一个或更多个离线储存服务器910可以存储对于当前离线消息传送客户端的消息传送内容,持续到当消息传送客户端重新连接时。
消息传送服务900可以包括一个或更多个会话服务器912。一个或更多个会话服务器912可以维持所连接的消息传送客户端的会话状态。
消息传送服务900可以包括一个或更多个存在服务器914。一个或更多个存在服务器914可以维持消息传送服务900的存在信息。存在信息可以对应于用户特定的信息,其指示给定用户是否具有在线消息传送客户端并且可以聊天、具有在线消息传送客户端但是当前离开该客户端、没有在线消息传送客户端以及任何其他存在状态。
消息传送服务900可以包括一个或更多个推送储存服务器916。一个或更多个推送储存服务器916可以缓存推送请求并将推送请求传输到消息传送客户端。推送请求可用于唤醒消息传送客户端,通知消息传送客户端消息传送更新是可用的,以及以其他方式执行与消息传送客户端的服务器侧驱动交互。
消息传送服务900可以包括一个或更多个群组服务器918。一个或更多个群组服务器918可以保持群组的列表,将用户添加到群组,从群组移除用户,以及执行群组聊天消息的接收、缓存和转发。
消息传送服务900可以包括一个或更多个阻止列表服务器920。一个或更多个阻止列表服务器920可以保持用户特定的阻止列表,用户特定的传入阻止列表为每个用户指示被禁止向该用户传输消息的一个或更多个其他用户。可选地或附加地,一个或更多个阻止列表服务器920可以保持用户特定的传出阻止列表,其为每个用户指示该用户被禁止将消息传输到的一个或更多个其他用户。将认识到,传入阻止列表和传出阻止列表可以组合地被存储在例如数据库中,其中传入阻止列表和传出阻止列表表示块信息的相同库的不同视图。
消息传送服务900可以包括一个或更多个最后看到的信息服务器922。一个或更多个最后看到的信息服务器922可以接收、存储和维持指示最后被看到的位置、状态、消息传送客户端以及用户最后看到的到消息传送服务900的连接的其他元素的信息。
消息传送服务900可以包括一个或更多个密钥服务器924。一个或更多个密钥服务器可以托管对于公钥/私钥加密通信的公钥。
消息传送服务900可以包括一个或更多个简档照片服务器926。一个或更多个简档照片服务器926可以存储消息传送服务900的多个用户的简档照片并使该简档照片可用于检索。
消息传送服务900可以包括一个或更多个垃圾邮件记录服务器928。一个或更多个垃圾邮件记录服务器928可以记录已知的和可疑的垃圾邮件(例如,不想要的消息,尤其是促销性质的那些消息)。一个或更多个垃圾邮件记录服务器928可操作来分析消息以确定它们是否是垃圾邮件并在一些实施例中执行针对可疑的垃圾邮件发送者(发送垃圾邮件消息的用户)的惩罚措施。
消息传送服务900可以包括一个或更多个统计服务器930。一个或更多个统计服务器可以编译和存储与消息传送服务900的操作和消息传送服务900的用户的行为相关的统计信息。
消息传送服务900可以包括一个或更多个web服务器932。一个或更多个web服务器932可以参与与web浏览器的超文本传输协议(HTTP)和超文本传输协议安全(HTTPS)连接。
消息传送服务900可以包括一个或更多个聊天活动监控服务器934。一个或更多个聊天活动监控服务器934可以监控用户的聊天以确定由消息传送服务900的用户进行的未授权或被劝阻的行为。一个或更多个聊天活动监控服务器934可以与垃圾邮件记录服务器928和阻止列表服务器920协同地工作,其中一个或更多个聊天活动监控服务器934识别垃圾邮件或其他不被鼓励的行为并且向垃圾邮件记录服务器928提供垃圾邮件信息以及在适当的情况下向阻止列表服务器920提供阻止信息。
消息传送服务900可以包括一个或更多个同步服务器936。一个或更多个同步服务器936可以使消息传送系统与来自消息传送客户端的联系人信息(例如在移动电话上的地址簿)同步,以在消息传送服务900中确定用户的联系人。
消息传送服务900可以包括一个或更多个多媒体服务器938。一个或更多个多媒体服务器可以存储在消息传送客户端之间在运送中的多媒体(例如,图像、视频、音频)、为离线端点缓存的多媒体,并且可以执行多媒体的转码。
消息传送服务900可以包括一个或更多个支付服务器940。一个或更多个支付服务器940可以处理来自用户的支付。一个或更多个支付服务器940可以连接到外部第三方服务器以用于支付的执行。
消息传送服务900可以包括一个或更多个注册服务器942。一个或更多个注册服务器942可以注册消息传送服务900的新用户。
消息传送服务900可以包括一个或更多个语音中继服务器944。一个或更多个语音中继服务器944可以在消息传送客户端之间中继互联网协议语音(VoIP)语音通信以用于VoIP呼叫的执行。
上述方法可以体现为计算机可读介质上的指令或者计算架构的一部分。图10示出了适合于实现如先前所述的各种实施例的示例性计算架构1000的实施例。在一个实施例中,计算架构1000可以包括电子设备(例如计算机1001)或者被实现为电子设备的一部分。实施例在这个背景下不被限制。
如在本申请中使用的,术语“系统”和“部件”意欲指计算机相关实体,或者是硬件、硬件和软件的组合、软件、或者是在执行中的软件,其示例由示例性计算架构1000提供。例如,部件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器、(光和/或磁存储介质的)多个存储驱动器、对象、可执行文件、执行线程、程序和/或计算机。作为例证,在服务器上运行的应用和该服务器都可以是部件。一个或更多个部件可以驻留在执行的进程和/或线程中,并且部件可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,部件可以通过各种类型的通信介质通信地耦合到彼此以协调操作。协调可以涉及信息的单向或双向交换。例如,部件可以以通过通信介质传递的信号的形式传递信息。信息可以被实现为分配给各种信号线的信号。在这样的分配中,每个消息是信号。然而,另外的实施例可以可选地使用数据消息。这种数据消息可以跨越各种连接被发送。示例性连接包括并行接口、串行接口和总线接口。
计算架构1000包括各种常见的计算元件,例如一个或更多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)部件、电源等。然而,实施例不限于计算架构1000的实现方式。
如在图10中所示的,计算架构1000包括处理单元1002、系统存储器1004和系统总线1006。处理单元1002可以是各种市场上可买到的处理器中的任何一种,非限制性地包括
Figure BDA0002588246110000271
Figure BDA0002588246110000272
处理器;
Figure BDA0002588246110000273
应用、嵌入式和安全处理器;
Figure BDA0002588246110000274
Figure BDA0002588246110000275
Figure BDA0002588246110000276
处理器;IBM和
Figure BDA0002588246110000277
Cell处理器;
Figure BDA0002588246110000278
Core(2)
Figure BDA0002588246110000279
Figure BDA00025882461100002710
处理器;以及类似的处理器。双微处理器、多核处理器和其他多处理器架构也可以用作处理单元1002。
系统总线1006向处理单元1002提供系统部件(包括但不限于系统存储器1004)的接口。系统总线1006可以是几种类型的总线结构中的任何一种,总线结构可以使用各种市场上可买到的总线架构中的任何一种进一步互连到存储器总线(在有或没有存储器控制器的情况下)、外围总线和本地总线。接口适配器可以通过插槽架构连接到系统总线1006。示例插槽架构可以非限制性地包括加速图形端口(AGP)、卡总线、(扩展)工业标准架构((E)ISA)、微通道架构(MCA)、NuBus、外围部件互连(扩展)(PCI(X))、PCI Express、个人计算机存储卡国际协会(PCMCIA)等。
计算架构1000可以包括或实现各种制造物品。制造物品可以包括存储逻辑的计算机可读存储介质。计算机可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。逻辑的示例可以包括使用任何合适类型的代码(例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、视觉代码,等等)实现的可执行计算机程序指令。实施例也可以至少部分地被实现为在非暂时性计算机可读介质中或其上包含的指令,其可以由一个或更多个处理器读取和执行以实现本文描述的操作的执行。
系统存储器1004可以包括以一个或更多个较高速度存储器单元的形式的各种类型的计算机可读存储介质,例如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、聚合物存储器(例如铁电聚合物存储器)、双向存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡、设备的阵列(例如独立磁盘冗余阵列(RAID)驱动器)、固态存储器设备(例如,USB存储器、固态驱动器(SSD))和适合于存储信息的任何其他类型的存储介质。在图10所示的说明性实施例中,系统存储器1004可以包括非易失性存储器1008和/或易失性存储器1010。基本输入/输出系统(BIOS)可以被存储在非易失性存储器1008中。
计算架构1000可以包括以一个或更多个较低速度存储器单元的形式的各种类型的计算机可读存储介质,包括内部(或外部)硬盘驱动器(HDD)1012、从可移动磁盘1016读取或向可移动磁盘1016写入的磁性软盘驱动器(FDD)1014以及从可移动光盘1020(例如,CD-ROM或DVD)读取或向可移动光盘1020写入的光盘驱动器1018。HDD 1012、FDD 1014和光盘驱动器1020可以分别通过HDD接口1022、FDD接口1024和光学驱动器接口1026连接到系统总线1006。用于外部驱动器实现的HDD接口1022可以包括通用串行总线(USB)和IEEE 694接口技术中的至少一种或两种。
驱动器和相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等的易失性和/或非易失性存储。例如,多个程序模块(包括操作系统1028、一个或更多个应用程序1030、其他程序模块1032和程序数据1034)可以被存储在驱动器单元1012和存储器单元1008中。在一个实施例中,一个或更多个应用程序1030、其他程序模块1032和程序数据1034可以包括例如消息传送系统的各种应用和/或部件。
用户可以通过一个或更多个有线/无线输入设备(例如键盘1036和指向设备(例如鼠标1038))来将命令和信息输入到计算机1001内。其他输入设备可以包括麦克风、红外(IR)遥控器、无线电(RF)遥控器、游戏板、手写笔、读卡器、软件狗、指纹读取器、手套、图形平板电脑、操纵杆、键盘、视网膜读取器、触摸屏(例如电容式、电阻式等)、轨迹球、触控板、传感器、触笔,等等。这些和其他输入设备常常通过耦合到系统总线1006的输入设备接口1040连接到处理单元1002,但可以通过其他接口(例如并行端口、IEEE 694串行端口、游戏端口、USB端口、IR接口等)被连接。
监视器1042或其他类型的显示设备也通过接口(例如视频适配器1056)连接到系统总线1006。监视器1042可以在计算机1001的内部或外部。除了监视器1042之外,计算机通常还包括其他外围输出设备,例如扬声器、打印机等。
计算机1001可以使用经由有线和/或无线通信与一个或更多个远程计算机(例如远程计算机1044)的逻辑连接来在联网环境中操作。远程计算机1044可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐器具、对等设备或其他公共网络节点,并且通常包括相对于计算机1001描述的许多或所有元件,但是为了简洁的目的只有存储器/存储设备1046被示出。所描绘的逻辑连接包括与局域网(LAN)1048和/或更大的网络(例如广域网(WAN)1050)的有线/无线连接。这种LAN和WAN联网环境在办公室和公司中是普通的,并且便于全企业计算机网络,例如内联网,所有这些网络都可以连接到全球通信网络,例如互联网。
当在LAN联网环境中被使用时,计算机1001通过有线和/或无线通信网络接口或适配器1052连接到LAN 1048。适配器1052可以便于与LAN 1048的有线和/或无线通信,其还可以包括布置在其上的无线接入点,用于使用适配器1052的无线功能进行通信。
当在WAN联网环境中被使用时,计算机1001可以包括调制解调器1054,或者连接到在WAN 1050上的通信服务器,或者具有用于通过WAN 1050(例如借助于互联网)建立通信的其他装置。调制解调器1054(其可以是内部或外部和/或有线和/或无线设备)通过输入设备接口1040连接到系统总线1006。在联网环境中,相对于计算机1001描绘的程序模块或其部分可以存储在远程存储器/存储设备1046中。将认识到,所示的网络连接是示例性的,并且在计算机之间建立通信链路的其他手段可以被使用。
计算机1001可操作来与使用标准的IEEE 802系列的有线和无线设备或实体(例如可操作地布置在无线通信(例如,IEEE 802.13空中调制技术)中的无线设备)通信。这至少包括Wi-Fi(或无线保真(Wireless Fidelity))、WiMax、和BluetoothTM无线技术等。因此,通信可以是如同传统网络一样的预定义结构,或者仅仅是在至少两个设备之间的自组织通信。Wi-Fi网络使用被称为IEEE 802.13x(a、b、g、n等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可用于将计算机连接到彼此、到互联网和到有线网络(其使用与IEEE 802.3相关的媒体和功能)。
图11是描绘适合于实现如先前所述的各种实施例的示例性通信架构1100的框图。通信架构1100包括各种常见的通信元件,例如发射机、接收机、收发机、无线电装置、网络接口、基带处理器、天线、放大器、滤波器、电源等。然而,实施例不限于通信架构1100的实现。
如图11所示,通信架构1100包括一个或更多个客户端1102和服务器1104。客户端1102可以实现客户端设备300。服务器1104可以实现服务器设备330。客户端1102和服务器1104操作地连接到可用于存储相应的客户端1102和服务器1104本地的信息(例如cookies和/或相关联的背景信息)的一个或更多个相应的客户端数据储存装置1106和服务器数据储存装置1108。
客户端1102和服务器1104可以使用通信框架1110在彼此之间传递信息。通信框架1110可以实现任何众所周知的通信技术和协议。通信框架1110可以被实现为分组交换网络(例如,诸如互联网的公共网络、诸如企业内联网的私有网络等)、电路交换网络(例如,公共交换电话网络)或者分组交换网络和电路交换网络的组合(具有合适的网关和译码器)。
通信框架1110可以实现被布置成接受、通信和连接到通信网络的各种网络接口。网络接口可以被视为输入输出接口的一种特殊形式。网络接口可以采用连接协议,非限制性地包括直接连接、以太网(例如,粗、细、双绞线10/100/1000Base T等)、令牌环、无线网络接口、蜂窝网络接口、IEEE 802.11a-x网络接口、IEEE 802.16网络接口、IEEE 802.20网络接口等。此外,多个网络接口可以用于与各种通信网络类型建立关系。例如,可以采用多个网络接口来允许通过广播、多播和单播网络进行通信。如果处理要求规定更大的速度和容量,分布式网络控制器架构可以类似地用于池化(pool)、负载平衡或以其他方式增加客户端1102和服务器1104所需的通信带宽。通信网络可以是有线和/或无线网络中的任何一个和组合,没有限制地包括直接互连、安全定制连接、私有网络(例如企业内联网)、公共网络(例如互联网)、个人区域网(PAN)、局域网(LAN)、城域网(MAN)、作为在互联网上的节点的操作任务(OMNI)、广域网(WAN)、无线网络、蜂窝网络和其他通信网络。
图12示出了在多载波OFDM系统(如消息传送系统)中使用的设备1200的实施例。设备1200可以实现例如如参考消息传送部件逻辑、意图确定逻辑和群组选择逻辑描述的软件部件1202。设备1200也可以实现逻辑电路1204。逻辑电路1204可以包括物理电路以执行针对消息传送系统描述的操作。如图12所示,设备1200可以包括无线电接口1206、基带电路1208和计算平台1210,尽管实施例不限于这个配置。
设备1200可以在单个计算实体中(例如完全在单个设备中)实现对于消息传送系统和/或逻辑电路1204的一些或全部结构和/或操作。替代地,设备1200可以使用分布式系统架构(例如客户端-服务器架构、3层架构、N层架构、紧密耦合或聚集的架构、对等架构、主-从设备架构、共享数据库架构和其他类型的分布式系统)来跨越多个计算实体分配对于消息传送系统和/或逻辑电路1204的结构和/或操作的部分。实施例在这个背景下不被限制。
在一个实施例中,无线电接口1206可以包括适合于发送和/或接收单载波或多载波调制信号(例如,包括互补码键控(CCK)和/或正交频分复用(OFDM)符号)的部件或部件的组合,但是实施例不限于任何特定的空中接口或调制方案。无线电接口1206可以包括例如接收机1212、发射机1216和/或频率合成器1214。无线电接口1206可以包括偏置控制器、晶体振荡器和/或一个或更多个天线1218。在另一个实施例中,无线电接口1206可以如所需的使用外部电压控制振荡器(VCO)、表面声波滤波器、中频(IF)滤波器和/或RF滤波器。由于潜在RF接口设计的多样性,其扩展描述被省略。
基带电路1208可以与无线电接口1206通信以处理、接收和/或发送信号,并且可以包括例如用于下变频所接收的信号的模数转换器1220以及用于上变频用于发送的信号的数模转换器1222。此外,基带电路1208可以包括基带或物理层(PHY)处理电路1224,用于相应接收/发送信号的PHY链路层处理。基带电路1208可以包括例如用于媒体访问控制(MAC)/数据链路层处理的处理电路1226。基带电路1208可以包括用于例如经由一个或更多个接口1230与处理电路1226和/或计算平台1210通信的存储器控制器1228。
在一些实施例中,PHY处理电路1224可以包括结合诸如缓冲存储器的附加电路来构造和/或解构通信帧(例如无线电帧)的帧构造和/或检测模块。替代地或此外,MAC处理电路1226可以共享对这些功能中的某些功能的处理,或者独立于PHY处理电路1224而执行这些过程。在一些实施例中,MAC和PHY处理可以集成到单个电路中。
计算平台1210可以为设备1200提供计算功能。如所示,计算平台1210可以包括处理部件1232。除了基带电路1208之外或者作为基带电路1208的替代,设备1200可以使用处理部件1232来执行消息传送系统和逻辑电路1204的处理操作或逻辑。处理部件1232(和/或PHY 1224和/或MAC 1226)可以包括各种硬件元件、软件元件或两者的组合。硬件元件的示例可以包括设备、逻辑设备、部件、处理器、微处理器、电路、处理器电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。软件元件的示例可以包括软件部件、程序、应用、计算机程序、应用程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子程序、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。根据给定实现方式的需要,确定实施例是否使用硬件元件和/或软件元件来实现可以根据任何数量的因素(例如需要的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束)而变化。
计算平台1210还可以包括其他平台部件1234。其他平台部件1234包括公共计算元件,例如一个或更多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)部件(例如数字显示器)、电源等。存储器单元的示例可以没有限制地包括以一个或更多个较高速度存储器单元的形式的各种类型的计算机可读和机器存储介质,例如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、聚合物存储器(例如铁电聚合物存储器)、双向存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡、设备的阵列(例如独立磁盘冗余阵列(RAID)驱动器)、固态存储器设备(例如,USB存储器、固态驱动器(SSD))和适合于存储信息的任何其他类型的存储介质。
设备1200可以是例如超移动设备、移动设备、固定设备、机器对机器(M2M)设备、个人数字助理(PDA)、移动计算设备、智能电话、电话、数字电话、蜂窝电话、用户设备、电子书读取器、头戴式耳机、单向寻呼机、双向寻呼机、消息传送设备、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、手持计算机、平板计算机、服务器、服务器阵列或服务器农场、web服务器、网络服务器、互联网服务器、工作站、微型计算机、主计算机、超级计算机、网络电器、web电器、分布式计算系统、多处理器系统、基于处理器的系统、消费电子设备、可编程消费电子设备、游戏设备、电视机、数字电视机、机顶盒、无线接入点、基站、节点B、演进节点B(eNB)、用户站、移动用户中心、无线电网络控制器、路由器、集线器、网关、网桥、交换机、机器或其组合。因此,可以在设备1200的各种实施例中包括或省略本文描述的设备1200的功能和/或特定配置,如适当地所需的。在一些实施例中,设备1200可以被配置为与和本文引用的WMAN和/或其他宽带无线网络的3GPP LTE规范和/或IEEE1402.16标准中的一个或更多个相关联的协议和频率兼容,尽管实施例并不被限制在这个方面中。
设备1200的实施例可以使用单输入单输出(SISO)架构来实现。然而,某些实现可以包括多个天线(例如,天线1218),用于使用用于波束成形或空分多址接入(SDMA)的自适应天线技术和/或使用MIMO通信技术来进行发送和/或接收。
可以使用分立电路、专用集成电路(ASIC)、逻辑门和/或单芯片架构的任何组合来实现设备1200的部件和特征。此外,在适当的情况下,可以使用微控制器、可编程逻辑阵列和/或微处理器或前述项的任何组合来实现设备1200的特征。注意,硬件、固件和/或软件元素在本文可以被共同或单独地称为“逻辑”或“电路”。
应当认识到,在图12的框图中所示的示例性设备1200可以表示许多潜在实现的一个在功能上描述性的示例。因此,在附图中描绘的块功能的划分、省略或包括并不暗示用于实现这些功能的硬件部件、电路、软件和/或元件在实施例中必须被划分、省略或包括。
至少一个计算机可读存储介质1236可以包括指令,指令当被执行时使系统执行本文描述的任何计算机实现的方法。
关于术语的一般注释
一些实施例可能是使用措辞“一个实施例”或“实施例”连同它们的派生词来描述的。这些术语意味着结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。短语“在一个实施例中”在说明书中的不同地方上的出现并不一定都指同一实施例。此外,除非另外提到,否则上面描述的特征被识别为在任何组合中一起可使用。因此,单独地讨论的任何特征可与彼此组合地被使用,除非提到特征与彼此不相容。
一般参考本文使用的符号和术语,可以从在计算机或计算机的网络上执行的程序过程方面呈现本文的详细描述。这些过程描述和表示由本领域中的技术人员使用来将他们的工作的实质最有效地传达给本领域中的其他技术人员。
过程在这里且通常被设想为导致期望结果的前后一致的操作序列。这些操作是需要物理量的物理操纵的那些操作。通常,但不是必须的,这些量采取能够被存储、传输、组合、比较和以另外方式操纵的电、磁或光信号的形式。主要由于习惯用法的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等有时证明是方便的。然而,应该注意到,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。
此外,所执行的操纵常常在术语例如相加或比较方面被提到,这些术语通常与操作人员所执行的脑力操作相关联。在本文描述的形成一个或更多个实施例的一部分的任何操作中,操作人员的这种能力不是必需的或者在大多数情况下是合意的。更确切地,操作是机器操作。用于执行各种实施例的操作的有用机器包括通用数字计算机或类似设备。
可以使用措辞“耦合的(coupled)”和“连接的(connected)”连同它们的派生词来描述一些实施例。这些术语不一定意欲作为彼此的同义词。例如,一些实施例可能是使用术语“连接的”和/或“耦合的”来描述的,以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合的”也可以意味着两个或更多个元件不与彼此直接接触,但仍然还彼此协作或相互作用。
各种实施例还涉及用于执行这些操作的装置或系统。该装置可以被特别构造成用于所需的目的,或它可以包括如由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。本文提出的过程并不固有地与特定的计算机或其他装置相关。各种通用机器可以与根据本文的教导编写的程序一起被使用,或者构造更专用的装置来执行所需的方法步骤可以证明是方便的。各种这些机器的所需结构将从所给出的描述中显现。
强调的是,本公开的摘要被提供,以允许读者快速确定技术公开的性质。其被提交且应当理解的是,它将不用于解释或限制权利要求的范围或意义。此外,在上述的详细描述中可以看出,为了简化本公开的目的,各个特征被组合在单个实施例中。本公开的方法不被解释为反映所要求保护的实施例要求比每个权利要求中明确地记载的更多的特征的意图。相反,如随附的权利要求所反映的,发明的主题在于少于单一所公开的实施例的所有特征。因此,随附的权利要求特此被合并到详细描述中,每个权利要求独立地作为单独的实施例。在所附权利要求中,术语“including(包括)”和“in which(其中)”分别用作相应术语“comprising(包括)”和“wherein(其中)”的简明英语等同物。此外,术语“第一”、“第二”、“第三”等仅用作标签,且并不意欲对它们的对象强加数值要求。
上面描述的内容包括所公开的架构的示例。当然,不可能描述部件和/或方法的每一个可能的组合,但是本领域中的普通技术人员可以认识到,许多另外的组合和置换是可能的。因此,新的架构意欲包含落在所附权利要求的精神和范围内的所有这样的变更、修改和变化。

Claims (20)

1.一种方法,包括:
经由发送设备和接收设备之间的端到端加密会话,接收包括对图像的引用的消息;
建立到blob储存器的连接,所述blob储存器保存所述图像的加密缩略图、当与所述加密缩略图组合时产生所述图像的低质量版本的第一附加加密数据、以及当与所述加密缩略图和所述第一附加加密数据组合时产生所述图像的高质量版本的第二附加加密数据;
从所述blob储存器检索所述加密缩略图,解密所述缩略图,并显示所述缩略图;
接收显示所述图像的请求;
从所述blob储存器检索所述第一附加加密数据,解密所述第一附加数据,并将解密的第一附加数据与所述缩略图组合;以及
显示所述图像的低质量版本。
2.根据权利要求1所述的方法,其中,所述blob储存器在数据流中向所述接收设备传输信息,并且所述方法还包括:
接收网络质量参数;
将所述网络质量参数和与所述图像的高质量版本相关联的阈值进行比较;
确定所述网络质量参数没有超过所述阈值;以及
终止所述数据流以取消所述第二附加加密数据的传输。
3.根据权利要求1所述的方法,其中,直接响应于接收到所述消息,自动地执行从所述blob储存器检索所述加密缩略图。
4.根据权利要求1所述的方法,其中,所述加密缩略图、所述第一附加加密数据和所述第二附加加密数据一起存储在图像结构中,并且包括对所述图像的引用的所述消息包括:划分所述加密缩略图与所述第一附加加密数据的所述图像结构中的第一位置,以及划分所述第一附加加密数据与所述第二附加加密数据的所述图像结构中的第二位置。
5.根据权利要求4所述的方法,还包括:
接收将所述图像转发给第二接收者的请求;以及
重新传输所述图像结构中的所述第一位置和第二位置,同时避免对所述图像重新转码。
6.根据权利要求1所述的方法,其中,响应于对所述消息中引用的对于所述图像的单个请求,一起执行从所述blob储存器检索所述加密缩略图、从所述blob储存器检索所述第一附加加密数据以及从所述blob储存器检索所述第二附加加密数据。
7.根据权利要求1所述的方法,其中,检索所述加密缩略图包括:
下载包括所述加密缩略图的至少一些的数据组块;
接收与所述数据组块相关的键控散列消息认证码(HMAC);
在下载的数据组块上计算HMAC;以及
将计算的HMAC与接收的HMAC进行比较,以验证所述加密缩略图没有改动。
8.一种非暂时性计算机可读介质,其存储指令,所述指令被配置成使处理器:
经由发送设备和接收设备之间的端到端加密会话,接收包括对图像的引用的消息;
建立到blob储存器的连接,所述blob储存器保存所述图像的加密缩略图、当与所述加密缩略图组合时产生所述图像的低质量版本的第一附加加密数据、以及当与所述加密缩略图和所述第一附加加密数据组合时产生所述图像的高质量版本的第二附加加密数据;
从所述blob储存器检索所述加密缩略图,解密所述缩略图,并显示所述缩略图;
接收显示所述图像的请求;
从所述blob储存器检索所述第一附加加密数据,解密所述第一附加数据,并将解密的第一附加数据与所述缩略图组合;以及
显示所述图像的低质量版本。
9.根据权利要求8所述的介质,其中,所述blob储存器在数据流中向所述接收设备传输信息,并且所述介质还包括用于以下操作的指令:
接收网络质量参数;
将所述网络质量参数和与所述图像的高质量版本相关联的阈值进行比较;
确定所述网络质量参数没有超过所述阈值;以及
终止所述数据流以取消所述第二附加加密数据的传输。
10.根据权利要求8所述的介质,其中,直接响应于接收到所述消息,自动地执行从所述blob储存器检索所述加密缩略图。
11.根据权利要求8所述的介质,其中,所述加密缩略图、所述第一附加加密数据和所述第二附加加密数据一起存储在图像结构中,并且包括对所述图像的引用的所述消息包括:划分所述加密缩略图与所述第一附加加密数据的所述图像结构中的第一位置,以及划分所述第一附加加密数据与所述第二附加加密数据的所述图像结构中的第二位置。
12.根据权利要求11所述的介质,还存储用于以下操作的指令:
接收将所述图像转发给第二接收者的请求;以及
重新传输所述图像结构中的所述第一位置和第二位置,同时避免对所述图像重新转码。
13.根据权利要求8所述的介质,其中,响应于对所述消息中引用的对于所述图像的单个请求,一起执行从所述blob储存器检索所述加密缩略图、从所述blob储存器检索所述第一附加加密数据以及从所述blob储存器检索所述第二附加加密数据。
14.根据权利要求8所述的介质,其中,检索所述加密缩略图包括:
下载包括所述加密缩略图的至少一些的数据组块;
接收与所述数据组块相关的键控散列消息认证码(HMAC);
在下载的数据组块上计算HMAC;以及
将计算的HMAC与接收的HMAC进行比较,以验证所述加密缩略图没有改动。
15.一种装置,包括:
网络接口,其被配置成:
经由发送设备和接收设备之间的端到端加密会话,接收包括对图像的引用的消息;以及
建立到blob储存器的连接,所述blob储存器保存所述图像的加密缩略图、当与所述加密缩略图组合时产生所述图像的低质量版本的第一附加加密数据、以及当与所述加密缩略图和所述第一附加加密数据组合时产生所述图像的高质量版本的第二附加加密数据;
处理器,其被配置成:
从所述blob储存器检索所述加密缩略图,解密所述缩略图,并显示所述缩略图;
接收显示所述图像的请求;以及
从所述blob储存器检索所述第一附加加密数据,解密所述第一附加数据,并将解密的第一附加数据与所述缩略图组合;以及
显示器,其被配置成显示所述图像的低质量版本。
16.根据权利要求15所述的装置,其中,所述blob储存器在数据流中向所述接收设备传输信息,并且还包括:
接收网络质量参数;
将所述网络质量参数和与所述图像的高质量版本相关联的阈值进行比较;
确定所述网络质量参数没有超过所述阈值;以及
终止所述数据流以取消所述第二附加加密数据的传输。
17.根据权利要求15所述的装置,其中,所述加密缩略图、所述第一附加加密数据和所述第二附加加密数据一起存储在图像结构中,并且包括对所述图像的引用的消息包括:划分所述加密缩略图与所述第一附加加密数据的所述图像结构中的第一位置,以及划分所述第一附加加密数据与所述第二附加加密数据的所述图像结构中的第二位置。
18.根据权利要求17所述的装置,其中,所述处理器还被配置用于:
接收将所述图像转发给第二接收者的请求;以及
重新传输所述图像结构中的所述第一位置和第二位置,同时避免对所述图像重新转码。
19.根据权利要求15所述的装置,其中,响应于对所述消息中引用的对于所述图像的单个请求,一起执行从所述blob储存器检索所述加密缩略图、从所述blob储存器检索所述第一附加加密数据以及从所述blob储存器检索所述第二附加加密数据。
20.根据权利要求15所述的装置,其中,检索所述加密缩略图包括:
下载包括所述加密缩略图的至少一些的数据组块;
接收与所述数据组块相关的键控散列消息认证码(HMAC);
在下载的数据组块上计算HMAC;以及
将计算的HMAC与接收的HMAC进行比较,以验证所述加密缩略图没有改动。
CN202010687916.4A 2019-07-16 2020-07-16 用于按组块传输图像的方法和系统 Pending CN112242946A (zh)

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,902 US11425205B1 (en) 2019-07-16 2020-05-20 Methods and systems for transmitting an image in chunks
US16/878,883 2020-05-20
US16/878,902 2020-05-20
US16/878,883 US11178079B1 (en) 2019-07-16 2020-05-20 Methods and systems for transmitting an image with thumbnail data

Publications (1)

Publication Number Publication Date
CN112242946A true CN112242946A (zh) 2021-01-19

Family

ID=74093442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010687916.4A Pending CN112242946A (zh) 2019-07-16 2020-07-16 用于按组块传输图像的方法和系统

Country Status (2)

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

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014990B (zh) * 2021-03-02 2024-04-12 卡莱特云科技股份有限公司 一种节目图片快速播放方法、播放盒及播放系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414742A (zh) * 2013-07-03 2013-11-27 百度在线网络技术(北京)有限公司 一种图片传输方法及系统
US20160330493A1 (en) * 2013-12-26 2016-11-10 Singapore University Of Technology And Design A method and apparatus for reducing data bandwidth between a cloud server and a thin client
CN107004135A (zh) * 2014-10-15 2017-08-01 核心健康有限责任公司 大图像文件的远程查看
CN108109191A (zh) * 2017-12-26 2018-06-01 深圳创维新世界科技有限公司 渲染方法及系统
CN109493304A (zh) * 2017-09-13 2019-03-19 腾讯科技(深圳)有限公司 一种图像数据处理方法以及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414742A (zh) * 2013-07-03 2013-11-27 百度在线网络技术(北京)有限公司 一种图片传输方法及系统
US20160330493A1 (en) * 2013-12-26 2016-11-10 Singapore University Of Technology And Design A method and apparatus for reducing data bandwidth between a cloud server and a thin client
CN107004135A (zh) * 2014-10-15 2017-08-01 核心健康有限责任公司 大图像文件的远程查看
CN109493304A (zh) * 2017-09-13 2019-03-19 腾讯科技(深圳)有限公司 一种图像数据处理方法以及装置
CN108109191A (zh) * 2017-12-26 2018-06-01 深圳创维新世界科技有限公司 渲染方法及系统

Also Published As

Publication number Publication date
DE102020118411A1 (de) 2021-01-21

Similar Documents

Publication Publication Date Title
US11005708B1 (en) Techniques to perform the dynamic configuration of load-balanced relay operations
KR102427983B1 (ko) 임시 컨텐츠 메시지를 처리하기 위한 방법들 및 시스템들
US10212213B1 (en) Techniques for managing a remote web client from an application on a mobile device
EP2929754B1 (en) Wireless real time media communications through the use of multiple media streams
US11658952B1 (en) Methods and systems for transmitting anonymized information
US20150244658A1 (en) System and method for efficiently mixing voip data
US11616747B1 (en) Systems and methods for multi-agent messaging
US11637795B1 (en) Techniques for templated messages
US11178079B1 (en) Methods and systems for transmitting an image with thumbnail data
US10855846B1 (en) Encrypting multiple party calls
US10157102B2 (en) Techniques to scan and reorganize media files to remove gaps
CN112242946A (zh) 用于按组块传输图像的方法和系统
US20180241725A1 (en) Techniques for key ratcheting with multiple step sizes
US11646983B1 (en) Methods and systems for transmitting an image with thumbnail data
US11425205B1 (en) Methods and systems for transmitting an image in chunks
EP4027257A1 (en) Methods and systems for end-to-end encrypted message history exchange
US11044214B2 (en) Multimedia file adaption across different communication platforms
US20230254291A1 (en) Client-side encryption of content for virtual meetings
KR102478805B1 (ko) 다중 스텝 크기들을 갖는 키 래칫팅에 대한 기술들
WO2018147895A1 (en) Techniques for key ratcheting with multiple step sizes

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Woz EPP Co.,Ltd.

Address before: California, USA

Applicant before: WHATSAPP Inc.