CN111654703A - 用于应用流的预取的编码 - Google Patents

用于应用流的预取的编码 Download PDF

Info

Publication number
CN111654703A
CN111654703A CN202010234919.2A CN202010234919A CN111654703A CN 111654703 A CN111654703 A CN 111654703A CN 202010234919 A CN202010234919 A CN 202010234919A CN 111654703 A CN111654703 A CN 111654703A
Authority
CN
China
Prior art keywords
frame
image frame
image
template
signature
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.)
Granted
Application number
CN202010234919.2A
Other languages
English (en)
Other versions
CN111654703B (zh
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.)
Google LLC
Original Assignee
Google 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
Application filed by Google LLC filed Critical Google LLC
Priority to CN202010234919.2A priority Critical patent/CN111654703B/zh
Publication of CN111654703A publication Critical patent/CN111654703A/zh
Application granted granted Critical
Publication of CN111654703B publication Critical patent/CN111654703B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/23805Controlling the feeding rate to the network, e.g. by controlling the video pump
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44012Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client
    • H04N21/6336Control signals issued by server directed to the network components or client directed to client directed to decoder
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/16Determination of a pixel data signal depending on the signal applied in the previous frame
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

用于应用流的预取编码的系统和方法。在一些实施方式中,可以在服务器计算机系统处接收客户端设备具有多个模版帧的表示的指示。由服务器计算机系统提供给客户端设备的多个图像帧可以被处理,其中每个图像帧的处理包括,确定该图像帧是否满足模版帧中的一个的阈值相似性。对于满足模版帧中的一个的阈值相似性的每个图像帧执行的操作可以包括,生成该图像帧和该图像帧满足与其的阈值相似性的模版帧之间的差异的表示、生成用于渲染该图像帧的指令、以及向客户端设备提供该指令。

Description

