CN106605411A - 对图形域中的视频数据进行流式传输 - Google Patents
对图形域中的视频数据进行流式传输 Download PDFInfo
- Publication number
- CN106605411A CN106605411A CN201580046934.1A CN201580046934A CN106605411A CN 106605411 A CN106605411 A CN 106605411A CN 201580046934 A CN201580046934 A CN 201580046934A CN 106605411 A CN106605411 A CN 106605411A
- Authority
- CN
- China
- Prior art keywords
- command frame
- token
- command
- host device
- source device
- 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
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000005540 biological transmission Effects 0.000 claims abstract description 27
- 238000004891 communication Methods 0.000 claims description 138
- 230000004044 response Effects 0.000 claims description 63
- 238000013442 quality metrics Methods 0.000 claims description 11
- 230000004224 protection Effects 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 7
- 238000003860 storage Methods 0.000 description 73
- 238000005516 engineering process Methods 0.000 description 61
- 238000009432 framing Methods 0.000 description 46
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 6
- 208000031481 Pathologic Constriction Diseases 0.000 description 5
- 210000001215 vagina Anatomy 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 235000013399 edible fruits Nutrition 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- JAWMENYCRQKKJY-UHFFFAOYSA-N [3-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-ylmethyl)-1-oxa-2,8-diazaspiro[4.5]dec-2-en-8-yl]-[2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidin-5-yl]methanone Chemical compound N1N=NC=2CN(CCC=21)CC1=NOC2(C1)CCN(CC2)C(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F JAWMENYCRQKKJY-UHFFFAOYSA-N 0.000 description 3
- 230000033228 biological regulation Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 241000033870 Citrullus lanatus subsp. vulgaris Species 0.000 description 1
- 235000012840 Citrullus vulgaris Nutrition 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- MKYBYDHXWVHEJW-UHFFFAOYSA-N N-[1-oxo-1-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)propan-2-yl]-2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carboxamide Chemical compound O=C(C(C)NC(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F)N1CC2=C(CC1)NN=N2 MKYBYDHXWVHEJW-UHFFFAOYSA-N 0.000 description 1
- NIPNSKYNPDTRPC-UHFFFAOYSA-N N-[2-oxo-2-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)ethyl]-2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carboxamide Chemical compound O=C(CNC(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F)N1CC2=C(CC1)NN=N2 NIPNSKYNPDTRPC-UHFFFAOYSA-N 0.000 description 1
- AFCARXCZXQIEQB-UHFFFAOYSA-N N-[3-oxo-3-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)propyl]-2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carboxamide Chemical compound O=C(CCNC(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F)N1CC2=C(CC1)NN=N2 AFCARXCZXQIEQB-UHFFFAOYSA-N 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 235000018936 Vitellaria paradoxa Nutrition 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 210000004247 hand Anatomy 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000029058 respiratory gaseous exchange Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/001—Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
-
- 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/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
- H04N19/23—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with coding of regions that are present throughout a whole video segment, e.g. sprites, background or mosaic
-
- 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/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
- H04N21/43637—Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
-
- 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/60—Network 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/61—Network physical structure; Signal processing
- H04N21/6156—Network physical structure; Signal processing specially adapted to the upstream path of the transmission network
- H04N21/6175—Network physical structure; Signal processing specially adapted to the upstream path of the transmission network involving transmission via Internet
-
- 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/60—Network 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/63—Control 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/643—Communication protocols
- H04N21/6437—Real-time Transport Protocol [RTP]
-
- 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/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8455—Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/02—Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
- H04W84/10—Small scale networks; Flat hierarchical networks
- H04W84/12—WLAN [Wireless Local Area Networks]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2370/00—Aspects of data communication
- G09G2370/16—Use of wireless transmission of display information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
在一个例子中,用于发送视频数据的方法包括:由源设备捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;以及由源设备生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应。在该例子中,所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数。在该例子中,该方法还包括:由源设备输出所述多个命令帧,以及用于向宿设备进行传输。
Description
要求优先权
本申请要求享受2014年9月3日提交的美国临时申请No.62/045,421的利益,故以引用方式将其全部内容明确地并入本文。
技术领域
本公开内容涉及用于将视频从源设备流式传输给宿设备的技术。
背景技术
远程显示(RD)系统包括源设备和一个或多个宿设备。源设备和宿设备中的每个宿设备可以是具有有线和/或无线通信能力的移动设备或有线设备。作为移动设备,例如,源设备和宿设备中的一者或多者可以包括移动电话、车载信息娱乐系统、平板计算机、膝上型计算机、具有无线通信卡的便携式计算机、个人数字助理(PDA)、无线游戏设备、便携式媒体播放器或其它具有无线通信能力的其它闪存设备。移动设备还可以包括所谓的“智能”电话和“智能”平板或平板电脑、或其它类型的无线通信设备。作为有线设备,例如,源设备和宿设备中的一者或多者可以包括具有无线通信能力的电视、台式计算机、监视器、投影仪等等。
源设备向参与特定的通信会话的宿设备中的一个或多个宿设备发送媒体数据(例如,音频和/或视频数据)。可以在源设备的本地显示器以及宿设备的显示器中的每个显示器处,对该媒体数据进行回放。具体而言,进行参与的宿设备中的每个宿设备在其显示器和音频设备上呈现所接收的媒体数据。
Wi-Fi显示(WFD)标准(其还称为MiracastTM)是针对由Wi-Fi联盟开发的无线显示系统的并且基于Wi-Fi直接型的一种新兴标准。该WFD标准提供一种可互操作机制,以便在Wi-Fi显示宿处发现、配对、连接和渲染源自于Wi-Fi显示源的媒体数据。
发明内容
通常,本公开内容描述了用于在图形域中,从源设备向宿设备发送视频数据的技术。
在一个例子中,一种用于发送视频数据的方法包括:由源设备捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;由源设备生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;以及由源设备输出所述多个命令帧,以及用于向宿设备进行传输。
在另一个例子中,一种源设备包括存储器;通信单元;和一个或多个处理器,其中所述一个或多个处理器配置为:捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;向通信单元输出所述多个命令帧,以及用于向宿设备进行传输。
在另一个例子中,一种源设备包括:用于捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌的单元;用于生成多个命令帧的单元,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;以及用于输出所述多个命令帧,用于向宿设备进行传输的单元。
在另一个例子中,一种非暂时性计算机可读存储介质存储有指令,当所述指令被执行时,使得源设备的一个或多个处理器执行以下操作:捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;以及输出所述多个命令帧,用于向宿设备进行传输。
在另一个例子中,一种用于接收视频数据的方法,包括:由宿设备以及从源设备接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;由宿设备基于所述多个命令帧,重建所述多个令牌;以及由宿设备基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
在另一个例子中,一种宿设备包括存储器;通信模块;和一个或多个处理器,其中所述一个或多个处理器配置为:从源设备以及经由通信模块接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;基于所述多个命令帧,重建所述多个令牌;以及基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
在另一个例子中,一种宿设备包括:用于从源设备接收多个命令帧的单元,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;用于基于所述多个命令帧,重建所述多个令牌的单元;以及用于基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染的单元。
在另一个例子中,一种非暂时性计算机可读存储介质存储指令,当所述指令被执行时,使得宿设备的一个或多个处理器执行以下操作:从源设备接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识;以及与所述至少一个令牌相关联的一个或多个参数;基于所述多个命令帧,重建所述多个令牌;以及基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
在下文的附图和描述中,阐述了一个或多个示例的细节。通过这些描述和附图,以及通过权利要求书,其它特征、对象和优点将是显而易见的。
附图说明
图1是根据本公开内容的一种或多种技术,源设备被配置为通过无线通信信道向宿设备输出视频的示例性远程显示(RD)系统的概念图。
图2是根据本公开内容的一种或多种技术,示出图1的源设备4和宿设备6的一个例子的另外细节的框图,其中,源设备4被配置为通过无线通信信道8向宿设备6输出视频。
图3是根据本公开内容的一种或多种技术,示出源设备可以生成的用于向宿设备传输的示例性命令帧的概念图。
图4是根据本公开内容的一种或多种技术,示出宿设备或源设备中的示例性数据和控制平面连接的概念图。
图5是根据本公开内容的一种或多种技术,示出在宿设备和源设备之间的示例性数据流的通信流图,其中该源设备执行技术以判断宿设备是否支持接收具有命令帧形式的视频数据。
图6是根据本公开内容的一种或多种技术,示出源设备向宿设备流式传输视频数据的示例性操作的流程图。
图7A和图7B是根据本公开内容的一种或多种技术,示出源设备向宿设备流式传输视频数据的示例性操作的流程图。
图8是根据本公开内容的一种或多种技术,示出宿设备接收从源设备流式传输的视频数据的示例性操作的流程图。
图9是根据本公开内容的一种或多种技术,示出宿设备接收从源设备流式传输的视频数据的示例性操作的流程图。
具体实施方式
本公开内容描述了用于从源设备向宿设备输出视频的技术。在一些例子中,源设备可以通过从源设备的帧缓冲区捕获构造的帧,并向宿设备发送所捕获的帧,来向宿设备输出视频,随后宿设备要在该宿设备的显示器处显示图像。该方法可以称为“像素域”传输方法。但是,在一些例子中,例如当输出包括计算机生成的图形内容的视频时,可能不期望使用该像素域方法,这是由于该像素域方法可能引入压缩失真(compression artifact),其中压缩失真可能消除高频部分和/或使边缘模糊。
替代地,在一些例子中,源设备可以使用“图形域”传输方法来向宿设备输出解构的视频帧。可以通过在源设备的GPU的输入处,捕获具有图形命令(例如,OpenGL命令)和纹理元素的显示数据,向宿设备发送这些命令和纹理元素,来完成图形域传输。宿设备的GPU可以将这些命令和纹理元素渲染到可显示的帧中,并在宿设备的显示器处输出所渲染的帧。
在一些例子中,可能期望结合一种或多种无线显示标准来使用图形域传输方法。例如,当一个或多个宿设备支持图形域处理时,可能期望使用图形域传输方法,在MiracastTM无线显示标准内对视频数据流进行流式传输。
根据本公开内容的一种或多种技术,可以对符合MiracastTM标准的宿设备和源设备进行修改,以使用图形域传输方法来对视频数据进行流式传输。例如,源设备可以基于该源设备处的图形命令和纹理元素,生成专门的命令帧,并向宿设备发送这些命令帧。宿设备可以重建这些图形命令和纹理元素,以及使用重建的图形命令和纹理元素来渲染视频数据。
图1是根据本公开内容的一种或多种技术,源设备被配置为通过无线通信信道向宿设备输出视频的示例性远程显示(RD)系统的概念图。如图1中所示,WD系统2包括源设备4、宿设备6和通信信道8。
通信信道8可以是能够在源设备4和宿设备6之间传播交流信号的任何信道。在一些例子中,通信信道8可以是无线通信信道。例如,可以在诸如2.4千兆赫(GHz)频带、5GHz频带、60GHz频带或其它频带之类的频带中,在射频通信中实现通信信道8。在一些例子中,通信信道8可以遵循诸如通用串行总线(USB)(如USB实施者论坛所推广的)、Wi-Fi(如Wi-Fi联盟所推广的)、WiGig(如无线吉比特联盟所推广的)和/或电气和电子工程师协会(IEEE)802.11标准集(例如,802.11、802.11a、802.11b、802.11g、802.11n、802.11ac、802.11ad等等)之类的一个或多个标准、协议或技术集,或者其它标准、协议或技术。所使用的频带(例如,2.4GHz、5GHz和60GHz频带)可以被规定用于本公开内容的目的,如根据Wi-Fi、WiGig、任何一个或多个IEEE 802.11协议或其它适用的标准或协议,对它们所理解的。
WD 2可以包括源设备4,所述源设备4可以被配置为通过无线通信信道,将具有纹理元素和图形命令的形式的视频数据流式传输给宿设备。例如,源设备4可以通过通信信道8,将命令帧流式传输给宿设备6。源设备4的例子可以包括但不限于:诸如智能电话的移动设备或其它移动手持装置、平板计算机、膝上型计算机、桌面型计算机、可穿戴计算设备(例如,智能手表、遮阳板等等)、一个或多个处理单元或其它集成电路或芯片集、或者其它电子设备。如图1的例子中所示,源设备4可以包括通信模块10、图形处理单元(GPU)12、流模块14、纹理元素16和应用模块18A-18N。
源设备4可以包括通信模块10,所述通信模块10可以管理源设备4和一个或多个外部设备(例如,宿设备6)之间的通信。例如,通信模块10可以通过通信信道8,与宿设备6交换数据。举一个例子,通信模块10可以通过无线通信信道(例如,通过使用直接Wi-Fi连接),将纹理元素和图形命令流式传输给宿设备6。再举一个例子,通信模块10可以通过有线通信信道(例如,通过使用USB连接),将纹理元素和图形命令流式传输给宿设备6。在一些例子中,通信模块10可以接收要从源设备4的其它部件发送的信息。例如,通信模块10可以从流模块14接收命令帧。
源设备4可以包括GPU 12,所述GPU 12可以基于一个或多个纹理元素和图形命令来渲染视频数据的帧。GPU 12可以执行的图形命令的一些例子,包括但不限于:由Microsoft进行的API、由Khronos(科纳斯)集团进行的API、以及OpenCLTM API。在一些例子中,GPU 12可以基于图形命令和与应用模块18中的一个或多个应用模块相关联的纹理元素,来渲染视频数据的帧。例如,GPU 12可以基于图形命令和与应用模块18中的应用模块相关联的纹理元素,来渲染视频数据的帧,以便在操作性耦合到源设备4或者包括在源设备4中的显示器处进行输出。
源设备4可以包括流模块14,所述流模块14可以被配置为将视频数据流式传输给一个或多个外部设备。例如,流模块14可以将具有图形命令和纹理元素形式的视频数据流式传输给宿设备6。在一些例子中,流模块14可以在GPU 12的输入处,捕获图形命令和/或纹理元素16。在一些例子中,流模块14可以通过将所捕获的图形命令和/或纹理元素封装在多个命令帧中,对视频数据进行流式传输。
源设备4可以包括应用模块18,所述应用模块18均可以表示由制造源设备4的实体提供的应用、或者操作在源设备4上的软件或者由第三方开发的用于与源设备4一起使用的应用。应用模块18的例子可以包括:针对游戏、购物、旅游路线、地图、音频和/或视频呈现、文字处理、电子表格、语音和/或呼叫、天气等等的应用。
源设备4可以包括纹理元素16,所述纹理元素16可以由GPU用于对视频数据的帧进行渲染。在一些例子中,纹理元素16中的一个或多个纹理元素可以与应用模块18的特定应用模块相关联。例如,在应用模块18的游戏应用(例如,水果忍者)需要对落下的果实(例如,西瓜、牛油果、菠萝、其它水果)或者其它落下的元素的切断时,与游戏应用相关联的纹理元素16的示例性纹理元素包括对每种水果类型的图形表示。在一些例子中,可以以多种格式来存储纹理元素16。一些示例性格式包括但不限于:RGBα8888、RGBα4444、RGBα5551、RGB565、Yα88和α8。
WD 2可以包括宿设备6,所述宿设备6可以被配置为通过无线通信信道,从源设备接收具有纹理元素和图形命令形式的视频数据。例如,宿设备6可以通过通信信道8,从源设备4接收纹理元素24。宿设备6的例子可以包括但不限于:诸如智能电话的移动设备或其它移动手持装置、平板计算机、膝上型计算机、桌面型计算机、可穿戴计算设备(例如,智能手表、遮阳板等等)、电视、监视器、一个或多个处理单元或其它集成电路或芯片集、或者其它电子设备。如图1的例子中所示,宿设备6可以包括通信模块19、图形处理单元(GPU)20、流模块22和纹理元素24。
宿设备6可以包括通信模块19,所述通信模块19可以管理在宿设备6和一个或多个外部设备(例如,源设备4)之间的通信。在一些例子中,通信模块19可以执行与源设备4的通信模块10的操作类似的操作。例如,通信模块19可以通过通信信道8与源设备4交换数据。举一个例子,通信模块19可以通过直接Wi-Fi连接,从源设备4接收图形命令和纹理元素。在一些例子中,通信模块19可以向宿设备6的其它部件提供接收的信息。例如,通信模块19可以向流模块22提供接收的图形命令和纹理元素。
宿设备6可以包括GPU 20,所述GPU 20可以执行与源设备4的GPU 12的操作类似的操作。例如,GPU 20可以基于一个或多个纹理元素和图形命令来渲染视频数据的帧。在一些例子中,GPU 20能够执行与GPU 12的图形命令相同的图形命令。GPU 20可以执行的图形命令的一些例子,包括但不限于:由Microsoft进行的API、由Khronos(科纳斯)集团进行的API、以及OpenCLTM API。在一些例子中,GPU 20可以基于从宿设备6的一个或多个其它部件(例如,流模块22)接收的图形命令和纹理元素,来渲染视频数据的帧。例如,GPU 20可以基于从流模块22接收的图形命令和相关联的纹理元素,来渲染视频数据的帧,以便在操作性耦合至宿设备4或者包括在宿设备4中的显示器处进行输出。
宿设备6可以包括流模块22,所述流模块22可以被配置为从一个或多个外部设备接收流式的视频数据。例如,流模块22可以从源设备4接收具有图形命令和纹理元素形式的流式视频数据。在一些例子中,流模块22接收的图形命令和/或纹理元素可以是编码在多个命令帧中。在这样的例子中,流模块22可以被配置为对所述多个命令帧进行处理,以对这些图形命令和/或纹理元素进行解码。
宿设备6可以包括GPU可以用于渲染视频数据的帧的纹理元素24。例如,GPU 20可以使用纹理元素24来渲染视频数据的帧。
源设备4的用户可能期望将视频从源设备4流式传输给宿设备6。例如,在源设备4的显示器的大小比宿设备6的显示器的大小要小的情况下,源设备4的用户可能期望使用宿设备6的较大显示器来输出视频。但是,可能不期望从源设备4向宿设备6发送构造的视频数据的帧(例如,由于带宽限制、处理功率等等)。根据本公开内容的一种或多种技术,源设备4的流模块14可以经由通信信道8,向宿设备6的流模块22输出图形命令和一个或多个纹理元素,以便使宿设备6的GPU 20渲染视频数据的帧。用此方式,与在像素域中对视频数据进行流式传输相比,源设备4可以在图形域中将视频数据流式传输给宿设备6(例如,通过对图形命令和纹理元素进行流式传输)。
在操作中,流模块14可以捕获多个图形命令和一个或多个纹理元素。例如,流模块14可以在GPU 12的输入处,捕获应用模块18中的一个或多个应用模块所生成的多个图形命令。
根据本公开内容的一种或多种技术,流模块14可以将多个图形命令编码在多个命令帧中。例如,流模块14可以生成多个命令帧,其中每个命令帧与所述多个图形命令中的至少一个图形命令相对应。下文参照图3提供了示例性命令帧的进一步的细节。
在一些例子中,图形命令中的一个或多个图形命令可以包括一个或多个参数,其中所述一个或多个参数可以是数据,也可以是引用数据的指针。因此,响应于确定在特定命令帧的图形命令中包括的所述一个或多个参数中的至少一个参数包括引用数据的指针,流模块14可以对该指针进行解引用,使得该特定命令帧将该数据包括在图形命令中。用此方式,流模块14可以使宿设备6能够执行该图形命令,而无需尝试引用存储在源设备4上的数据。
无论如何,流模块14可以向宿设备6输出所述多个命令帧。例如,流模块14可以向通信模块10输出所述多个命令帧,其中通信模块10可以通过通信信道(例如,通过使用直接Wi-Fi连接),向宿设备6的通信模块10发送所述多个命令帧。
宿设备6可以基于所接收的多个命令帧,对一个或多个视频帧进行渲染。例如,通信模块19可以向流模块22提供所述多个命令帧,所述流模块22可以对所述多个命令帧进行解码,以重建所述多个图形命令和/或所述一个或多个纹理元素。流模块22可以向GPU 20提供所重建的多个图形命令和/或所述一个或多个纹理元素,其中GPU 20可以渲染所述一个或多个视频帧。
图2是根据本公开内容的一种或多种技术,示出图1的源设备4和宿设备6的一个例子的另外细节的框图,其中,源设备4被配置为通过无线通信信道8,将视频流式传输给宿设备6。
如图2中所示,源设备4可以包括一个或多个处理器30、一个或多个通信单元32、一个或多个用户接口(UI)设备34和一个或多个存储设备36。部件30、32、34和36中的每个部件可以经由通信信道38来互连(物理地、通信地和/或操作性地),以实现部件间通信。在一些例子中,通信信道38可以包括系统总线、网络连接、进程间通信数据结构、或者用于传送数据的任何其它信道。在一些例子中,存储设备36中的一个或多个存储设备可以包括通信模块10、流模块14、纹理元素16、阵列信息46、着色器信息48、一个或多个应用模块18A-18N(统一地称为“应用模块18”)和UI模块40。
在一个例子中,处理器30被配置为实现用于在源设备4中执行的功能和/或过程指令。例如,处理器30能够处理存储在存储设备36中的一个或多个存储设备中的指令。处理器30的例子可以包括任何一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者任何其它等同的集成电路或分立逻辑电路、以及这样的部件的任意组合。
在一些例子中,源设备4还包括一个或多个通信单元32。在一个例子中,源设备4使用通信单元32中的一个或多个通信单元,以经由一个或多个网络(例如,一个或多个无线网络)与外部设备进行通信。通信单元32中的一个或多个通信单元可以是网络接口卡(例如,以太网卡)、光收发器、射频收发机或者能够发送和接收信息的任何其它类型的设备。这样的网络接口的其它例子可以包括蓝牙、3G和Wi-Fi无线单元。在一些例子中,源设备4使用通信单元32来与外部设备无线地进行通信。例如,源设备4可以使用通信单元32,以通过通信信道8与宿设备6的通信单元52无线地进行通信。在一些例子中,通信单元32可以从源设备4的其它部件(例如,通信模块10)接收输入,其中通信模块10使得通信单元32与外部设备无线地进行通信。
在一些例子中,源设备4还可以包括一个或多个UI设备34。在一些例子中,UI设备34中的一个或多个UI设备可以被配置为输出内容(例如,视频数据)。例如,UI设备34的显示器可以被配置为显示由GPU 12渲染的视频数据的帧。除了输出内容之外,UI设备34中的一个或多个UI设备可以被配置为接收触觉、音频或视觉输入。UI设备34的一些例子包括视频显示器、扬声器、键盘、触摸屏、鼠标、照相机等等。
在一些例子中,源设备4还可以包括UI模块40。UI模块40可以执行一个或多个功能来从与源设备4相关联的其它部件接收内容(例如,UI数据),以及使得UI设备34中的一个或多个UI设备输出内容。在一些例子中,UI模块40可以被配置为接收对输入(例如,用户输入)的指示,以及向与源设备4相关联的其它部件(例如,流模块14)发送对输入的指示。
一个或多个存储设备36可以被配置为存储源设备4内在操作期间的信息。在一些例子中,存储设备36中的一个或多个存储设备可以包括计算机可读存储介质。在一些例子中,存储设备36中的一个或多个存储设备可以包括临时存储器,意味着存储设备36中的一个或多个存储设备的主要目的不是长期存储。在一些例子中,存储设备36中的一个或多个存储设备可以包括易失性存储器,意味着当系统关闭时,存储设备36中的一个或多个存储设备不维护所存储的内容。易失性存储器的例子包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和本领域已知的其它形式的易失性存储器。在一些例子中,使用存储设备36中的一个或多个存储设备来存储用于由处理器30执行的程序指令。在一个例子中,在源设备4上运行的软件或模块(例如,通信模块10、流模块14、应用模块18和UI模块40)可以使用存储设备36中的一个或多个存储设备,在程序执行期间临时地存储信息。
在一些例子中,存储设备36中的一个或多个存储设备还可以包括一个或多个计算机可读存储介质。存储设备36中的一个或多个存储设备还可以被配置为用于对信息的长期存储。在一些例子中,存储设备36中的一个或多个存储设备可以包括非易失性存储元件。这样的非易失性存储元件的例子包括磁硬盘、光盘、软盘、闪存、或者电子可编程存储器(EPROM)或电子可擦除和可编程(EEPROM)存储器的形式。
在一些例子中,源设备4还可以包括查找表(LUT)62。LUT 62可以存储图形命令的列表以及关于图形命令的信息。例如,对于每个图形命令而言,LUT 62可以存储从令牌标识符(例如,图3的令牌ID 84)到相应的图形命令的映射。在一些例子中,LUT 62可以存储对相应的图形命令采用哪些参数作为输入的指示。在一些例子中,LUT 62可以存储对相应的图形命令采用作为输入的参数中的每个参数的长度的指示。在下文的表(1)中,示出了LUT 62中的示例性条目。在一些例子中,源设备4可以包括针对每个图形命令集合的单独的LUT。例如,源设备4可以包括针对OpenGL命令的第一LUT和针对EGL命令的第二LUT。在一些例子中,单一LUT可以包括针对OpenGL和EGL命令二者的条目。
表(1)
如图2中所示,宿设备6可以包括一个或多个处理器50、一个或多个通信单元52、一个或多个用户接口(UI)设备54和一个或多个存储设备56。部件50、52、54和56中的每个部件可以经由通信信道58来互连(物理地、通信地和/或操作性地),用于实现部件间通信。在一些例子中,通信信道58可以包括系统总线、网络连接、进程间通信数据结构、或者用于传送数据的任何其它信道。在一些例子中,存储设备56中的一个或多个存储设备可以包括通信模块19、流模块22、纹理元素24、阵列信息47、着色器信息49和UI模块60。
在一些例子中,处理器50可以被配置为实现用于在宿设备6内执行的功能和/或过程指令。例如,处理器50能够处理存储在存储设备56中的一个或多个存储设备中的指令。处理器50的例子可以包括任何一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者任何其它等同的集成电路或分立逻辑电路、以及这样的部件的任意组合。
在一些例子中,宿设备6还包括一个或多个通信单元52。在一个例子中,宿设备6使用通信单元52中的一个或多个通信单元,以经由一个或多个网络(例如,一个或多个无线网络)与外部设备进行通信。通信单元52中的一个或多个通信单元可以是网络接口卡(例如,以太网卡)、光收发器、射频收发机或者能够发送和接收信息的任何其它类型的设备。这样的网络接口的其它例子可以包括蓝牙、3G和Wi-Fi无线单元。在一些例子中,宿设备6使用通信单元52来与外部设备无线地进行通信。例如,宿设备6可以使用通信单元52,以通过通信信道8与源设备4的通信单元32无线地进行通信。在一些例子中,通信单元52可以向宿设备6的其它部件(例如,通信模块19)提供所接收的数据。
在一些例子中,宿设备6还可以包括一个或多个UI设备54。在一些例子中,UI设备54中的一个或多个UI设备可以被配置为输出内容(例如,视频数据)。例如,UI设备54的显示器可以被配置为显示由GPU 20渲染的视频数据的帧。除了输出内容之外,UI设备54中的一个或多个UI设备可以被配置为接收触觉、音频或视觉输入。UI设备54的一些例子包括视频显示器、扬声器、键盘、触摸屏、鼠标、照相机等等。
在一些例子中,宿设备6还可以包括UI模块60。UI模块60可以执行一个或多个功能来从与宿设备6相关联的其它部件接收内容(例如,UI数据),以及使得UI设备54中的一个或多个UI设备输出内容。在一些例子中,UI模块60可以被配置为接收对输入(例如,用户输入)的指示,以及向与宿设备6相关联的其它部件(例如,流模块14)发送对输入的指示。
一个或多个存储设备56可以被配置为存储宿设备6内在操作期间的信息。在一些例子中,存储设备56中的一个或多个存储设备可以包括计算机可读存储介质。在一些例子中,存储设备56中的一个或多个存储设备可以包括临时存储器,意味着存储设备56中的一个或多个存储设备的主要目的不是长期存储。在一些例子中,存储设备56中的一个或多个存储设备可以包括易失性存储器,意味着当系统关闭时,存储设备56中的一个或多个存储设备不维护所存储的内容。易失性存储器的例子包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和本领域已知的其它形式的易失性存储器。在一些例子中,使用存储设备56中的一个或多个存储设备来存储用于由处理器50执行的程序指令。在一个例子中,在宿设备6上运行的软件或模块(例如,通信模块19、流模块22和UI模块60)可以使用存储设备56中的一个或多个存储设备,在程序执行期间临时地存储信息。
在一些例子中,存储设备56中的一个或多个存储设备还可以包括一个或多个计算机可读存储介质。存储设备56中的一个或多个存储设备还可以被配置为用于对信息的长期存储。在一些例子中,存储设备56中的一个或多个存储设备可以包括非易失性存储元件。这样的非易失性存储元件的例子包括磁硬盘、光盘、软盘、闪存、或者电子可编程存储器(EPROM)或电子可擦除和可编程(EEPROM)存储器的形式。
在一些例子中,宿设备6还可以包括查找表(LUT)64。LUT 64可以存储图形命令的列表以及关于图形命令的信息。例如,LUT 64可以存储图形命令的列表以及关于图形命令的信息,其等同于图形命令的列表以及关于由宿设备4的LUT 62存储的图形命令的信息。
图3是根据本公开内容的一种或多种技术,示出源设备可以生成的用于向宿设备传输的示例性命令帧的概念图。在一些例子中,命令帧66可以包括多个字段。例如,如图3中所示,命令帧66可以包括版本信息(V)68、有效载荷类型(PT)信息70、帧序号72、令牌序号74、保留区域76、长度信息78、时间戳80和数据82。
在一些例子中,命令帧66可以包括版本信息68,所述版本信息68可以指示命令帧66所遵循的协议(例如,图形实体引擎(GEE)协议)的版本。在一些例子中,版本信息68的长度可以是两比特。例如,在命令帧66遵循协议的版本0的情况下,可以将版本信息68设置成0b00。
在一些例子中,命令帧66可以包括有效载荷类型信息70,所述有效载荷类型信息70可以将命令帧66识别成特定类型的帧。在一些例子中,有效载荷类型信息70的长度可以是两比特。例如,在命令帧66是GEE帧的情况下,可以将有效载荷类型信息70设置成0b11。
在一些例子中,命令帧66可以包括帧序号72,所述帧序号72可以指示命令帧66的相应序号。在一些例子中,帧序号72的长度可以是12比特。例如,帧序号72的值可以开始于0,以及可以针对每个随后的命令帧而递增1。例如,针对第一命令帧的帧序号72的值可以是0,针对第二命令帧的帧序号72的值可以是1,以及针对第三命令帧的帧序号72的值可以是3。在一些例子中,用于帧序号72的值可以由计数器(例如,模-4096计数器)来维护,使得在该计数器到达其最大值之后,值缠绕到0(例如,针对第4096个命令帧的帧序号72的值可以是4096,以及针对第4097个命令帧的帧序号72的值可以是0)。
在一些例子中,命令帧66可以包括令牌序号74,所述令牌序号74可以指示命令帧66的令牌序号。在一些例子中,令牌序号74的长度可以是12比特。在一些例子中,单一命令帧66可以包括单一令牌。在一些例子中,单一命令帧66可以包括多个令牌。例如,对于第一命令帧而言,令牌序号74的值可以开始于0,以及可以递增当前命令帧中包括的令牌的数量。例如,针对具有单一令牌的第一命令帧的令牌序号74的值可以是1,针对具有两个令牌的第二命令帧的令牌序号74的值可以是3,以及针对具有单一令牌的第三命令帧的令牌序号74的值可以是4。在一些例子中,用于令牌序号74的值可以由计数器(例如,模-4096计数器)来维护,使得在该计数器到达其最大值之后,该值缠绕到0(例如,针对包括第4096个令牌的命令帧的令牌序号74的值可以是4096,以及针对仅仅包括第4097个令牌的命令帧的帧序号74的值可以是1)。
在一些例子中,命令帧66可以包括保留区域76,所述保留区域76可以被保留未来使用。在一些例子中,保留区域76的长度可以是4比特。在一些例子中,关于发送(例如,当由源设备生成时),可以将保留区域76设置为全零,以及关于接收(例如,当由宿设备处理时),可以省略保留区域76。
在一些例子中,命令帧66可以包括长度信息78,所述长度信息78可以指示命令帧66的长度,例如,命令帧66中包括的比特的量。例如,长度信息78可以从零比特偏移到数据82(其包括填充,如果有的话)的结束,以八比特为单位来指示命令帧66的长度。在一些例子中,长度信息78的长度可以是16比特。
在一些例子中,命令帧66可以包括时间戳80,所述时间戳80可以指示特定的时间。例如,时间戳80可以指示命令帧66的第一字节的目标传输时间。在一些例子中,时间戳80可以指示从生成命令帧66的源设备的时钟(例如,同步到系统流PCR(MPEG2-TS)的90KHz时钟基准)导出的时间戳的后16比特。
在一些例子中,命令帧66可以包括具有一个或多个字段的数据82。如图3中所示,数据82可以包括令牌ID 84、参数列表90和有效载荷92。
在一些例子中,数据82可以包括令牌ID 84,所述令牌ID 84可以指示特定的图形命令。举一个例子,在图形命令来自于规定的图形命令集合的情况下,令牌ID 84可以是用于标识所规定的图形命令集中的相应图形命令的值。例如,令牌ID 84的每个相应值可以对应于相应的OpenGL命令或EGL命令。在一些例子中,令牌ID 84的长度可以是32比特(4个八位字节)。在一些例子中,与特定图形命令的绝对ID相比,令牌ID 84可以通过指示命令类型和偏移值来表示绝对令牌ID。用此方式,源设备4可以对绝对令牌ID进行编码。宿设备6可以基于所指示的命令类型和偏移值,对绝对令牌ID进行解码。如图3中所示,令牌ID 84可以包括命令类型100、保留区域101和偏移102。
在一些例子中,命令类型100可以指示:从其中选择通过令牌ID 84指示的特定图形命令的图形命令集合。举一个例子,命令类型100可以被设置为1,以指示OpenGL图形命令。再举一个例子,命令类型100可以被设置为0,以指示EGL图形命令。
在一些例子中,保留区域101可以被保留以便未来使用。在一些例子中,保留区域101的长度可以是一个八位字节。在一些例子中,关于发送(例如,当由源设备生成时),可以将保留区域101设置为全零,以及关于接收(例如,当由宿设备处理时),可以省略保留区域101。
在一些例子中,偏移102可以指示:来自图形命令集合中的第一命令的特定图形命令的偏移,其中通过令牌ID 84指示的特定图形命令是从图形命令集合中选择的。
在一些例子中,可以根据下文的式(1),来规定OpenGL命令集合(即,枚举列表)中的第一OpenGL命令(例如,OpenGLCmd_one)的绝对令牌ID,其中OpenGL-版本指示从其中选择OpenGLCmd_one的OpenGL命令集合的版本。在一些例子中,可以在能力交换期间,例如利用wfd_gee_capability(能力)参数来确定OpenGL-版本的值。举一个例子,可以在图5所示出的数据流期间,确定OpenGL-版本的值。
OpenGLCmd_one=OpenGL-version|Reserved(保留) (1)
在一些例子中,可以根据下文的式(2)来确定针对偏移值为N的OpenGL命令的绝对令牌ID。
OpenGLCmd_N=OpenGLCmd_one+N (2)
在一些例子中,可以根据下文的式(3),来规定EGL命令集合(即,枚举列表)中的第一EGL命令(例如,EGLCmd_one)的绝对令牌ID,其中EGL-版本指示从其中选择EGLCmd_one的EGL命令集合的版本。在一些例子中,可以在能力交换期间,例如利用wfd_gee_capability参数来确定EGL-版本的值。举一个例子,可以在图5所示出的数据流期间,确定EGL-版本的值。
EGLCmd_one=EGL-version|Reserved (3)
在一些例子中,可以根据下文的式(4)来确定针对偏移值为N的EGL命令的绝对令牌ID。
EGLCmd_N=EGLCmd_one+N (4)
在一些例子中,数据82可以包括实例ID,所述实例ID可以标识与令牌ID 84相对应的特定线程。例如,在流式传输的视频数据包括多个线程的情况下,实例ID可以标识所述多个线程中的哪个线程与通过令牌ID 84标识的图形命令相关联。在一些例子中,实例ID 84的长度可以是32比特(4个八位字节)。
在一些例子中,数据82可以包括长度字段,所述长度字段可以指示数据82中包括的一个或多个字段的长度。例如,该长度字段可以指示在该长度字段之后的数据82的一个或多个字段(例如,参数列表90和有效载荷92)的长度。在一些例子中,该长度字段的长度可以是32比特(4个八位字节)。
在一些例子中,数据82可以包括参数列表90,所述参数列表90可以包括与通过令牌ID 84标识的图形命令相关联的一个或多个参数。例如,在通过令牌ID 84标识的图形命令采用第一参数和第二参数作为输入时,参数列表90可以包括第一参数和第二参数。
在一些例子中,数据82可以包括有效载荷92,所述有效载荷92可以包括一个或多个有效载荷项。如图3中所示,有效载荷92可以包括纹理94、着色器信息96和阵列信息98。
在一些例子中,有效载荷92可以包括纹理94,所述纹理94可以包括一个或多个纹理图像。例如,有效载荷92可以包括通过执行令牌ID 84标识的图形命令的GPU使用的一个或多个纹理图像。
在一些例子中,有效载荷92可以包括着色器信息96。着色器信息96的一些例子可以包括但不限于:顶点着色器、棋盘形控制和评估着色器、几何形状着色器、片段着色器和运算着色器。在一些例子中,有效载荷92可以包括阵列信息98。在一些例子中,阵列信息98可以包括一个或多个顶点阵列。
在一些例子中,例如在数据82的大小比单一命令帧中可以包括的大小要大的情况下,可以对数据82进行分割,并包括在多个命令帧中。在这样的例子中,所述多个命令帧中的每个命令帧可以包括:针对帧序号72的相同值和针对令牌序号74的相同值。换言之,两个或更多个命令帧可以具有相同的帧序号72和相同的令牌序号74(例如,在它们携带相同数据的片段的情况下)。
现在参见图2和图3,以及根据本公开内容的一种或多种技术,源设备4可以以多个命令帧的形式,将视频流式传输给宿设备6。在一些例子中,源设备4可以建立与宿设备6的无线显示(例如,Miracast)会话。当建立无线显示会话时,源设备4可以判断宿设备6是否支持接收具有命令帧形式的视频数据。响应于确定宿设备6支持接收具有命令帧形式的视频数据,源设备4可以生成能连同一个或多个纹理元素一起来渲染成视频数据的多个图形命令,以及生成多个命令帧,其中每个命令帧与所述多个图形命令中的至少一个图形命令相对应。源设备4可以输出所述多个命令帧,以用于向宿设备6进行无线传输。用此方式,源设备4的用户可以使用无线显示会话内的图形域传输方法,将视频数据从源设备4流式传输给宿设备6。
在一些例子中,响应于确定宿设备6不支持接收具有命令帧形式的视频数据,源设备4可以使用像素域传输方法,向宿设备6流式传输视频数据。用此方式,源设备4的用户可以仍然在无线显示会话内,将视频数据从源设备4流式传输给宿设备6。
如上文所讨论的,源设备4可以判断宿设备6是否支持接收具有命令帧形式的视频数据。例如,源设备4的流模块14的能力模块44可以生成实时流协议(RTSP)消息,所述实时流协议(RTSP)消息包括针对宿设备6的用于指示宿设备6是否支持接收具有命令帧形式的视频的请求。举一个例子,能力模块44可以生成RTSP M3请求消息,所述RTSP M3请求消息包括具有参数“wfd_gee_capability”的GET_PARAMETER请求。无论如何,能力模块44可以使得通信模块10向宿设备6发送该请求消息。
响应于接收到该请求消息,宿设备6的流模块22的能力模块43可以生成用于指示宿设备6是否支持接收具有命令帧形式的视频数据的响应。举一个例子,如果宿设备6支持接收具有命令帧形式的视频数据,则能力模块43可以生成RTSP M3响应消息,所述RTSP M3响应消息包括具有被限定为“支持”的参数“wfd_gee_capability”的GET_PARAMETER响应。再举一个例子,如果宿设备6支持接收具有命令帧形式的视频数据,则能力模块43可以生成RTSP M3响应消息,所述RTSP M3响应消息包括具有参数“wfd_gee_capability”的GET_PARAMETER响应,所述参数“wfd_gee_capability”是通过宿设备6所支持的多个图形命令集合中的一个图形命令集合的版本来限定的。再举一个例子,如果宿设备6不支持接收具有命令帧形式的视频数据,则能力模块43可以生成RTSP M3响应消息,所述RTSP M3响应消息包括具有被参数限定为“无”的参数“wfd_gee_capability”的GET_PARAMETER响应。在一些例子中,例如当宿设备6支持接收具有命令帧形式的视频数据时,该响应消息可以指示要使用的TCP端口号和/或UDP端口号。在一些例子中,TCP端口号和/或UDP端口号可能不是由宿设备6来设置的,以及可以应答消息中被指示为“无”。如上文所讨论的,该响应消息可以指示宿设备6所支持的多个图形命令集合中的一个图形命令集合的版本。例如,该响应消息可以指示宿设备6所支持的最高OpenGL版本和/或宿设备6所支持的最高EGL版本。无论如何,能力模块43可以使得通信模块19向源设备4发送响应消息。
响应于接收到该响应消息,能力模块44可以判断宿设备6是否支持接收具有命令帧形式的视频数据。举一个例子,在响应消息指示“wfd_gee_capability”是通过“支持”来限定的情况下,能力模块44可以确定宿设备6支持接收具有命令帧形式的视频数据。举一个例子,在响应消息指示“wfd_gee_capability”是通过“无”来限定的情况下,能力模块44可以确定宿设备6不支持接收具有命令帧形式的视频数据。
在能力模块44确定宿设备6支持接收具有命令帧形式的视频数据的情况下,能力模块44可以建立将使用哪些端口来交换命令帧。例如,能力模块44可以建立TCP端口号和/或UDP端口号。举一个例子,能力模块44可以生成RTSP M4请求消息,所述RTSP M4请求消息包括具有参数“wfd_gee_capability”的SET_PARAMETER请求,所述参数“wfd_gee_capability”是通过“TCPport=[TCPport]”和/或“UDPport=[UDPport]”来限定的,其中,TCPport是TCP端口号,UDPport是UDP端口号。
在一些例子中,请求消息可以指示要用于发送具有命令帧形式的视频数据的多个图形命令集合中的一个图形命令集合的版本。在一些例子中,能力模块44可以通过将从宿设备6接收的版本信息与源设备4的版本信息进行比较,来确定要用于发送具有命令帧形式的视频数据的多个图形命令集合中的一个图形命令集合的版本。在一些例子中,能力模块44可以选择最高共同版本作为要用于发送具有命令帧形式的视频数据的多个图形命令集合中的一个图形命令集合的版本。举一个例子,请求消息可以指示宿设备6和源设备4二者均支持的最高OpenGL版本。再举一个例子,请求消息可以指示宿设备6和源设备4二者均支持的最高EGL版本。无论如何,能力模块44都可以使得通信模块10向宿设备6发送该请求消息。
响应于接收到该请求消息,能力模块43可以配置流模块22在指定的端口中的一者或二者处接收命令帧。在一些例子中,能力模块43可以确认:流模块22被配置为在指定的端口中的一者或二者处接收命令帧。举一个例子,能力模块43可以生成RTSP M4响应消息,所述RTSP M4响应消息包括通过“OK”来限定的SET_PARAMETER_RESPONSE。再举一个例子,能力模块43可以生成RTSP M4响应消息,所述RTSP M4响应消息包括具有通过“TCPport=[TCPport]”和/或“UDPport=[UDPport]”来限定的参数“wfd_gee_capability”的SET_PARAMETER响应,其中,TCPport是从源设备4接收的请求消息所指示的TCP端口号,UDPport是从源设备4接收的请求消息所指示的UDP端口号。无论如何,能力模块43都可以使得通信模块19向源设备4发送该响应消息。
如上所述,响应于确定宿设备6支持接收具有命令帧形式的视频数据,源设备4可以生成能连同一个或多个纹理元素一起来渲染成视频数据的多个令牌(即,图形命令的特定实例)。例如,应用模块18中的一个或多个应用模块可以输出多个图形命令,其中这些图形命令使得GPU 12渲染视频数据的一个或多个帧。
流模块14可以在GPU 12的输入处捕获所述多个令牌,以及生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应。例如,流模块14的成帧模块42可以根据图3的技术,生成所述多个命令帧中的每个命令帧。举一个例子,流模块14可以生成所述多个命令帧中的每个命令帧,使得每个相应的命令帧包括:对相应的至少一个图形命令的标识(例如,图3的令牌ID 84)、以及与相应的至少一个令牌相关联的一个或多个参数(例如,图3的参数列表90)。
例如,响应于捕获到具有第一参数和第二参数的funcX的特定令牌,成帧模块42可以生成与funcX的特定令牌相对应的命令帧。例如,成帧模块42可以参考LUT 62来确定与funcX相对应的令牌ID。例如,成帧模块42可以通过确定funcX的命令类型和偏移(例如,图3的命令类型100和偏移102),来确定与funcX相对应的令牌ID。在一些例子中,成帧模块42可以根据上文的式(1)-(4)中的一者或多者来确定偏移。使用所确定的停牌ID,成帧模块42可以生成与funcX的特定令牌相对应的命令帧,如同包括与funcX、第一参数和第二参数相对应的令牌ID。
在一些例子中,特定命令帧中所包括的参数中的一个或多个参数,可以是引用源设备4处所存储的数据的指针。根据本公开内容的一种或多种技术,与输出具有指针的特定命令帧相反,成帧模块42可以对指针进行解引用,使得该特定命令帧将数据包括图形命令中。用此方式,流模块14可以使宿设备6能够执行图形命令,而无需尝试引用存储在源设备4处的数据。
在一些例子中,当被GPU执行时,特定命令帧中包括的令牌中的一个或多个令牌,可以与对一个或多个纹理元素起作用的图形命令相对应。因此,在一些例子中,成帧模块42可以将所述一个或多个纹理元素包括在特定命令帧中(例如,如图3中所示的有效载荷92的纹理94)。在一些例子中,成帧模块42可以判断在宿设备6处是否已经存储了所述一个或多个纹理元素(即,在纹理元素24中)。例如,如果所述一个或多个纹理元素包括在先前发送的命令帧中,则它们可能已经存储在纹理元素24中了。如果所述一个或多个纹理元素已经存储在宿设备6处,则成帧模块42可以从特定命令帧中省略已经存储在宿设备6处的一个或多个纹理元素。如果所述一个或多个纹理元素没有存储在宿设备6处,则成帧模块42可以将宿设备6处没有存储的所述一个或多个纹理元素包括在特定命令帧中。
在一些例子中,在特定命令帧中包括的令牌中的一个或多个令牌可以与阵列信息相关联。因此,在一些例子中,成帧模块42可以将阵列信息包括在特定命令帧中(例如,如图3中所示的有效载荷92的阵列信息98)。类似于纹理元素,成帧模块42可以判断与特定命令帧中包括的令牌中的一个或多个令牌相关联的阵列信息是否已经存储在宿设备6处(即,在阵列信息47中),并可以省略已经存储在宿设备6处的阵列信息。
在一些例子中,在特定命令帧中包括的令牌中的一个或多个令牌可以与着色器信息相关联。因此,在一些例子中,成帧模块42可以将着色器信息包括在特定命令帧中(例如,如图3中所示的有效载荷92的着色器信息96)。类似于纹理元素,成帧模块42可以判断与特定命令帧中包括的令牌中的一个或多个令牌相关联的着色器信息是否已经存储在宿设备6处(即,在着色器信息49中),并可以省略已经存储在宿设备6处的着色器信息。
在一些例子中,成帧模块42可以向所述多个命令帧中的一个或多个命令帧应用内容保护。例如,成帧模块42可以根据高带宽数字内容保护(HDCP),向所述多个命令帧中的一个或多个命令帧应用内容保护。可以在2012年10月16日出版的标题为“High-bandwidthDigital Content Protection:Interface Independent Adaptation”的数字内容保护LLC的修订版2.2的文档中找到针对HDCP的更多信息,以及该文档可在http://www.digital- cp.com/hdcp_specifications处获得。
如上所述,源设备4可以输出所述多个命令帧,以向宿设备6进行无线传输。例如,流模块14向通信模块10输出所述多个命令帧,其中通信模块10可以使得通信单元32中的一个或多个通信单元经由通信信道8(例如,通过使用直接Wi-Fi连接),向宿设备6发送所述多个命令帧。
在一些例子中,当向宿设备6输出所述多个命令帧时,通信模块10可以选择要使用的通信协议。例如,通信模块10可以判断是使用传输控制协议(TCP)还是用户数据报协议(UDP),来输出所述多个命令帧。在一些例子中,通信模块10可以基于在源设备4和宿设备6之间的链路的一个或多个信道状况,判断是使用TCP还是使用UDP来输出所述多个命令帧。举一个例子,响应于确定通信信道8的质量度量(例如,分组差错率)不满足质量门限,通信模块10可以使用TCP来输出所述多个命令帧。再举一个例子,响应于确定通信信道8的质量度量满足质量门限,通信模块10可以使用UDP来输出所述多个命令帧。在一些例子中,通信模块10可以贯穿整个无线显示会话(即,从会话建立到会话终止),维护特定的通信协议。例如,通信模块10可以针对整个无线显示会话,使用TCP来输出所述多个命令帧。在一些例子中,通信模块10可以在无线显示会话期间,在通信协议之间进行改变。例如,通信模块10可以使用TCP来开始输出命令帧,直到确定通信信道8的质量度量不再满足质量门限(响应于此,通信模块10可以开始使用UDP来输出命令帧)为止。
无论如何,响应于从源设备4接收到多个命令帧,宿设备6可以对所述多个命令帧进行解码,以重建所述多个令牌。例如,流模块22的重建模块41可以通过以下方式来重建由特定命令帧指示的每个相应的令牌:确定特定命令帧中包括的相应令牌ID指示图形命令集合中的哪个图形命令。例如,重建模块41可以参考LUT 64,以确定相应的令牌ID指示图形命令集合中的哪个图形命令。
在一些例子中,重建模块41还可以参考LUT 64来确定针对与相应的令牌ID所指示的图形命令相关联的每个参数的相应长度。例如,重建模块41可以确定第一参数是1字节长,第二参数是10字节长。重建模块41可以基于所确定的长度,提取与相应的令牌ID相关联的一个或多个参数。例如,在所述一个或多个参数的总长度(例如,参数列表90的总长度)是11字节的情况下,重建模块41可以提取第一字节作为第一参数,以及提取剩余的10字节作为第二参数。用此方式,重建模块41可以重建相应的令牌。
在一些例子中,所述多个命令帧中的一个或多个命令帧可以包括一个或多个纹理元素。因此,当处理所述多个命令帧时,重建模块41可以将所述一个或多个纹理元素存储在纹理元素24处。
在一些例子中,重建模块41可以从所述多个命令帧中的一个或多个命令帧中去除内容保护。例如,重建模块41可以根据高带宽数字内容保护(HDCP),从所述多个命令帧中的一个或多个命令帧中去除内容保护。用此方式,重建模块41可以以与(例如,由成帧模块42)应用内容保护的方式互补的方式,来去除内容保护。
宿设备6可以使用所重建的令牌来渲染视频数据。例如,重建模块41可以输出所重建的令牌,以使得GPU 20渲染该视频数据。用此方式,宿设备6可以基于命令帧来渲染视频数据。在一些例子中,GPU 20可以基于所重建的令牌以及纹理元素24、阵列信息47和着色器信息49中的一者或多者来渲染视频数据。
图4是根据本公开内容的一种或多种技术,示出宿设备或源设备中的示例性数据和控制平面连接的概念图。如图4中所示,数据和控制平面连接400包括数据平面连接和控制平面连接。图4的数据平面连接包括图形实体引擎(GEE)401、视频编解码器402、音频编解码器403、PES分组化404、内容保护405(例如,HDCP 2.0/2.1)和RTP 407/UDP 408/IP 409上的MPEG2-TS 406。图4的控制平面连接包括TCP 411/IP 409上的RTSP 410、远程I2C读/写412、用户接口返回信道(UIBC)413(例如,通用或人机接口设备类型(HIDC))。另外,如图4中所示,数据和控制平面连接400可以包括Wi-Fi P2P/TDLS和Wi-Fi保护建立块415,所述Wi-Fi P2P/TDLS和Wi-Fi保护建立块415实现层2连接(例如,使用Wi-Fi P2P和/或TDLS)。
根据本公开内容的一种或多种技术,GEE 401可以被配置为发送和/或接收具有令牌和纹理元素形式的视频数据,并对其进行解码。如上所述,可以以命令帧的形式来发送令牌和纹理元素。如图4中所示,GEE 401可以经由TCP 411或UDP 408来接收命令帧。用此方式,GEE 401可以执行流模块14和/或流模块22的操作。
图5是根据本公开内容的一种或多种技术,示出在宿设备和源设备之间的示例性数据流的通信流图,其中该源设备执行技术以判断宿设备是否支持接收具有命令帧形式的视频数据。图5的技术可以由计算设备(例如,图1和图2中所示出的源设备4)的一个或多个处理器来执行。出于说明的目的,在图1和图2中所示出的源设备4和宿设备6的背景下描述图5的技术,尽管具有与源设备4的配置不相同的配置的计算设备也可以执行图5的技术。
根据本公开内容的一种或多种技术,源设备4可以判断宿设备6是否支持接收具有命令帧形式的视频数据,其中命令帧与图形命令的令牌相对应。例如,源设备4可以向宿设备6输出M3请求消息502,所述M3请求消息502包括具有参数“wfd_gee_capability”的GET_PARAMETERREQUEST。
响应于接收到请求消息502,宿设备6可以生成用于指示宿设备6是否支持接收具有命令帧形式的视频数据的响应。例如,如果宿设备6支持接收具有命令帧形式的视频数据,则宿设备6可以向源设备4输出M3响应消息504,所述M3响应消息504包括具有被限定为“支持”的参数“wfd_gee_capability”的GET_PARAMETER响应。在一些例子中,响应消息504可以指示要使用的TCP端口号和/或UDP端口号。如图5的例子中所示出的,TCP端口号和/或UDP端口号可能不由宿设备6来设置,以及可以在应答消息中被指示为“无”。
在一些例子中,M3响应消息504可以指示宿设备6所支持的多个图形命令集合中的一个图形命令集合的版本。例如,M3响应消息504可以指示宿设备6所支持的最高OpenGL版本(即,openGL-版本=2.2)和/或宿设备6所支持的最高EGL版本(即,EGL-版本=1.3)。在一些例子中,openGL-版本字段可以包括openGL版本的主要部分和次要部分,它们可以是数字的。在一些例子中,宿设备6可以将openGL版本的主要部分和次要部分的值,确定成在宿设备6处执行的glGetString查询所返回的主要值和次要值。在一些例子中,EGL-版本字段可以包括EGL版本的主要部分和次要部分,它们可以是数字的。在一些例子中,宿设备6可以将EGL版本的主要部分和次要部分的值,确定成在宿设备6处执行的eglInitalize查询所返回的主要值和次要值。
响应于接收到响应消息504,源设备4可以判断宿设备6是否支持接收具有命令帧形式的视频数据。举一个例子,在响应消息504指示“wfd_gee_capability”是通过“支持”来限定的情况下,能力模块44可以确定宿设备6支持接收具有命令帧形式的视频数据。再举一个例子,在响应消息504指示“wfd_gee_capability”是通过图形命令的一个或多个版本来限定的情况下,能力模块44可以确定宿设备6支持接收具有命令帧形式的视频数据。再举一个例子,在响应消息504指示“wfd_gee_capability”是通过“无”来限定的情况下,能力模块44可以确定宿设备6不支持接收具有命令帧形式的视频数据。用此方式,源设备4可以判断宿设备6是否支持接收具有命令帧形式的视频数据。
在源设备4确定宿设备6支持接收具有命令帧形式的视频数据的情况下,源设备4可以建立将用来交换命令帧的那些端口。例如,源设备4可以建立TCP端口号和/或UDP端口号。举一个例子,源设备4可以向宿设备6输出M4请求消息506,所述M4请求消息506包括具有通过“TCPport=[TCPport]”和/或“UDPport=[UDPport]”来限定的参数“wfd_gee_capability”的SET_PARAMETER请求,其中,TCPport是TCP端口号,UDPport是UDP端口号。
在一些例子中,M4请求消息506可以指示要用于发送具有命令帧形式的视频数据的多个图形命令集合中的一个图形命令集合的版本。在一些例子中,源设备4可以通过将从宿设备6接收的版本信息(即,在M3响应消息504中)与源设备4的版本信息进行比较,确定要用于发送具有命令帧形式的视频数据的多个图形命令集合中的一个图形命令集合的版本。在一些例子中,源设备4可以选择最高共同版本作为要用于发送具有命令帧形式的视频数据的多个图形命令集合中的一个图形命令集合的版本。例如,在源设备4支持至少OpenGL-版本2.2和EGL-版本1.3的情况下,源设备4可以选择OpenGL-版本2.2和EGL-版本1.3来用于从源设备4向宿设备6发送具有命令帧形式的视频数据。
响应于接收到请求消息506,宿设备6可以准备在指定的端口中的一者或二者处接收命令帧。在一些例子中,宿设备6可以确认:宿设备6被配置为在指定的端口中的一者或二者处接收命令帧。举一个例子,宿设备6可以输出通过“OK”来限定的M4响应消息508。再举一个例子,宿设备6可以输出M4响应消息508,所述M4响应消息508包括具有通过“TCPport=[TCPport]”和/或“UDPport=[UDPport]”来限定的参数“wfd_gee_capability”的SET_PARAMETER响应,其中,TCPport是请求消息506所指示的TCP端口号,UDPport是请求消息506所指示的UDP端口号。用此方式,在宿设备6支持接收具有命令帧形式的视频数据的情况下,源设备4和宿设备6可以协商和/或建立通信会话。
图6是根据本公开内容的一种或多种技术,示出源设备向宿设备流式传输视频数据的示例性操作的流程图。图6的技术可以由计算设备(例如,图1和图2中所示出的源设备4)的一个或多个处理器来执行。出于说明的目的,在图1和图2中所示出的源设备4的背景下描述图6的技术,尽管具有与源设备4的配置不相同的配置的计算设备也可以执行图6的技术。
根据本公开内容的一种或多种技术,源设备4的流模块14可以捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌(602)。例如,流模块14可以在源设备4中所包括的GPU(例如,GPU 12)的输入处,捕获所述多个纹理元素和令牌。
流模块14的成帧模块42可以生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应(604)。在一些例子中,成帧模块42可以根据图3的技术,来生成多个命令帧。例如,所述多个命令帧中的每个相应的命令帧可以包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数。
流模块14的成帧模块42可以输出所述多个命令帧,用于向宿设备进行传输(606)。例如,流模块14可以向通信模块10输出所述多个命令帧,其中通信模块10可以使得通信单元32中的一个或多个通信单元经由在源设备4和宿设备之间的有线和/或无线通信链路(例如,图1和图2的通信信道8),向宿设备(例如,图1和图2的宿设备6)发送所述多个命令帧。
图7A和图7B是根据本公开内容的一种或多种技术,示出源设备向宿设备流式传输视频数据的示例性操作的流程图。图7A和图7B的技术可以由计算设备(例如,图1和图2中所示出的源设备4)的一个或多个处理器来执行。出于说明的目的,在图1和图2中所示出的源设备4的背景下描述图7A和图7B的技术,尽管具有与源设备4的配置不相同的配置的计算设备也可以执行图7A和图7B的技术。
根据本公开内容的一种或多种技术,源设备4的流模块14可以捕获可渲染成视频数据的图形命令的一个或多个令牌(702)。例如,流模块14可以在源设备4中所包括的GPU(例如,GPU 12)的输入处,捕获所述一个或多个令牌。
流模块14的成帧模块42可以生成多个命令帧,其中每个命令帧与所述一个或多个令牌中的至少一个令牌相对应。例如,成帧模块42可以确定针对当前命令帧的帧序号(即,针对命令帧66的帧序号72)(704)。如上所述,成帧模块42可以针对每个新的命令帧,将帧序号递增1。
成帧模块42可以选择所述一个或多个令牌中的至少一个令牌,以包括在当前命令帧中(706)。举一个例子,成帧模块42可以从所述一个或多个令牌中选择单一令牌。再举一个例子,成帧模块42可以从所述一个或多个令牌中选择多个令牌。
成帧模块42可以确定在所选定的至少一个令牌中包括的令牌的数量N(708)。基于所确定的数量N,成帧模块42可以确定令牌序号(即,令牌序号74)(710)。如上所述,成帧模块42可以将令牌序号递增当前命令帧中所包括的令牌的数量。
成帧模块42可以针对所选定的至少一个令牌中的每个令牌,生成相应的数据字段,以包括在当前命令帧中。例如,成帧模块42可以将索引值I设置为零,并前进至“A”,确定与选定的至少一个令牌中的第I令牌相对应的图形命令的标识符(即,令牌ID 84I)(714)。如上所述,成帧模块42可以通过参考LUT 62,来确定与选定的至少一个令牌中的第I令牌相对应的图形命令的标识符。例如,成帧模块42可以通过确定与第I令牌相对应的图形命令的命令类型和偏移(例如,图3的命令类型100和偏移102),来确定令牌ID 84I。在一些例子中,成帧模块42可以根据上文的式(1)-(4)中的一者或多者来确定该偏移。成帧模块42可以提取与所选定的至少一个令牌的第I令牌相关联的一个或多个参数(715),以及如果所提取的参数中的任何参数包括指针,成帧模块42可以对指针进行解引用以生成参数列表90I(716)。成帧模块42可以确定一个或多个有效载荷对象,以包括在针对第I令牌的数据字段中(718)。例如,成帧模块42可以选择纹理元素94I、着色器信息96I和阵列信息98I中的一者或多者。
成帧模块42可以基于令牌ID 84I、参数列表90I和所确定的一个或多个有效载荷对象,生成针对第I令牌的数据字段82I,进行至“B”,判断第I令牌是否是所述一个或多个令牌中的所选定的至少一个令牌中将包括在当前命令帧中的最后令牌(即,I是否大于或等于N)(720)。如果第I令牌不是所述一个或多个令牌中的所选定的至少一个令牌中将包括在当前命令帧中的最后令牌(即,720的“否”分支),则成帧模块可以递增I(722),并生成针对新的第I令牌的相应数据字段(722)。
如果第I令牌是所述一个或多个令牌中的所选定的至少一个令牌中将包括在当前命令帧中的最后令牌(720的“是”分支),则成帧模块可以确定当前命令帧的长度(即,长度78)(724)。成帧模块42可以基于帧序号72、令牌序号74、相应的数据字段82A-82N和长度78,来生成当前命令帧(即,命令帧66)。在一些例子中,成帧模块42可以基于一个或多个另外的字段(例如,图3中所示出的另外字段(例如,版本68、时间戳80)),来生成当前命令帧。
无论如何,成帧模块42可以输出当前命令帧,用于向宿设备进行传输(726)。例如,成帧模块42可以向通信模块10输出所述多个命令帧,其中通信模块10可以使得通信单元32中的一个或多个通信单元经由在源设备4和宿设备之间的有线和/或无线通信链路(例如,图1和图2的通信信道8),向宿设备(例如,图1和图2的宿设备6)发送所述多个命令帧。用此方式,源设备4可以向宿设备6发送具有命令帧形式的视频数据。
图8是根据本公开内容的一种或多种技术,示出宿设备接收从源设备流式传输的视频数据的示例性操作的流程图。图8的技术可以由计算设备(例如,图1和图2中所示出的宿设备6)的一个或多个处理器来执行。出于说明的目的,在图1和图2中所示出的宿设备6的背景下描述图8的技术,尽管具有与宿设备6的配置不相同的配置的计算设备也可以执行图8的技术。
根据本公开内容的一种或多种技术,宿设备6的流模块22可以接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应(802)。在一些例子中,流模块22可以经由在宿设备6和源设备之间的有线和/或无线通信链路(例如,图1和图2的通信信道8),接收所述多个命令帧。
流模块22的重建模块41可以基于所述多个命令帧,重建所述多个令牌(804)。例如,重建模块41可以通过确定特定的令牌指示图形命令集合中的哪个图形命令,重建来自特定命令帧的特定的令牌。举一个例子,在特定命令帧中包括的令牌ID包括对命令类型和偏移值的指示的情况下,重建模块41可以通过根据上文的式(1)-(4)中的一者或多者,确定绝对令牌ID,来确定哪个图形命令与所包括的令牌ID相对应。使用该绝对令牌ID,重建模块41可以参考在宿设备6处存储的查找表(其等同于在源设备处存储的查找表),来确定哪个图形命令与特定命令帧中包括的令牌ID相对应。
流模块22可以基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染(806)。例如,流模块22可以向宿设备6的GPU(例如,GPU 20)输出所述多个令牌。用此方式,宿设备6可以基于命令帧,对视频进行渲染。
图9是根据本公开内容的一种或多种技术,示出宿设备接收从源设备流式传输的视频数据的示例性操作的流程图。图9的技术可以由计算设备(例如,图1和图2中所示出的宿设备6)的一个或多个处理器来执行。出于说明的目的,在图1和图2中所示出的宿设备6的背景下描述图9的技术,尽管具有与宿设备6的配置不相同的配置的计算设备也可以执行图9的技术。
根据本公开内容的一种或多种技术,宿设备6的流模块22可以接收多个命令帧中的当前命令帧,其中每个命令帧包括一个或多个数据字段中的至少一个数据字段,其中每个数据字段分别与多个令牌中的相应令牌相对应(902)。在一些例子中,流模块22可以经由在宿设备6和源设备之间的有线和/或无线通信链路(例如,图1和图2的通信信道8),接收当前命令帧。
流模块22的重建模块41可以基于所述多个命令帧,重建所述多个令牌。例如,重建模块41可以确定在当前命令帧中包括的数据字段的数量N(904)。在一些例子中,重建模块41可以基于当前命令帧的令牌序号和前一命令帧的令牌序号之间的差值,来确定数量N。
重建模块41可以将索引值I设置为零(906),以及确定与当前命令帧中的第I数据字段中包括的标识符相对应的图形命令(908)。如上所述,重建模块41可以通过参考LUT64,来确定与当前命令帧中的第I数据字段中包括的标识符相对应的图形命令。重建模块41可以提取当前命令帧的第I数据字段中包括的一个或多个参数(910)。如上所述,重建模块41可以基于可以通过参考LUT 64获得的相应参数长度,来提取第I数据字段中包括的一个或多个参数。无论如何,重建模块41可以基于所确定的图形命令和所述一个或多个参数,重建第I令牌(912)。
重建模块41可以判断第I数据字段是否是当前命令帧中包括的最后数据字段(即,I是否大于或等于N)(914)。如果第I数据字段不是当前命令帧中包括的最后数据字段(914的“否”分支),则重建模块41可以递增I(916),以及确定与当前命令帧的新的第I数据字段中包括的标识符相对应的图形命令(908)。如果第I数据字段是当前命令帧中包括的最后数据字段(914的“是”分支),则重建模块41可以基于根据所述多个命令帧所重建的多个令牌,使得宿设备6的一个或多个部件(例如,GPU 20)渲染视频数据(918)。
如上所述,在一些例子中,源设备4和/或宿设备6可以使用“wfd_gee_capability”参数来协商对视频数据的传输。在一些例子中,可以如下所述地规定“wfd_gee_capability”:
下文的例子可以描绘本公开内容的一个或多个方面:
示例1。一种用于发送视频数据的方法,包括:由源设备捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;由源设备生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;以及由源设备输出所述多个命令帧,以及用于向宿设备进行传输。
示例2。根据示例1的方法,其中,生成所述多个命令帧中的特定命令帧包括:响应于确定在该特定命令帧中包括的所述一个或多个参数中的至少一个参数包括引用数据的指针,对该指针进行解引用,使得该特定命令帧包括该数据,其中,该特定命令帧还包括:对该特定命令帧中包括的所述一个或多个参数的长度的指示。
示例3。根据示例1-2的任意组合的方法,其中,所述多个命令帧中的特定命令帧还包括:所述一个或多个纹理元素中的至少一个纹理元素。
示例4。根据示例1-3的任意组合的方法,其中,所述多个命令帧中的特定命令帧与所述多个令牌中的特定令牌相对应,以及其中,生成所述特定命令帧包括至少通过以下方式,生成与所述特定令牌相对应的所述特定图形命令的标识:对所述特定图形命令的命令类型的指示进行编码;以及对针对所述特定图形命令的偏移值进行编码。
示例5。根据示例1-4的任意组合的方法,还包括:由源设备至少通过以下方式,判断宿设备是否支持接收具有命令帧的形式的视频数据:由源设备生成第一实时流协议(RTSP)消息,以及用于向宿设备进行传输,其中该第一RTSP消息包括针对宿设备的GET_PARAMETER请求,以指示宿设备是否支持接收具有命令帧形式的视频;响应于源设备确定宿设备支持具有命令帧形式的视频数据,由源设备生成第二RTSP消息,以及用于向宿设备进行传输,其中第二RTSP消息包括SET_PARAMETER请求,所述SET_PARAMETER请求指示宿设备能够将所述多个命令帧输出至的一个或多个端口地址。
示例6。根据示例1-5的任意组合的方法,其中,输出所述多个命令帧包括:由所述源设备使用传输控制协议(TCP)或用户数据报协议(UDP)输出所述多个命令帧,以及用于经由链路向所述宿设备进行传输。
示例7。根据示例1-6的任意组合的方法,其中,所述链路是无线链路,该方法还包括:响应于确定该无线链路的质量度量不满足质量门限,由源设备使用TCP输出所述多个命令帧,以及经由该无线链路向宿设备进行无线传输;以及响应于确定该无线链路的质量度量满足质量门限,由源设备使用UDP输出所述多个命令帧,以及经由该无线链路向宿设备进行无线传输。
示例8。根据示例1-7的任意组合的方法,还包括:向所述多个命令帧应用内容保护。
示例9。一种源设备包括存储器、通信单元和一个或多个处理器,其中所述一个或多个处理器被配置为:捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中,所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;以及向通信单元输出所述多个命令帧,以及用于向宿设备进行传输。
示例10。根据示例9的源设备,其中,所述一个或多个处理器被配置为执行示例1-8的任意组合的方法。
示例11。一种源设备包括:用于捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌的单元;用于生成多个命令帧的单元,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;以及用于输出所述多个命令帧,用于向宿设备进行传输的单元。
示例12。根据示例11的源设备,还包括:用于执行示例1-8的方法的任意组合的单元。
示例13。一种非暂时性计算机可读存储介质存储指令,当所述指令被执行时,使得源设备的一个或多个处理器执行以下操作:捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;以及输出所述多个命令帧,用于向宿设备进行传输。
示例14。根据示例13的非暂时性计算机可读存储介质,还存储用于当执行时,使得源设备的一个或多个处理器执行示例1-8的方法的任意组合的指令。
示例15。一种用于接收视频数据的方法,包括:由宿设备以及从源设备接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;由宿设备基于所述多个命令帧,重建所述多个令牌;以及由宿设备基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
示例16。根据示例15的方法,其中,重建所述多个令牌中的特定令牌包括:确定与所述至少一个令牌相关联的所述一个或多个参数中的每个相应参数的长度;基于所确定的长度,提取所述一个或多个参数中的每个相应参数。
示例17。根据示例15-16的任意组合的方法,其中,所述多个命令帧中的特定命令帧还包括:所述一个或多个纹理元素中的至少一个纹理元素。
示例18。根据示例15-17的任意组合的方法,其中:所述多个命令帧中的特定命令帧与所述多个令牌中的特定令牌相对应,与所述特定令牌相对应的特定图形命令的标识包括:所述特定图形命令的命令类型的指示、以及针对该特定图形命令的偏移值,以及该方法还包括:基于所述命令类型的指示和针对该特定图形命令的偏移值,确定该特定图形命令。
示例19。根据示例15-18的任意组合的方法,还包括:由宿设备以及从源设备接收第一实时流协议(RTSP)消息,其中该第一RTSP消息包括针对宿设备的GET_PARAMETER请求,以指示宿设备是否支持接收具有命令帧形式的视频;以及由宿设备生成第二RTSP消息,以及用于向源设备进行传输,其中第二RTSP消息包括GET_PARAMETER请求,所述GET_PARAMETER请求指示宿设备支持接收具有命令帧形式的视频。
示例20。根据示例15-19的任意组合的方法,其中,接收所述多个命令帧包括:由宿设备以及从源设备使用传输控制协议(TCP)或用户数据报协议(UDP),经由链路接收所述多个命令帧。
示例21。根据示例15-20的任意组合的方法,其中,所述链路是无线链路,该方法还包括:在该无线链路的质量度量不满足质量门限的情况下,由宿设备以及从源设备使用TCP经由该无线链路接收所述多个命令帧;以及在该无线链路的质量度量满足质量门限的情况下,由宿设备以及从源设备使用UDP经由该无线链路接收所述多个命令帧。
示例22。根据示例15-21的任意组合的方法,还包括:去除对所述多个命令帧的内容保护。
示例23。一种宿设备包括:存储器、通信模块和一个或多个处理器,其中所述一个或多个处理器被配置为:从源设备以及经由通信模块接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;基于所述多个命令帧,重建所述多个令牌;以及基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
示例24。根据示例23的宿设备,其中,所述一个或多个处理器还被配置为执行示例15-21的任意组合的方法。
示例25。一种宿设备包括:用于从源设备接收多个命令帧的单元,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;用于基于所述多个命令帧,重建所述多个令牌的单元;以及用于基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染的单元。
示例26。根据示例25的宿设备,还包括:用于执行示例15-21的方法的任意组合的单元。
示例27。一种非暂时性计算机可读存储介质存储指令,当所述指令被执行时,使得宿设备的一个或多个处理器执行以下操作:从源设备接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中所述多个命令帧中的每个相应的命令帧包括:与所述至少一个令牌相对应的至少一个图形命令的标识、以及与所述至少一个令牌相关联的一个或多个参数;基于所述多个命令帧,重建所述多个令牌;以及基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
示例28。根据示例27的非暂时性计算机可读存储介质,还存储用于当执行时,使得宿设备的一个或多个处理器执行示例15-21的方法的任意组合的指令。
应当认识到,根据该示例,本文所描述的技术中的任何技术中的某些动作或事件,可以以不同的顺序执行,可以对这些动作或事件进行增加、合并或者一起忽视(例如,对于这些技术的实现来说,并不是所有描述的动作或事件都是必需的)。此外,在某些示例中,例如,可以通过多线程处理、中断处理或者多个处理器,同时地而不是顺序地执行动作或事件。
在一个或多个示例中,本文所描述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码进行传输,并由基于硬件的处理单元来执行。计算机可读介质可以包括计算机可读存储介质(其对应于诸如数据存储介质之类的有形介质)或通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质(例如,根据通信协议)。用此方式,计算机可读介质通常可以对应于:(1)非暂时性的有形计算机可读存储介质;或者(2)诸如信号或载波波形之类的通信介质。数据存储介质可以是一个或多个计算机或者一个或多个处理器为了取回指令、代码和/或数据结构,以实现本公开内容中所描述的技术,而可以访问的任何可用介质。计算机程序产品可以包括计算机可读介质。
举例而言,而非做出限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储介质或其它磁存储设备、闪存、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字用户线路(DSL)或者诸如红外线、无线和微波之类的无线技术从网站、服务器或其它远程源发送的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所述介质的定义中。但是,应当理解的是,计算机可读存储介质和数据存储介质并不包括连接、载波波形、信号或者其它暂时介质,而是针对于非暂时性、有形存储介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上文的组合也应当包括在计算机可读介质的保护范围之内。
指令可以由诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它等同的集成电路或者分立逻辑电路之类的一个或多个处理器来执行。因此,如本文所使用的术语“处理器”可以指代适合于实现本文所描述的技术的任何前述结构或者任何其它结构。此外,在一些方面,本文所描述的功能,可以在配置用于实现编码和解码的专用硬件和/或软件模块内提供,也可以并入到组合的编解码器中。此外,可以将这些技术全部地实现在一个或多个电路或者逻辑单元中。
本公开内容的技术可以用多种多样的设备或装置来实现,其包括无线手持装置、集成电路(IC)或者IC集(例如,芯片集)。在本公开内容中描述了各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,而并不是必需要求由不同的硬件单元进行实现。而是,如上所述,可以将各个单元组合在编解码器硬件单元中,或者结合适当的软件和/或固件,通过包括如上所述的一个或多个处理器的互操作硬件单元的集合来提供。
描述了各种例子。这些和其它例子落入所附权利要求书的保护范围之内。
Claims (30)
1.一种用于发送视频数据的方法,包括:
由源设备捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;
由所述源设备生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中,所述多个命令帧中的每个相应的命令帧包括:
与所述至少一个令牌相对应的至少一个图形命令的标识;以及
与所述至少一个令牌相关联的一个或多个参数;以及
由所述源设备输出所述多个命令帧,以及用于向宿设备进行传输。
2.根据权利要求1所述的方法,其中,生成所述多个命令帧中的特定命令帧包括:
响应于确定在所述特定命令帧中包括的所述一个或多个参数中的至少一个参数包括引用数据的指针,对所述指针进行解引用,使得所述特定命令帧包括所述数据,
其中,所述特定命令帧还包括:对所述特定命令帧中包括的所述一个或多个参数的长度的指示。
3.根据权利要求1所述的方法,其中,所述多个命令帧中的特定命令帧还包括:
所述一个或多个纹理元素中的至少一个纹理元素。
4.根据权利要求1所述的方法,其中,所述多个命令帧中的特定命令帧与所述多个令牌中的特定令牌相对应,以及其中,生成所述特定命令帧包括:至少通过以下方式,生成与所述特定令牌相对应的特定图形命令的标识:
对所述特定图形命令的命令类型的指示进行编码;以及
对针对所述特定图形命令的偏移值进行编码。
5.根据权利要求1所述的方法,还包括:
由所述源设备至少通过以下方式,判断所述宿设备是否支持接收具有命令帧形式的视频数据:由所述源设备生成第一实时流协议(RTSP)消息,以及用于向所述宿设备进行传输,其中所述第一RTSP消息包括针对所述宿设备的GET_PARAMETER请求,以指示所述宿设备是否支持接收具有命令帧形式的视频;
响应于所述源设备确定所述宿设备支持接收具有命令帧形式的视频数据,由所述源设备生成第二RTSP消息,以及用于向所述宿设备进行传输,其中所述第二RTSP消息包括SET_PARAMETER请求,所述SET_PARAMETER请求指示所述宿设备能够将所述多个命令帧输出至的一个或多个端口地址。
6.根据权利要求1所述的方法,其中,输出所述多个命令帧包括:由所述源设备使用传输控制协议(TCP)或用户数据报协议(UDP)输出所述多个命令帧,以及用于经由链路向所述宿设备进行传输。
7.根据权利要求6所述的方法,其中,所述链路是无线链路,所述方法还包括:
响应于确定所述无线链路的质量度量不满足质量门限,由所述源设备使用所述TCP输出所述多个命令帧,以及用于经由所述无线链路向所述宿设备进行无线传输;以及
响应于确定所述无线链路的所述质量度量满足所述质量门限,由所述源设备使用所述UDP输出所述多个命令帧,以及用于经由所述无线链路向所述宿设备进行无线传输。
8.根据权利要求1所述的方法,还包括:
向所述多个命令帧应用内容保护。
9.一种源设备,包括:
存储器;
通信单元;以及
一个或多个处理器,其被配置为:
捕获能连同一个或多个纹理元素一起来渲染成视频数据的图形命令的多个令牌;
生成多个命令帧,其中每个命令帧与所述多个令牌中的至少一个令牌相对应,其中,所述多个命令帧中的每个相应的命令帧包括:
与所述至少一个令牌相对应的至少一个图形命令的标识;以及
与所述至少一个令牌相关联的一个或多个参数;以及
向所述通信单元输出所述多个命令帧,以及用于向宿设备进行传输。
10.根据权利要求9所述的源设备,其中,所述一个或多个处理器被配置为通过至少以下方式,生成所述多个命令帧中的特定命令帧:
响应于确定在所述特定命令帧中包括的所述一个或多个参数中的至少一个参数包括引用数据的指针,对所述指针进行解引用,使得所述特定命令帧包括所述数据,
其中,所述特定命令帧还包括:对所述特定命令帧中包括的所述一个或多个参数的长度的指示。
11.根据权利要求9所述的源设备,其中,所述多个命令帧中的特定命令帧还包括:
所述一个或多个纹理元素中的至少一个纹理元素。
12.根据权利要求9所述的源设备,其中:
所述多个命令帧中的特定命令帧与所述多个令牌中的特定令牌相对应,
所述一个或多个处理器被配置为:至少通过生成与所述特定令牌相对应的特定图形命令的标识,来生成所述特定命令帧,以及
所述一个或多个处理器被配置为至少通过以下方式,生成所述特定图形命令的所述标识:
对所述特定图形命令的命令类型的指示进行编码;以及
对针对所述特定图形命令的偏移值进行编码。
13.根据权利要求9所述的源设备,其中,所述一个或多个处理器还被配置为:
至少通过以下方式,判断所述宿设备是否支持接收具有命令帧形式的视频数据:生成第一实时流协议(RTSP)消息,以及用于向所述宿设备进行传输,其中所述第一RTSP消息包括针对所述宿设备的GET_PARAMETER请求,以指示所述宿设备是否支持接收具有命令帧形式的视频;
响应于确定所述宿设备支持接收具有命令帧形式的视频数据,生成第二RTSP消息,以及用于向所述宿设备进行传输,其中所述第二RTSP消息包括SET_PARAMETER请求,所述SET_PARAMETER请求指示所述宿设备能够将所述多个命令帧输出至的一个或多个端口地址。
14.根据权利要求9所述的源设备,其中,所述一个或多个处理器被配置为至少通过以下方式来输出所述多个命令帧:使用传输控制协议(TCP)或用户数据报协议(UDP)输出所述多个命令帧,以及用于经由链路向所述宿设备进行传输。
15.一种用于接收视频数据的方法,包括:
由宿设备以及从源设备接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中,所述多个命令帧中的每个相应的命令帧包括:
与所述至少一个令牌相对应的至少一个图形命令的标识;以及
与所述至少一个令牌相关联的一个或多个参数;
由所述宿设备基于所述多个命令帧,重建所述多个令牌;以及
由所述宿设备基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
16.根据权利要求15所述的方法,其中,重建所述多个令牌中的特定令牌包括:
确定与所述至少一个令牌相关联的所述一个或多个参数中的每个相应参数的长度;
基于所确定的长度,提取所述一个或多个参数中的每个相应参数。
17.根据权利要求15所述的方法,其中,所述多个命令帧中的特定命令帧还包括:所述一个或多个纹理元素中的至少一个纹理元素。
18.根据权利要求15所述的方法,其中:
所述多个命令帧中的特定命令帧与所述多个令牌中的特定令牌相对应,
与所述特定令牌相对应的所述特定图形命令的标识包括:所述特定图形命令的命令类型的指示、以及针对所述特定图形命令的偏移值,以及
所述方法还包括:基于所述命令类型的所述指示和针对所述特定图形命令的所述偏移值,确定所述特定图形命令。
19.根据权利要求15所述的方法,还包括:
由所述宿设备以及从所述源设备接收第一实时流协议(RTSP)消息,其中所述第一RTSP消息包括针对所述宿设备的GET_PARAMETER请求,以指示所述宿设备是否支持接收具有命令帧形式的视频;以及
由所述宿设备生成第二RTSP消息,以及用于向所述源设备进行传输,其中所述第二RTSP消息包括GET_PARAMETER请求,所述GET_PARAMETER请求指示所述宿设备支持接收具有命令帧形式的视频。
20.根据权利要求15所述的方法,其中,接收所述多个命令帧包括:由所述宿设备以及从所述源设备使用传输控制协议(TCP)或用户数据报协议(UDP),经由链路接收所述多个命令帧。
21.根据权利要求20所述的方法,其中,所述链路是无线链路,所述方法还包括:
在所述无线链路的质量度量不满足质量门限的情况下,由所述宿设备以及从所述源设备使用所述TCP,经由所述无线链路接收所述多个命令帧;以及
在所述无线链路的所述质量度量满足所述质量门限的情况下,由所述宿设备使用所述UDP,经由所述无线链路接收所述多个命令帧。
22.根据权利要求15所述的方法,还包括:
去除对所述多个命令帧的内容保护。
23.一种宿设备,包括:
存储器;
通信模块;以及
一个或多个处理器,其被配置为:
从源设备以及经由所述通信模块接收多个命令帧,其中每个命令帧与多个令牌中的至少一个令牌相对应,其中,所述多个命令帧中的每个相应的命令帧包括:
与所述至少一个令牌相对应的至少一个图形命令的标识;以及
与所述至少一个令牌相关联的一个或多个参数;
基于所述多个命令帧,重建所述多个令牌;以及
基于所述多个令牌和一个或多个纹理元素,对视频数据进行渲染。
24.根据权利要求23所述的宿设备,其中,所述一个或多个处理器被配置为至少通过以下方式,重建所述多个令牌中的特定令牌:
确定与所述至少一个令牌相关联的所述一个或多个参数中的每个相应参数的长度;
基于所确定的长度,提取所述一个或多个参数中的每个相应参数。
25.根据权利要求23所述的宿设备,其中,所述多个命令帧中的特定命令帧还包括:所述一个或多个纹理元素中的至少一个纹理元素。
26.根据权利要求23所述的宿设备,其中:
所述多个命令帧中的特定命令帧与所述多个令牌中的特定令牌相对应,
与所述特定令牌相对应的所述特定图形命令的标识包括:所述特定图形命令的命令类型的指示、以及针对所述特定图形命令的偏移值,以及
所述一个或多个处理器还被配置为:基于所述命令类型的所述指示和针对所述特定图形命令的所述偏移值,确定所述特定图形命令。
27.根据权利要求23所述的宿设备,其中,所述一个或多个处理器还被配置为:
从所述源设备接收第一实时流协议(RTSP)消息,其中所述第一RTSP消息包括针对所述宿设备的GET_PARAMETER请求,以指示所述宿设备是否支持接收具有命令帧形式的视频;以及
生成用于向所述源设备传输的第二RTSP消息,其中所述第二RTSP消息包括GET_PARAMETER请求,所述GET_PARAMETER请求指示所述宿设备支持接收具有命令帧形式的视频。
28.根据权利要求23所述的宿设备,其中,所述一个或多个处理器被配置为:至少通过使用传输控制协议(TCP)或用户数据报协议(UDP),经由无线链路从所述源设备接收所述多个命令帧,来接收所述多个命令帧。
29.根据权利要求28所述的宿设备,其中:
在所述无线链路的质量度量不满足质量门限的情况下,所述一个或多个处理器被配置为:使用所述TCP经由所述无线链路从所述源设备接收所述多个命令帧;以及
在所述无线链路的所述质量度量满足所述质量门限的情况下,所述一个或多个处理器被配置为:使用所述UDP经由所述无线链路从所述源设备接收所述多个命令帧。
30.根据权利要求23所述的宿设备,其中,所述一个或多个处理器还被配置为去除对所述多个命令帧的内容保护。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462045421P | 2014-09-03 | 2014-09-03 | |
US62/045,421 | 2014-09-03 | ||
US14/530,338 | 2014-10-31 | ||
US14/530,338 US9558718B2 (en) | 2014-09-03 | 2014-10-31 | Streaming video data in the graphics domain |
PCT/US2015/045721 WO2016036504A2 (en) | 2014-09-03 | 2015-08-18 | Streaming video data in the graphics domain |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106605411A true CN106605411A (zh) | 2017-04-26 |
Family
ID=55403190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580046934.1A Pending CN106605411A (zh) | 2014-09-03 | 2015-08-18 | 对图形域中的视频数据进行流式传输 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9558718B2 (zh) |
EP (1) | EP3189665A2 (zh) |
CN (1) | CN106605411A (zh) |
WO (1) | WO2016036504A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115861030A (zh) * | 2023-01-31 | 2023-03-28 | 南京砺算科技有限公司 | 图形处理器及其系统变量生成方法、介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160188279A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Corporation | Mode-switch protocol and mechanism for hybrid wireless display system with screencasting and native graphics throwing |
WO2016184532A1 (en) * | 2015-05-18 | 2016-11-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods, receiving device and sending device for managing a picture |
CN105245528B (zh) * | 2015-10-20 | 2019-02-12 | 北京小鸟听听科技有限公司 | 一种基于用户数据报协议(udp)的控制命令传输方法、发送端和接收端 |
US11228754B2 (en) | 2016-05-06 | 2022-01-18 | Qualcomm Incorporated | Hybrid graphics and pixel domain architecture for 360 degree video |
US12120208B2 (en) * | 2018-06-25 | 2024-10-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Communication protocol discover method in constrained application protocol (COAP) |
CN110519632B (zh) * | 2019-07-30 | 2021-08-20 | 华为技术有限公司 | 投屏方法及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050237330A1 (en) * | 2002-01-08 | 2005-10-27 | John Stauffer | Virtualization of graphics resources and thread blocking |
CN101715119A (zh) * | 2008-09-29 | 2010-05-26 | 英特尔公司 | 显示端口兼容接口中的协议扩展 |
US20110107388A1 (en) * | 2009-11-02 | 2011-05-05 | Samsung Electronics Co., Ltd. | Method and apparatus for providing user input back channel in audio/video system |
CN102461128A (zh) * | 2009-05-04 | 2012-05-16 | 苹果公司 | 基于接近而配对移动设备的方法和装置 |
WO2012106644A1 (en) * | 2011-02-04 | 2012-08-09 | Qualcomm Incorporated | Low latency wireless display for graphics |
US20130179605A1 (en) * | 2012-01-06 | 2013-07-11 | Qualcomm Incorporated | Bi-directional tunneling via user input back channel for wireless displays |
CN103404104A (zh) * | 2011-01-21 | 2013-11-20 | 高通股份有限公司 | 用于无线显示器的用户输入返回信道 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9412332B2 (en) * | 2013-12-20 | 2016-08-09 | Blackberry Limited | Method for wirelessly transmitting content from a source device to a sink device |
-
2014
- 2014-10-31 US US14/530,338 patent/US9558718B2/en not_active Expired - Fee Related
-
2015
- 2015-08-18 CN CN201580046934.1A patent/CN106605411A/zh active Pending
- 2015-08-18 WO PCT/US2015/045721 patent/WO2016036504A2/en active Application Filing
- 2015-08-18 EP EP15762813.2A patent/EP3189665A2/en not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050237330A1 (en) * | 2002-01-08 | 2005-10-27 | John Stauffer | Virtualization of graphics resources and thread blocking |
CN101715119A (zh) * | 2008-09-29 | 2010-05-26 | 英特尔公司 | 显示端口兼容接口中的协议扩展 |
CN102461128A (zh) * | 2009-05-04 | 2012-05-16 | 苹果公司 | 基于接近而配对移动设备的方法和装置 |
US20110107388A1 (en) * | 2009-11-02 | 2011-05-05 | Samsung Electronics Co., Ltd. | Method and apparatus for providing user input back channel in audio/video system |
CN103404104A (zh) * | 2011-01-21 | 2013-11-20 | 高通股份有限公司 | 用于无线显示器的用户输入返回信道 |
WO2012106644A1 (en) * | 2011-02-04 | 2012-08-09 | Qualcomm Incorporated | Low latency wireless display for graphics |
US20130179605A1 (en) * | 2012-01-06 | 2013-07-11 | Qualcomm Incorporated | Bi-directional tunneling via user input back channel for wireless displays |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115861030A (zh) * | 2023-01-31 | 2023-03-28 | 南京砺算科技有限公司 | 图形处理器及其系统变量生成方法、介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016036504A3 (en) | 2016-04-28 |
US20160063964A1 (en) | 2016-03-03 |
US9558718B2 (en) | 2017-01-31 |
EP3189665A2 (en) | 2017-07-12 |
WO2016036504A2 (en) | 2016-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106605411A (zh) | 对图形域中的视频数据进行流式传输 | |
CN104199927A (zh) | 数据处理方法及数据处理装置 | |
US20240305860A1 (en) | Method and apparatus for playing back video at multiple-speed, electronic device and storage medium | |
US11893963B2 (en) | Wireless programmable media processing system | |
US9575863B2 (en) | Apparatus of wireless gigabit display extension (WDE) device | |
WO2017107426A1 (zh) | 图像处理方法、装置、设备及非易失性计算机存储介质 | |
US9251731B2 (en) | Multi-sampling anti-aliasing compression by use of unreachable bit combinations | |
CN105404788A (zh) | 一种分布式医疗诊断系统 | |
JP2016103288A (ja) | カラーバッファ圧縮 | |
US9854256B2 (en) | Apparatus and method of processing images in an electronic device | |
CN108769684A (zh) | 基于WebP图像压缩算法的图像处理方法以及装置 | |
CN108174084A (zh) | 全景视频处理方法及终端设备 | |
CN108027715B (zh) | 图形命令令牌的修改 | |
JP6389279B2 (ja) | ディスプレイインターフェースの帯域幅変調 | |
CN107211018A (zh) | 调整媒体流化的质量等级 | |
CN104735170B (zh) | 一种接口装置、移动终端、数据交互系统及方法、装置 | |
CN107077747A (zh) | 远程显示的图形命令压缩 | |
CN109167973A (zh) | 一种智能安全帽的图像传输方法及装置 | |
CN103577361B (zh) | 一种数据传输装置及电子设备 | |
CN114520918A (zh) | 数据传输方法及相关设备 | |
CN106576165A (zh) | 纹理元素流式传输 | |
CN117938823A (zh) | 云游戏画面分享方法、装置、设备及存储介质 | |
CN115373746A (zh) | 渲染指令的抓取方法、装置、电子设备及存储介质 | |
CN110389731A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170426 |