CN113273219A - 分布式视频和图形渲染系统 - Google Patents
分布式视频和图形渲染系统 Download PDFInfo
- Publication number
- CN113273219A CN113273219A CN201980087474.5A CN201980087474A CN113273219A CN 113273219 A CN113273219 A CN 113273219A CN 201980087474 A CN201980087474 A CN 201980087474A CN 113273219 A CN113273219 A CN 113273219A
- Authority
- CN
- China
- Prior art keywords
- receiving device
- display
- base unit
- instruction stream
- stream
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/422—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
- H04N21/42204—User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8146—Monomedia components thereof involving graphical data, e.g. 3D object, 2D graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/426—Internal components of the client ; Characteristics thereof
- H04N21/42653—Internal components of the client ; Characteristics thereof for processing graphics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
- H04N21/4312—Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4348—Demultiplexing of additional data and video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/43615—Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
接收设备通过网络从基本单元接收指令流,该指令流包括用于产生用户界面的图形帧的绘制命令。接收设备连接到显示器。接收设备解析指令流以确定绘制命令及其自变量。接收设备在接收设备的图形引擎中执行绘制命令以生成用户界面的图形帧。执行包括执行渲染函数和对用于动画的坐标进行插值。接收设备输出用户界面的图形帧以用于显示。
Description
技术领域
本发明的实施例涉及媒体设备领域;并且更具体地,涉及分布式视频和图形渲染系统。
背景技术
主要由媒体观看和游戏组成的现代起居室媒体消费体验是通过游戏控制台、流设备、连接到TV的机顶盒、以及智能TV来实现的。可以使用流传送媒体或游戏内容的廉价“铸造棒”来扩展媒体播放和游戏设备。流传送媒体的铸造棒通常通过接收媒体URL并从该媒体URL流传送媒体内容来这样做。铸造棒被用作为另一个屏幕提供服务而不会产生全功能娱乐设备的费用的廉价手段。
铸造棒具有音频/视频处理和输出能力,但是它们通常的特定是简单的用户界面。铸造棒的廉价硬件通常不能够运行通常被用于实现用户界面(例如,Java、HTML5)的技术堆栈。结果,使用铸造棒的用户体验通常比使用全功能的主媒体消费设备的用户体验要差。
发明内容
描述了分布式视频和图形渲染系统,该系统包括基本单元和一个或多个接收设备。基本单元接收与接收设备相关的一个或多个事件,接收设备通过网络与基本单元通信耦接。基本单元确定该一个或多个事件如何通知或引导对当前正在接收设备上渲染的内容的输出。基本单元生成包括绘制命令的指令流,该绘制命令用于产生与该一个或多个事件相对应的接收设备的用户界面的图形帧。生成指令流不包括在图形引擎中执行渲染函数和产生用于动画的插值坐标。基本单元通过网络将所生成的指令流发送给接收设备。
接收设备通过网络从基本单元接收指令流,该指令流包括用于产生用户界面的图形帧的绘制命令。接收设备连接到显示器。接收设备解析指令流以确定绘制命令及其自变量。接收设备在接收设备的图形引擎中执行绘制命令以生成用户界面的图形帧。该执行包括执行渲染函数和对用于动画的坐标进行插值。接收设备输出用户界面的图形帧以用于显示。
在实施例中,指令流是基于矢量图的和低延迟的,并且允许生成用户界面并与用户界面交互,该用户界面与基本单元本地生成的用户界面是不可区分的。即,即使主应用可能正在基本单元上运行,但可能在用户看来,似乎接收设备中的每个都在以其全部能力运行该主应用。
在实施例中,基本单元比接收设备相对更强大。每个接收设备与基本单元相比相对便宜并且相对不那么强大。然而,当如本文所述一起使用时,提供了与基本单元上的用户体验相匹配的接收设备上的用户体验。应用逻辑和其它计算开销大部分驻留在基本单元上,同时通过接收设备来表示复杂且全功能的用户界面(UI)。另外,提供了流传送不同类型的媒体,包括视频、音乐和游戏。因此,可以向多个显示器提供用户体验的复制品,同时享受由相对便宜的接收设备硬件提供的成本优势。
附图说明
通过参考以下描述和用于说明本发明的实施例的附图,可以最好地理解本发明。在附图中:
图1示出根据实施例的分布式视频和图形渲染系统的示例。
图2示出根据实施例的分布式视频和图形渲染系统的示例。
图3示出根据实施例的响应于事件的分布式视频和图形渲染系统的示例。
图4示出根据实施例的基本单元的指令流发送器的架构的示例。
图5示出根据实施例的分布式视频和图形渲染系统的架构的示例,其中发送器可以在双模式下操作,双模式包括生成针对接收设备的指令流和执行直接渲染以输出到本地连接的显示器。
图6示出根据实施例的接收设备的指令流处理器的示例架构。
图7是示出根据实施例的分布式视频和图形渲染系统的示例性操作的流程图。
图8示出根据实施例的分布式视频和图形渲染系统的示例,其中视频流从发送器传送到接收器。
图9是示出根据实施例的用于接收和处理视频流的示例性操作的流程图。
图10是示出根据实施例的由在接收设备处接收的用户输入事件驱动的分布式视频和图形渲染系统的示例性操作的流程图。
图11是示出根据实施例的接收设备接收并处理两个并发流的示例性操作的流程图。
图12是示出根据实施例的接收设备的示例性架构的框图。
图13是示出根据实施例的基本单元的示例性架构的框图。
具体实施方式
描述了分布式视频和图形渲染系统。该系统包括基本单元并包括一个或多个接收设备的集合。基本单元向接收设备发送演示流,接收设备进而解译并向显示器输出图形帧。基本单元和/或接收设备可以接收用户输入(例如,通过遥控器、游戏控制器、键盘、鼠标、姿势解译、语音)。接收设备可以将用户输入发送给基本单元用于处理。
在实施例中,演示流是包括绘制命令的指令流,接收设备解析并执行绘制命令以生成图形帧。例如,指令流包括用于用户界面的绘制命令以及与通过接收设备显示的用户界面的交互。在这样的实施例中,接收设备包括应用,以解译指令流并将其转换为用于显示的图形帧。在这样的实施例中,基本单元不通过图形引擎执行渲染函数,并且不在准备指令流时产生用于动画的插值坐标。这减少了基本单元上的计算负荷。
在实施例中,演示流是以标准视频格式编码的视频流,接收设备以该标准视频格式解码并且输出给显示器。例如,视频流可以使用H.264、H.265、AV1、VP9等来编码,并且使用实时传输协议(RTP)、实时消息传送协议(RTMP)等来发送。除了从基本单元接收视频流之外,或者作为替代,接收设备可以从远程WAN服务器接收视频流。
在实施例中,接收设备可以接收至少两个并发流。例如,接收设备可以同时接收两个指令流,同时接收一个指令流和一个视频流,和/或同时接收两个视频流。接收设备可以同时将并发流中的每个流输出给相同的显示器。例如,接收设备可以将并发流混合在一起,或者并排地或画中画地显示它们。例如,可以接收视频流,并且可以由接收设备来覆盖用于导航用户界面(UI)的指令流。作为另一示例,可以接收和显示表示游戏的视频流,并且可以将另一视频的视频流显示为画中画。作为另一示例,可以接收用于用户界面的指令流,并且将其与从远程服务器接收的视频流的视频并排地示出。
在实施例中,指令流是基于矢量图的和低延迟的,并且允许生成用户界面并与用户界面交互,该用户界面与基本单元本地生成的用户界面是不可区分的。即,即使主应用可能正在基本单元上运行,但可能在用户看来,似乎接收设备中的每个都在以其全部能力运行该主应用。
在实施例中,分布式视频和图形渲染系统是事件驱动的。在这样的实施例中,基本单元和/或接收设备可以接收用户输入(例如,控制器输入、语音输入、图像输入)并且相应地处理用户输入。如果接收设备接收到用户输入,则将用户输入传送给基本单元,基本单元进而处理用户输入以通知或引导对当前正在通过接收设备渲染的内容的输出。
在实施例中,基本单元比接收设备相对更强大。每个接收设备与基本单元相比相对便宜并且相对不那么强大。然而,当如本文所述一起使用时,提供了与基本单元上的用户体验相匹配的接收设备上的用户体验。应用逻辑和其它计算开销大部分驻留在基本单元上,同时通过接收设备来表示复杂且全功能的UI。另外,提供了流传送不同类型的媒体,包括视频、音乐和游戏。因此,可以向多个显示器提供用户体验的复制品,同时享受由相对便宜的接收设备硬件提供的成本优势。
图1示出根据实施例的分布式视频和图形渲染系统的示例。基本单元110是计算设备,其可以是机顶盒(STB)、流设备、游戏控制台、智能电视、智能扬声器或其他计算设备。在实施例中,基本单元110驱动接收设备120,例如生成表示要通过接收设备120显示的用户界面的命令。除了驱动接收设备120之外,基本单元110还可以具有独立的功能(例如,充当STB、流设备、游戏控制台、智能电视、智能扬声器等)。基本单元110可以在驱动接收设备120的同时执行其自己的独立的功能。尽管图1示出单个接收设备,但是基本单元110可以同时驱动多个接收设备。
基本单元110包括生成并且向接收设备120发送演示流170的发送器应用115。演示流170可以包括指令流,该指令流包括绘制命令及其自变量,其中接收设备120解析并执行绘制命令及其自变量以生成要在显示器130上显示的图形帧180。指令流可以包括产生用户界面和与通过接收设备120显示的用户界面交互的命令。如果向接收设备120发送指令流,则发送器应用115不通过图形引擎执行渲染功能,并且不产生用于动画的插值坐标。相反,接收设备120执行渲染功能和用于动画的插值坐标。这减少了在基本单元110上的发送器应用115的计算负荷。
演示流170可以包括视频流,其中接收设备120解码视频流以生成要在显示器130上显示的图形帧180。视频流可以使用H.264、H.265、AV1、VP9等进行编码,并且使用实时传输协议(RTP)、实时消息传送协议(RTMP)等来发送。如果接收和处理视频流,则接收设备120包括用于解码视频流并且输出已解码的视频流的应用。在实施例中,演示流170可以包括指令流和视频流两者。
演示流170可以通过诸如Wi-Fi、蓝牙或其它无线网络之类的无线网络或通过诸如以太网之类的有线网络发送。可以使用网络套接字(WebSocket)协议或其它低层网络协议来发送演示流170。通常,基本单元110和接收设备120位于相同的物理结构中,例如位于相同的家庭单元中。
接收设备120连接到显示器130,并且可能相对较小(例如,它通常小于显示器130和基本单元110)。接收设备120可以采用铸造棒的形式。接收设备120可以被插入到显示器130的HDMI端口中。与基本单元110相比,接收设备120相对便宜。例如,接收设备120可以被实现为片上系统(SoC)。接收设备120包括接收演示流170、处理演示流170、并且输出要在显示器130上显示的图形帧18的接收器应用125。
在实施例中,除了从基本单元110接收演示流170之外,或代替从基本单元110接收演示流170,接收设备120接收并且处理从远程WAN服务器140接收的演示流172。在这样的实施例中,WAN服务器140包括发送器应用145以生成和发送演示流172。
图2示出根据实施例的分布式视频和图形渲染系统的示例。如图2所示,基本单元110的发送器应用115包括指令流发送器210和视频流发送器215,并且接收设备120的接收器应用135包括指令流处理器220和视频流处理器225。指令流发送器210生成由接收器应用135的指令流处理器220处理的指令流240并且将其发送给接收设备120。视频流发送器215生成并且发送由接收器应用135的视频流处理器225处理的视频流245。WAN服务器140的发送器应用145可以包括用于生成和发送指令流250的类似指令流发送器和/或用于生成和发送视频流255的类似视频流发送器。
如果将指令流发送给接收设备120,那么指令流发送器210不通过图形引擎执行渲染功能并且不产生用于动画的插值坐标。接收设备120的接收器应用135的指令流处理器220替代地执行渲染功能和用于动画的插值坐标。这减少了基本单元110上的指令流发送器210的计算负荷。在实施例中,通过使得能够由指令流处理器220进行无损的、基于关键帧的插值远程渲染的协议来发送指令流240。
在实施例中,指令流发送器210对于基本单元110的主操作系统是不可见的。例如,可以在基本单元110上使用具有两个不同操作系统的管理程序,其中一个操作系统用于基本单元110的主操作,一个操作系统专用于驱动接收设备。
指令流处理器220接收并解析指令流240。解析后的指令流240包括绘制命令及其自变量。指令流处理器220执行绘制命令和自变量以生成图形帧180。绘制命令映射到指令流处理器220的图形引擎中的渲染函数。在实施例中,指令流处理器220产生用于渲染函数的插值坐标。
视频流处理器225接收并解码视频流245。已解码的视频流245由图形帧180表示。
在实施例中,分布式视频和图形渲染系统响应于在基本单元和/或接收设备处接收到的事件。图3示出根据实施例的响应于事件的分布式视频和图形渲染系统的示例。基本单元110可以连接到用户输入设备310并且接收用户输入315。用户输入设备310可以是无线地(例如,蓝牙、红外等)或有线地连接到基本单元110的例如控制器、键盘、鼠标、外部相机、或其他输入设备。此外或备选地,基本单元110可以接收其他用户输入315(例如,语音输入、手势解译输入等)。用户输入315可以通知或引导对当前正在通过接收设备120渲染的内容的输出。
此外,或备选地,接收设备120可以连接到用户输入设备320并且接收用户输入325。用户输入设备320可以是无线地(例如,蓝牙、红外等)或有线地连接到接收设备120的例如控制器、键盘、鼠标、外部相机、或其他输入设备。此外,或备选地,接收设备120可以接收其他用户输入325(例如,语音输入、姿势解译输入等)。在实施例中,如果接收设备120接收到用户输入325,则接收设备120将对应的事件330发送给基本单元110以用于进一步处理。
例如,如果输入是音频输入,则声音文件可以由接收设备120记录并且提供给基本单元110。然后,基本单元110可相应地处理音频输入。作为另一示例,如果输入是由接收设备120捕获的视频,则视频文件可以由接收设备120记录并被提供给基本单元110。然后,基本单元110可以处理视频并相应地动作。例如,基本单元110可以包括用于面部登录的能力,并且处理视频,以在识别出用户的情况下将用户登录到应用。接收设备120可以捕获音频并将该音频发送给基本单元110以进行处理,从而允许远场语音控制。接收设备120可以捕获视频并且将该视频发送给基本单元110以进行处理,来允许诸如面部登录之类的视频特征。
基本单元110处理事件(从接收设备120接收和/或直接从用户输入315接收)以通知或引导对当前正在接收设备120上渲染的内容的输出。例如,事件由发送器应用115处理,并且它们的效果反映在演示流170中。事件特定于在基本单元110和/或接收设备120上执行的应用。例如,如果在基本单元110上执行的应用是媒体应用(例如,电视应用、流传送视频应用等),则事件特定于该媒体应用,诸如针对该媒体应用的用户界面的事件(例如,导航控制、媒体资产选择等)。
在实施例中,用户输入设备310与基本单元110永久配对。如果基本单元110的计算机视觉系统在其视场中看到用户输入设备310,则基本单元110认为来自用户输入设备310的输入事件是针对基本单元110的,并相应地处理输入事件。然而,如果基本单元110的计算机视觉系统在其视场中没有看到用户输入设备310,则基本单元110假设用户输入设备310物理上位于接收设备120附近,并且认为从用户输入设备310接收的输入事件是针对接收设备120的,并且相应地处理输入事件(例如,对事件进行处理,以驱动接收设备120的表示模型)。
图4示出根据实施例的指令流发送器210的架构的示例。基本单元110执行指令流发送器210。WAN服务器140也可以执行类似的指令流发送器。指令流发送器210在逻辑上被分为输入段、主/绘制段、和输出段。输入片处理诸如用户输入410的输入。用户输入410可以是从用户输入设备310或其他用户输入(例如,语音输入、姿势解译输入等)接收的。
应用逻辑412处理用户输入410以确定与用户输入410对应的一个或多个事件414。事件414可以通知或引导关于当前正在接收设备120上渲染的内容的输出。例如,事件414可以用于游戏控制器输入(按钮按压、定向移动等)、导航输入(例如,对菜单进行导航)、功率输入、音量输入等。应用逻辑412和事件414特定于在基本单元110和/或接收设备120上执行的应用。例如,如果在基本单元110和/或接收设备120上执行的应用是媒体应用(例如,电视应用、流传送视频应用等),则应用逻辑412和事件414特定于该媒体应用,诸如媒体应用的用户界面和该用户界面的导航控制。
事件414由UI视图421A-421N接收。每个视图421是图形平面。多个平面形成呈现给用户的复合“窗口”或“整体视图”。视图421A-421N被单独地定位、动画化和排序,并且形成包含(containment)层次结构。键处理功能416处理可能通过渲染功能来强制更新或重新渲染图形用户界面的事件。从可绘制对象(Drawable)420调用渲染功能422以确定图形基元的位置。由于如果发送指令流则将不在发送器应用上执行插值(将在接收应用上(例如在接收设备中)执行插值),因此每秒执行相对较少的渲染(例如,每秒3次渲染而不是每秒60次渲染)。
渲染功能422使用多个渲染函数440来确定图形基元的位置。因为图形基元不是由指令流发送器绘制的(它们将由接收器绘制),所以渲染函数440的结果不由基本单元110的图形引擎处理,而是由指令流模块460包装为命令并且在指令流240中发送。
渲染函数可以包括以下函数中的一个或多个:draw_cache函数、render_rect函数、清除(clear)函数、set_background函数、初始化(initialize)函数、set_geometry函数、set_scroll_offset函数、动画化(animate)函数、set_image函数、load_image函数、render_text函数、stroke_rect函数、frame_done函数、和销毁(destroy)函数。
draw_cache函数设置图形平面的大小。它可以将对高速缓存对象的引用、屏幕空间中的位置和尺寸(例如,int x、y、w、h)以及指示对象是否可动画化的布尔值作为参数。
render_rect函数使用给定的样式来以某个位置和大小渲染已填充的矩形。render_rect函数的参数可以包括屏幕空间中的位置和尺寸(例如int x、y、w、h)、字符串样式、和指示对象是否可动画化的布尔值。
清除函数清除图形平面(例如,清除为透明的黑色)。它可以将屏幕空间中的位置和尺寸(例如,int x、y、w、h)作为参数。
set_background函数设置背景的图形平面的大小。它将诸如纯色、梯度和粒子系统说明符之类的指定背景的字符串作为参数。
初始化函数初始化新的图形帧,并传送高速缓存大小以使客户端和服务器对最近最少使用(LRU)高速缓存的理解保持同步。它采用指示所请求的渲染器的版本的字符串版本标识符、指示是否应当专门渲染平面的布尔值、图像高速缓存的大小的整数、以及文本高速缓存的大小的整数作为参数。
set_geometry函数设置图形平面的大小。它将屏幕空间中的位置和尺寸(例如,int x、y、w、h)作为参数。
set_scroll_offset函数设置上个关键帧中的可动画化对象的新滚动偏移。它将向可动画化对象进行通知的新滚动偏移的位置(例如,int x、y)作为参数。
动画化函数触发当前帧中的可动画化对象的动画化。该命令指定当前帧作为关键帧。它将锚定可动画化对象的当前滚动偏移的位置(例如,int x、y)以及指定定时功能的字符串作为参数。定时功能量化动画的三个阶段(加速、巡航和减速)的加速度和速度。
set_image函数设置来自给定二进制blob的图像并高速缓存在高速缓存对象中,用于稍后由draw_cache函数调用。其参数包括对高速缓存对象的引用、对图像进行表示的该图像宽度和高度(例如,int w、h),以及具有要设置的图像的数据的blob。
load_image函数从给定的URL加载图像并高速缓存在高速缓存对象中,用于稍后由draw_cache函数调用。其参数包括对高速缓存对象的引用以及要加载的图像的字符串URL。
render_text函数使用给定的样式来以某个位置和大小渲染文本字符串。其参数可以包括屏幕空间中的位置和尺寸(例如,int x、y、w、h)、字符串文本、和字符串样式。
stroke_rect函数使用给定的样式来以某个位置和大小渲染勾勒出的矩形。其参数包括屏幕空间中的位置和尺寸(例如,int x、y、w、h)、字符串样式、以及指示对象是否可动画化的布尔值。
frame_done函数声明用于当前帧的指令流的结束。frame_done函数没有任何参数。
销毁函数销毁/释放图形平面和所有相关的高速缓存。销毁函数没有任何参数。
如上文所描述,渲染函数440的结果由指令流模块460处理且包装为命令。在实施例中,使用网络套接字470来使用网络套接字协议发送指令流240。在这样的实施例中,指令流模块460包括网络套接字流模块462,网络套接字流模块462包括发送(send)功能464和二进制发送(sendbinary)功能466。发送功能464用于将绘制命令中的至少一些作为文本字符串发送。二进制发送功能466用于将绘制命令中的至少一些作为二进制发送。
图5示出在发送器侧(例如,在基本单元110上执行)的分布式视频和图形渲染系统的架构的示例。图5中的架构示出在双模式下进行操作的能力,在双模式下,部分地取决于输出是接收设备还是本地连接的显示器,基本单元110可以生成针对接收设备的指令流,并且基本单元110可以执行直接渲染以输出到本地连接的显示器。图5所示的架构可以由基本单元110使用。指令流发送器210在逻辑上被分为输入段、主/绘制段、和输出段。输入段处理诸如用户输入510之类的输入。用户输入510可以从用户输入设备310或其他用户输入(例如,语音输入、手势解译输入等)接收。
应用逻辑512处理用户输入510以确定与用户输入510对应的一个或多个事件514。事件514可以通知或引导关于当前正在接收设备120上渲染的内容的输出。例如,事件514可以用于游戏控制器输入(按钮按压、定向移动等)、导航输入(例如,对菜单进行导航)、功率输入、音量输入等,类似于事件414。应用逻辑512和事件514特定于在基本单元110和/或接收设备120上执行的应用,类似于应用逻辑412和事件414。
事件514由UI视图521A-521N接收。每个视图521是图形平面。多个平面形成呈现给用户的复合“窗口”或“整体视图”。视图521A-521N被单独地定位、动画化和排序,并且形成包含层次结构。键处理功能516处理可能通过渲染功能来强制更新或重新渲染图形用户界面的事件,包括确定是要生成518指令流还是执行直接渲染。可以访问关于对象的状态以确定是否生成指令流。如果要生成指令流,则从可绘制对象520调用渲染功能522。由于如果发送指令流则将不在发送器应用上执行插值(将在接收应用上(例如在接收设备中)执行插值),因此每秒执行相对较少的渲染(例如,每秒3次渲染而不是每秒60次渲染)。
如果不生成指令流(例如,要执行直接渲染),则可以通过定时器驱动的物理模块来执行动画,该物理模块调用具有插值绘制坐标的渲染功能。因此,如果执行直接渲染,则调用使用物理模块532的动画生成器530来使用定时器534以预定义的时间表生成多个中间图形命令,并且将其提供给从可绘制对象520调用的渲染功能522。例如,可以渲染每秒60帧。
渲染器585包括多个渲染函数540。如果要生成指令流,则函数的结果不去往图形引擎555,而是它们被指令流模块560包装为命令并且在指令流240中发送。如果将不生成指令流(例如,替代地执行直接渲染),那么渲染函数540的结果由图形引擎555来处理并输出给显示器580。渲染函数540可以与渲染函数440相同。
如上所述,如果事件与指令流有关,则渲染函数540的结果由指令流模块560处理并且被包装为命令。在实施例中,使用网络套接字570来使用网络套接字协议发送指令流240。在这样的实施例中,指令流模块560包括网络套接字流模块562,网络套接字流模块562包括发送功能564和二进制发送功能566。发送功能564用于将绘制命令中的至少一些作为文本字符串发送。二进制发送功能566用于将绘制命令中的至少一些作为二进制发送。
图6示出根据实施例的指令流处理器220的示例架构。接收设备120执行指令流处理器220。指令流处理器220在逻辑上被分成输入段、主/绘制段和同步段。输入段处理输入,该输入例如来自在指令流接收器610处接收到的通过网络套接字608的指令流240。
指令流处理器220解析指令流240以确定指令流240中包括的命令及其自变量。解析器615对接收到的每个消息618执行解析。每个作为图形视图的平面具有接收缓冲器A620和执行缓冲器B 622。解析器615解析指令流240,并且将命令和自变量写入接收缓冲器A620。当接收到帧的结束时(例如,接收到帧完成命令),对平面的界定完成,并且接收缓冲器A 620与执行缓冲器B 622交换,这由物理模块626来仲裁。然后(或者随着显示器的刷新周期定期地)触发绘制功能619,绘制功能619执行630执行缓冲器B 622的命令。这些命令中的大多数直接映射到图形引擎672中的渲染函数640。不将正在改变状态或调用除了渲染器685之外的功能的命令中的一些映射到渲染函数640,例如帧完成命令和设置滚动偏移命令由当前图形平面消耗。
一些命令可以在带外处理;它们可以被立即处理,而不是写入接收缓冲器A 620中以延迟执行。这样的命令可以包括用于在图形平面上动画化图形的动画化命令、用于将图像从URL加载到低层图形表示(例如纹理)中的加载图像命令、以及用于将图像数据设置到纹理中的设置图像命令。
动画平面624的动画化命令628触发物理模块626,该物理模块626将自身注入到命令执行630和渲染函数640之间,并且在动画化命令中指定的动画持续时间内为渲染函数640产生插值坐标(使用lambdas 632),同时遵循动画化命令中指定的定时功能。lambdas632(例如,dx/dy)的使用将执行缓冲器B 622中的坐标调制到渲染函数640(其以绝对坐标来工作),以向渲染器685指示绘制什么以及在哪里绘制。动画化命令有效地在渲染器685中合成动画,这原本是已在基本单元110上执行的。在活动时,如果当前有动画正在处理,则物理模块626防止接收缓冲器A 620与执行缓冲器B 622交换。然而,如果新的动画化命令到达带外,则放松该仲裁,这可能导致内部动画状态延长了当前动画和传入动画的组合持续时间,并导致在动画活动时换入新的缓冲器。在这种情况下,当前动画和旧动画的定时功能也可被合并以形成新的单个不间断的动画。
渲染器685用于生成在显示器130上显示的图形帧。渲染器685包括设置图像功能662和加载图像功能664、渲染函数640、以及图形引擎672。渲染器685可以在本地图形、线程、和解码API上实现。图形引擎672包括解码图像功能676以及其它功能。解码图像功能676由加载图像功能664调用,并且从根据图像格式来格式化的数据中产生纹理。图形引擎672包括同步功能678(例如VSYNC),该同步功能调用通知功能682来发信号通知主/绘制段,以检查是否存在需要重新绘制图形平面(例如未渲染的帧或需要重新渲染的帧)的状态改变616。如果存在,则触发绘制功能619,该绘制功能619执行630执行缓冲器B 622的命令。
在实施例中,接收设备120执行延长功能,该延长功能扩展动画以产生平滑动画,如果在当前正执行另一动画的同时接收到动画化命令并且新的动画与当前正执行的动画处于相同的方向,平滑动画看上去是连续的。延长功能将下一动画的定时功能(在最近接收的动画化命令中指定)与当前动画的定时功能(在当前正被处理的动画化命令中指定)合并。定时功能量化动画的三个阶段(加速、巡航和减速)的加速度和速度。合并有效地扩展了动画的封套(envelope),并且提供了无缝动画执行。如果当前动画处于巡航阶段,则合并后的动画继续巡航(跳过当前动画和下一动画的声明和加速阶段)。如果当前动画和下一动画的巡航速度不同,则如果下一动画的速度较高,则按照该下一动画的加速曲线来调节巡航速度,或者如果下一动画的速度较低,则按照当前动画的减速曲线来调节巡航速度。如果当前动画处于加速阶段,则如上所述将巡航阶段链接在一起。如果当前动画处于减速阶段,则合并后的动画按照下一动画的相应加速和巡航速度曲线加速回到巡航速度。可以执行任意次数的延长,有效地允许了无限的动画(没有预定义结束的动画)。
图7是示出根据实施例的分布式视频和图形渲染系统的示例性操作的流程图。在操作710,接收设备120从基本单元110接收指令流,该指令流包括用于产生用户界面的图形帧的绘制命令。接收设备120连接到显示器130。用户界面可以针对于媒体应用,例如电视应用、流传送视频应用、视频点播应用、游戏应用、音乐应用、照片应用;社交联网应用;智能家庭或智能办公应用;或使用用户界面的任何其它应用。指令流被跨网络(该网络可以是无线网络,例如Wi-Fi或蓝牙)接收,或者通过有线网络(例如以太网)接收。可以使用网络套接字协议或其它低层网络协议在接收设备120处接收指令流。绘制命令中的至少一些可以作为文本字符串接收。一些绘制命令可以作为二进制分组来接收。指令流可以是无损的。也就是说,接收设备120能够使用指令流中的信息来完美地重构表示用户界面的原始数据。
接下来,在操作715,接收设备120解析指令流以确定绘制命令以及绘制命令的自变量。在实施例中,接收设备120将解析出的命令及其自变量写入接收缓冲器。
作为示例,绘制命令可以包括以下中的一个或多个:
-draw cache命令,使用自变量设置图形平面的大小,其中自变量包括对高速缓存对象的引用、图形平面在屏幕空间中的位置和尺寸(例如,int x、y、w、h的值)、以及指示对象是否可动画化的布尔值(该命令对应于先前描述的draw_cache函数);
-渲染矩形命令,使用给定的样式来以某个位置和大小渲染已填充的矩形,其中自变量指示已填充的矩形在屏幕空间中的位置和尺寸(例如,int x、y、w、h的值)、字符串样式、以及指示对象是否可动画化的布尔值(该命令对应于先前描述的render_rect函数);
-清除命令,用于清除图形平面(例如,清除为透明的黑色),其中自变量指示屏幕空间中清除的位置和尺寸(例如,int x、y、w、h)(该命令对应于先前描述的清除函数);
-设置背景命令,用于设置背景的图形平面的大小,其中自变量指定背景,例如纯色、梯度、和粒子系统说明符(该命令对应于先前描述的set_background函数);
-初始化命令,用于初始化新的图形帧,并传送高速缓存大小以使接收设备120和基本单元110对LRU高速缓存的理解保持同步,其中自变量包括指示所请求的渲染器的版本的字符串版本标识符、指示是否应当专门渲染平面的布尔值、图像高速缓存的大小的整数、以及文本高速缓存的大小的整数(该命令对应于初始化函数);
-设置几何图形命令,用于设置图形平面的大小,其中自变量包括屏幕空间中的位置和尺寸(例如,int x、y、w、h的值)(该命令对应于先前描述的set_geometry函数);
-设置滚动偏移命令,用于设置上个关键帧中的可动画化对象的新滚动偏移,其中自变量包括新滚动偏移信息可动画化对象的位置(例如,int x、y的值)(该命令对应于先前描述的set_scroll_offset函数);
-动画化命令,用于触发当前帧中的可动画化对象的动画化,其中自变量包括锚定可动画化对象的当前滚动偏移的位置(例如,int x、y的值)以及指定定时功能的字符串(该命令对应于先前描述的动画化函数);
-设置图像命令,用于设置来自给定二进制blob的图像并高速缓存在高速缓存对象中,用于稍后由draw_cache函数调用,其中自变量包括对高速缓存对象的引用、对图像进行表示的该图像的宽度和高度(例如,int w、h的值)以及具有要设置的图像的数据的blob(该命令对应于先前描述的set_image函数);
-加载图像命令,用于从给定的URL加载图像并高速缓存在高速缓存对象中,用于稍后由draw_cache函数调用,其中自变量包括对高速缓存对象的引用,以及要加载的图像的字符串URL(该命令对应于先前描述的load_image函数);
-渲染文本命令,使用给定的样式来以某个位置和大小渲染文本字符串,其中自变量包括文本在屏幕空间中的位置和尺寸(例如,int x、y、w、h)、字符串文本、和字符串样式(该命令对应于先前描述的render_text函数);
-渲染已勾勒矩形命令,使用给定的样式来以某个位置和大小渲染勾勒出的矩形,其中自变量包括屏幕空间中的位置和尺寸(例如,int x、y、w、h的值)、字符串样式、以及指示对象是否可动画化的布尔值(该命令对应于先前描述的stroke_rect函数);
-帧完成命令,用于声明用于当前帧的指令流的结束(该命令可能不具有任何自变量,并且对应于先前描述的frame_done函数);以及
-销毁命令,用于销毁/释放图形平面和所有相关的高速缓存(该命令可能不具有自变量,并且对应于先前描述的销毁函数)。
接着,在操作720,接收设备120在接收设备120的图形引擎中执行绘制命令以生成用户界面的图形帧,包括执行渲染函数和对用于动画的坐标进行插值。在实施例中,执行包括:当接收到帧的结束(frame_done命令)时将接收缓冲器中的命令和自变量交换到执行缓冲器,然后(或者随着显示器130的刷新周期定期地)触发绘制功能,该绘制功能对执行缓冲器中的命令进行执行。这些命令被直接映射到图形引擎中的渲染函数,该渲染函数产生用于输出到显示器130的图形帧。备选地或此外,执行绘制命令包括执行动画化命令,该动画化命令触发物理模块,该物理模块将自身注入到命令执行和渲染函数之间,以在动画化命令中指定的动画持续时间内为渲染函数产生插值坐标,同时遵循动画化命令中指定的定时功能。在接收设备120上执行动画化命令在接收设备120上合成了动画,而不是由基本单元110执行动画。接收设备120可以使用本地图形、线程、和解码API来执行绘制命令。
接下来,在操作725,接收设备120输出用户界面的图形帧以在显示器130上显示。可以通过HDMI连接或者连接接收设备120和显示器130的其他视频连接来输出图形帧。
图7示出当接收和处理指令流时在接收设备120处执行的操作。代替接收和处理指令流,或除了接收和处理指令流之外,接收设备120可以接收和处理视频流。图8示出根据实施例的分布式视频和图形渲染系统的示例,其中视频流从发送器被传送给接收器。基本单元110的视频流发送器215包括视频编码器810。接收设备120的视频流处理器225包括视频解码器815。视频编码器810编码视频流245,该视频流245可以是标准视频格式,例如H.264、H.265、AV1、VP9等。视频流发送器215将视频流245发送给接收设备120。该传输可以使用RTP、RTMP或其它协议。视频流处理器225接收视频流245,并且使用视频解码器815来解码编码视频。已解码的视频作为图形帧输出给显示器130。尽管图8示出接收设备120从基本单元110接收视频流,但是备选地或此外,接收设备120可以从诸如WAN服务器140之类的远程服务器接收视频流。WAN服务器140可以包括类似的视频编码器,或者可发送已编码的视频。尽管图8示出基本单元110对视频流进行编码,但是在一些情况下,基本单元110将已编码的视频文件发送给接收设备120,而不需要对视频进行编码。
图9是示出根据实施例的用于接收和处理视频流的示例性操作的流程图。在操作910,接收设备120接收已编码的视频流。已编码的视频流可从基本单元110或从远程WAN服务器140接收。已编码的视频流可以是以标准视频格式(例如H.264、H.265、AV1、VP9等)编码的,并且使用RTP、RTMP或其他协议来发送。接下来,在操作915,接收设备120对已编码的视频流进行解码。接下来,在操作920,接收设备120将已解码的视频流输出给显示器130。
如前所述,分布式视频和图形渲染系统可以由用户输入事件驱动。图10是示出根据实施例的由在接收设备处接收的用户输入事件驱动的分布式视频和图形渲染系统的示例性操作的流程图。
在操作1010,接收设备120接收用户输入。可以从与接收设备120连接的用户输入设备320接收用户输入。备选地,或此外,可以通过语音输入和/或手势解译来接收用户输入。示例用户包括导航输入(例如,对通过接收设备120显示在显示器130上的菜单进行导航)、媒体资产选择、游戏控制器输入(按钮按压、定向移动等)等。
接下来,在操作1015,接收设备120将表示用户输入的一个或多个事件发送给基本单元110,以及在操作1020,基本单元110从接收设备120接收该一个或多个事件。尽管图10示出基本单元110从接收设备120接收事件,但是备选地或此外,基本单元110从基本单元110处的用户输入(例如,从用户输入设备310或通过其他用户输入(例如在基本单元110处接收的语音输入或手势输入))接收事件。
接下来,在操作1025,基本单元110确定该一个或多个事件如何通知或引导对当前正在接收设备120上渲染的内容的输出。例如,基本单元110确定如何向接收设备120指示对正在通过接收设备120显示的内容的改变/更新。事件特定于在接收设备120上执行的应用。例如,如果应用是媒体应用并且事件是滚动浏览可通过媒体应用播放的媒体资产列表,则基本单元110确定作为滚动的结果应当在媒体应用上示出的内容。
接下来,在操作1030,基本单元110生成包括绘制命令的指令流,绘制命令用于产生反映该一个或多个事件的图形帧。当生成该指令流时,基本单元110不执行图形引擎中的渲染函数并且不产生用于动画的插值坐标。相反,将会在接收设备120处执行渲染函数和任何用于动画的插值坐标。基本单元110执行一个或多个函数以产生包括在将由接收设备120执行的指令流中的一个或多个命令,以反映该一个或多个事件。该一个或多个函数(先前描述的)可以包括以下中的一个或多个:draw_cache函数、render_rect函数、清除函数、begin_frame指令、set_background函数、初始化函数、set_geometry函数、set_scroll_offset函数、动画化函数、set_image函数、load_image函数、render_text函数、stroke_rect函数、frame_done函数、和销毁函数。命令可以被配置为作为文本字符串和/或二进制命令来发送。
接下来,在操作1035,基本单元110将指令流发送给接收设备120。指令流可以是无损的。也就是说,接收设备120能够使用指令流中的信息来完美地重构表示用户界面的改变的原始数据。指令流可以使用网络套接字协议来发送。接收设备120在操作1040处接收指令流。
尽管在图10中未示出,但是基本单元110可以包括至少两个操作系统,其中一个操作系统执行事件的处理和指令流的生成以驱动接收设备120,以及另一个操作系统执行与处理针对接收设备120的事件和用户界面命令无关的任务。例如,该另一个操作系统可以是基本单元110的主操作系统。操作系统的分离可以通过使用管理程序来完成。在另一实施例中,基本单元110上的发送器应用115作为基本单元110的操作系统中或虚拟化无头操作系统中的服务而不可见地运行。
在操作1040,接收设备120从基本单元110接收指令流,该指令流包括用于产生用户界面的图形帧以反映用户输入的绘制命令。接下来,在操作1045,接收设备120解析指令流以确定绘制命令以及绘制命令的自变量。操作1045类似于先前描述的操作715,包括可包括在指令流中的绘制命令的示例。接下来,在操作1050,接收设备120在接收设备120的图形引擎中执行绘制命令以生成用户界面的图形帧,包括执行渲染函数和对用于动画的坐标进行插值。操作1050类似于先前描述的操作720。接下来,在操作1055,接收设备120输出图形帧以在显示器130上显示。操作1055与先前描述的操作725类似。
在实施例中,接收设备120可以接收至少两个并发流。例如,接收设备可以同时接收两个指令流,同时接收一个指令流和一个视频流,和/或同时接收两个视频流。接收设备可以同时将并发流中的每个流输出给相同的显示器。例如,接收设备可以将并发流混合在一起,或者并排地或画中画地显示它们。例如,可以接收视频流,并且可以由接收设备来覆盖用于导航UI的指令流。作为另一示例,可以接收和显示表示游戏的视频流,并且可以将另一视频的视频流显示为画中画。作为另一示例,可以接收用于用户界面的指令流,并且将其与从远程服务器接收的视频流的视频并排地示出。
图11是示出根据实施例的接收设备接收并且处理两个并发流的示例性操作的流程图。在操作1110,接收设备120接收第一演示流和第二演示流。第一演示流和第二演示流可以都是指令流,可以都是视频流,或者可以是一个指令流和一个视频流。第一演示流和第二演示流可以都从基本单元110接收,从WAN服务器140接收,或者一个可以从基本单元110接收,另一个可以从WAN服务器140接收。
接下来,在操作1115,接收设备120处理第一演示流和第二演示流。接收设备120根据演示流是视频流还是指令流来不同地处理演示流中的每个流。例如,如果演示流是指令流,则接收设备120解析指令流以确定绘制命令及自变量,并且执行这些命令以产生图形帧,如本文先前所述。如果演示流是视频流,则接收设备120解码视频流并且输出已解码的视频,如本文先前所述。
接下来,在操作1120,接收设备120将第一演示流和第二演示流输出给显示器130。接收设备120可以对并发流进行混合,或者并排地或画中画地显示它们。例如,可以接收视频流,并且用于导航UI的指令流可以由接收设备120覆盖以显示在显示器130上。作为另一示例,可以接收和显示表示游戏的视频流,并且可以将另一视频的视频流显示为画中画。作为另一示例,可以接收用于用户界面的指令流,并且与从远程服务器接收的视频流的视频并排地示出。
尽管已经通过连接到外部显示器以进行显示来描述接收设备,但是如果接收设备具有其自己的内部显示器,则本文所述的实施例也适用。即,如果接收设备具有其自身的内部显示器,则图形帧可以显示在接收设备自身上,而不是输出要由外部显示器显示的图形帧。
图12是示出根据实施例的接收设备120的示例性架构的框图。接收设备120包括用于语音处理的一个或多个麦克风1210、用于图像处理的一个或多个相机1215、显示连接1220(例如,HDMI连接、DisplayPort连接等)、一个或多个无线收发机1225(例如,蓝牙收发机、Wi-Fi收发机等)、处理系统1230、一个或多个USB输入1235、非易失性存储器1240(例如,硬盘驱动器、闪存、相变存储器(PCM)等)以及易失性存储器1245(例如,随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM))。处理系统1230包括中央处理单元(CPU)和图形处理单元(GPU)(集成的图形单元或单独的GPU)。处理系统1230可以从易失性存储器1245和/或非易失性存储器1240检索指令,并且执行指令以执行本文所述的操作,包括执行命令以产生本文所述的图形帧。图12的组件可以用一个或多个总线耦接在一起。这些组件中的一个或多个可以是可选的。例如,在一些实施例中,接收设备不包括麦克风和/或相机。另外,接收设备120可以包括另外的组件。例如,在实施例中,接收设备120可以包括用于有线通信的有线收发机(例如,以太网收发机)。接收设备120可以在SoC上实现。
图13是示出根据实施例的基本单元110的示例性架构的框图。基本单元110包括用于语音处理的一个或多个麦克风1310、用于图像处理的一个或多个相机1315、显示连接1320(例如,HDMI连接、DisplayPort连接等)、一个或多个无线收发机1325(例如,蓝牙收发机、Wi-Fi收发机等)、处理系统1330、一个或多个USB输入1335、非易失性存储器1340(例如,硬盘驱动器、闪存、相变存储器(PCM)等)以及易失性存储器1345(例如,随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM))。处理系统1330包括中央处理单元(CPU)和图形处理单元(GPU)(集成的图形单元或单独的GPU)。处理系统1330可以从易失性存储器1345和/或非易失性存储器1340检索指令,并且执行指令以执行本文所述的操作,包括接收事件和生成演示流,作为本文所述的分布式视频和图形渲染系统的一部分。图13的组件可以用一个或多个总线耦接在一起。这些组件中的一个或多个可以是可选的。例如,在一些实施例中,基本单元110不包括麦克风和/或相机。另外,基本单元110可以包括另外的组件。例如,在实施例中,基本单元110可以包括用于有线通信的有线收发机(例如,以太网收发机)。当与接收设备120相比时,基本单元110相对更强大(例如,更强大的处理系统、更大且更快的易失性存储器和/或非易失性存储器)。
附图中所示的技术可以使用在一个或多个计算设备(例如,基本单元、接收设备、WAN服务器等)上存储和执行的代码和数据来实现。这样的计算设备使用机器可读介质(例如非暂时性机器可读存储介质(例如,磁盘、光盘、随机存取存储器、只读存储器、闪存设备、相变存储器))和机器可读通信介质(例如,电、光、声或其他形式的传播信号:例如载波、红外信号、数字信号等)来存储和通信(内部地和/或通过网络与其他计算设备通信)代码和数据。此外,这样的计算设备通常包括耦接到一或多个其它组件的一或多个处理器的集合,该一或多个其它组件例如是一或多个存储设备、用户输入/输出设备(例如,键盘、触摸屏及/或显示器)、以及网络连接。处理器组和其它组件的耦接通常通过一个或多个总线和桥接器(也称为总线控制器)。存储设备和携带网络流量的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定的计算设备的存储设备通常存储用于在该计算设备的该一个或多个处理器的集合上执行的代码和/或数据。当然,可以使用软件、固件和/或硬件的不同组合来实现实施例的一个或多个部分。
参考其它附图的示例性实施例描述了流程图中的操作。然而,应当理解的是,流程图的操作可以由除了参考其他附图所讨论的那些实施例之外的实施例来执行,并且参考这些其他附图所讨论的实施例可以执行与参考流程图所讨论的那些操作不同的操作。
虽然附图中的流程图示出由特定实施例执行的操作的特定顺序,但是这样的顺序是示例性的(例如,替代实施例可以以不同的顺序执行操作、组合特定操作、重叠特定操作等)。
通常,除非明确给出和/或从使用它的上下文暗示不同的含义,否则本文使用的所有术语将根据它们在相关技术领域中的普通含义来解释。除非明确地另外说明,否则对元件、装置、组件、手段、步骤等的所有引用都将被开放地解释为指代该元件、装置、组件、手段、步骤等的至少一个实例。本文公开的任何方法的步骤不必以公开的确切顺序执行,除非步骤被明确地描述为在另一步骤之后或之前和/或其中隐含步骤必须在另一步骤之后或之前。在适当的情况下,本文所公开的任何实施例的任何特征可应用于任何其它实施例。同样,任何实施例的任何优点可应用于任何其它实施例,并且反之亦然。从前面的描述中,所附实施例的其它目的、特征和优点将是显而易见的。
虽然已经根据若干实施例描述了本发明,但是本领域技术人员将认识到,本发明不限于所描述的实施例,可以在所附权利要求的精神和范围内进行修改和变更来实践本发明。因此,本说明书应被认为是说明性的而非限制性的。
Claims (24)
1.一种方法,包括:
在接收设备(120)处从基本单元(110)并且跨网络接收(710)指令流的第一部分,所述指令流的所述第一部分包括用于产生用户界面的第一多个图形帧的第一多个绘制命令,其中所述接收设备连接到显示器;
解析(715)接收到的所述指令流的所述第一部分,以确定所述第一多个绘制命令以及所述第一多个绘制命令的自变量;
在所述接收设备的图形引擎中执行(720)所述第一多个绘制命令以生成所述用户界面的所述第一多个图形帧,所述执行包括执行渲染函数和对用于动画的坐标进行插值;以及
输出(725)所述用户界面的所述第一多个图形帧以在所述显示器上显示。
2.根据权利要求1所述的方法,还包括:
在所述接收设备处接收用户输入;
将表示所述用户输入的一个或多个事件发送给所述基本单元;
从所述基本单元接收所述指令流的第二部分,所述指令流的所述第二部分包括用于产生第二多个图形帧的第二多个绘制命令,所述第二多个图形帧反映接收到的用户输入的结果;
解析接收到的所述指令流的所述第二部分,以确定所述第二多个绘制命令以及所述第二多个绘制命令的自变量;
在所述图形引擎中执行所述第二多个绘制命令以生成所述第二多个图形帧;以及
输出所述第二多个图形帧以在所述显示器上显示。
3.根据权利要求1所述的方法,还包括:
在所述接收设备处从所述基本单元并且跨所述网络接收已编码的视频流;
解码所述已编码的视频流;以及
输出已解码的视频流以在所述显示器上显示。
4.根据权利要求1所述的方法,其中所述指令流是无损的。
5.根据权利要求1所述的方法,还包括:
在所述接收设备处从远程服务器接收已编码的视频流;
解码所述已编码的视频流;以及
输出已解码的视频流以在所述显示器上显示。
6.根据权利要求5所述的方法,其中输出所述用户界面的所述第一多个图形帧以在所述显示器上显示和输出所述已解码的视频流以在所述显示器上显示同时发生。
7.一种方法,包括:
在基本单元(110)处接收(1020)与接收设备(120)相关的一个或多个事件,所述接收设备(120)通过网络与所述基本单元通信耦接;
确定(1025)所述一个或多个事件如何通知或引导对当前正在所述接收设备上渲染的内容的输出;
生成(1030)指令流,所述指令流包括多个绘制命令,所述多个绘制命令用于产生与所述一个或多个事件相对应的所述接收设备的用户界面的多个图形帧,其中生成所述指令流不包括在图形引擎中执行渲染函数和产生用于动画的插值坐标;以及
通过所述网络将所生成的指令流发送(1035)给所述接收设备。
8.根据权利要求7所述的方法,还包括:
对视频流进行编码以产生已编码的视频流;以及
将所述已编码的视频流发送给所述接收设备。
9.根据权利要求7所述的方法,其中所述指令流是无损的。
10.根据权利要求7所述的方法,其中所述基本单元包括第一操作系统和第二操作系统,其中所述第一操作系统执行生成所述指令流,并且其中所述第二操作系统执行与处理针对所述接收设备的事件和用户界面命令无关的任务。
11.根据权利要求7所述的方法,其中所述一个或多个事件是从所述接收设备处的用户输入接收的。
12.根据权利要求7所述的方法,其中所述一个或多个事件是从所述基本单元处的用户输入接收的。
13.一种提供指令的非暂时性机器可读存储介质(1240),所述指令在由接收设备(120)的处理器(1230)执行时,使得所述处理器执行包括以下各项的操作:
在所述接收设备处从基本单元(110)并且跨网络接收(710)指令流的第一部分,所述指令流的所述第一部分包括用于产生用户界面的第一多个图形帧的第一多个绘制命令,其中所述接收设备将被连接到显示器;
解析(715)接收到的所述指令流的所述第一部分,以确定所述第一多个绘制命令以及所述第一多个绘制命令的自变量;
在所述接收设备的图形引擎中执行(720)所述第一多个绘制命令以生成所述用户界面的所述第一多个图形帧,其中所述执行包括执行渲染函数和对用于动画的坐标进行插值;以及
输出(725)所述用户界面的所述第一多个图形帧以在所述显示器上显示。
14.根据权利要求13所述的非暂时性机器可读存储介质,其中所述操作还包括:
在所述接收设备处接收用户输入;
将表示所述用户输入的一个或多个事件发送给所述基本单元;
从所述基本单元接收所述指令流的第二部分,所述指令流的所述第二部分包括用于产生第二多个图形帧的第二多个绘制命令,所述第二多个图形帧反映接收到的用户输入的结果;
解析接收到的所述指令流的所述第二部分,以确定所述第二多个绘制命令以及所述第二多个绘制命令的自变量;
在所述图形引擎中执行所述第二多个绘制命令以生成所述第二多个图形帧;以及
输出所述第二多个图形帧以在所述显示器上显示。
15.根据权利要求13所述的非暂时性机器可读存储介质,其中所述操作还包括:
在所述接收设备处从所述基本单元并且跨所述网络接收已编码的视频流;
解码所述已编码的视频流;以及
输出已解码的视频流以在所述显示器上显示。
16.根据权利要求13所述的非暂时性机器可读存储介质,其中所述指令流是无损的。
17.根据权利要求13所述的非暂时性机器可读存储介质,其中所述操作还包括:
在所述接收设备处从远程服务器接收已编码的视频流;
解码所述已编码的视频流;以及
输出已解码的视频流以在所述显示器上显示。
18.根据权利要求17所述的非暂时性机器可读存储介质,其中输出所述用户界面的所述第一多个图形帧以在所述显示器上显示和输出所述已解码的视频流以在所述显示器上显示同时发生。
19.一种提供指令的非暂时性机器可读存储介质(1340),所述指令在由基本单元(110)的处理器(1330)执行时,使得所述处理器执行包括以下各项的操作:
在所述基本单元处接收(1020)与接收设备相关的一个或多个事件,所述接收设备通过网络与所述基本单元通信耦接;
确定(1025)所述一个或多个事件如何通知或引导对当前正在所述接收设备上渲染的内容的输出;
生成(1030)指令流,所述指令流包括多个绘制命令,所述多个绘制命令用于产生与所述一个或多个事件相对应的所述接收设备的用户界面的多个图形帧,其中生成所述指令流不包括在图形引擎中执行渲染函数和产生用于动画的插值坐标;以及
通过所述网络将所生成的指令流发送(1035)给所述接收设备。
20.根据权利要求19所述的非暂时性机器可读存储介质,其中所述操作还包括:
对视频流进行编码以产生已编码的视频流;以及
将所述已编码的视频流发送给所述接收设备。
21.根据权利要求19所述的非暂时性机器可读存储介质,其中所述指令流是无损的。
22.根据权利要求19所述的非暂时性机器可读存储介质,其中所述基本单元包括第一操作系统和第二操作系统,其中所述第一操作系统执行所述指令流的生成,并且其中所述第二操作系统执行与处理针对所述接收设备的事件和用户界面命令无关的任务。
23.根据权利要求19所述的非暂时性机器可读存储介质,其中所述一个或多个事件是从所述接收设备处的用户输入接收的。
24.根据权利要求19所述的非暂时性机器可读存储介质,其中所述一个或多个事件是从所述基本单元处的用户输入接收的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/237,272 US10958964B2 (en) | 2018-12-31 | 2018-12-31 | Distributed video and graphics rendering system |
US16/237,272 | 2018-12-31 | ||
PCT/IB2019/061046 WO2020141391A1 (en) | 2018-12-31 | 2019-12-18 | Distributed video and graphics rendering system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113273219A true CN113273219A (zh) | 2021-08-17 |
Family
ID=69165441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980087474.5A Pending CN113273219A (zh) | 2018-12-31 | 2019-12-18 | 分布式视频和图形渲染系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10958964B2 (zh) |
EP (1) | EP3906696A1 (zh) |
CN (1) | CN113273219A (zh) |
WO (1) | WO2020141391A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11880422B2 (en) | 2019-02-04 | 2024-01-23 | Cloudflare, Inc. | Theft prevention for sensitive information |
US10452868B1 (en) | 2019-02-04 | 2019-10-22 | S2 Systems Corporation | Web browser remoting using network vector rendering |
CN114449182A (zh) * | 2021-01-20 | 2022-05-06 | 北京仁光科技有限公司 | 信号源调取和控制方法及系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001273520A (ja) | 2000-03-23 | 2001-10-05 | Famotik Ltd | マルチメディアドキュメント統合表示システム |
US7619633B2 (en) * | 2002-06-27 | 2009-11-17 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US20030202006A1 (en) * | 2002-04-30 | 2003-10-30 | Callway Edward G. | Set top box and associated method of operation to facilitate display of locally sourced display data |
JP4858059B2 (ja) * | 2006-10-02 | 2012-01-18 | ソニー株式会社 | 再生装置、表示制御方法および表示制御プログラム |
US8294723B2 (en) | 2008-11-07 | 2012-10-23 | Google Inc. | Hardware-accelerated graphics for web applications using native code modules |
JP4753105B2 (ja) * | 2009-03-19 | 2011-08-24 | 富士ゼロックス株式会社 | 描画処理装置、画像出力装置、プログラム |
US8676926B2 (en) * | 2009-04-15 | 2014-03-18 | Wyse Technology L.L.C. | System and method for handling remote drawing commands |
JP5750103B2 (ja) * | 2010-06-16 | 2015-07-15 | パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America | アニメーション制御装置、アニメーション制御方法およびアニメーション制御プログラム |
US10127082B2 (en) * | 2012-04-05 | 2018-11-13 | Electronic Arts Inc. | Distributed realization of digital content |
US9412332B2 (en) * | 2013-12-20 | 2016-08-09 | Blackberry Limited | Method for wirelessly transmitting content from a source device to a sink device |
US9257097B2 (en) | 2013-12-23 | 2016-02-09 | Qualcomm Incorporated | Remote rendering for efficient use of wireless bandwidth for wireless docking |
US10715577B2 (en) | 2014-09-09 | 2020-07-14 | Vmware, Inc. | Virtual desktop encoding based on user input behavior |
US20160350061A1 (en) * | 2015-05-29 | 2016-12-01 | Qualcomm Incorporated | Remote rendering from a source device to a sink device |
-
2018
- 2018-12-31 US US16/237,272 patent/US10958964B2/en active Active
-
2019
- 2019-12-18 WO PCT/IB2019/061046 patent/WO2020141391A1/en active Search and Examination
- 2019-12-18 CN CN201980087474.5A patent/CN113273219A/zh active Pending
- 2019-12-18 EP EP19836570.2A patent/EP3906696A1/en active Pending
-
2021
- 2021-02-23 US US17/182,533 patent/US11418830B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210176516A1 (en) | 2021-06-10 |
EP3906696A1 (en) | 2021-11-10 |
US10958964B2 (en) | 2021-03-23 |
US20200213654A1 (en) | 2020-07-02 |
WO2020141391A1 (en) | 2020-07-09 |
US11418830B2 (en) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11418830B2 (en) | Distributed video and graphics rendering system | |
US10229651B2 (en) | Variable refresh rate video capture and playback | |
WO2022028089A1 (zh) | 图像处理方法、装置、服务器及介质 | |
JP4901261B2 (ja) | 高品質なユーザーインターフェイスによる効率的な遠隔表示を行なうシステム | |
CN113661471B (zh) | 混合渲染 | |
CN112235626B (zh) | 视频渲染方法、装置、电子设备及存储介质 | |
US20090322784A1 (en) | System and method for virtual 3d graphics acceleration and streaming multiple different video streams | |
CN111213183A (zh) | 渲染三维内容的方法和装置 | |
US20140344469A1 (en) | Method of in-application encoding for decreased latency application streaming | |
WO2013140334A2 (en) | Method and system for streaming video | |
CN112169322B (zh) | 远程渲染方法、装置、电子设备及可读存储介质 | |
US20210392386A1 (en) | Data model for representation and streaming of heterogeneous immersive media | |
TW201347537A (zh) | 用於傳輸視覺內容之系統及方法 | |
WO2021000843A1 (zh) | 一种直播数据处理方法、系统、电子设备及存储介质 | |
KR20220124286A (ko) | 애플리케이션 계산들의 분배를 위한 방법들 및 장치들 | |
CN111225271A (zh) | 一种基于安卓机顶盒平台的多引擎抓图录屏方法 | |
US20230016903A1 (en) | Beginning scan-out process at flip-time for cloud gaming applications | |
US9335964B2 (en) | Graphics server for remotely rendering a composite image and method of use thereof | |
CN115150648A (zh) | 显示设备及消息传输方法 | |
EP4058909A1 (en) | Set up and distribution of immersive media to heterogenous client end-points | |
WO2021109105A1 (en) | Synchronization between graphical processing units and display processing units | |
US11998840B2 (en) | Determining targeted display time of a video frame for a client based on server side timing information | |
WO2023280623A1 (en) | Augmenting video or external environment with 3d graphics | |
CN115731338A (zh) | 一种基于x协议的二三维一体化远程渲染方法和系统 | |
CN113038221A (zh) | 一种双路视频播放方法及显示设备 |
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 |