用于应用流的预取的编码
本申请是申请日为2016年05月04日、申请号为201680020262.1、发明名称为“用于应用流的方法和系统”的发明专利申请的分案申请。
技术领域
本说明书涉及应用流(application streaming)。
背景技术
在应用流中,服务器可以运行应用并且将对于应用渲染的视频流传输(streaming)到由用户使用的远程客户端设备。然后用户可以基于流传输到客户端设备的视频与应用交互。由服务器生成的视频可以在服务器上被捕获作为视频帧、被编码作为视频比特流、并且被发送到客户端用于解码和回放。
为了维持高交互性,期望在服务器处的内容生成和在客户端处的内容回放之间的延迟的减小。应用流中的延迟可能导致不满意的用户体验。例如,延迟可能使得应用看起来无响应或使得滞后。延迟在很大程度上是由于三个因素:服务器处理时间、客户端处理时间、和网络传送时间。服务器处理时间和客户端处理时间可能主要依赖于可用计算资源并且在视频帧中可能变化不大。然而,对于给定的网络带宽,网络传送时间可能随着视频帧的被编码的比特流大小增加而增加。
包含诸如在桌面应用中的窗口弹出、或游戏中的等级之间的场景过渡动画的突发的内容改变的视频帧,由于在内容中呈现的新的信息的量,所述视频帧通常可能难以编码。为了使用传统视频编码算法来编码这些帧,服务器可以通过在编码器设置中降低图像质量来限制所编码的比特流大小以满足延迟要求,或可以利用增加的比特流大小来维持质量但是牺牲延迟。
发明内容
通常,在本说明书中所描述的主题的一个创新方面能够通过可以包括以下各项的方法来具体实现:在服务器计算机系统处的接收客户端设备具有多个模版帧的表示的指示的动作、以及通过服务器计算机系统处理多个图像帧以提供到客户端设备,其中每个图像帧的处理包括确定该图像帧是否满足与模版帧中的一个的阈值相似性。对于满足与模版帧中的一个的阈值相似性的每个图像帧,额外的动作包括:生成该图像帧和模版帧(该图像帧满足与其的阈值相似性)之间的差异的表示;生成用于渲染该图像帧的指令,该指令包括(i)图像帧满足与其的阈值相似性的模版帧的表示的标识、以及(ii)图像帧和模版帧之间的差异的表示;并且向客户端设备提供该指令。
其它版本包括相应的系统、装置、和计算机程序,被配置为执行被编码在计算机存储设备上的方法的动作。
这些版本或其它版本各自可以可选地包括以下特征中的一个或多个。例如,在一些实施方式中,对于不满足与模版帧中的一个的阈值相似性的每个图像帧,动作可以包括:向客户端设备提供图像帧的表示、或图像帧与在该图像帧之前立即被处理的另一图像帧之间的差异的表示。
在一些实施方式中,阈值相似性包括确定图像帧与来自一个或多个模版帧中的特定模版帧、和/或图像帧的紧接在先的图像帧最相似。
在一些实施方式中,对于每个图像帧,确定该图像帧是否满足与模版帧中的一个的阈值相似性包括以下各项动作:确定该图像帧的签名和模版帧中的一个的签名之间的距离分数;确定该图像帧的签名和满足距离阈值的模版帧中的一个的签名之间的距离分数;以及响应于确定该图像帧的签名和满足距离阈值的模版帧的签名之间的距离分数,来确定图像帧满足与模版帧中的一个的阈值相似性。
在一些实施方式中,确定图像帧的签名和模版帧中的一个的签名之间的距离分数可以包括,基于图像帧的像素的亮度直方图来生成图像帧的签名。
在一些实施方式中,处理多个图像帧以提供给客户端设备可以包括以下各项动作:识别对于其多个图像帧要被渲染的特定应用;通过服务器计算机系统确定与该特定应用相关联的模版帧;以及通过服务器计算机系统向客户端设备提供请求以提供客户端设备是否具有与该特定应用相关联的多个模版帧的表示的指示,其中,响应于提供该请求,在服务器计算机系统处接收客户端设备具有多个模版帧的表示的指示。
在一些实施方式中,可以基于在编码模版帧之后立即编码图像帧作为以预定义质量的非预测性帧,进而生成图像帧、和图像帧满足与其的阈值相似性的模版帧之间的差异的表示。
在一些实施方式中,动作可以包括:在服务器计算机系统处获得根据其生成模版帧的多个图像帧的集合;通过服务器计算机系统处理根据其生成模版帧的多个图像帧的集合,其中对根据其生成模版帧的多个图像帧的集合的每个图像帧的处理包括,对于根据其生成模版帧的多个图像帧的集合的每个图像帧,确定图像帧是否满足与先前图像帧的阈值差异;对于满足与先前图像帧的阈值差异的每个图像帧:生成图像帧的表示作为模版帧;对于满足与先前图像帧的阈值差异的每个图像帧,向客户端设备提供所生成的模版帧;确定所生成的模版帧的总大小是否满足大小阈值;并且响应于确定所生成的模版帧的总大小满足大小阈值,向客户端设备提供所生成的模版帧的子集。
在一些实施方式中,向客户端设备提供所生成的模版帧的子集可以包括,提供与比起其它生成的模版帧与在先图像帧更加不相似的图像帧相对应的所生成的模版帧的动作。
编码视频帧可以独立于其它视频帧,例如用于非预测性帧的编码,或依赖于其它视频帧,例如用于预测性帧的编码。例如,在视频帧非常不同于先前的帧的情况下,视频帧的所编码的比特流可以独立于任何其它视频帧,以及在视频帧与先前的视频帧相似的情况下,视频帧的所编码的比特流可以表示该视频帧和先前的视频帧之间的差异。因此,视频帧的所编码的比特流的大小可以随着视频帧和紧接在前的视频帧之间的差异增加而增加。
系统可以通过预取从服务器到客户端设备的视频帧的所编码的比特流,来减少视频帧的所编码的比特流的大小。当服务器向客户端设备流传输对于应用的视频时,服务器可以确定,相比紧接在前的所编码的视频帧,特定视频帧与具有已经在客户端设备上预取到的所编码的比特流的视频帧更相似。响应于该确定,服务器可以确定编码特定视频帧作为依赖于根据与预取的所编码的比特流相对应的视频帧的预测的预测性帧、向客户端设备提供编码、并且指示客户端设备基于预取的所编码的比特流而不是对于先前的视频帧的所编码的比特流来解码该编码。因此,系统可以通过减少视频帧的所编码的比特流的大小来减少应用流中的延迟,其中通过使用预取的所编码的比特流来减少所述视频帧的所编码的比特流的大小。
在一些实施方式中,提供了一种计算机实施的方法,包括:获得与特定应用相关联的图像帧的集合;对于图像帧的集合内的每个图像帧,确定将在所述特定应用上渲染图像帧的相应可能性;选择图像帧的集合的子集作为多个图像帧,选择基础为将在所述特定应用上渲染所述多个图像帧的可能性;对于所述多个图像帧中的每一个,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异;生成用于满足与所述图像帧先前的另一图像帧的阈值差异的每个图像帧的模板帧;以及在客户端设备运行所述特定应用之前,向所述客户端设备提供所述模板帧。
在一些实施方式中,提供了一种系统,包括:一个或多个计算机;以及存储指令的一个或多个存储设备,所述指令在被所述一个或多个计算机运行时,使所述一个或多个计算机执行操作,所述操作包括:获得与特定应用相关联的图像帧的集合;对于图像帧的集合内的每个图像帧,确定将在所述特定应用上渲染图像帧的相应可能性;选择图像帧的集合的子集作为多个图像帧,选择基础为将在所述特定应用上渲染所述多个图像帧的可能性;对于所述多个图像帧中的每一个,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异;生成用于满足与所述图像帧先前的另一图像帧的阈值差异的每个图像帧的模板帧;以及在客户端设备运行所述特定应用之前,向所述客户端设备提供所述模板帧。
在一些实施方式中,提供了一种利用计算机程序指令来编码的非瞬时性计算机可读存储设备,所述计算机程序指令在被一个或多个计算机运行时,使得所述一个或多个计算机执行操作,所述操作包括:获得与特定应用相关联的图像帧的集合;对于图像帧的集合内的每个图像帧,确定将在所述特定应用上渲染图像帧的相应可能性;选择图像帧的集合的子集作为多个图像帧,选择基础为将在所述特定应用上渲染所述多个图像帧的可能性;对于所述多个图像帧中的每一个,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异;生成用于满足与所述图像帧先前的另一图像帧的阈值差异的每个图像帧的模板帧;以及在客户端设备运行所述特定应用之前,向所述客户端设备提供所述模板帧。
本说明书中所描述的主题的一个或多个实施方式的细节在附图和以下的描述中被阐述。从所述描述、附图、和权利要求,主题的其它潜在的特征、方面、和优点将变得清楚。
附图说明
图1A-图1B是用于交互性流传输会话的示例系统的框图。
图2是用于预取准备会话的示例系统的框图。
图3A-图3C是用于使用预取的被编码的模版帧的表示的示例过程的流程图。
图4是例示性计算设备的图。
各种附图中的类似的参考符号指示类似的元素。
具体实施方式
图1A是用于交互性流传输会话的示例系统100的框图。简要地,并且如以下进一步描述的,系统100可以包括服务器110和客户端设备160。服务器110可以包括模版帧112、图像帧114、签名生成器120、签名比较器130、所选择的模版帧132A、编码引擎140、和指令150A。客户端设备160可以包括视频渲染器162和模版表示164。
模版帧112可以是先前生成以用于在服务器110上的应用的视频内容的帧,对于所述帧,相应的模版表示164(即,被编码的比特流)是在客户端设备160上预取的。例如,模版帧112可以是被渲染用于在服务器110上运行的游戏的特定帧,其中特定帧包括与它们的紧接在前的帧的实质性差异。包括与它们的紧接在前的帧的实质性差异的帧可能包括被例程地显示并且不同于先前帧的场景改变动画、对话框、记分牌、或其它视频帧。
图像帧114可以是被渲染用于被流传输到客户端设备160的、在服务器110上的应用的视频的帧。例如,图像帧114可以是被渲染用于由客户端设备160的用户运行的云视频游戏应用的帧。
签名生成器120可以计算模版帧112和图像帧114的签名。帧的签名通常可以描述帧的内容。例如,帧的签名可以基于图像中的像素的亮度值。签名可以额外地或者可替换地使用其它图像处理参数来计算。例如,对比度、自然色彩比率、像素色彩值、和其它参数。
在一些实施方式中,签名生成器120通过最初将帧的帧亮度(具有来自0-255的值的1字节整数的2D阵列)划分为N个更小的2D块,来计算模版帧112和图像帧114中的每一个的签名。例如,960 x 640像素帧可以被划分为N=100个块,其中每个块包括96 x 64像素。然后签名生成器120可以计算N个块中的每一个的亮度值直方图,所述直方图表示在每个块之内的亮度值的出现的数量。然后签名生成器120可以连接N个直方图来计算帧的签名。
签名比较器130可以将图像帧114的签名与模版帧112中的一个或多个的签名和紧接在先的图像帧的签名进行比较。紧接在先的图像帧可以包括,在要被编码的图像帧114之前立即被编码的图像帧,即,该帧在图像帧114之前被显示。使用该比较,签名比较器130可以确定图像帧114是否满足与模版帧中的一个的阈值相似性。阈值相似性可以是图像帧与模版帧212和紧接在先的帧两者之外的特定模版帧最相似。在有些情况下,如果图像帧114是要被编码的第一帧,则图像帧114可以不具有紧接在先的图像帧。因此,在这些情况下,阈值相似性可以是图像帧与特定模版帧最相似,并且相似性高于预定的最小相似性阈值。
签名比较器130可以使用两个签名的距离分数来比较图像帧114和在先图像帧的签名。例如,可以通过对在两个各自的帧的N个块中的每一个的相应亮度值中的差异求和、并且利用图像帧114的N个块的亮度值的和来归一化所求和的差异,进而计算两个签名的距离分数。更低的距离分数可以对应于更相似的帧。例如,距离分数“0”可以对应于非常相似的帧。
在紧接在先的帧和模版帧122之外,签名比较器可以选择具有与图像帧114的签名最相似的签名的帧,并且输出所选择的模版帧132A。例如,图像帧114可以是跟随开启动画的开始屏幕,其中开始屏幕包括基于用户的名称而改变的文本,模版帧还可以与具有不同的用户的名称的开始屏幕相对应,并且紧接在先的帧可以是用于开启动画的结束。在示例中,签名比较器130可以确定图像帧114的签名与模版帧的签名最相似,所述模版帧与具有不同的用户的名称的开始屏幕相对应。签名比较器130可以基于确定距离分数与最大相似性(例如,最靠近“0”)相对应的帧,来确定最相似的帧。
所选择的模版帧132A可以是被签名比较器130标识为与图像帧114最相似的、模版帧112的模版帧。例如,签名比较器130可以比较模版帧112和图像帧114的每一个之间的距离分数,并且将具有最低距离分数的模版帧标识为所选择的模版帧132A。
编码引擎140可以是服务器110上的、编码图像帧114的视频编码器。编码引擎140可以被配置为使用视频编解码器(例如,MPEG-4、DivX Pro、Xvid、或x264)来编码图像帧。编码引擎140可以接收所选择的模版帧132A、或所选择的模版帧的指示,并且可以使用所选择的模版帧来编码图像帧114。例如,编码引擎140可以接收“模版帧X”与图像帧114最相似的指示,并且作为响应,基于图像帧114和“模版帧X”的差异来编码图像帧114。
编码引擎140可以生成指令150A。指令150A可以包括表示152和标识154。表示152可以是图像帧114和所选择的模版帧132A之间的差异的表示。例如,在图像帧114是具有用户的名称的开始屏幕的帧、并且模版帧112是具有不同的名称的开始屏幕的帧时,差异的表示152可以是表示与不同的名称相对应的像素中的差异的、被编码的比特流。标识154可以标识存储在客户端设备160上的模版表示164的特定的模版表示以用于渲染图像帧114。例如,标识154可以是与“模版帧X”的表示相对应的“模版表示X”。
编码引擎140可以通过使用视频编解码器编码所选择的模版帧132A,来生成图像帧114和所选择的模版帧132A之间的差异的表示,然后基于刚被编码的帧,使用视频编解码器、和图像帧114要被编码的指示来编码视频帧114。例如,编码引擎140可以首先编码具有不同的名称的开始屏幕的模版帧、丢弃模版帧的表示、然后利用预测性编码来编码具有用户的名称的开始屏幕的图像帧、并且使用该输出作为模版帧和图像帧之间的差异的表示。
所选择的模版帧132A可以被编码作为非预测性帧,例如,独立于任何其它视频帧,并且处于与由客户端设备160预取的相应模版表示相同的质量水平。这可以保证根据所选择的、由编码引擎140所生成的模版帧132A的预测,是与在客户端设备160上的模版表示164相同的帧。
客户端设备160可以包括视频渲染器162和模版表示164。模版表示164可以是在服务器110上的模版帧112的表示的预取的集合。模版表示164可以是模版帧112的被编码的比特流,其中,通过视频编解码器、和模版帧112要独立于任何其它帧被编码的指示来完成编码。
视频渲染器162可以在客户端设备160上执行视频解码操作。例如,视频渲染器162可以使用H.264视频标准或一些其它视频编解码器来执行解码操作。视频渲染器162可以基于模版的标识154、和图像帧114与所选择的模版帧132A之间的差异的表示152,来在客户端设备160上渲染图像帧114。例如,视频渲染器162可以确定指令150A标识与具有默认用户名称的开始屏幕的表示相对应的“模版表示X”,并且包括具有默认用户名称的开始屏幕和具有当前用户的名称的开始屏幕之间的差异的表示。
作为响应,视频渲染器162可以访问在客户端设备160上预取的模版表示,并且基于图像帧114和所选择的模版帧132A之间的差异来修改模版表示。例如,视频渲染器162可以访问“模版表示X”、将“模版表示X”解码为“模版帧X”、不显示“模版帧X”,然后基于刚解码的帧“模版帧X”来解码具有默认用户名称的开始屏幕和具有当前用户的名称的开始屏幕之间的差异的表示。
因此,取代提供基于在视频中紧接在先的图像帧或基于没有先前帧而编码的图像帧114的被编码的表示,服务器110可以通过编码与图像帧114相似的模版帧、然后基于该模版帧的编码来编码图像帧114,进而减少对于图像帧114的编码的大小。
图1B表示流传输会话,其中服务器110确定图像帧114不满足与模版帧112中的任何一个的阈值相似性。例如,签名比较器130可以确定,比起与任何模版帧112相似,图像帧114与在先的图像帧更相似。签名比较器130可以基于确定图像帧114和在先图像的签名的距离分数比图像帧114和模版帧112的签名之间的距离分数更低,来确定比起模版帧112中的任何一个,在先图像帧与图像帧114更相似。例如,签名比较器130可以确定,对于仅示出从在先图像帧132b轻微变化(例如,仅少量像素不同)的图像帧114,图像帧114的签名与在先图像帧132b的签名最相似而超过与模版帧112的签名。在这样的情况下,编码引擎140可以基于紧接在先的图像帧、通过生成图像帧114的表示来编码图像帧114。在一些实施方式中,当图像帧114和在先图像132b不满足阈值相似性时,例如,低于20%、30%、或一些其它相似的量,编码引擎140可以编码图像帧114作为不基于任何其它帧的图像帧114的表示。
图2示出用于预取准备会话的示例系统200。预取准备会话可以在使用模版帧将应用流传输到客户端之前发生,并且可以是用于应用流的模版帧和模版表示在其期间被生成的会话。简要地,并且如以下进一步描述的,系统200可以包括服务器210和客户端设备270。服务器210可以包括图像帧212、信号发生器220、签名比较器230、模版生成器240、模版剪裁器250、模版帧252、和模版表示260。客户端设备270可以包括视频渲染器272和模版表示274。
图像帧212可以是从流传输用于在客户端设备270上显示的、在服务器210上的应用而生成的内容的帧。例如,图像帧212可以包括与将会被流传输的游戏的播放相对应的图像帧的流,其中图像帧中的一些与在先的帧相似,例如,玩家已经在开始菜单中移动了光标,并且图像帧中的一些与在先的帧不相似,例如,玩家已经在开始菜单中选择了已经触发了动画的选项。
签名生成器220可以计算图像帧212的签名。在一些实施方式中,签名生成器220可以根据先前在图1A中所描述的计算方式来计算签名。签名比较器230可以将图像帧212中的每一个的签名与图像帧212的紧接在先图像帧的签名进行比较,以确定图像帧212中的每一个是否满足与图像帧212的紧接在先图像帧的阈值差异。在一些实施方式中,签名比较器230使用由签名比较器130所使用的相似比较技术来确定图像帧212是否满足阈值差异。在一个示例中,例如,在图像帧表示光标已经在其中移动的开始菜单的情况下,签名比较器230可以确定图像帧212中的一个低于它的紧接在先的图像帧的阈值差异。在另一示例中,例如,在图像帧表示显示开始菜单到动画之间的过渡的情况下,签名比较器230可以确定图像帧212中的一个满足它的紧接在先的图像帧的阈值差异。
签名比较器230可以选择满足根据其先前的帧的阈值差异的图像帧,并且向模版生成器240提供所选择的图像帧、或所选择的图像帧的标识。例如,签名比较器230可以选择其中全屏幕菜单选项被打开的图像帧、和其中动画在开始菜单之后被开始的图像帧,并且向模版生成器240提供那些图像帧或那些图像帧的标识。
模版生成器240可以基于从签名比较器发送的所选择的图像帧232来生成模版帧252。例如,模版生成器240可以指定所选择的图像帧232作为模版帧,并且通过编码所选择的图像帧232作为独立于任何其它帧的帧,生成所选择的图像帧232的相应的模版表示。
在生成模版帧252和模版表示260的过程中,模版生成器可以生成最初全部为空的帧数组、签名数组、和表示数组。这些数组可以是存储单一类型的某些值的容器对象。例如,帧数组可以存储模版帧252、签名数组可以存储被选择为模版帧252的图像帧232的所计算的签名、并且表示数组可以存储模版帧252的被编码的比特流。签名数组稍后可以在实时会话期间被使用,从而不需要再次计算模版帧的签名。
模版生成器240可以将模版帧252添加到帧数组中,并且还可以将模版帧252的相应签名添加到签名数组中。然后模版生成器240可以使用预定义的质量水平来将模版帧252编码为模版帧表示。一旦模版生成器240完成将所有模版帧252编码为模版帧表示,则模版生成器240可以将模版帧表示添加到表示数组中。模版帧252可以被编码为非预测性帧,例如,独立于任何其它视频帧并且处于相同的质量和预定义的质量水平。
在一些实施方式中,模版生成器240可以最初从在服务器210上运行的一个或多个练习实时会话接收图像帧,以标识被频繁地流传输到客户端设备的图像帧。模版生成器240可以将在实时会话期间可能会被流传输的图像帧与从签名比较器230发送的所选择的图像帧进行比较,以选择与在实时会话期间可能会被流传输的所选择的图像帧相对应的模版帧的集合。在其它实施方式中,模版生成器240可以准备包括由签名比较器230发送的所有所选择的图像帧的模版帧。
表示数组的大小可以反映通过网络预取表示数组的客户端设备270的实时会话中的启动延迟。例如,当客户端设备270最初请求从服务器流传输的应用时,服务器可以向客户端设备270提供模版帧的表示以预取,然后开始流传输该应用的实时视频。在一些实例中,表示数组的大小可能足够大以暗示在实时会话的预取阶段中的严重的延迟。例如,预取大的表示数组可能花费数秒并且可能使得应用看起来无响应。因此,在一些实施方式中,模版生成器240可以将所生成的表示数组的大小与阈值大小进行比较,并且基于所生成的表示数组的大小大于该阈值大小的确定,向模版剪裁器250发送所生成的表示数组。阈值大小可以是,例如,200KB、1MB、5MB、10MB、或一些其它大小。
在一些实施方式中,阈值大小可能依赖于可用于向客户端设备270发送的网络带宽。例如,随着可用于向客户端设备270发送的网络带宽增加,阈值大小可以增加。
模版剪裁器250可以通过从表示数组和帧数组移除模版帧表示,来减小所生成的表示数组的大小。例如,模版剪裁器250可以通过比较所选择的图像帧252的签名和它的紧接在先的图像帧的签名之间的距离分数,最初地将模版帧表示进行优先级排序。在另一示例中,模版剪裁器250还可以比较模版帧252的签名并且合并彼此相似的模版帧252。模版剪裁器250可以确定更低的距离分数表示预测的价值更少的图像帧,因为在实时会话中,比起与其在先图像帧具有较大距离分数的图像帧,这些图像帧之间的过渡可能具有更小的性能影响。然后模版剪裁器250可以首先按照最低距离分数来移除表示数组中的模版表示,直到表示数组低于阈值大小。
客户端设备270可以从服务器210预取模版表示260,并且将它们存储在客户端设备270上作为模版表示272。然后客户端设备270的视频渲染器272可以使用模版表示274来执行解码(例如,与视频渲染器162类似地)。
图3A-图3C示出用于流传输预取的、模版帧的被编码的表示的示例过程。下面将过程300A、300B、和300C描述为分别由参考图1A-图1B和图2所描述的系统100和系统200的组件执行的过程。然而,过程300A、300B、和300C可以被其它系统或系统配置执行。
图3A是用于使用模版帧向客户端流传输应用的示例过程300A的流程图。过程300A可以包括,接收客户端设备具有模版帧的表示的指示(302)。例如,服务器110可以接收客户端设备160已经完成了预取的模版表示的集合,所述模版表示的集合是服务器110响应于来自客户端设备160的请求以开始流传输应用而向客户端设备160提供的。在另一示例中,服务器110可以从客户端设备160接收包括使用应用的请求并且指示在客户端设备160上存在预取的模版表示164的集合的传输。
过程300A可以包括处理多个图像帧以提供给客户端设备(304)。例如,服务器110可以生成与用户使用该应用来播放的视频游戏相对应的多个图像帧。在该示例中,多个图像帧可以包括与围绕全屏选项菜单运行和打开全屏选项菜单的播放器相对应的图像帧。然后签名生成器120可以确定图像帧114的签名,并且获得模版帧112的预先存储的签名。
过程300A可以包括确定每个图像帧是否满足相似性的阈值(306)。例如,签名比较器130可以确定,对于每个图像帧,该图像帧的签名和特定模版帧的签名之间的距离分数是否低于(i)该图像帧的签名和它们的紧接在前的图像帧的签名之间的距离分数、以及(ii)该图像帧的签名和任何其它模版帧的签名之间的距离分数,以及该图像帧的签名与特定模版帧的签名之间的距离分数是否也低于预先确定的最小距离阈值。
过程300A可以包括生成图像帧和模版帧之间的差异的表示(308)。例如,在基于特定模版帧而满足相似性的阈值的情况下,编码引擎140可以通过首先以预定义的质量水平将特定模版帧编码为非预测性帧、丢弃特定模版帧的编码、然后基于刚被编码的帧将图像帧编码为图像,进而生成图像帧和特定模版帧之间的差异的表示。
过程300A可以包括生成用于渲染图像帧的指令(310)。例如,编码引擎140可以生成指令150A,其包括要在客户端160上被渲染的特定图像帧和特定模版帧之间的差异的表示152、以及特定模版的标识154,其向客户端设备160标识要被用于解码图像帧的特定的预取的模版表示。
过程300A可以包括向客户端设备提供指令(312)。例如,服务器110可以向客户端设备160发送指令150A作为通过网络的数据传输。
图3B是服务器使用模版帧开始流传输应用的过程300B的流程图。过程300B可以包括标识多个图像帧要被渲染用于其的应用(314)。例如,服务器110可以标识客户端设备160已经请求流传输特定的应用。
过程300B可以包括确定模版帧与该应用相关联(316)。例如,服务器110可以确定客户端设备160已经请求流传输的特定的应用与模版帧的特定的集合相关联。
过程300B可以包括向客户端设备提供用以提供客户端设备具有模版帧的表示的指示的请求(318)。例如,响应于确定模版帧与特定的应用相关联,服务器110可以向客户端设备160提供模版帧的表示,并且可以请求客户端设备160提供客户端设备160已经接收到模版帧的表示的指示。在另一示例中,服务器110可以确定客户端设备160可能已经存储了模版帧的表示,并且可以请求客户端设备160提供客户端设备160已经存储了什么模版帧的表示的指示。服务器可以通过网络提供请求。
该过程可以包括,接收客户端设备具有模版帧的表示的指示(320)。例如,服务器110可以通过网络从客户端设备160接收标识客户端设备160已经在客户端设备160上存储的模版帧的表示的数据传输,或确认客户端设备160已经接收到由服务器110向客户端设备160提供的模版帧的表示。作为响应,服务器110可以确定客户端设备160已经预取的用于应用的模版帧的表示,并且使用与在客户端设备160上预取的表示相对应的那些模版帧来流传输应用。
图3C是客户端设备使用预取的模版表示来渲染图像帧的过程300C的流程图。该过程可以包括接收提供指示的请求(322)。例如,客户端设备160可以从服务器110接收请求以提供在客户端设备160上的模版表示的列表、或客户端设备160已经完成从服务器110接收模版表示的集合的确认。在一些实施方式中,请求可以特定于特定的应用。例如,请求可以标识对于其客户端设备160应该列出可用的模版表示的特定的应用。
该过程可以包括确定模版帧表示存在(324)。例如,客户端设备160可以确定哪些模版表示被存储在客户端设备160上。
该过程可以包括提供模版帧表示的指示(326)。例如,客户端设备160可以向服务器160发送指示哪些模版表示在客户端设备160上、或客户端设备已经完成从服务器160接收模版表示的集合的信号。
该过程可以包括接收渲染图像帧的指令(328)。例如,客户端设备160可以接收渲染图像帧的指令,其中该指令标识特定的模版表示、并且包括与该模版表示相对应的模版帧和图像帧之间的差异的表示。
该过程可以包括从指令获得图像帧和模版帧之间的差异的表示(330)。例如,客户端设备160可以从指令150A提取差异的表示152,所述指令150A从服务器110接收。
该过程可以包括渲染图像帧(332)。例如,客户端设备160可以解码模版帧的表示、丢弃解码的结果、然后使用图像帧和与模版表示相对应的模版帧之间的差异的表示来使用预测性解码。
图4是作为客户端、或作为服务器或多个服务器,可以被用来实施在本文档中所描述的系统和方法的计算设备400、450的框图。计算设备400意图表示诸如膝上型计算机、桌上型计算机、工作站、个人数字助理、服务器、刀片服务器、大型机、和其它适当的计算机的各种形式的数字计算机。计算设备450意图表示诸如个人数字助理、蜂窝电话、智能电话、和其它相似的计算设备的各种形式的移动设备。额外地,计算设备400或450能够包括通用串行总线(Universal Serial Bus,USB)闪存驱动器。USB闪存驱动器可以存储操作系统和其它应用。USB闪存驱动器能够包括诸如无线发送器、或可以被插入到另一计算设备的USB端口中的USB连接器的输入/输出组件。这里示出的组件,它们的连接和关系以及它们的功能仅仅是示例性的,并且不被意图限制于本文档中所描述的和/或所声明的实施方式。
计算设备400包括处理器402、存储器404、存储设备406、连接到存储器404和高速扩展端口410的高速接口408、和连接到低速总线414和存储设备406的低速接口412。组件402、404、406、408、410、和412中的每一个使用各种总线互连并且可以被安装在公共主板上,或适当以其它方式互连。处理器401能够处理用于在计算设备400内运行的指令,包括存储在存储器404中或存储设备406上的指令,以显示用于在诸如耦合到高速接口408的显示器416的外部输入/输出设备上的GUI(Graphical User Interface,图形用户界面)的图形信息。在其它实施方式中,可以与多个存储器和多种类型的存储器一起,适当地使用多个处理器和/或多个总线。并且,多个计算设备400可以与提供必需操作的部分的每个设备连接(例如,作为服务器库、刀片服务器的组、或多处理器系统)。
存储器404在计算设备400内存储信息。在一个实施方式中,存储器404是易失性存储器单元或多个易失性存储器单元。在另一实施方式中,存储器404是非易失性存储器单元或多个非易失性存储器单元。存储器404还可以是另一形式的计算机可读介质,诸如磁盘或光盘。
存储设备406能够为计算设备400提供大容量储存器。在一个实施方式中,存储设备406可以是或可以包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备、或磁带设备、快闪存储器或其它相似的固态存储器设备、或包括存储区域网络或其它配置中的设备的设备的阵列。计算机程序产品能够利用信息载体被有形地具体实现。计算机程序产品还可以包含当被运行时执行诸如上述那些方法的一个或多个方法的指令。信息载体是诸如存储器404、存储设备406、或处理器402上的存储器的计算机可读或机器可读的介质。
高速控制器408管理用于计算设备400的带宽密集型操作,而低速控制器412管理更低宽带密度的操作。功能的这种分配仅仅是示例性的。在一个实施方式中,高速控制器408被耦合到存储器404、显示器416(例如,通过图形处理器或图形加速器)、和可以接受各种扩展卡(未示出)的高速扩展端口410。在该实施方式中,低速控制器412被耦合到存储设备406和低速扩展端口414。包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可以例如通过网络适配器被耦合到诸如键盘、指向设备、麦克风/扬声器对、扫描仪、或诸如交换机和路由器的网络设备的一个或多个输入/输出设备。计算设备400可以以如附图中所示的若干不同的形式被实施。例如,其可以被实施为标准服务器420、或在这样的服务器的组中多次实施。其还可以被实施为机架服务器系统424的一部分。此外,其可以以诸如膝上型计算机422的个人计算机的形式被实施。可替换地,来自计算设备400的组件可以与诸如设备450的移动设备(未示出)中的其它组件组合。这样的设备中的每一个可以包含计算设备400、500、和整个系统中的一个或多个,所述整个系统可以由彼此通信的多个计算设备400、450组成。
计算设备400可以以如附图中所示的若干不同的形式被实施。例如,其可以被实施为标准服务器420、或在这样的服务器的组中多次实施。其还可以被实施为机架服务器系统424的一部分。此外,其可以利用诸如膝上型计算机422的个人计算机被实施。可替换地,来自计算设备400的组件可以与诸如设备450的移动设备(未示出)中的其它组件组合。这样的设备中的每一个可以包含计算设备400、500、和整个系统中的一个或多个,所述整个系统可以由彼此通信的多个计算设备400、450组成。
计算设备450包括处理器452、存储器464、和诸如其它组件当中的显示器454、通信接口466、和收发器468的输入/输出设备。设备450还可以拥有诸如微驱动器或其它设备的存储设备,以提供额外的储存器。组件450、452、464、454、466、和468中的每一个使用各种总线互连,并且数个组件可以被安装在公共主板上,或适当地以其它的方式互连。
处理器452能够在计算设备450内运行指令,其包括存储在存储器464中的指令。处理器可以被实施为包括单独的模拟和数字处理器、和包括多个模拟和数字处理器的芯片的芯片组。额外地,处理器可以使用若干架构中的任何一个来实施。例如,处理器410可以是复杂指令集计算机(Complex Instruction Set Computers,CISC)处理器、精简指令集计算机(Reduced Instruction Set Computer,RISC)处理器、或最小指令集计算机(MinimalInstruction Set Computer,MISC)处理器。处理器可以提供,例如,设备450的其它组件的协调,诸如用户界面的控制、由设备450运行的应用、和通过设备450进行的无线通信。
处理器452可以通过耦合到显示器454的控制接口458和显示接口456与用户通信。显示器454可以是,例如,薄膜晶体管液晶显示器(Thin-Film-Transistor Liquid CrystalDisplay,TFT)显示器或有机发光二极管(Organic Light Emitting Diode,OLED)显示器、或其它适当的显示器技术。显示接口456可以包括用于驱动显示器454以向用户呈现图形和其它信息的适当的电路。控制接口458可以从用户接收命令并且转换它们用于向处理器452提交。此外,外部接口462可以在与处理器452的通信中被提供,从而启用设备450与其它设备的近场通信。外部接口462可以在一些实施方式中提供,例如,有线通信,或在其它实施方式中提供无线通信,并且还可以使用多个接口。
存储器464在计算设备450内存储信息。存储器464能够被实施为以下各项中的一个或多个:计算机可读介质或计算机可读媒体中、易失性存储器单元或多个易失性存储器单元、或非易失性存储器单元或多个非易失性存储器单元中。扩展存储器474还可以被提供以及通过扩展接口472被连接到设备450,其可以包括,例如,单行内存模块(Single InLine Memory Module,SIMM)卡接口。这样的扩展存储器474可以为设备450提供额外存储空间,或者还可以存储设备450的应用或其它信息。具体地,扩展存储器474可以包括执行或补充上述的过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器474可以被提供作为设备450的安全性模块,并且可以被编程具有允许设备450的安全使用的指令。此外,安全应用可以与额外的信息一起经由SIMM卡来提供,诸如以不可破解的方式在SIMM卡上放置标识信息。
如以下讨论的,存储器可以包括,例如,快闪存储器和/或NVRAM存储器。在一个实施方式中,计算机程序产品以信息载体的形式被有形地具体实现。计算机程序产品包含当被运行时执行诸如上述那些方法的一个或多个方法的指令。信息载体是计算机可读或机器可读的介质,诸如例如可以通过收发器468或外部接口462接收的存储器464、扩展存储器474、或处理器452上的存储器。
设备450可以通过通信接口466无线地通信,当有必要时通信接口466可以包括数字信号处理电路。通信接口466可以在诸如GSM语音呼叫、SMS、EMS、或MMS消息发送、CDMA、TDMA、PDC、WCDMA、CDMA2000、或GPRS、以及其它的各种模式或协议下提供通信。这样的通信可以例如,通过射频收发器468来发生。此外,诸如使用蓝牙、WiFi、或其它这样的收发器(未示出)的短程通信可以发生。此外,GPS(Global Positioning System,全球定位系统)接收器模块470可以向设备450提供额外的导航相关和位置相关的无线数据,其可以被在设备450上运行的应用适当的使用。
设备450还可以使用音频编解码器460来可听地通信,其可以从用户接收口头信息并且将其转换为可用的数字信息。音频编解码器460同样可以诸如通过扬声器(例如,在设备450的手机中)为用户生成可听的声音。这样的声音可以包括来自语音电话呼叫的声音、可以包括被记录的声音(例如,语音消息、音乐文件等),并且还可以包括通过在设备450上操作的应用生成的声音。
计算设备450可以以如附图中所示的若干不同的形式被实施。例如,其可以被实施为蜂窝电话480。其还可以被实施为智能电话482的部件、个人数字助理的部件、或其它相似的移动设备的部件。
这里所描述的系统和方法的各种实施方式能够以数字电子电路、集成电路、特殊设计的专用集成电路(application specific integrated circuits,ASIC)、计算机硬件、固件、软件、和/或这些实施方式的组合的形式被实现。这些各种实施方式能够包括,利用在包括至少一个可编程的处理器的可编程的系统上的可运行的和/或可解释的一个或多个计算机程序的实施方式,所述可编程处理器可以是专用或通用处理器,被耦合以从存储系统、至少一个输入设备、和至少一个输出设备接收数据和指令以及向其传送数据和指令。
这些计算机程序(又称为程序、软件、软件应用、或代码)包括用于可编程处理器的机器指令,并且能够以高级的面向过程和/或面向对象的编程语言来实施、和/或以汇编语言/机器语言来实施。如这里所使用的,术语“机器可读介质”、“计算机器可读介质”是指用于向包括接收机器指令作为机器可读信号的机器可读介质的可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置、和/或设备(例如,磁盘、光盘、存储器、和可编程逻辑器件(PLD,Programmable Logic Devices))。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
为了提供与用户的交互,这里所描述的系统和技术能够在具有用于向用户显示信息的显示设备(例如,CRT(cathode ray tube,阴极射线管)或LCD(liquid crystaldisplay,液晶显示器)监视器)上和能够被用户用来向计算机提供输入的键盘和指向设备(例如,鼠标或轨迹球)上实施。其它种类的设备也能够用来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感官反馈(例如,视觉反馈、听觉反馈、或触觉反馈);并且来自用户的输入能够以任何形式被接收,所述形式包括声音、语音、或触觉输入。
这里所描述的系统和技术能够以包括后端组件(例如,作为数据服务器)的计算系统实施、或能够以包括中间件组件(例如,应用服务器)的计算系统实施、或能够以包括前端组件(例如,具有能够被用户用来与在这里所描述的系统和技术的实施方式进行交互的图形用户界面或者网络浏览器的客户端计算机)的计算系统实施、或者以这样的后端组件、中间件组件、或者前端组件的任何组合实施。该系统的组件能够通过任何形式或者介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(local area network,“LAN”)、广域网(wide area network,“WAN”)、和互联网。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离,并且典型地通过通信网络来交互。客户端和服务器之间的关系凭借在各个计算机上运行的并且彼此之间具有客户端-服务器关系的计算机程序而发生。
若干实施例已经被描述。然而,将理解的是,可以做出各种修改而不脱离本发明的范围。此外,在附图中所描绘的逻辑流程图不要求所示出的特殊次序、或相继次序来实现预期的结果。此外,其它步骤可以被提供、或步骤可以从所描述的流程图被去除,并且其它组件可以被添加到所描述的系统中、或从所描述的系统移除。因此,其它实施例在下面的权利要求的范围之内。

