CONTENT PROVISIONING FOR WIRELESS BACK CHANNEL
This application claims priority to U.S. Provisional Application No. 61/439,809 entitled “WI-FI DISPLAY REVERSE CHANNEL SETUP AND INPUT DATA ENCAPSULATION,” filed Feb. 4, 2011, and U.S. Provisional Application No. 61/579,059 entitled “CONTENT PROVISIONING FOR WIRELESS BACK CHANNEL,” filed Dec. 22, 2011, the entire contents of which are hereby incorporated by reference in their entirety. This disclosure relates to techniques for transmitting data between a wireless source device and a wireless sink device. Wireless display (WD) or Wi-Fi Display (WFD) systems include a source device and one or more sink devices. The source device and each of the sink devices may be either mobile devices or wired devices with wireless communication capabilities. As mobile devices, for example, one or more of the source device and the sink devices may comprise mobile telephones, portable computers with wireless communication cards, personal digital assistants (PDAs), portable media players, or other flash memory devices with wireless communication capabilities, including so-called “smart” phones and “smart” pads or tablets, or other types of wireless communication devices. As wired devices, for example, one or more of the source device and the sink devices may comprise televisions, desktop computers, monitors, projectors, and the like, that include wireless communication capabilities. The source device sends media data, such as audio video (AV) data, to one or more of the sink devices participating in a particular media share session. The media data may be played back at both a local display of the source device and at each of the displays of the sink devices. More specifically, each of the participating sink devices renders the received media data on its screen and audio equipment. The techniques of this disclosure generally relate to communication between a wireless source device and a wireless sink device. For example, certain aspects of this disclosure relate to enabling a wireless source device to render content at a wireless sink device using wireless communication. According to some aspects of the disclosure, the wireless source device may share graphical content for rendering at the wireless sink device using wireless communication techniques. In addition, aspects of this disclosure relate to enabling the wireless sink device to act as a second display for the wireless source device. In addition, aspects of this disclosure relate to enabling the source device to offload an application being executed by the source device, such that the application is then executed by the sink device. In an example, aspects of this disclosure relate to a method comprising: determining, by a source device, that display data rendered by the source device comprises one or more displayable graphical objects; in response to determining an event, selecting, by the source device, a set of the one or more graphical objects for rendering at a sink device; generating, by the source device, configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and sending, by the source device, the configuration data to the sink device. In another example, aspects of this disclosure relate to a wireless source device comprising: a memory storing instructions; one or more processors configured to execute the instructions, wherein upon execution of the instructions the one or more processors cause: determining that display data rendered by the source device comprises one or more displayable graphical objects; in response to determining an event, selecting a set of the one or more graphical objects for rendering at a sink device; generating configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and sending the configuration data to the sink device. In another example, aspects of this disclosure relate to a computer-readable storage medium storing instructions that upon execution by one or more processors of a wireless source device cause the one or more processors to: determine that display data rendered by the source device comprises one or more displayable graphical objects; in response to determining an event, select a set of the one or more graphical objects for rendering at a sink device; generate configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and send the configuration data to the sink device. In another example, aspects of this disclosure relate to a wireless source device comprising: means for determining that display data rendered by the source device comprises one or more displayable graphical objects; means for selecting, in response to determining an event, a set of the one or more graphical objects for rendering at a sink device; means for generating configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and means for sending the configuration data to the sink device. In another example, aspects of this disclosure relate to a method comprising: receiving, by a sink device, configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event; and rendering, by the sink device, the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. In another example, aspects of this disclosure relate to a wireless sink device comprising: a memory storing instructions; one or more processors configured to execute the instructions, wherein upon execution of the instructions the one or more processors cause: receiving configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event; and rendering the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. In another example, aspects of this disclosure relate to a computer-readable storage medium storing instructions that upon execution by one or more processors of a wireless sink device cause the one or more processors to: upon receiving configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event, render the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. In another example, aspects of this disclosure relate to a wireless sink device comprising: means for receiving configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event; and means for rendering the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. Wireless display (WD) systems may include a wireless display (WD) source and one or more wireless display sinks In general, a wireless display source (“source device”) may send audio video (AV) data to a wireless display sink (“sink device”), which may render the received AV data at a terminal device. The AV data, in some examples, may include a sequence of frames (or pictures) played in rapid succession, which may also include associated audio frames, although sometimes audio frames are not included. In some cases, the source device may be prompted to respond to user inputs applied at a sink device. In such an interactive application, the user inputs applied at the sink device may be sent back to the source device. In one example, a reverse channel architecture may be implemented to enable the wireless display system to transmit the user inputs applied at the sink device to the source device. The reverse channel architecture may include upper layer messages for transporting user inputs and lower layer frames for negotiating user interface capabilities at the sink device and the source device. The wireless display reverse channel may reside above the Internet Protocol (IP) transport layer between a wireless display sink and the wireless display source. To promote reliable transmission and in sequence delivery to user inputs, the wireless display reverse channel may be configured run on top of TCP/IP. In some cases, there may be a mismatch between the user input interfaces at a sink device and a source device. To resolve the problems induced by such a mismatch and to promote a good user experience under such circumstances, user input interface capability negotiations occur between a sink device and a source device. Aspects of this disclosure relate to enabling a source device to share graphical content for rendering at a sink device. In addition, aspects of this disclosure relate to enabling a sink device to act as a second display for a source device. Aspects of this disclosure also relate to enabling a source device to offload an application being executed by the source device, such that the application is then executed by a sink device. In the example of In addition to rendering audio/video data 121 locally via display 122 and speaker 123, audio/video encoder 124 of source device 120 can encode audio/video data 121, and transmitter/receiver unit 126 can transmit the encoded data over communication channel 150 to sink device 160. Transmitter/receiver unit 166 of sink device 160 receives the encoded data, and audio/video decoder 164 decodes the encoded data and outputs the decoded data via display 162 and speaker 163. In this manner, the audio and video data being rendered by display 122 and speaker 12 can be simultaneously rendered by display 162 and speaker 163. The audio data and video data may be arranged in frames, and the audio frames may be time-synchronized with the video frames when rendered. Audio/video encoder 124 and audio/video decoder 164 may implement any number of audio and video compression standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, Part 10, Advanced Video Coding (AVC), or the newly emerging high efficiency video coding (HEVC) standard, sometimes called the H.265 standard. Generally speaking, audio/video decoder 164 is configured to perform the reciprocal coding operations of audio/video encoder 124. Although not shown in Although, Display 122 and display 162 may comprise any of a variety of video output devices such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, a light emitting diode (LED) display, an organic light emitting diode (OLED) display, or another type of display device. In these or other examples, the display device may be an emissive display or a transmissive display. Speaker 123 may comprise any of a variety of audio output devices such as headphones, a single-speaker system, a multi-speaker system, or a surround sound system. Additionally, although display 122 and speaker 123 are shown as part of source device 120 and display 162 and speaker 163 are shown as part of sink device 160, source device 120 and sink device 160 may in fact be a system of devices. As one example, display 162 may be a television, speaker 163 may be a surround sound system, and decoder 164 may be part of an external box connected, either wired or wirelessly, to display 162 and speaker 163. In other instances, sink device 160 may be a single device, such as a tablet computer or smartphone. In still other cases, source device 160 and sink device 120 are similar devices, e.g., both being smartphones, tablet computers, or the like. In this case, one device may operate as the source and the other may operate as the sink. These rolls may even be reversed in subsequent communication sessions. Transmitter/receiver unit 126 and transmitter/receiver unit 166 may each include various mixers, filters, amplifiers and other components designed for signal modulation, as well as one or more antennas and other components designed for transmitting and receiving data. Communication channel 150 generally represents any suitable communication medium, or collection of different communication media, for transmitting video data from source device 120 to sink device 160. Communication channel 150 is usually a relatively short-range communication channel, similar to WiFi, Bluetooth, or the like. However, communication channel 150 is not necessarily limited in this respect, and may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wireless and wired media. In other examples, communication channel 150 may even form part of a packet-based network, such as a local area network, a wide-area network, or a global network such as the Internet. Source device 120 and sink device 160 may communicate over communication channel using a communications protocol such as a standard from the IEEE 802.11 family of standards. In addition to decoding and rendering data received from source device 120, sink device 160 can also receive user inputs from user input device 167. User input device 167 may, for example, be a keyboard, mouse, trackball or track pad, touch screen, voice command recognition module, another type of human device interface (HDI) unit or device, or any other such user input device. User input processing module 168, formats user input commands received by user input device 167 into a data packet structure that source device 120 is capable of interpreting. Such data packets are transmitted by transmitter/receiver 166 to source device 120 over communication channel 150. Transmitter/receiver unit 126 receives the data packets, and A/V control module parses the data packets to interpret the user input command that was received by user input device 167. Based on the command received in the data packet, A/V control module 125 can change the content being encoded and transmitted. In this manner, a user of sink device 160 can control the audio payload data and video payload data being transmitted by source device 120 remotely and without directly interacting with source device 120. Examples of the types of commands a user of sink device 160 may transmit to source device 120 include commands for rewinding, fast forwarding, pausing, and playing audio and video data, as well as commands for zooming, rotating, scrolling, and so on. Users may also make selections, from a menu of options for example, and transmit the selection back to source device 120. Commands may be application-specific or platform-specific, or may comprise general commands applicable to multiple platforms or multiple applications. Source device 120 can respond to user inputs applied at sink device 160. In such an interactive application setting, the user inputs applied at sink device 160 may be sent back to the wireless display source over communication channel 150. In one example, a reverse channel architecture, also referred to as a user interface back channel (UIBC) may be implemented to enable sink device 160 to transmit the user inputs applied at sink device 160 to source device 120. The reverse channel architecture may include upper layer messages for transporting user inputs and lower layer frames for negotiating user interface capabilities at sink device 160 and source device 120. The UIBC may reside over the Internet Protocol (IP) transport layer between sink device 160 and source device 120. To promote reliable transmission and in sequence delivery of data packets containing user input data, UIBC may be configured run on top of other packet-based communication protocols such as the transmission control protocol/internet protocol (TCP/IP) or the user datagram protocol (UDP). In some cases, there may be a mismatch between the user input interfaces located at source device 120 and sink device 160. To resolve the potential problems created by such a mismatch and to promote a good user experience under such circumstances, user input interface capability negotiation may occur between source device 120 and sink device 160 prior to establishing a communication session. The UIBC may be designed to transport various types of user input data, including cross-platform user input data. For example, source device 120 may run the iOS® operating system, while sink device 160 runs another operating system such as Android® or Windows®. Regardless of platform, UIPM 168 can encapsulate received user input in a form understandable to A/V control module 125. A number of different types of user input formats may be supported by the UIBC so as to allow many different types of source and sink devices to exploit the protocol. Generic input formats may be defined, and platform specific input formats may both be supported, thus providing flexibility in the manner in which user input can be communicated between source device 120 and sink device 160 by the UIBC. In the example of Aspects of this disclosure relate to enabling source device 120 to share graphical content for rendering at sink device 160. In addition, aspects of this disclosure relate to enabling sink device 160 to act as a second display for source device 120. Aspects of this disclosure also relate to enabling source device 120 to offload an application being executed by source device 120, such that the application is then executed by sink device 160. To share graphical content, source device 120 may initially establish a wireless connection with sink device 160. In some examples, sink device 160 may include a Graphics Processing Unit (GPU) for rendering graphics data. Accordingly, in response to establishing the wireless connection, source device 120 may receive information that describes the GPU of sink device 160 (e.g., such as information describing GPU capabilities). As source device 120 renders graphical content, source device 120, using techniques of this disclosure, may generate configuration data that represents graphical objects included in the graphical content. In general, configuration data may represent graphical objects included in the graphical content without providing actual pixel-level data (e.g., pixel values of a particular colorspace). Graphical objects may include, for example, objects comprised of one or more geometric primitives that form a shape for display. Configuration data may require fewer bits than pixel-level display data to represent graphical content. In some examples, configuration data may be similar to OpenGL instructions or instructions of another GPU language. The configuration data may also include graphical commands to modify or manipulate graphical objects. Thus, instead of mirroring display data at a pixel-level, graphical objects (e.g., overlays) and/or graphics commands may be extracted and extended over a wireless connection from source device 120 to sink device 160. According to the techniques of this disclosure, source device 120 may send configuration data to sink device 160 rather than pixel-level display data. Upon receiving the configuration data, sink device 160 (e.g., the GPU of sink device 160) may use the configuration data to render graphical content at sink device 160. In this way, the source/sink system can leverage the rendering capabilities of sink device 160, rather than relaying solely on source device 120 to process and produce all pixel-level data. In some examples, source device 120 may also generate configuration data that includes commands to modify or manipulate the graphical objects at sink device 160. For instance, if a user provides a user input to source device 120 to increase the size of a graphical object, source device 120, using techniques of the disclosure, may generate configuration data that describes the increase in size of the graphical object. The configuration may be sent to sink device 160, which may use the configuration data to modify and/or manipulate the corresponding graphical object (e.g., increase the size of the graphical object). That is, upon receiving the configuration data from source device 120, the GPU of sink device 160 may use the configuration data to modify graphical content rendered at sink device 160. According to aspects of this disclosure, as noted above, the configuration data describing the modification to the graphical content may require fewer bits than updated pixel-level display data to represent changes to graphical content. According to some examples, source device 120 may generate configuration data based on the capabilities of sink device 160. That is, for example, source device 120 may generate configuration data that is interpretable by and/or specific to the capabilities and design of the GPU of sink device 160. Thus, source device 120 may share more of the rendering load with sink device 160 having relatively powerful rendering capabilities than sink device 160 having relatively simplistic rendering capabilities. In some examples, techniques of the present disclosure may enable source device 120 and sink devices 160 to operate in various different modes. For instance, one mode may cause source device 120 to generate and send configuration data to sink device 160, while in a different mode source device 120 may send pixel-level display data. In another mode, source device 120 may send a combination of pixel-level display data for some graphical objects and configuration data for other graphical objects. In this way, aspects of this disclosure may be implemented to conserve power at source device 120 (e.g., due to a reduced computational load associated with rendering pixel-level data). In addition, aspects of this disclosure may be implemented to use less bandwidth, as the configuration data typically comprises fewer bits than pixel-level data. In some examples, latency associated with rendering and/or modifying graphical content at sink device 160 (from source device 120) may also be reduced. Moreover, the techniques of the disclosure may provide improved display quality of graphical content shared between source device 120 and sink device 160 in situations in which source device 120 and sink device 160 have different rendering capabilities. That is, in some instances, source device 120 may have a lower display resolution than sink device 160. In an example for purposes of illustration, source device 120 may be a mobile device (e.g., a tablet or smartphone), while sink device 160 may be a larger television (e.g., a liquid crystal display (LCD) or other television). In such an example, if sink device 160 receives pixel-level display data from source device 120, sink device 160 may be required to upscale or otherwise modify the pixel-level graphical content to the native resolution of sink device 160. According to aspects of this disclosure, sink device 160 may instead receive configuration data (e.g., rather than pixel-level data). Thus, sink device 160 may use the configuration data to generate graphical content in the native resolution of sink device 160, thereby providing a higher quality display of the graphical content. As noted above, aspects of this disclosure also relate to enabling sink device 160 to act as a second display, which may also be referred to as a “secondary display” for source device 120. That is, rather than mirroring all content from source device 120 to sink device 160, aspects of this disclosure relate to sharing some content between source device 120 and sink device 160 such that sink device 160 may display certain graphical objects not displayed at source device 120. In some examples, a user may select one or more graphical objects being rendered at source device 120 to be shared for rendering on sink device 160. In other examples, an application may automatically determine one or more graphical objects being rendered at source device 120 to be shared for rendering on sink device 160. In some examples, source device 120 may map a display resolution of source device 120 to sink device 160. For example, when source device 120 and sink device 160 initially communicate, the devices may exchange display resolution information. Accordingly, source device 120 may select different sets of graphical objects for rendering at sink device 160 based on the resolution of sink device 160. For instance, if the resolution of sink device 160 is relatively high, source device 120 may send a first set of graphical objects to sink device 160. If, however, the resolution of sink device 160 is relatively low, source device 120 may send a second set of graphical objects to sink device 160 that includes fewer graphical objects than the first set. More generally, using techniques of the disclosure, source device 120 may determine, based on any capability (e.g., resolution) of sink device 160, which graphical elements are sent from source device 120 to sink device 160. In one example, source device 120 (e.g., a mobile device such as a tablet or smartphone) may render video data associated with a movie using a movie player application being executed by source device 120. The user may provide user input that causes source device 120 to share video data representing the movie on sink device 160 (e.g., a LCD television). The user input may additionally cause graphical controls of the movie player to be rendered at source device 120, without being rendered at sink device 160. In this way, techniques of the present disclosure may enable source device 120 to render a first portion of graphical content on source device 120 and a second portion of the graphical content on sink device 160. To render the second portion of the graphical content at sink device 160, source device 120 may generate configuration data usable by sink device 160 to render the graphical content. By sending the configuration data to sink device 160, the second portion of graphical content may be rendered at sink device 160. As noted above, aspects of this disclosure also relate to enabling source device 120 to offload an application being executed by source device 120, such that the application is then executed by sink device 160. For example, source device 120 may be initially executing a particular application. The user may then provide a user input to offload execution of the application onto sink device 160. In such examples, source device 120 may request certain information from sink device 160 regarding the capabilities of sink device 160. In response to the request, sink device 160 may send information to source device 120 that indicates capabilities of sink device 160. For instance, capabilities may include the operating system of sink device 160, applications installed on sink device 160, and data indicating the computing performing of sink device 160. In an example, in response to a request to offload an application to sink device 160, source device 120 may determine that another instance of the application running on source device 120 is also stored on sink device 160. In such examples, source device 120 may send information to sink device 160 that identifies the application. The information may further include data previously used by the application on source device 120 that will be used by the application on sink device 160. Upon receiving the application information, sink device 160 may execute the application on sink device 160. That is, sink device 160 may launch the application at sink device 160. In addition, sink device 160 may use the application information received from source device 120 to transition to the same state as the application being executed by source device 120. In some examples, one or more processes associated with offloading applications or other processes from source device 120 to sink device 160 may be performed automatically. For example, rather, source device 120 and sink device 160 may exchange information regarding the capabilities of sink device 160 automatically. That is, in an example, sink device 160 may send information regarding the capabilities of sink device 160 automatically upon establishing a connection with source device 120. Additionally or alternatively, rather than waiting for a request from a user to offload an application to sink device 160, source device 120 may automatically may an application offload determination. For example, upon establishing a connection and determining the capabilities of sink device 160, source device 120 may offload certain applications or other processes that source device 120 determines that sink device 160 has the ability to execute. In some examples, source device 120 may communicate with more than one sink device 160 (e.g., as shown and described, for example, with respect to Thus, in general, it should be understood that the techniques of this disclosure may be extended to support multiple source and/or sink devices. That is, according to aspects of this disclosure, as described above with respect to While sink device 160A and sink device 160B have been assigned like numerals, it should be understood that, in some examples, sink device 160A and sink device 160B may have different capabilities and/or perform different functions. For example, in some configurations, sink device 160A may be a primary sink device and sink device 160B may be a secondary sink device. In such a configuration, sink device 160A and sink device 160B may be coupled, and sink device 160A may display video data while sink device 160B outputs corresponding audio data. Source device 220 may also locally process and display A/V data. In particular display processor 235 may process video data to be displayed on local display 222, audio processor 236 may process audio data for output on speaker 223. As described above with reference to source device 120 of Processor 231 of In addition to rendering audio and video data, sink device 360 can also receive user input through touch display interface 336. Although the example of Processor 331 of The coded data for each data stream may be multiplexed with pilot data using orthogonal frequency division multiplexing (OFDM) techniques. A wide variety of other wireless communication techniques may also be used, including but not limited to time division multi access (TDMA), frequency division multi access (FDMA), code division multi access (CDMA), or any combination of OFDM, FDMA, TDMA and/or CDMA. Consistent with The modulation symbols for the data streams are then provided to a TX MIMO processor 420, which may further process the modulation symbols (e.g., for OFDM). TX MIMO processor 420 can then provides NT modulation symbol streams to NT transmitters (TMTR) 422 Each transmitter 422 may receive and process a respective symbol stream to provide one or more analog signals, and further conditions (e.g., amplifies, filters, and upconverts) the analog signals to provide a modulated signal suitable for transmission over the MIMO channel. NT modulated signals from transmitters 422 At receiver system 450, the transmitted modulated signals are received by NR antennas 452 A receive (RX) data processor 460 then receives and processes the NR received symbol streams from NR receivers 454 based on a particular receiver processing technique to provide NT “detected” symbol streams. The RX data processor 460 then demodulates, deinterleaves and decodes each detected symbol stream to recover the traffic data for the data stream. The processing by RX data processor 460 is complementary to that performed by TX MIMO processor 420 and TX data processor 414 at transmitter system 410. A processor 470 that may be coupled with a memory 472 periodically determines which pre-coding matrix to use. The reverse link message may comprise various types of information regarding the communication link and/or the received data stream. The reverse link message is then processed by a TX data processor 438, which also receives traffic data for a number of data streams from a data source 436, modulated by a modulator 480, conditioned by transmitters 454 At transmitter system 410, the modulated signals from receiver system 450 are received by antennas 424, conditioned by receivers 422, demodulated by a demodulator 440, and processed by a RX data processor 442 to extract the reserve link message transmitted by the receiver system 450. Processor 430 then determines which pre-coding matrix to use for determining the beamforming weights then processes the extracted message. In the example shown in Thus, when a user provides a user input at display 122, source device 120 may generate one or more events that correspond to the user input. In some examples, display 122 may be designed to simultaneously recognize touches at more than one point, a feature commonly referred to as “multi-touch.” Multi-touch displays may separately identify and interpret touches in different areas of the screen. In addition to display 122, according to the example shown in In some examples, display 162 of sink device 160 may also be touch sensitive. That is, for example, display 162 may also be a capacitive, resistive, or other type of touch panel that allows a user to provide user input to source device 120. In some examples, display 162 may comprise a multi-touch display. Moreover, as shown in the example of According to aspects of this disclosure, source device 120 may send one or more events to sink device 160 (represented by line 510). For example, source device 120 may send certain events associated with user input at source device 120 to sink device 160. That is, the events may correspond to user input provided to display 122 and/or provided via HIDs 502. Likewise, in some examples, sink device 160 may send certain events associated with user input at sink device 160 to source device 120. Such events may correspond to user input provided to display 162 and/or provided via HIDs 506. In some examples, source device 120 may use Real-time Transport Protocol (RTP) and User Datagram Protocol (UDP) to send events to sink device 160. In other examples, source device 120 may use Transmission Control Protocol (TCP) and Internet Protocol (IP) to send events to sink device 160. In some examples, sink device 160 may render data from source device 120 on only a portion of display 162 of sink device. That is, for example, sink device 160 may designate an area 514 in which to render graphical content 518 from source device 120. In some examples, as described in greater detail below, graphical content 518 may be displayed on display 162 in the same or in a different resolution than on display 122. Moreover, in some examples, sink device 160 may simultaneously render and display other graphical content 522 that is natively generated at sink device 160 on another portion of display 162. As shown in In some examples, source device 120 may also generate configuration data that includes commands to modify or manipulate graphical content 518 rendered at sink device 160. For instance, if a user provides a user input to source device 120 (e.g., via display 122) to increase the size of a graphical object, source device 120, using techniques of the disclosure may generate configuration data that describes the increase in size. This configuration may be sent to sink device 160, which may use the configuration data to modify and/or manipulate the corresponding graphical content 514. That is, upon receiving the configuration data from source device 120, sink device 160 may use the configuration data to increase the size of the graphical content 518. In another example, graphical content 518 may be associated with a motion picture or other video. In this example, source device 120 may render graphical content 518 using an application being executed by source device 120. According to aspects of this disclosure, a user may provide user input that causes source device 120 to share graphical content 518 included in the video with sink device 160. The user input may additionally cause graphical controls 526 of the application to be rendered at source device 120, without being rendered at sink device 160. In this way, techniques of the present disclosure may enable source device 120 to render a first portion of graphical content on source device 120 and a second portion of the graphical content on sink device 160. To render the second portion of the graphical content at sink device 160, source device 120 may generate configuration data usable by sink device 160 to render the graphical content. By sending the configuration data to sink device 160, the second portion of graphical content may be rendered at sink device 160. Moreover, the techniques of the disclosure may provide improved display quality of graphical content shared between source device 120 and sink device 160 in situations in which source device 120 and sink device 160 have different rendering capabilities. In the example shown in As shown in Source device 120 may further generate configuration data based at least in part on the set of the one or more graphical objects (604). In general, configuration data may represent graphical objects without including pixel-level data (e.g., pixel values). Configuration data may require fewer bits than pixel-level data to represent the graphical objects. In some examples, configuration data may be similar to OpenGL instructions or instructions of another GPU language. According to aspects of this disclosure, the configuration data may be usable by sink device 160 to render representations of the graphical objects in the set of one or more graphical objects. In some examples, source device 120 may generate configuration data based on display parameters of sink device 160. Display parameters may include, for example, display resolution, color bit depth, GPU type, or any other parameters that indicate display capabilities of sink device 160. Thus, source device 120 may generate configuration data that is interpretable by and/or specific to the capabilities and design of a GPU of sink device 160. In some examples, source device 120 may share more of the rendering load with sink device 160 having relatively powerful rendering capabilities than sink device 160 having relatively simplistic rendering capabilities. Source device 120 may generate any combination of configuration data and pixel-level data for transmission to sink device 160. For example, source device 120 and sink device 160 may operate in various modes. One mode may cause source device 120 to generate only configuration data that represents graphical objects for transmission to sink device 160. Another mode may cause source device 120 to generate only pixel-level display data for transmission to sink device 160. In another mode, source device 120 may generate a combination of pixel-level data for some graphical objects and configuration data for other graphical objects for transmission to sink device 160. After generating the configuration data, source device 120 may send the configuration data to sink device 160 (606). As described in greater detail with respect to As shown in In some examples, sink device 160 may render the representations of the set of graphical objects using the configuration data (702). That is, for example, sink device 160 may interpret the configuration data to generate pixel-level data using the configuration data. In some examples, sink device 160 may render the representations based at least in part on one or more display parameters associated with the sink device 160 (702). Display parameters may include display resolution, color bit depth, GPU type, or any other parameters that indicate display capabilities of sink device 160. In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium. By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media. Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements. The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a codec hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware. Various examples have been described. These and other examples are within the scope of the following claims. In one example, this disclosure describes a method that includes, in an example, determining, by a source device, that display data rendered by the source device comprises one or more displayable graphical objects. The method also includes in response to determining an event, selecting, by the source device, a set of the one or more graphical objects for rendering at a sink device. The method also includes generating, by the source device, configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device. The method also includes sending, by the source device, the configuration data to the sink device. 1. A method comprising:
determining, by a source device, that display data rendered by the source device comprises one or more displayable graphical objects; in response to determining an event, selecting, by the source device, a set of the one or more graphical objects for rendering at a sink device; generating, by the source device, configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and sending, by the source device, the configuration data to the sink device. 2. The method of receiving, by the source device, information specifying processing capabilities of a graphics processing unit (GPU) of the sink device; and generating, by the source device, the configuration data based at least in part on the capabilities of the GPU of the sink device. 3. The method of 4. The method of 5. The method of receiving, by the source device and from the sink device, a display resolution associated with the sink device; generating, by the source device, a mapping between the display resolution associated with the sink device and a display resolution associated with the source device; and generating, by the source device, the configuration data based at least in part on the mapping between the display resolution associated with the sink device and a display resolution associated with the source device. 6. The method of generating, by the source device, configuration data to render the set of the one or more graphical objects only at the sink device. 7. The method of rendering, by the source device, the first group of displayable graphical objects, and wherein the second group of displayable graphical objects comprise the set of the one or more graphical objects for rendering at the sink device. 8. The method of receiving, at a touch sensitive screen of the source device, a first indication of user input; in response to receiving the first indication, generating, by the source device, a first event based at least in part on the first indication that is associated with a first timestamp; receiving, by the source device and from the sink device, a second event that is associated with a second timestamp; determining, by the source device, whether the second timestamp represents an earlier time than the first timestamp; and when the second timestamp represents the earlier time than the first timestamp, generating, by the source device, configuration data based at least in part on the first timestamp and the second timestamp. 9. The method of executing, by the source device, a first application; determining, by the source device, an indication to execute the first application at the sink device; in response to determining the indication, determining, by the source device, that a second application is executable by the sink device, wherein the second application includes at least some functionality that is equivalent to functionality of the first application; and generating, by the source device, the configuration data to cause the sink device execute the second application. 10. A wireless source device comprising:
a memory storing instructions; one or more processors configured to execute the instructions, wherein upon
execution of the instructions the one or more processors cause: determining that display data rendered by the source device comprises one or more displayable graphical objects; in response to determining an event, selecting a set of the one or more graphical objects for rendering at a sink device; generating configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and sending the configuration data to the sink device. 11. The wireless source device of receiving information specifying processing capabilities of a graphics processing unit (GPU) of the sink device; and generating the configuration data based at least in part on the capabilities of the GPU of the sink device. 12. The wireless source device of 13. The wireless source device of 14. The wireless source device of receiving, from the sink device, a display resolution associated with the sink device; generating a mapping between the display resolution associated with the sink device and a display resolution associated with the source device; and generating the configuration data based at least in part on the mapping between the display resolution associated with the sink device and a display resolution associated with the source device. 15. The wireless source device of generating configuration data to render the set of the one or more graphical objects only at the sink device. 16. The wireless source device of rendering the first group of displayable graphical objects, and wherein the second group of displayable graphical objects comprise the set of the one or more graphical objects for rendering at the sink device. 17. The wireless source device of receiving, at a touch sensitive screen of the source device, a first indication of user input; in response to receiving the first indication, generating a first event based at least in part on the first indication that is associated with a first timestamp; receiving, from the sink device, a second event that is associated with a second timestamp; determining whether the second timestamp represents an earlier time than the first timestamp; and when the second timestamp represents the earlier time than the first timestamp, generating configuration data based at least in part on the first timestamp and the second timestamp. 18. The wireless source device of executing a first application; determining an indication to execute the first application at the sink device; in response to determining the indication, determining that a second application is executable by the sink device, wherein the second application includes at least some functionality that is equivalent to functionality of the first application; and generating the configuration data to cause the sink device execute the second application. 19. A computer-readable storage medium storing instructions that upon execution by one or more processors of a wireless source device cause the one or more processors to:
determine that display data rendered by the source device comprises one or more displayable graphical objects; in response to determining an event, select a set of the one or more graphical objects for rendering at a sink device; generate configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and send the configuration data to the sink device. 20. The computer readable storage medium of upon receiving information specifying processing capabilities of a graphics processing unit (GPU) of the sink device, generate the configuration data based at least in part on the capabilities of the GPU of the sink device. 21. The computer readable storage medium of 22. The computer readable storage medium of 23. The computer readable storage medium of upon receiving, from the sink device, a display resolution associated with the sink device, generate a mapping between the display resolution associated with the sink device and a display resolution associated with the source device; and generate the configuration data based at least in part on the mapping between the display resolution associated with the sink device and a display resolution associated with the source device. 24. The computer readable storage medium of 25. The computer readable storage medium of 26. The computer readable storage medium of upon receiving, at a touch sensitive screen of the source device, a first indication of user input, and in response to receiving the first indication, generate a first event based at least in part on the first indication that is associated with a first timestamp; upon receiving, from the sink device, a second event that is associated with a second timestamp, determine whether the second timestamp represents an earlier time than the first timestamp; and when the second timestamp represents the earlier time than the first timestamp, generate configuration data based at least in part on the first timestamp and the second timestamp. 27. The computer readable storage medium of execute a first application; determine an indication to execute the first application at the sink device; in response to determining the indication, determine that a second application is executable by the sink device, wherein the second application includes at least some functionality that is equivalent to functionality of the first application; and generate the configuration data to cause the sink device execute the second application. 28. A wireless source device comprising:
means for determining that display data rendered by the source device comprises one or more displayable graphical objects; means for selecting, in response to determining an event, a set of the one or more graphical objects for rendering at a sink device; means for generating configuration data based at least in part on the set of the one or more graphical objects, wherein the configuration data is usable by the sink device to render representations of graphical objects in the set of one or more graphical objects based at least in part on one or more display parameters associated with the sink device; and means for sending the configuration data to the sink device. 29. The wireless source device of means for receiving information specifying processing capabilities of a graphics processing unit (GPU) of the sink device; and means for generating the configuration data based at least in part on the capabilities of the GPU of the sink device. 30. The wireless source device of 31. The wireless source device of 32. The wireless source device of means for receiving, from the sink device, a display resolution associated with the sink device; means for generating a mapping between the display resolution associated with the sink device and a display resolution associated with the source device; and means for generating the configuration data based at least in part on the mapping between the display resolution associated with the sink device and a display resolution associated with the source device. 33. The wireless source device of means for generating configuration data to render the set of the one or more graphical objects only at the sink device. 34. The wireless source device of means for rendering the first group of displayable graphical objects, and wherein the second group of displayable graphical objects comprise the set of the one or more graphical objects for rendering at the sink device. 35. The wireless source device of means for receiving, at a touch sensitive screen of the source device, a first indication of user input; means for generating, in response to receiving the first indication, a first event based at least in part on the first indication that is associated with a first timestamp; means for receiving a second event that is associated with a second timestamp; means for determining whether the second timestamp represents an earlier time than the first timestamp; and means for generating configuration data based at least in part on the first timestamp and the second timestamp, when the second timestamp represents the earlier time than the first timestamp. 36. The wireless source device of means for executing a first application; means for determining an indication to execute the first application at the sink device; means for determining, in response to determining the indication, that a second application is executable by the sink device, wherein the second application includes at least some functionality that is equivalent to functionality of the first application; and means for generating the configuration data to cause the sink device execute the second application. 37. A method comprising:
receiving, by a sink device, configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event; and rendering, by the sink device, the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. 38. The method of receiving, by the sink device, a request for information specifying processing capabilities of a graphics processing unit (GPU) of the sink device; and sending, by the sink device, the information specifying processing capabilities of a graphics processing unit (GPU) of the sink device to the source device. 39. The method of sending, by the sink device, a display resolution of the wireless sink device to the wireless source device. 40. The method of receiving, at a touch-sensitive screen of the wireless sink device, an indication of user input; in response to receiving the indication, generating, by the sink device, an event associated with a timestamp that indicates at least a time when the indication of user input was received; and sending, by the sink device to the wireless source device, the event. 41. The method of sending, by the sink device and to the source device, an indication of one or more applications executable by the sink device; receiving, by the sink device, configuration data to cause the sink device execute at least one of the one or more applications executable by the sink device; and executing, by the sink device, the at least one application. 42. A wireless sink device comprising:
a memory storing instructions; one or more processors configured to execute the instructions, wherein upon
execution of the instructions the one or more processors cause: receiving configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event; and rendering the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. 43. The wireless sink device of receiving a request for information specifying processing capabilities of a graphics processing unit (GPU) of the sink device; and sending the information specifying processing capabilities of a graphics processing unit (GPU) of the sink device to the source device. 44. The wireless sink device of sending a display resolution of the wireless sink device to the wireless source device. 45. The wireless sink device of receiving, at a touch-sensitive screen of the wireless sink device, an indication of user input; in response to receiving the indication, generating an event associated with a timestamp that indicates at least a time when the indication of user input was received; and sending, to the wireless source device, the event. 46. The wireless sink device of sending, to the source device, an indication of one or more applications executable by the sink device; receiving configuration data to cause the sink device execute at least one of the one or more applications executable by the sink device; and executing the at least one application. 47. A computer-readable storage medium storing instructions that upon execution by one or more processors of a wireless sink device cause the one or more processors to:
upon receiving configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event, render the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. 48. The computer readable storage medium of upon receiving a request for information specifying processing capabilities of a graphics processing unit (GPU) of the sink device, send the information specifying processing capabilities of a graphics processing unit (GPU) of the sink device to the source device. 49. The computer readable storage medium of 50. The computer readable storage medium of upon receiving, at a touch-sensitive screen of the wireless sink device, an indication of user input, and in response to receiving the indication, generate an event associated with a timestamp that indicates at least a time when the indication of user input was received; and send, to the wireless source device, the event. 51. The computer readable storage medium of send, to the source device, an indication of one or more applications executable by the sink device; upon receiving configuration data to cause the sink device execute at least one of the one or more applications executable by the sink device, execute the at least one application. 52. A wireless sink device comprising:
means for receiving configuration data usable by the sink device to render representations of a set of graphical objects, wherein the set of graphical objects is selected by a source device in response to an event; and means for rendering the representations of the set of graphical objects using the configuration data based at least in part on one or more display parameters associated with the sink device. 53. The wireless sink device of means for receiving a request for information specifying processing capabilities of a graphics processing unit (GPU) of the sink device; and means for sending the information specifying processing capabilities of a graphics processing unit (GPU) of the sink device to the source device. 54. The wireless sink device of means for sending a display resolution of the wireless sink device to the wireless source device. 55. The wireless sink device of means for receiving, at a touch-sensitive screen of the wireless sink device, an indication of user input; means for, generating, in response to receiving the indication, an event associated with a timestamp that indicates at least a time when the indication of user input was received; and means for, sending, to the wireless source device, the event. 56. The wireless sink device of means for sending, to the source device, an indication of one or more applications executable by the sink device; means for receiving configuration data to cause the sink device execute at least one of the one or more applications executable by the sink device; and means for executing the at least one application.TECHNICAL FIELD
BACKGROUND
SUMMARY
BRIEF DESCRIPTION OF DRAWINGS
DETAILED DESCRIPTION
![](/ipUS20130033496A1/0.png)
![](/ipUS20130033496A1/1.png)
![](/ipUS20130033496A1/2.png)
![](/ipUS20130033496A1/3.png)
![](/ipUS20130033496A1/4.png)
![](/ipUS20130033496A1/5.png)
![](/ipUS20130033496A1/6.png)
![](/ipUS20130033496A1/7.png)