Slice size mapping control for foveated decoding
By dynamically compressing video frames in wireless VR video streaming applications, and adjusting the compression level according to the distance from each pixel block to the focus area, the video quality degradation caused by wireless link quality fluctuations is solved, and high-quality wireless VR video streaming is achieved.
Patent Information
- Application Number
- CN201980081665.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-12-14
- Filing Date
- 2019-12-13
- Publication Date
- 2025-04-01
- Estimated Expiration
- 2039-12-13
AI Technical Summary
In wireless VR video streaming applications, under the requirements of high resolution and high frame rate, the link quality of traditional wireless links is prone to fluctuating due to environmental changes, resulting in a decline in video quality. When VR video is compressed to transmit through low-bandwidth wireless links, the video quality is degraded and the user experience is affected.
By dynamically compressing the video frames in the transmitter, the compression level is adjusted according to the distance from each pixel block to the focus area, thereby adapting to changes in link quality while maintaining video quality.
It realizes that in high-resolution and high frame rate wireless VR video streaming applications, maintaining video quality while adapting to link quality fluctuations, improving user experience.
Smart Images

Figure CN113170145B_ABST
Abstract
Description
Background Art
[0001] Related technical description
[0002] A wireless communication link can be used to send a video stream from a computer (or other device) to a virtual reality (VR) headset (or head-mounted display (HMD)). Wirelessly transmitting a VR video stream eliminates the need for a cable connection between the computer and the user wearing the HMD, allowing the user to move without restriction. Traditional cable connections between a computer and an HMD typically include one or more data cables and one or more power cables. Allowing the user to move around without a cable tether and without the need to consciously avoid cables creates a more immersive VR system. Wirelessly transmitting a VR video stream also allows VR systems to be used in a wider range of applications than previously possible.
[0003] Wireless VR video streaming applications typically have high resolution and high frame rate (which equates to high data rate). However, the link quality of the wireless link used to stream VR video has capacity characteristics that can vary from system to system and fluctuate due to changes in the environment (e.g., obstacles, other transmitters, radio frequency (RF) noise). VR video content is typically viewed through a lens to facilitate a high field of view for the user and create an immersive environment. Compressing VR video for transmission over a low-bandwidth wireless link while minimizing any video quality degradation perceived by the end user can be challenging. BRIEF DESCRIPTION OF THE DRAWINGS
[0004] The advantages of the methods and mechanisms described herein may be better understood by referring to the following description taken in conjunction with the accompanying drawings, in which:
[0005] Figure 1 It is a block diagram of one implementation of the system.
[0006] Figure 2 is a block diagram of one implementation of a wireless virtual reality (VR) system.
[0007] Figure 3 is a block diagram of one implementation of control logic for determining how much compression to apply to a block of a frame being encoded.
[0008] Figure 4 is an illustration of one implementation of concentric regions outside the focused region of a half-frame corresponding to different compression levels.
[0009] Figure 5 is an illustration of one implementation of cropping to scale the target tile size.
[0010] Figure 6 is an illustration of another implementation of cropping that scales the target tile size.
[0011] Figure 7 is a generalized flow chart illustrating one implementation of a method for adjusting a compression level based on a distance from a focal region.
[0012] Figure 8 is a generalized flow chart illustrating one implementation of a method for selecting an amount of compression to apply to a block based on a distance from a focus region.
[0013] Fig. 9 is a generalized flow chart illustrating one implementation of a method for adjusting the size of a focus region based on changes in link conditions. DETAILED DESCRIPTION
[0014] In the following description, numerous specific details are set forth to provide a thorough understanding of the methods and mechanisms presented herein. However, it will be appreciated by those of ordinary skill in the art that various implementations may be practiced without these specific details. In some cases, well-known structures, components, signals, computer program instructions, and techniques are not shown in detail to avoid making the methods described herein unclear. It will be appreciated that for simplicity and clarity of illustration, the elements shown in the drawings may not be drawn to scale. For example, the size of some elements may be enlarged relative to other elements.
[0015] Various systems, devices, methods, and computer-readable media for adjusting a compression level for compressing blocks of a frame based on the distance of each block to a focus region are disclosed herein. In one implementation, a system includes a transmitter that transmits a video stream to a receiver via a wireless link. The transmitter compresses the frames of the video stream before transmitting them to the receiver. For each pixel block of a given frame, the transmitter selects a compression level to be applied to the block based on the distance from the block to the focus region within the given frame, wherein the compression level increases with increasing distance from the focus region. As used herein, the term "focus region" is defined as the portion of a half-frame that each eye is expected to focus on when a user views the frame. In some cases, the "focus region" is determined at least in part based on an eye tracking sensor that detects the location within the half-frame where the eye is pointing. In one implementation, the size of the focus region varies according to one or more factors (e.g., link quality). The transmitter encodes each block using the selected compression level and then transmits the encoded block to the receiver for display.
[0016] Reference now Figure 1, a block diagram of one implementation of the system 100 is shown. The system 100 includes at least a first communication device (e.g., a transmitter 105) and a second communication device (e.g., a receiver 110) operable to communicate wirelessly with each other. It should be noted that the transmitter 105 and the receiver 110 may also be referred to as a transceiver. In one implementation, the transmitter 105 and the receiver 110 communicate wirelessly in an unlicensed 60 gigahertz (GHz) band. For example, in this implementation, the transmitter 105 and the receiver 110 communicate in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 802.11ad standard (i.e., WiGig). In other implementations, the transmitter 105 and the receiver 110 may communicate wirelessly in other frequency bands and / or by complying with other wireless communication protocols (whether in accordance with standards or otherwise). For example, other wireless communication protocols that may be used include, but are not limited to: A protocol used with various wireless local area networks (WLANs), WLANs based on the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard (ie, WiFi), mobile telecommunication standards (eg, CDMA, LTE, GSM, WiMAX), and the like.
[0017] Wireless communication devices operating in the extremely high frequency (EHF) band, such as the 60 GHz band, are able to transmit and receive signals using relatively small antennas. However, such signals are subject to high atmospheric attenuation compared to transmissions on lower frequency bands. In order to reduce the effects of this attenuation and increase the communication range, EHF devices typically incorporate beamforming techniques. For example, the IEEE 802.11ad specification details a beamforming training procedure (also known as sector-level scanning (SLS)), during which a wireless station tests and negotiates with a remote station for the best transmit and / or receive antenna combination. In various implementations, the transmitter 105 and the receiver 110 perform a periodic beamforming training procedure to determine the optimal transmit and receive antenna combination for wireless data transmission.
[0018] In one implementation, the transmitter 105 and the receiver 110 have directional transmit and receive capabilities, and communications exchanged over the link utilize directional transmit and receive. Each directional transmission is a transmission that is beamformed so as to be directed toward a selected transmit sector of the antenna 140. Similarly, directional reception is performed using antenna settings optimized for receiving incoming transmissions from a selected receive sector of the antenna 160. Link quality may vary depending on the transmit sector selected for transmission and the receive sector selected for reception. The selected transmit sector and receive sector are determined by the system 100 performing a beamforming training procedure.
[0019] The transmitter 105 and the receiver 110 represent any type of communication device and / or computing device. For example, in various implementations, the transmitter 105 and / or the receiver 110 may be a mobile phone, a tablet, a computer, a server, a head mounted display (HMD), a television, another type of display, a router, or other type of computing or communication device. In one implementation, the system 100 executes a virtual reality (VR) application for wirelessly transmitting frames of a rendered virtual environment from the transmitter 105 to the receiver 110. In other implementations, other types of applications may be implemented by the system 100 utilizing the methods and mechanisms described herein.
[0020] In one implementation, the transmitter 105 includes at least a radio frequency (RF) transceiver module 125, a processor 130, a memory 135, and an antenna 140. The RF transceiver module 125 transmits and receives RF signals. In one implementation, the RF transceiver module 125 is a millimeter wave transceiver module operable to wirelessly transmit and receive signals through one or more channels in the 60 GHz band. The RF transceiver module 125 converts baseband signals into RF signals for wireless transmission, and the RF transceiver module 125 converts RF signals into baseband signals for extracting data by the transmitter 105. It should be noted that for illustrative purposes, the RF transceiver module 125 is shown as a single unit. It should be understood that the RF transceiver module 125 can be implemented using any number of different units (e.g., chips) according to the implementation. Similarly, the processor 130 and the memory 135 represent any number and type of processors and memory devices implemented as part of the transmitter 105, respectively. In one implementation, the processor 130 includes an encoder 132 to encode (i.e., compress) the video stream before transmitting it to the receiver 110. In other implementations, the encoder 132 is implemented separately from the processor 130. In various implementations, the encoder 132 is implemented using any suitable combination of hardware and / or software.
[0021] The transmitter 105 also includes an antenna 140 for transmitting and receiving RF signals. The antenna 140 represents one or more antennas that can be configured to change the directivity of the transmission and reception of radio signals, such as a phased array, a single element antenna, a set of switched beam antennas, etc. As an example, the antenna 140 includes one or more antenna arrays, wherein the amplitude or phase of each antenna within the antenna array can be configured independently of the other antennas within the array. Although the antenna 140 is shown as being external to the transmitter 105, it should be understood that in various implementations, the antenna 140 may be included within the transmitter 105. In addition, it should be understood that the transmitter 105 may also include any number of other components, which are not shown to avoid making the drawings unclear. Similar to the transmitter 105, the components implemented in the receiver 110 include at least an RF transceiver module 145, a processor 150, a decoder 152, a memory 155, and an antenna 160, which are similar to the components described above for the transmitter 105. It should be understood that the receiver 110 may also include or be coupled to other components (eg, a display).
[0022] Now turn to Figure 2 , a block diagram of one implementation of a wireless virtual reality (VR) system 200 is shown. The system 200 includes at least a computer 210 and a head mounted display (HMD) 220. The computer 210 represents any type of computing device including one or more processors, memory devices, input / output (I / O) devices, RF components, antennas, and other components indicative of a personal computer or other computing device. In other implementations, other computing devices are utilized in addition to a personal computer to wirelessly send video data to the head mounted display (HMD) 220. For example, the computer 210 may be a game console, a smart phone, a set-top box, a television, a video streaming device, a wearable device, a component of a theme park ride, or other computer. Additionally, in other implementations, the HMD 220 may be a computer, a desktop computer, a television, or other device used as a receiver connected to an HMD or other type of display.
[0023] The computer 210 and the HMD 220 each include electrical and / or components for communicating wirelessly. It should be noted that while the computer 210 is shown as having an external antenna, this is merely shown to illustrate that the video data is transmitted wirelessly. It should be understood that the computer 210 may have an antenna inside the external housing of the computer 210. In addition, while the computer 210 may be powered using a wired power connection, the HMD 220 is typically battery powered. Alternatively, the computer 210 may be a laptop computer (or another type of device) that is powered by a battery.
[0024] In one implementation, the computer 210 includes circuitry that dynamically renders a representation of a VR environment for presentation to a user wearing the HMD 220. For example, in one implementation, the computer 210 includes one or more graphics processing units (GPUs) that execute program instructions to render a VR environment. In other implementations, the computer 210 includes other types of processors, including a central processing unit (CPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), or other processor types. The HMD 220 includes circuitry that receives and decodes a compressed bitstream sent by the computer 210 to generate a frame of the rendered VR environment. The HMD 220 then drives the generated frame to a display integrated within the HMD 220.
[0025] In each image displayed on the HMD 220, the scene 225R displayed on the right side 225R of the HMD 220 includes a focus area 230R, and the scene 225L displayed on the left side of the HMD 220 includes a focus area 230L. These focus areas 230R and 230L are represented by circles within the extended right side 225R and left side 225L of the HMD 220, respectively. In one implementation, the positions of the focus areas 230R and 230L within the right half frame and the left half frame, respectively, are determined based on the eye tracking sensor within the HMD 220. In this implementation, the eye tracking data is provided as feedback to the encoder and, optionally, to the rendering source of the VR video. In some cases, the eye tracking data feedback is generated at a frequency higher than the VR video frame rate, and the encoder is able to access the feedback and update the encoded video stream on a per-frame basis. In some cases, eye tracking is not performed on the HMD 220, but the facial video is sent back to the rendering source for further processing to determine the position and movement of the eyes. In another implementation, the location of the focus regions 230R and 230L is specified by the VR application based on where the user is expected to be looking. It should be noted that the size of the focus regions 230R and 230L may vary depending on the implementation. Additionally, the shape of the focus regions 230R and 230L may vary depending on the implementation, and in another implementation, the focus regions 230R and 230L are defined as ellipses. In other implementations, other types of shapes may also be used for the focus regions 230R and 230L.
[0026] In one implementation, if the HMD 220 includes an eye tracking sensor to track the in-focus area based on where the user's eyes are pointed, the focus areas 230R and 230L may be relatively small. Otherwise, if the HMD 220 does not include an eye tracking sensor and the focus areas 230R and 230L are determined based on where the user is expected to be looking, the focus areas 230R and 230L may be relatively large. In other implementations, other factors may cause the size of the focus areas 230R and 230L to be adjusted. For example, in one implementation, as the quality of the link between the computer 210 and the HMD 220 decreases, the size of the focus areas 230R and 230L decreases.
[0027] In one implementation, the encoder uses the lowest amount of compression for blocks within the focus regions 230R and 230L to maintain the highest quality and highest level of detail for the pixels within these regions. It should be noted that a "block" may also be referred to as a "slice" herein. As used herein, a "block" is defined as a group of connected pixels. For example, in one implementation, a block is a group of 8×8 connected pixels that form a square in the displayed image. In other implementations, other shapes and / or other sizes of blocks are used. Outside the focus regions 230R and 230L, the encoder uses a higher amount of compression, resulting in lower quality of the pixels presented in these areas of the half frame. This approach takes advantage of the human visual system, in which each eye has a large field of view, but the eye only focuses on a small area within the large field of view. Based on the way the eyes and brain perceive visual data, a person will generally not notice the lower quality in areas outside the focus region.
[0028] In one implementation, the further a block within an image is from a focus area, the more the encoder increases the amount of compression used to encode the block. For example, if a first block is a first distance from the focus area and a second block is a second distance from the focus area, where the second distance is greater than the first distance, the encoder will encode the second block using a higher compression rate than the first block. This will result in the second block having less detail than the first block when it is decompressed and displayed to the user. In one implementation, the encoder increases the amount of compression used by increasing the quantization strength level used when encoding a given block. For example, in one implementation, the quantization strength level is specified using a quantization parameter (QP) setting. In other implementations, the encoder increases the amount of compression used to encode a block by changing the values of other encoding settings.
[0029] Reference now Figure 3, a block diagram showing one implementation of control logic 300 for determining how much compression to apply to a block of a frame is shown. In one implementation, control logic 300 includes eye distance unit 305, radius comparison unit 310, radius table 315, lookup table 320, and first-in, first-out (FIFO) queue 325. In other implementations, control logic 300 may include other components and / or be organized in other suitable ways.
[0030] The eye distance unit 305 calculates the distance from the focus area of a particular half-screen image (right eye or left eye) to a given block. In one implementation, the eye distance unit 305 calculates the distance using the coordinates of the given block (Block_X, Block_Y) and the coordinates of the center of the focus area (Eye_X, Eye_Y). Figure 4 An example of one formula 435 for calculating the distance from a block to a focus region is shown in . In other implementations, other techniques for calculating the distance from a block to a focus region may be utilized.
[0031] Based on the distance from the center of the focus area to the given block (or based on the square of the distance from the center of the focus area to the given block), the radius comparison unit 310 determines which compression region the given block belongs to based on the radius R[0:N] provided by the radius table 315. Any number "N" of radii are stored in the radius table 315, where "N" is a positive integer that varies according to the implementation. In one implementation, the radius square values are stored in a lookup table to eliminate the need for a hardware multiplier. In one implementation, the radius square values are programmed in the radius table 315 in a monotonically decreasing order, so that entry zero specifies the largest circle, entry one specifies the second largest circle, and so on. In one implementation, unused entries in the radius table 315 are programmed to zero. In one implementation, once the region to which the block belongs is identified, the region identifier (ID) of this region is used to index into the lookup table 320 to extract the complete target block size corresponding to the region ID. It should be understood that in other implementations, other types of shapes other than circles (e.g., ellipses) can be used to represent the focus area. Regions outside the focus region may also be shaped in the same manner as the focus region. In these implementations, the techniques used to determine the region to which a block belongs may be adjusted to take into account the specific shapes of the focus region and the outer regions.
[0032] The output from the lookup table 320 is the full target compressed block size for the block. In one implementation, the target block size is scaled using a compression ratio (or c_ratio) value before being written to the FIFO 325 for later use in processing the wavelet block. Scaling as a function of the c_ratio produces a smaller target block size suitable for the reduced radio frequency (RF) link capacity. At a later point in time when the encoder is processing the block, the encoder retrieves the scaled target block size from the FIFO 325. In one implementation, for each block being processed, the encoder selects a compression level for compressing the block to meet the scaled target block size.
[0033] Now turn to Figure 4 , shows a diagram 400 of one implementation of concentric regions corresponding to different compression levels outside the focused region of a half-frame. Each square in diagram 400 represents a slice of a half-frame, where a slice includes any number of pixels, which varies depending on the implementation. In each half of the screen, the pixels are displayed using Figure 4 The bottom formula 435 determines the distance of each slice from the (predicted or determined) eye fixation point. In formula 435, S b is the slice size. In one implementation, S b is 8 or 16. In other implementations, S b Can be other sizes. Variable X 偏移 and Y 偏移 Adjust for the fact that the slice (x,y) is relative to the top-left corner of the image, and that x 眼睛 and 眼睛 is relative to the center of each half of the screen. Also add slice_size divided by two to x 偏移 and 偏移 Each of these takes into account the following facts: b *X i ,S b *Y i ) is the upper left corner of each slice, and the goal is to determine whether the center of each slice falls inside or outside each radius.
[0034] Then, when using a formula (such as Equation 435) to calculate d i 2 Afterwards, d i 2 With "N" radii (r0, r1, r2, ... r N ) to determine which compression region the slice belongs to, where N is a positive integer. Figure 4In the illustrated implementation, N is equal to 5, but it should be understood that this is shown for illustrative purposes only. For example, in this implementation, region 405 is a focus region having a radius indicated by arrow r5, region 410 is a region adjacent to the focus region having a radius indicated by arrow r4, region 415 is the next larger region having a radius indicated by arrow r3, region 420 is the next larger region having a radius indicated by arrow r2, region 425 is the next larger region having a radius indicated by arrow r1, and region 430 is the largest region shown in diagram 400 having a radius indicated by arrow r0. In another implementation, N is equal to 64, while in other implementations, N may be any of a variety of other suitable integer values.
[0035] Based on the distance from the center of the focus region 405 to the given slice (or based on the square of the distance from the center of the focus region 405 to the given slice), the encoder determines to which compression region the given slice belongs. In one implementation, once the region to which the slice belongs is identified, a region identifier (ID) is used to index into a lookup table to retrieve the target slice length. The lookup table mapping allows for arbitrary mapping of region IDs to slice sizes.
[0036] In one implementation, the output from the lookup table is the full target compressed size of the slice. A "region ID" may also be referred to herein as a "zone ID". The target size is scaled using a compression ratio (or c_ratio) value before being written to the FIFO for later use in processing the wavelet slice. Scaling by some function of the c_ratio produces a smaller target slice size appropriate for the reduced radio frequency (RF) link capacity.
[0037] Reference now Figure 5 , a diagram 500 showing one implementation of cropping of a scaled target slice size. In various implementations, the encoder attempts to keep the center screen area at high quality as the compression ratio (or c_ratio) varies. Diagram 500 shows an example of cropping of a scaled target slice size for a particular compression ratio setting. The dashed line in diagram 500 represents a target slice length that is equal to the programmed slice length multiplied by the compression ratio. The solid line in diagram 500 represents the cropped slice length.
[0038] Now turn to Figure 6 , a diagram 600 showing another implementation of cropping to scale the target slice size. Figure 5Diagram 600 is intended to illustrate a different compression ratio than diagram 500 of the prior art. Thus, diagram 600 illustrates cropping of a scaled target slice size for a higher compression ratio than used in the implementation associated with diagram 500. Similar to diagram 500, the dashed line in diagram 600 represents the target slice length, while the solid line represents the cropped slice length.
[0039] Figure 5 The diagram of 500 and Figure 6 600 respectively show how to program the target slice size so that the central area of each eye remains at a relatively high quality even when the compression rate increases. The change from diagram 500 to 600 shows that the cropping of the scaled target slice size produces an area with high quality in the center, and remains so when the peripheral area is more compressed. It should be noted that the target slice value can be greater than the maximum slice length (or slice_len_max) (up to 16,383 in one implementation), or even negative, because cropping will bring them back to the appropriate range. In addition, it should be understood that diagrams 500 and 600 are shown for illustrative purposes, and diagrams 500 and 600 do not have to be straight lines. In a typical implementation, since there are only N radii and N associated target slice lengths, diagrams 500 and 600 will be stepped. The overall shape of diagrams 500 and 600 can be a pyramid (as shown), a bell, or other shapes.
[0040] Now turn to Figure 7 , shows one implementation of a method 700 for adjusting the compression level based on the distance from the focal region. For discussion purposes, the steps and Figures 8 to 9 However, it should be noted that in various implementations of the described method, one or more of the described elements may be performed simultaneously, in a different order than shown, or may be omitted entirely. Other additional elements may also be performed as needed. Any of the various systems or devices described herein are configured to implement method 700.
[0041] The encoder receives a plurality of pixel blocks of a frame to be encoded (block 705). In one implementation, the encoder is part of or coupled to a transmitter. The transmitter can be any type of computing device, where the type of computing device varies depending on the implementation. In one implementation, the transmitter presents frames of a video stream as part of a virtual reality (VR) environment. In other implementations, video streams may be generated for other environments. In one implementation, the encoder and transmitter are part of a wireless VR system. In other implementations, the encoder and transmitter are included in other types of systems. In one implementation, the encoder and transmitter are integrated together into a single device. In other implementations, the encoder and transmitter are located in separate devices.
[0042] The encoder determines the distance from each block to the focus area of the frame (block 710). In another implementation, the square of the distance from each block to the focus area is calculated in block 710. In one implementation, the focus area of the frame is determined by tracking the user's eye movement (based on eye tracking). In such an implementation, the location where the eye is looking can be embedded in the video sequence (e.g., in an invisible or non-focus area). In another implementation, the focus area is specified by a software application based on where the user is expected to be looking (based on non-eye tracking). In some embodiments, both eye-tracking-based and non-eye-tracking-based methods can be used as operating modes. In one embodiment, a given mode is programmable. In some embodiments, the mode can be dynamically changed based on various detected conditions (e.g., available bandwidth, a measure of perceived image quality, available hardware resources, a power management scheme, or other conditions). In other implementations, the focus area is determined in other ways. In one implementation, the size of the focus area can be adjusted based on one or more factors. For example, in one implementation, as link conditions deteriorate, the size of the focus area decreases.
[0043] Next, the encoder selects a level of compression to apply to each block, where the compression level is adjusted based on the distance from the block to the focus area (block 715). For example, in one implementation, the compression level is increased as the block is farther from the focus area. The encoder then encodes each block using the selected compression level (block 720). Next, the transmitter transmits the encoded blocks to a receiver for display (block 725). The receiver can be any type of computing device. In one implementation, the receiver includes or is coupled to a head mounted display (HMD). In other implementations, the receiver can be other types of computing devices. After block 725, the method 700 ends.
[0044] Now turn to Figure 8, shows one implementation of a method 800 for selecting an amount of compression to be applied to a block based on a distance from a focus region. An encoder receives a first block at a first distance from a focus region of a given frame (block 805). Next, the encoder selects a first amount of compression to be applied to the first block based on the first distance (block 810). It should be noted that "amount of compression" may also be referred to as "compression level" herein. Additionally, the encoder receives a second block at a second distance from the focus region, and for the purposes of this discussion, it is assumed that the second distance is greater than the first distance (block 815). It should be understood that the terms "first" and "second" used to refer to the first block and the second block do not refer to any particular order between the two blocks, but are merely used as labels to distinguish the two blocks. There are places in the half-frame where a subsequent block is closer to the focus region than a previous block, and there are other places where a previous block is closer to the focus region than a subsequent block. It is also possible that two consecutive blocks will be equidistant from the focus region. Next, the encoder selects a second amount of compression to be applied to the second block based on the second distance, wherein the second amount of compression is greater than the first amount of compression (block 820). After block 820, the method 800 ends.
[0045] It should be noted that the encoder receives any number of blocks and uses any number of different amounts of compression to apply to the blocks based on the distance of each block from the focus region. For example, in one implementation, the encoder divides the image into 64 different concentric regions, where each region applies a different amount of compression to the blocks within the region. In other implementations, the encoder divides the image into other numbers of different regions for the purpose of determining how much compression to apply.
[0046] Reference now Fig. 9 , shows one implementation of a method 900 for adjusting the size of a focus region based on changes in link conditions. An encoder uses a first size of a focus region in a frame being encoded (block 905). Next, the encoder encodes the focus region of the first size using a minimum compression level, and encodes other regions of the frame using compression levels that increase as the distance from the focus region increases (block 910). At a later point in time, a transmitter detects a degradation of a link over which the encoded frame was transmitted (block 915). In one implementation, during implementation of one or more beamforming training procedures, a transmitter and / or receiver generates measurements of link conditions (i.e., link quality) of a wireless link. In this implementation, degradation of link conditions is detected during the beamforming training procedures. In other implementations, degradation of link conditions is determined using other suitable techniques (i.e., based on the number of lost packets).
[0047] In response to detecting a deterioration in link conditions, the encoder uses a second size of the focus region in the frame being encoded, wherein the second size is smaller than the first size (block 920). Next, the encoder encodes the focus region of the second size using a minimum compression level, and encodes other regions of the frame using compression levels that increase as the distance from the focus region increases (block 925). After block 925, method 900 ends. It should be noted that method 900 is intended to illustrate a situation when the size of the focus region changes based on changes in link conditions. It should be understood that method 900 or a suitable variation of method 900 may be performed periodically to change the size of the focus region based on changes in link conditions. In general, according to one implementation of method 900, as link conditions improve, the size of the focus region increases, and as link conditions deteriorate, the size of the focus region decreases.
[0048] In various implementations, program instructions of a software application are used to implement the methods and / or mechanisms described herein. For example, program instructions that can be executed by a general-purpose processor or a special-purpose processor are contemplated. In various implementations, such program instructions can be represented by a high-level programming language. In other implementations, the program instructions can be compiled from the high-level programming language into a binary form, an intermediate form, or other form. Alternatively, program instructions that describe the behavior or design of the hardware can be written. Such program instructions can be represented by a high-level programming language (such as C). Alternatively, a hardware design language (HDL) such as Verilog can be used.
[0049] In various implementations, the program instructions are stored on any of a variety of non-transitory computer-readable storage media. The storage medium can be accessed by a computing system during use to provide the program instructions to the computing system for program execution. Generally speaking, such a computing system includes at least one or more memories and one or more processors configured to execute the program instructions.
[0050] It should be emphasized that the above implementations are only non-limiting examples of implementations. Once the above disclosure is fully understood, many changes and modifications will be obvious to those skilled in the art. The following claims are intended to be interpreted as including all such changes and modifications.
Claims
1. A system for adjusting a compression level for a block of a frame, comprising: a lookup table configured to store one or more mappings that map a region of a frame to a target block size for a compressed pixel block corresponding to the region; An encoder, the encoder being configured to: receiving a plurality of pixel blocks of a frame to be encoded; encoding each of the plurality of blocks using a selected compression level based at least in part on a target block size determined by a lookup result in the lookup table, wherein blocks within a frame region corresponding to a focused region of the frame have a lower compression level than blocks within a frame region not corresponding to the focused region; as well as A transmitter configured to transmit the encoded block to a receiver, wherein to perform the lookup, the system is configured to: indexing the lookup table with the region identifier retrieved from a radius table to identify a corresponding mapping, wherein the radius table is configured to store one or more mappings mapping distances to region identifiers; as well as The target compressed block size is retrieved according to the corresponding mapping.
2. The system of claim 1, wherein: regions closer to the focal region are compressed with a lower compression than regions further from the focal region; and The size of the focus area is adjustable.
3. The system of claim 1, wherein: specifying a separate focus region for each half of the frame; and Each separate focus area is the portion of the half frame that each eye is expected to focus on when the user views the frame.
4. The system of claim 1, wherein the mapping in the lookup table identifies a level of compression to use for a region of the frame based at least in part on a distance of the region of the frame from a focused region of the frame.
5. The system of claim 1, further comprising: processor; and RF transceiver module.
6. The system of claim 1, wherein the encoder is further configured to: receiving a request to reduce the size of a compressed frame; and In response to receiving the request, a compression level for compressing the focus region is maintained while one or more compression levels for compressing regions outside of the focus region are increased.
7. The system of claim 1, wherein the system is configured to reduce the size of the focal region when transmitter link quality degrades.
8. A method of adjusting a compression level for a block of a frame, comprising: receiving, by an encoder, a plurality of pixel blocks of a frame to be encoded; accessing a lookup table configured to store one or more mappings that map a region to a target block size of a compressed pixel block corresponding to the region; encoding each of the plurality of blocks using a selected compression level based at least in part on a target block size determined by a lookup in the lookup table, wherein blocks within a frame region corresponding to a focused region of the frame have a lower compression level than blocks within a frame region not corresponding to the focused region; The encoded blocks are transmitted to the receiver, Wherein performing the search comprises: indexing the lookup table with the region identifier retrieved from a radius table to identify a corresponding mapping, wherein the radius table is configured to store one or more mappings mapping distances to region identifiers; as well as The target compressed block size is retrieved according to the corresponding mapping.
9. The method of claim 8, wherein areas closer to the focus area are compressed with a lower compression than areas farther from the focus area, and wherein the size of the focus area is adjustable.
10. The method of claim 8, wherein a separate focus area is specified for each half of the frame, and wherein each separate focus area is the portion of the half frame that each eye is expected to focus on when a user views the frame.
11. The method of claim 8, wherein the mapping in the lookup table identifies a level of compression to use for the frame region based at least in part on a distance of the frame region from a focused region of the frame.
12. The method of claim 8, further comprising: receiving, by the encoder, a request to reduce the size of a compressed frame; as well as In response to receiving the request, a compression level for compressing the focus region is maintained while one or more compression levels for compressing regions outside of the focus region are increased.
13. The method of claim 8, further comprising: The encoded blocks of the frame are decoded by a receiver having a head mounted display (HMD), and a decompressed version of the frame is displayed on the HMD.
Citation Information
Patent Citations
Compression of image data
US20130129245A1
Encoding image data at a head mounted display device based on pose information
US20170295373A1
Video encoder and a method in a video encoder
US20180255315A1