Claims (18)

1.一种计算机实施的方法,包括:
获得与特定应用相关联的图像帧的集合;
对于图像帧的集合内的每个图像帧,确定将在所述特定应用上渲染图像帧的相应可能性;
选择图像帧的集合的子集作为多个图像帧,选择基础为将在所述特定应用上渲染所述多个图像帧的可能性;
对于所述多个图像帧中的每一个,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异;
生成用于满足与所述图像帧先前的另一图像帧的阈值差异的每个图像帧的模板帧;以及
在客户端设备运行所述特定应用之前,向所述客户端设备提供所述模板帧。
2.根据权利要求1所述的方法,其中,使用预定义的质量水平生成用于所述多个图像帧的模板帧。
3.根据权利要求1所述的方法,其中,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异包括:
确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数;
确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数满足距离阈值;以及
响应于确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数满足距离阈值,确定所述图像帧满足与所述图像帧先前的另一帧的阈值差异。
4.根据权利要求3所述的方法,其中,确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数包括:
基于所述图像帧的像素的亮度直方图,生成所述图像帧的签名。
5.根据权利要求1所述的方法,其中:
对于图像帧的集合确定的相应可能性中的每一个包括表示先前已经在所述特定应用上渲染图像的次数的分数;以及
图像帧的集合的子集包括被确定为具有满足先前已经在所述特定应用上渲染图像的阈值次数的分数的图像帧。
6.根据权利要求1所述的方法,还包括:
确定模板帧的大小;
确定所述模板帧的大小超过阈值大小,所述阈值大小与所述特定应用在所述客户端设备上的启动延迟相关联;以及
响应于确定所述模板帧的大小超过阈值大小,在所述客户端设备运行所述特定应用之前从所述模板帧移除一个或多个模板帧。
7.根据权利要求1所述的方法,其中,所述阈值差异指示图像帧显示与所述图像帧先前的另一帧不同的图形元素。
8.一种系统,包括:
一个或多个计算机;以及
存储指令的一个或多个存储设备,所述指令在被所述一个或多个计算机运行时,使所述一个或多个计算机执行操作,所述操作包括:
获得与特定应用相关联的图像帧的集合;
对于图像帧的集合内的每个图像帧,确定将在所述特定应用上渲染图像帧的相应可能性;
选择图像帧的集合的子集作为多个图像帧,选择基础为将在所述特定应用上渲染所述多个图像帧的可能性;
对于所述多个图像帧中的每一个,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异;
生成用于满足与所述图像帧先前的另一图像帧的阈值差异的每个图像帧的模板帧;以及
在客户端设备运行所述特定应用之前,向所述客户端设备提供所述模板帧。
9.根据权利要求8所述的系统,其中,使用预定义的质量水平生成用于所述多个图像帧的模板帧。
10.根据权利要求8所述的系统,其中,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异包括:
确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数;
确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数满足距离阈值;以及
响应于确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数满足距离阈值,确定所述图像帧满足与所述图像帧先前的另一帧的阈值差异。
11.根据权利要求10所述的系统,其中,确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数包括:
基于所述图像帧的像素的亮度直方图,生成所述图像帧的签名。
12.根据权利要求8所述的系统,其中:
对于图像帧的集合确定的相应可能性中的每一个包括表示先前已经在所述特定应用上渲染图像的次数的分数;以及
图像帧的集合的子集包括被确定为具有满足先前已经在所述特定应用上渲染图像的阈值次数的分数的图像帧。
13.一种利用计算机程序指令来编码的非瞬时性计算机可读存储设备,所述计算机程序指令在被一个或多个计算机运行时,使得所述一个或多个计算机执行操作,所述操作包括:
获得与特定应用相关联的图像帧的集合;
对于图像帧的集合内的每个图像帧,确定将在所述特定应用上渲染图像帧的相应可能性;
选择图像帧的集合的子集作为多个图像帧,选择基础为将在所述特定应用上渲染所述多个图像帧的可能性;
对于所述多个图像帧中的每一个,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异;
生成用于满足与所述图像帧先前的另一图像帧的阈值差异的每个图像帧的模板帧;以及
在客户端设备运行所述特定应用之前,向所述客户端设备提供所述模板帧。
14.根据权利要求13所述的设备,其中,使用预定义的质量水平生成用于所述多个图像帧的模板帧。
15.根据权利要求13所述的设备,其中,确定图像帧是否满足与所述图像帧先前的另一图像帧的阈值差异包括:
确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数;
确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数满足距离阈值;以及
响应于确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数满足距离阈值,确定所述图像帧满足与所述图像帧先前的另一帧的阈值差异。
16.根据权利要求15所述的设备,其中,确定所述图像帧的签名与所述图像帧先前的另一帧的签名之间的距离分数包括:
基于所述图像帧的像素的亮度直方图,生成所述图像帧的签名。
17.根据权利要求13所述的设备,其中:
对于图像帧的集合确定的相应可能性中的每一个包括表示先前已经在所述特定应用上渲染图像的次数的分数;以及
图像帧的集合的子集包括被确定为具有满足先前已经在所述特定应用上渲染图像的阈值次数的分数的图像帧。
18.根据权利要求13所述的设备,其中,所述操作还包括:
确定模板帧的大小;
确定所述模板帧的大小超过阈值大小,所述阈值大小与所述特定应用在所述客户端设备上的启动延迟相关联;以及
响应于确定所述模板帧的大小超过阈值大小,在所述客户端设备运行所述特定应用之前从所述模板帧移除一个或多个模板帧。
CN202010234919.2A 2015-05-04 2016-05-04 用于应用流的预取的编码 Active CN111654703B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010234919.2A CN111654703B (zh) 2015-05-04 2016-05-04 用于应用流的预取的编码

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/703,106 2015-05-04
US14/703,106 US9800641B2 (en) 2015-05-04 2015-05-04 Pre-fetched encoding for application streaming
CN202010234919.2A CN111654703B (zh) 2015-05-04 2016-05-04 用于应用流的预取的编码
CN201680020262.1A CN107534775B (zh) 2015-05-04 2016-05-04 用于应用流的方法和系统
PCT/US2016/030712 WO2016179244A1 (en) 2015-05-04 2016-05-04 Pre-fetched encoding for application streaming

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201680020262.1A Division CN107534775B (zh) 2015-05-04 2016-05-04 用于应用流的方法和系统

