Patent Publication Number: US-11656831-B2

Title: Implementing wireless displays that handle rotation and/or portrait-first sinks

Description:
This patent arises from a continuation of U.S. patent application Ser. No. 16/701,216, filed Dec. 3, 2019, which is a continuation of U.S. patent application Ser. No. 14/865,469, filed Sep. 25, 2015, now U.S. Pat. No. 10,528,315. U.S. patent application Ser. Nos. 16/701,216 and 14/865,469 are hereby incorporated herein by reference in their entireties. 
    
    
     BACKGROUND 
     This relates generally to wireless displays. 
     Wireless display technology generally involves a source which transmits data for display on a sink such as a monitor or display device. Most sinks today only work in the landscape or sideways mode. Current wireless specifications have tended to not address the rotation problem explicitly. 
     In fact, version 1.1 of the WiFi Display Technical Specification (2012) (available from Wi-Fi Alliance) only allows for landscape mode (landscape first mode) to be transmitted over the air in all scenarios and rotation is largely ignored. Several scenarios have come up that require a more explicit definition: 1) Portrait-first displays (displays that scan content in portrait order) are increasingly common, 2) Sink devices allow for windowed or docked mode of operation i.e., device orientation could be different than content orientation, 3) a single Source could be transmitting content to more than one Sink—and some of the Sinks could be rotated while others are not, 4) the Source itself could be rotated, 5) content in the Source could have either Landscape or Portrait orientation, and 6) many of the Sinks (e.g., TVs, or notebook computers or tablet devices) have Graphics Processing Units (GPUs) in them that allow them to transform received content if the framework allows it. 
     A naïve implementation could result in source content being aspect ratio scaled twice. It may be scaled once for a landscape presentation and then another time for a portrait presentation, resulting in suboptimal output at the display. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Some embodiments are described with respect to the following figures: 
         FIG.  1    is a flow chart for source implemented sequence according to one embodiment; 
         FIG.  2    is a flow chart for a sink implemented sequence according to one embodiment; 
         FIG.  3    is a schematic depiction showing how landscape oriented content can be handled by a source on the left and a sink on the right according to one embodiment; 
         FIG.  4    is a schematic depiction of how portrait oriented content can be handled with a source on the left and a sink on the right according to one embodiment; and 
         FIG.  5    is a schematic depiction of how rotated portrait source to landscape rotate at the sink according to one embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     Rotation between landscape and portrait modes or vice versa may be supported in wireless display interfaces coupled to a platform by having the platform sense rotation change in the platform or in the display. This enables counter rotation of the frame buffer or rotated rendering of the content to ensure that content is presented upright to the end user. 
     A source is a device that supports streaming multimedia content over a wireless link to a sink. A sink is a device that receives and renders multimedia content from a source over a wireless link. Rendering is the process of generating an image or sound. A source may be any processor based device including a personal computer, a cellular telephone, a set-top box or a game console as examples. The sink may include a display or monitor to display images and/or play sounds. The sink may be a processor based device such as a tablet that docks (i.e. connects to) to the source which acts as a host, for example. 
     Thus, referring to  FIG.  1   , a sequence in a source  10  may be implemented in software, firmware and/or hardware. In software and firmware embodiments it may be implemented by computer executed instructions stored in one or more non-transitory computer readable media such as magnetic, optical or semiconductor storage. Content typically in software and firmware embodiments, a sequence may be implemented in a storage associated with a host or platform based central processing unit. 
     The sequence  10 , shown in  FIG.  1    begins by detecting a rotation-capable sink as indicated at block  12 . Rotation is an optional sink feature in some embodiments. If a sink does not support rotation, then all transmissions from the source are in landscape orientation. A rotation-capable sink may be identified by a parameter that indicates support for the rotation feature, in one embodiment. A parameter value of “supported” implies that the sink is capable of receiving contents of portrait or landscape buffers and has the ability to perform rotation and/or aspect ratio scaling to present the content in appropriate manner. 
     A source may query the sink&#39;s rotation capability as part of capability discovery phase of the wireless display protocol. For example, this could in an M3 request and sent in the same M3 request as the video-formats, in an embodiment following the Wi-Fi Display Technical Specification (Version 1.1); the sink&#39;s rotation capability is queried during initial real time streaming protocol (RTSP) capability exchange. A sink that does not support rotation returns a parameter value of “none.” Non-compliant sinks may ignore the rotation capability request entirely. 
     An RTSP M3 message occurs after sending an RTSP M2 response including a status code of RTSP OK to the sink, See Wi-Fi Display Specification at 6.4.3. The source sends an RTSP M3 request to the sink to query the sink&#39;s attributes and capabilities. The M3 request contains an RTSP GET_PARAMETER request. The parameters that may be requested initially include a rotation capability in one embodiment. The sink responds to the M3 message indicating an appropriate status code. If the M3 response message contains a status code of RTSP OK, the RTSP M3 response contains the values of the requested parameters. 
     A Source could simultaneously be transmitting content to its local integrated display, and to one or more sink devices connected wirelessly or through wired interfaces. In order to present content to the local integrated display or to any wired displays that might be attached and active, the Source performs appropriate counter-rotation and aspect ratio scaling based on detection of current orientation of these displays. These transformations are independent of what the Source would target for the Sink devices connected wirelessly. The latter is always in the native resolution of the content unless there is insufficient bandwidth to transmit the content—even after any compression scheme permitted under the wireless display standard; in such cases, the Source will downscale the content (maintaining its aspect ratio) before compression. 
     If the source detects a rotation capable wireless sink at diamond  12 , it does not perform any transformation of the content and transmits the content in its native or original orientation as indicated in block  14 . 
     On the other hand, if the wireless sink is not detected to be rotation capable at diamond  12 , the video is transmitted as landscape content with appropriate aspect ratio scaling as shown at block  18 , Thus, where the Source video was in portrait mode, it would be converted to landscape mode after pillar-boxing before transmission and if it was already in landscape mode, it is simply transmitted. 
     Referring to  FIG.  2   , a sink-based sequence  20  may be implemented in software, firmware and/or hardware. In software and firmware embodiments it may be implemented by computer executed instructions stored in one or more non-transitory computer readable media such as magnetic, optical or semiconductor storage. 
     The sink-based sequence  20  begins by receiving and decoding video from the source as indicated in block  22 . Then if possible, the sink rotates the content to either the landscape or portrait mode as appropriate for the sink, as indicated in block  24 . Finally, aspect ratio scaling is implemented as indicated in block  26 . It involves scaling the content to the desired size, such as full screen, window size or some other size while maintaining the aspect ratio of the content. This may involve introduction of black borders next to the content in a combination of letter boxing or pillar boxing formats depending on the aspect ratio of the content and dimensions of the display window. In the following discussion, to further illustrate the concepts described herein, three scenarios are depicted in  FIGS.  3 ,  4  and  5   . The source is shown on the left in  FIG.  3    and the sink is shown on the right in  FIGS.  3 - 5   . 
     In the first scenario, shown in  FIG.  3   , landscape oriented content A is presented on the landscape source and on a portrait-first or a rotated landscape sink. A rotated landscape display is a landscape display rotated 90° (it could also be 270 degrees, and that case is handled in a similar manner). The source performs aspect ratio scaling in display/presentation pipeline  30  (for the source&#39;s own display, not for the sink&#39;s display) but does not perform any rotation before display of video C on source screen  32 . Given wireless display protocols usually include an encoder block, the Source device encodes, (in encoder  34 ), the content A in the content&#39;s native (landscape) orientation B and its native size (i.e. without scaling). 
     The sink decodes a landscape buffer in decoder  36 . If the sink has a rotated landscape display (case a) and wishes to show the received content A full screen, it performs aspect ratio scaling and rotation in display pipe  38  before presenting the docked video E on landscape screen  40   a . However, if the sink has a portrait-first display (case b) and wishes to show the received content full screen, it only performs aspect ratio scaling of the docked video F for sink portrait-first screen  40   b.    
     The second scenario, shown in  FIG.  4   , involves portrait content in the above ( FIG.  3   ). In  FIG.  4   , the source performs aspect ratio scaling in display pipe  30  (for its own display only) topology but does not perform any rotation before display of docked video H on source screen  32 . It encodes the content A in the content&#39;s native (portrait) orientation G and at its native resolution, in encoder  34 . 
     The sink decodes a portrait buffer in decoder  36  to produce video G. If the sink has a rotated landscape display (case a) and wishes to show the received content full screen, it performs aspect ratio scaling and rotation in display pipe  38  before presenting the video I on landscape sink screen  40   a . And if the sink has a portrait-first display (case b) and wishes to show the received content full screen, it only performs aspect ratio scaling of video J for portrait sink screen  40   b.    
     In the third scenario, rotated landscape/portrait source to rotated portrait/landscape sink operation is illustrated in  FIG.  5   .  FIG.  5    shows the way that landscape and portrait content is handled both at the source and at the sink. 
     Beginning with the source, the content A at the source is in portrait mode K. In option a, the local monitor  32   a  at the source is rotated landscape and in option b, the local monitor  32   b  at the source is portrait. Thus, the source rotates and aspect ratio scales the video K to video M in display pipe  30  for the rotated landscape monitor in case a. In case b, the source only performs aspect ratio scaling to video L in display pipe  30  for a portrait monitor  32   b.    
     If the content in the source is in instead in landscape mode X, in case a, the source performs rotation and aspect ratio scaling to create docked video N for the rotated landscape monitor  32   a . In case b, the source performs aspect ratio scaling to docked video Y for the portrait monitor  32   b.    
     With respect to the sink, in case a, the sink monitor  40   c  is landscape and in case b the sink monitor  40   d  is rotated portrait. 
     The sink receives the content A in its native orientation and resolution, either portrait G or landscape P, At 1A, the sink performs aspect ratio scaling of the received portrait content to create docked video Q. At 1B, the sink performs rotation and aspect ratio scaling of the received content to produce docked video R, At 2A, the sink performs aspect ratio scaling of the received landscape contents to produce video S. At 2B, the sink performs rotation and aspect ratio scaling of the received portrait content to provide video T. 
     In each case described above, a rotated wireless sink and/or portrait-first wireless sink is supported without any notification or status updates for the sink&#39;s current orientation. In some embodiments, the source does not perform any rotation or aspect ratio scaling for the sink. The sink can show source content in windowed or docked (i.e. displayed within a landscape screen in smaller portrait mode or with a portrait screen in smaller landscape mode) fashion without artifacts, and regardless of orientation of source or sink. In some embodiments the above operation is activated regardless of whether the source&#39;s content is landscape or portrait oriented. Scaling twice (once in the source and once in the sink, both for the sink display) is advantageously avoided in some embodiments. 
     In some embodiments, the Sink could determine the destination window size (which could be full screen) based on Sink specific mechanisms such as user input through on-screen display (OSD), remote, (in the case of a personal computer (PC) Sink) desktop user interface (UI), or through Sink-specific policies. For example, a particular Sink could have a policy to always show the received content full screen, while another Sink could always start by showing all received content in a window of a default size until such time as a user changes it to full screen or some other size. Similarly, default policies on a notebook computer, a tablet device, or a game console (when these are Sink devices) could be determined by such factors as current orientation of the device, application that is receiving the content, or user settings on that device. 
     When connected to a rotation capable sink, the source encodes macroblocks left to right both for landscape and portrait content in one embodiment. 
     A source may need to downscale the content before encoding if the resolution of the content is greater than the maximum resolution capability of the source or sink. 
     It is also possible that the content may be changing its orientation dynamically. One example involves starting of a portrait video stream after transmission of landscape video. The decoder can determine current resolution, and therefore orientation, of the video stream through metadata that is part of the encoded bitstream. However, if the wireless display specification requires, an alternative explicit notification to the sink for resolution change, that requirement may also apply here. 
     Some embodiments may apply conventional display technologies including the Wi-Fi Display Technical Specification, the WiGig Display Extension (WDE), Wireless Graphics Alliance (Version 1.1), or other wireless display technologies. 
     While a single source and a single sink are shown here, multiple sources and sinks may be coupled wirelessly in some embodiments. In scenarios where a given Source is streaming content to multiple Sinks, each Sink could make its own choice on how to display the same received content without the Source having to perform multiple transformations and consequently transmitting the same logical content multiple times. 
     The following clauses and/or examples pertain to further embodiments: 
     One example embodiment may be a method of transmitting video wirelessly from a source comprising detecting a rotation capable sink, in response to detecting a rotation capable sink, wirelessly transmitting video content in the content&#39;s native orientation, and in response to detecting a sink that is not rotation capable, wirelessly transmitting video content in landscape orientation. The method may also include wherein detecting includes obtaining a parameter from the sink indicative of whether the sink is rotation capable. The method may also include detecting using an M3 request. The method may also include rotating received content and aspect ratio scaling content for display on the source. The method may also include supporting a rotated wireless sink without notifications or status updates related to the sink&#39;s current orientation. The method may also include wherein no rotation or aspect ratio scaling is performed by the source for the sink. The method may also include refraining from scaling video sent for display on a sink. 
     Another example embodiment may be a method of wirelessly receiving video in a sink comprising decoding received video, performing rotation of the received video, and performing aspect ratio scaling of the received video. The method may also include receiving a request from a source for a rotation capability. The method may also include responding to the request by indicating whether the sink supports rotation. 
     In another example embodiment an apparatus comprising a processor to detect a rotation capable sink, in response to detecting a rotation capable sink, wirelessly transmit video content in the content&#39;s native orientation, and in response to detecting a sink that is not rotation capable, wirelessly transmitting video content in landscape orientation, and a transmitter coupled to said processor. The apparatus may include said processor to detect by obtaining a parameter from the sink indicative of whether the sink is rotation capable. The apparatus may include said processor to detect using an M3 request. The apparatus may include said processor to rotate received content and aspect ratio scaling content for display on the source. The apparatus may include said processor to support a rotated wireless sink without notifications or status updates related to the sink&#39;s current orientation. The apparatus may include wherein no rotation or aspect ratio scaling is performed by the source for the sink. The apparatus may include said processor to refrain from scaling video sent for display on a sink. 
     In yet another example embodiment may include an apparatus comprising a processor to decode received video, perform rotation of the received video, and perform aspect ratio scaling of the received video, and a storage coupled to said processor. The apparatus may include said processor to receive a request from a source for a rotation capability. The apparatus may include said processor to respond to the request by indicating whether the sink supports rotation. 
     Another example embodiment may be one or more non-transitory computer readable media storing instructions to perform a sequence comprising detecting a rotation capable sink, in response to detecting a rotation capable sink, wirelessly transmitting video content in the content&#39;s native orientation, and in response to detecting a sink that is not rotation capable, wirelessly transmitting video content in landscape orientation. The media may include wherein detecting includes obtaining a parameter from the sink indicative of whether the sink is rotation capable. The media may include said sequence including detecting using an M3 request. The media may include said sequence including rotating received content and aspect ratio scaling content for display on the source. The media may include said sequence including supporting a rotated wireless sink without notifications or status updates related to the sink&#39;s current orientation. The media may include said sequence wherein no rotation or aspect ratio scaling is performed by the source for the sink. The media may include said sequence including refraining from scaling video sent for display on a sink. 
     In another example embodiment may be one or more non-transitory computer readable media storing instructions to perform a sequence comprising decoding received video, performing rotation of the received video, and performing aspect ratio scaling of the received video. The media may include said sequence including receiving a request from a source for a rotation capability. The media may include said sequence including responding to the request by indicating whether the sink supports rotation. 
     References throughout this specification to “one embodiment” or “an embodiment” mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one implementation encompassed within the present disclosure. Thus, appearances of the phrase “one embodiment” or “in an embodiment” are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be instituted in other suitable forms other than the particular embodiment illustrated and all such forms may be encompassed within the claims of the present application. 
     While a limited number of embodiments have been described, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this disclosure.