Publications (2)

Publication Number Publication Date
CN111654703A true CN111654703A (zh) 2020-09-11
CN111654703B CN111654703B (zh) 2024-03-15

Family

ID=56024398

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680020262.1A Active CN107534775B (zh) 2015-05-04 2016-05-04 用于应用流的方法和系统
CN202010234919.2A Active CN111654703B (zh) 2015-05-04 2016-05-04 用于应用流的预取的编码

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201680020262.1A Active CN107534775B (zh) 2015-05-04 2016-05-04 用于应用流的方法和系统

Country Status (6)

Country Link
US (2) US9800641B2 (zh)
EP (1) EP3292694A1 (zh)
CN (2) CN107534775B (zh)
DE (1) DE112016002055T5 (zh)
GB (2) GB2553237B (zh)
WO (1) WO2016179244A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9800641B2 (en) * 2015-05-04 2017-10-24 Google Inc. Pre-fetched encoding for application streaming
US10554713B2 (en) * 2015-06-19 2020-02-04 Microsoft Technology Licensing, Llc Low latency application streaming using temporal frame transformation
KR102256110B1 (ko) * 2017-05-26 2021-05-26 라인 가부시키가이샤 영상 압축 방법 및 영상 복원 방법
CN108769715B (zh) * 2018-05-22 2022-05-13 深圳市腾讯网络信息技术有限公司 图形指令数据的处理方法及装置
US11245525B2 (en) 2019-09-10 2022-02-08 Bank Of America Corporation Managing a third-party recipient digital resource vehicle via a distributed trust computing network
CN114584598A (zh) * 2020-11-16 2022-06-03 中国移动通信有限公司研究院 一种图像处理方法、装置、设备及可读存储介质
US11956294B2 (en) * 2021-01-19 2024-04-09 Nagrastar Llc Systems and methods for analyzing streamed media to determine common source encoders

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161908A1 (en) * 2000-11-06 2002-10-31 Benitez Manuel Enrique Intelligent network streaming and execution system for conventionally coded applications
US20050105608A1 (en) * 2002-08-29 2005-05-19 Scott Coleman Method and apparatus for caching, compressing and transmitting video signals
US20080002894A1 (en) * 2006-06-29 2008-01-03 Winbond Electronics Corporation Signature-based video redirection
JP2008083894A (ja) * 2006-09-27 2008-04-10 Sony Corp プログラム、検出方法、及び検出装置
JP2008092352A (ja) * 2006-10-03 2008-04-17 Ntt Docomo Inc 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法及び画像予測復号プログラム
US20090070666A1 (en) * 2007-09-12 2009-03-12 Vistaprint Technologies Limited System and Methods for Displaying User Modifiable Server-Rendered Images
US20090097751A1 (en) * 2007-10-12 2009-04-16 Microsoft Corporation Remote user interface raster segment motion detection and encoding
US20090116760A1 (en) * 2006-04-28 2009-05-07 Ntt Docomo, Inc. Image predictive coding device, image predictive coding method, image predictive coding program, image predictive decoding device, image predictive decoding method and image predictive decoding program
CN101557514A (zh) * 2008-04-11 2009-10-14 华为技术有限公司 一种帧间预测编解码方法、装置及系统
CN102427530A (zh) * 2011-10-11 2012-04-25 北京工业大学 帧内预测方法
CN102611886A (zh) * 2011-01-22 2012-07-25 华为技术有限公司 一种运动预测或补偿方法
US20130027392A1 (en) * 2011-07-25 2013-01-31 Sony Computer Entertainment Inc. Image processing apparatus, image processing method, program, and non-transitory computer readable information storage medium
CN103635938A (zh) * 2011-03-25 2014-03-12 爱立信(中国)通信有限公司 在流传输客户端中用于处理视频流传输数据的方法、流传输客户端、计算机程序和计算机程序产品
US20140099040A1 (en) * 2012-10-05 2014-04-10 Sony Corporation Image processing device and image processing method
US20140101327A1 (en) * 2012-10-05 2014-04-10 Sony Corporation Server device and information processing method
US20140189091A1 (en) * 2012-12-27 2014-07-03 Nvidia Corporation Network adaptive latency reduction through frame rate control
CN104243440A (zh) * 2013-06-21 2014-12-24 辉达公司 图形服务器和经远程图形处理服务使渲染内容流动的方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721850B2 (en) 2001-02-27 2004-04-13 Lucent Technologies Inc. Method of cache replacement for streaming media
JP2005184062A (ja) * 2003-12-16 2005-07-07 Fuji Photo Film Co Ltd 画像データ変換装置および画像データ変換プログラム
JP5137499B2 (ja) * 2007-08-24 2013-02-06 富士通コンポーネント株式会社 Kvmスイッチ及びその制御方法
US8650364B2 (en) * 2008-05-28 2014-02-11 Vixs Systems, Inc. Processing system with linked-list based prefetch buffer and methods for use therewith
CN101534442B (zh) * 2009-04-13 2011-01-12 腾讯科技(深圳)有限公司 视频编码系统及方法
US8776158B1 (en) 2009-09-30 2014-07-08 Emc Corporation Asynchronous shifting windows caching for forward and backward video streaming
US20110206132A1 (en) * 2010-02-19 2011-08-25 Lazar Bivolarsky Data Compression for Video
US20120194534A1 (en) 2011-02-02 2012-08-02 Alcatel-Lucent Usa Inc. System and Method for Managing Cache Storage in Adaptive Video Streaming System
US9026670B2 (en) 2011-08-22 2015-05-05 Allot Communications Ltd. System and method for efficient caching and delivery of adaptive bitrate streaming
US9800641B2 (en) * 2015-05-04 2017-10-24 Google Inc. Pre-fetched encoding for application streaming

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161908A1 (en) * 2000-11-06 2002-10-31 Benitez Manuel Enrique Intelligent network streaming and execution system for conventionally coded applications
US20050105608A1 (en) * 2002-08-29 2005-05-19 Scott Coleman Method and apparatus for caching, compressing and transmitting video signals
US20090116760A1 (en) * 2006-04-28 2009-05-07 Ntt Docomo, Inc. Image predictive coding device, image predictive coding method, image predictive coding program, image predictive decoding device, image predictive decoding method and image predictive decoding program
US20080002894A1 (en) * 2006-06-29 2008-01-03 Winbond Electronics Corporation Signature-based video redirection
JP2008083894A (ja) * 2006-09-27 2008-04-10 Sony Corp プログラム、検出方法、及び検出装置
JP2008092352A (ja) * 2006-10-03 2008-04-17 Ntt Docomo Inc 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法及び画像予測復号プログラム
US20090070666A1 (en) * 2007-09-12 2009-03-12 Vistaprint Technologies Limited System and Methods for Displaying User Modifiable Server-Rendered Images
US20090097751A1 (en) * 2007-10-12 2009-04-16 Microsoft Corporation Remote user interface raster segment motion detection and encoding
CN101557514A (zh) * 2008-04-11 2009-10-14 华为技术有限公司 一种帧间预测编解码方法、装置及系统
CN102611886A (zh) * 2011-01-22 2012-07-25 华为技术有限公司 一种运动预测或补偿方法
CN103635938A (zh) * 2011-03-25 2014-03-12 爱立信(中国)通信有限公司 在流传输客户端中用于处理视频流传输数据的方法、流传输客户端、计算机程序和计算机程序产品
US20130027392A1 (en) * 2011-07-25 2013-01-31 Sony Computer Entertainment Inc. Image processing apparatus, image processing method, program, and non-transitory computer readable information storage medium
CN102427530A (zh) * 2011-10-11 2012-04-25 北京工业大学 帧内预测方法
US20140099040A1 (en) * 2012-10-05 2014-04-10 Sony Corporation Image processing device and image processing method
US20140101327A1 (en) * 2012-10-05 2014-04-10 Sony Corporation Server device and information processing method
US20140189091A1 (en) * 2012-12-27 2014-07-03 Nvidia Corporation Network adaptive latency reduction through frame rate control
CN104243440A (zh) * 2013-06-21 2014-12-24 辉达公司 图形服务器和经远程图形处理服务使渲染内容流动的方法

Also Published As

Publication number Publication date
US20180069912A1 (en) 2018-03-08
GB202017938D0 (en) 2020-12-30
GB2587277A (en) 2021-03-24
US10404771B2 (en) 2019-09-03
CN107534775B (zh) 2020-04-24
CN111654703B (zh) 2024-03-15
GB2587277B (en) 2021-07-07
EP3292694A1 (en) 2018-03-14
DE112016002055T5 (de) 2018-03-01
CN107534775A (zh) 2018-01-02
US9800641B2 (en) 2017-10-24
US20160330264A1 (en) 2016-11-10
WO2016179244A1 (en) 2016-11-10
GB201715727D0 (en) 2017-11-15
GB2553237B (en) 2020-12-30
GB2553237A (en) 2018-02-28

Similar Documents

Publication Publication Date Title
CN107534775B (zh) 用于应用流的方法和系统
US9549152B1 (en) Application content delivery to multiple computing environments using existing video conferencing solutions
US10027927B2 (en) High quality multimedia transmission from a mobile device for live and on-demand viewing
US9930308B2 (en) Platform-agnostic video player for mobile computing devices and desktop computers
US8819754B2 (en) Media streaming with enhanced seek operation
US20170111414A1 (en) Video playing method and device
US8321905B1 (en) Fast switching of media streams
US10805570B2 (en) System and method for streaming multimedia data
KR20080085008A (ko) 모바일 디바이스를 이용하여 사용자가 대형 화면 게임을플레이할 수 있도록 하는 방법 및 시스템
EP3142381B1 (en) Network video playing method and device
RU2696345C2 (ru) Интеллектуальное потоковое воспроизведение мультимедийного контента
WO2017101355A1 (zh) 图像处理方法及装置
CN113535063A (zh) 直播页面切换方法、视频页面切换方法、电子设备及存储介质
WO2020131594A1 (en) Combined forward and backward extrapolation of lost network data
US10652298B2 (en) Media streaming through section change detection markers
CN116866658A (zh) 视频数据的处理方法、装置、设备和介质
WO2023244305A1 (en) Self-driven adaptive upload
CN113396568A (zh) 用于处理编解码器切换的同步抖动缓冲器
KR20160087226A (ko) 클라우드 스트리밍 서비스 시스템, 단말 성능을 고려한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
US20180183848A1 (en) Method for receiving adaptive streaming service
US20240293739A1 (en) Method And System To Reduce Latency In Cloud Gaming
US20230412901A1 (en) Self-driven adaptive upload
US20230412866A1 (en) Self-driven adaptive upload
CN114339247A (zh) 视频预览方法、装置、存储介质及电子设备
KR20160044732A (ko) 클라우드 스트리밍 서비스 시스템, 스틸 이미지 기반 클라우드 스트리밍 서비스 방법 및 이를 위한 장치

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
GR01 Patent grant
GR01 Patent grant