Method, device, and medium for receiving encoded virtual reality video stream

By introducing the Segment Download and Refinement Module (SDRM) and Tile Merging Module (TMM) on the client side to optimize buffer management, the balance issue between bandwidth requirements and viewport switching latency in 360-degree VR video streaming is resolved, achieving a more efficient user experience.

CN115918095BActive Publication Date: 2025-09-19TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202180042465.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-11-13
Filing Date
2021-05-20
Publication Date
2025-09-19
Estimated Expiration
2041-05-20

AI Technical Summary

Technical Problem

Existing VR video streaming technologies struggle to efficiently decode 360-degree videos for real-time transmission. In particular, existing technologies struggle to balance bandwidth requirements and viewport switching delays, resulting in a poor user experience.

Method used

By introducing the Segment Download and Refinement Module (SDRM) and Tile Merger Module (TMM) on the client side, we optimize buffer management, decouple the player-side buffer length from the viewport switching delay, and dynamically adjust tile quality to adapt to bandwidth changes, achieving a better user experience.

Benefits of technology

It achieves high-quality and smooth playback of 360-degree VR video streams under different bandwidth conditions, reduces viewport switching delays, and improves user experience quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115918095B_ABST
    Figure CN115918095B_ABST
Patent Text Reader

Abstract

A method for streaming an encoded virtual reality (VR) video stream, comprising: receiving a plurality of segments of the encoded VR video stream; storing the plurality of segments in a playback buffer; storing at least one refined tile corresponding to a current viewport in the playback buffer based on determining that a current playback time is within a threshold time of a playback time of the buffered segments, a current duration of the playback buffer is greater than a threshold duration, a current bandwidth is greater than a threshold bandwidth, and a current viewport is different from a previous viewport; constructing a frame based on the buffered segments and the at least one refined tile corresponding to the current viewport; and decoding the encoded VR video stream based on the constructed frame.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references

[0002] This application claims the benefit of priority to U.S. application No. 17 / 097,604, filed on November 13, 2020, which is hereby incorporated by reference in its entirety. Technical Field

[0003] The present disclosure relates generally to the field of data processing, and more particularly to video encoding and / or decoding for view-optimized 360-degree virtual reality (VR) video streaming. Background Art

[0004] 360-degree VR video streaming presents several unique challenges compared to conventional video streaming pipelines. For example, the resolution of 360-degree videos is typically very large, ranging from 4K to 16K. If the video being transmitted is in stereo format, the resolution becomes twice as large. This high-resolution video also requires very high-bandwidth networks for real-time streaming. Summary of the Invention

[0005] Embodiments relate to methods, systems, and computer-readable media for streaming encoded virtual reality (VR) video streams.

[0006] According to one aspect, a method for streaming an encoded VR video stream is provided. The method includes: receiving a plurality of segments of the encoded VR video stream; storing the plurality of segments in a playout buffer, wherein the buffered segments from the plurality of segments include a plurality of buffered tiles, the plurality of buffered tiles including at least one refined buffered tile corresponding to a previous viewport; determining whether a current play time of a VR video corresponding to the encoded VR video stream is within a threshold time of the play time of the buffered segments; determining whether a current duration of the playout buffer is greater than a threshold duration; determining whether a current bandwidth is greater than a threshold bandwidth; determining whether a current viewport is different from the previous viewport; based on determining that the current play time is within the threshold time, the current duration of the playout buffer is greater than the threshold duration, the current bandwidth is greater than the threshold bandwidth, and the current viewport is different from the previous viewport, storing at least one refined tile corresponding to the current viewport in the playout buffer; constructing a frame corresponding to the buffered segment based on the plurality of buffered tiles and the at least one refined tile corresponding to the current viewport; and decoding the encoded VR video stream based on the constructed frame.

[0007] According to one aspect, a device for streaming an encoded VR video stream is provided. The device includes: at least one memory configured to store program code; and at least one processor configured to read the program code and operate according to the instructions of the program code, wherein the program code includes: a receiving code configured to cause the at least one processor to receive multiple fragments of the encoded VR video stream; a first storage code configured to cause the at least one processor to store the multiple fragments in a playback buffer, wherein the buffered fragments from the multiple fragments include multiple buffered tiles, and the multiple buffered tiles include at least one refined buffered tile corresponding to a previous viewport; a first determination code configured to cause the at least one processor to determine whether the current playback time of the VR video corresponding to the encoded VR video stream is within a threshold time of the playback time of the buffered fragments; and a second determination code configured to cause the at least one processor to determine whether the current duration of the playback buffer is greater than a threshold duration. ; A third determination code is configured to enable the at least one processor to determine whether the current bandwidth is greater than a threshold bandwidth; A fourth determination code is configured to enable the at least one processor to determine whether the current viewport is different from the previous viewport; A second storage code is configured to enable the at least one processor to store at least one refined tile corresponding to the current viewport in the playback buffer based on determining that the current playback time is within the threshold time, the current duration of the playback buffer is greater than the threshold duration, the current bandwidth is greater than the threshold bandwidth, and the current viewport is different from the previous viewport; A first construction code is configured to enable the at least one processor to construct a frame corresponding to the buffered fragment based on the multiple buffered tiles and the at least one refined tile corresponding to the current viewport; and A decoding code is configured to enable the at least one processor to decode the encoded VR video stream based on the constructed frame.

[0008] According to one aspect, a non-transitory computer-readable medium for streaming an encoded VR video stream is provided. The computer-readable medium may store instructions, the instructions including: one or more instructions, which, when executed by one or more processors of a device for receiving an encoded virtual reality VR video stream, cause the one or more processors to: receive a plurality of fragments of the encoded VR video stream; store the plurality of fragments in a playback buffer, wherein the buffered fragments from the plurality of fragments include a plurality of buffered tiles, the plurality of buffered tiles including at least one refined buffered tile corresponding to a previous viewport; determine whether a current playback time of a VR video corresponding to the encoded VR video stream is within a threshold time of a playback time of the buffered fragments; determine the playback Whether the current duration of the buffer is greater than a threshold duration; determining whether the current bandwidth is greater than a threshold bandwidth; determining whether the current viewport is different from the previous viewport; based on determining that the current playback time is within the threshold time, the current duration of the playback buffer is greater than the threshold duration, the current bandwidth is greater than the threshold bandwidth, and the current viewport is different from the previous viewport, storing at least one refined tile corresponding to the current viewport in the playback buffer; constructing a frame corresponding to the buffered fragment based on the multiple buffered tiles and the at least one refined tile corresponding to the current viewport; and decoding the encoded VR video stream based on the constructed frame. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] These and other objects, features, and advantages will become apparent from the following detailed description of illustrative embodiments when read in conjunction with the accompanying drawings. Since the illustrations are intended to facilitate clear understanding by those skilled in the art in conjunction with the detailed description, the various features of the drawings are not to scale. In the drawings:

[0010] Figure 1 illustrates a networked computer environment according to at least one embodiment;

[0011] Figure 2 An example of a viewport in a frame of a 360-degree VR video is shown in accordance with at least one embodiment;

[0012] Figures 3A to 3D An example of tile-based VR video streaming according to at least one embodiment is shown;

[0013] Figure 4 An example of filling a video client's playback buffer as a user's viewport changes is shown in accordance with at least one embodiment;

[0014] Figure 5 shows an example of a fragment download and refinement module according to at least one embodiment;

[0015] Figure 6 A tile merging module according to at least one embodiment is shown;

[0016] Figure 7 illustrates an example comparison between user position and viewport position in accordance with at least one embodiment;

[0017] Figure 8 An operational flow diagram illustrating steps performed by a program for encoding video data in accordance with at least one embodiment;

[0018] Figure 9 According to at least one embodiment Figure 1 a block diagram of the internal and external components of the computers and servers shown in ;

[0019] Figure 10 According to at least one embodiment Figure 1 A block diagram of an illustrative cloud computing environment for a computer system as shown in FIG; and

[0020] Figure 11 According to at least one embodiment Figure 10 A block diagram of the functional layers of an illustrative cloud computing environment. DETAILED DESCRIPTION

[0021] Detailed embodiments of the claimed structures and methods are disclosed herein. However, it is understood that the disclosed embodiments are merely illustrative of the claimed structures and methods that may be implemented in various forms. However, these structures and methods may be implemented in many different forms and should not be construed as being limited to the exemplary embodiments shown herein. On the contrary, these embodiments are provided to make this disclosure thorough and complete, and to fully convey the scope of the invention to those skilled in the art. In the description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the proposed embodiments.

[0022] Embodiments generally relate to buffer management techniques when playing back view-optimized VR 360-degree videos on client devices. For example, embodiments may relate to systems and methods that can decouple playback buffer size and viewport switching latency in view-optimized VR 360-degree video streaming.

[0023] Various aspects are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer-readable media according to various embodiments. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0024] Reference Figure 1, a functional block diagram of a networked computer environment illustrates a video encoding system 100 (hereinafter referred to as "the system") for encoding and / or decoding video data according to an exemplary embodiment as described herein. It will be understood that Figure 1 This is merely an illustration of one implementation and does not imply any limitation on the environments in which different embodiments may be implemented. Many modifications to the described environment may be made depending on design and implementation requirements.

[0025] System 100 may include a computer 102 and a server computer 114. Computer 102 may communicate with server computer 114 via a communication network 110 (hereinafter referred to as the "network"). Computer 102 may include a processor 104 and a software program 108 stored on a data storage device 106 and capable of connecting to a user and communicating with server computer 114. Figure 9 As discussed above, computer 102 may include internal components 800A and external components 900A, respectively, and server computer 114 may include internal components 800B and external components 900B, respectively. Computer 102 may be, for example, a mobile device, a phone, a personal digital assistant, a netbook, a laptop, a tablet computer, a desktop computer, or any type of computing device capable of running programs, accessing a network, and accessing a database.

[0026] As follows about Figure 10 and Figure 11 As discussed above, the server computer 114 can also operate in a cloud computing service model, such as software as a service (SaaS), platform as a service (PaaS), or infrastructure as a service (IaaS). The server computer 114 can also be located in a cloud computing deployment model, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud.

[0027] A server computer 114, which can be used to encode video data, is enabled to run a video encoding program 116 (hereinafter referred to as the "program") that can interact with the database 112. In one embodiment, the computer 102 can operate as an input device including a user interface, and the program 116 can run primarily on the server computer 114. In an alternative embodiment, the program 116 can run primarily on one or more computers 102, while the server computer 114 can be used to process and store data used by the program 116. It should be noted that the program 116 can be a stand-alone program or can be integrated into a larger video encoding program.

[0028] However, it should be noted that in some cases, the processing of program 116 may be shared in any proportion between computer 102 and server computer 114. In another embodiment, program 116 may operate on multiple computers, server computers, or a combination thereof (e.g., multiple computers 102 communicating with a single server computer 114 via network 110). In another embodiment, for example, program 116 may operate on multiple server computers 114 communicating with multiple client computers via network 110. Alternatively, the program may operate on a network server that communicates with the server and multiple client computers via the network.

[0029] The network 110 may include a wired connection, a wireless connection, a fiber optic connection, or some combination thereof. In general, the network 110 may be any combination of connections and protocols that support communication between the computer 102 and the server computer 114. The network 110 may include various types of networks, such as a local area network (LAN), a wide area network (WAN) (e.g., the Internet), a telecommunications network (e.g., a public switched telephone network (PSTN)), a wireless network, a public switched network, a satellite network, a cellular network (e.g., a fifth generation (5G) network, a long term evolution (LTE) network, a third generation (3G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a metropolitan area network (MAN), a private network, an ad hoc network, an intranet, a fiber-optic-based network, etc., and / or combinations of these or other types of networks.

[0030] supply Figure 1 The number and arrangement of devices and networks shown are examples. In practice, there may be additional devices and / or networks, fewer devices and / or networks, different devices and / or networks, or different Figure 1 The devices and / or networks shown in FIG are different from the devices and / or networks set up in FIG. Figure 1 Two or more of the devices shown in the figure may be implemented in a single device, or Figure 1 A single device shown in FIG100 may be implemented as multiple distributed devices. Additionally or alternatively, one or more devices of system 100 may perform one or more functions described as being performed by another device of system 100.

[0031] A variety of techniques can be used to address the high bandwidth requirements of 360-degree VR video. Figure 2As shown, some techniques can take advantage of the fact that when using 360-degree VR video on a client device, the user 202 is only looking at a portion of the entire 360-degree sphere 204. This portion of the sphere 204 under the field of view (FOV) of the user 202 can be referred to as a viewport 206. Because the user is not viewing the entire sphere 202 of the 360-degree video at the same time, areas that are not visible to the user are not transmitted at the highest quality. Embodiments related to this VR 360 video streaming optimization technique may be referred to as view optimization or viewport-based streaming. Using this optimization technique, the area under the user's viewport (e.g., viewport 206) can be transmitted at the highest quality, while the remaining area is transmitted at a relatively lower quality.

[0032] Depending on the embodiment, there are several ways to implement this viewport-based streaming.

[0033] For example, in an embodiment, multiple representations of a 360 scene may be created, each representation covering a unique area of ​​the scene at high quality and the remainder of the scene at low quality.

[0034] As another example, in an embodiment, tile-based streaming may be used. Figures 3A to 3B An example of tile-based streaming according to an embodiment is shown. Figure 3A As shown, the 360-degree scene can be divided into multiple tiles, and multiple such representations can be created, for example, representation Q1 can have low quality or low resolution, representation Q2 can have higher quality or higher resolution, and representation Q3 can have the highest quality and highest resolution. The video client can dynamically merge high-quality tiles for the area of ​​sphere 204 corresponding to the viewport 206, for example Figure 3B and Figure 3C , and merging low-quality tiles for the non-viewport areas of the sphere 204, e.g., Figure 3B and Figure 3C To create a full frame of 360-degree VR video, specify the tile as 1 in . Figure 3C As shown, using a larger number of high-quality tiles increases the required bandwidth.

[0035] While such techniques can help optimize client-side bandwidth requirements, challenges arise when the client viewport changes within a 360-degree VR environment. As the user moves around, the client can download new video frames with high-quality tiles / streams in the user's new viewport. However, the client continues to play the video frames that were already buffered for the previous viewport.

[0036] Figure 4An example of filling the playback buffer of a video client when the user's viewport changes is shown. For example, at time t, the current viewport may be viewport VP1. When the current viewport is still viewport VP1, the playback buffer may be filled with segments optimized for viewport VP1, such as segment n, segment n+1, segment n+2, and segment n+3.

[0037] Then, at time t+i, the current viewport can be changed to viewport VP2. Therefore, the client can start downloading new optimized segments for VP2, such as segment n+4 and segment n+5. However, the client can continue to play the VP1 segments that are already available in the playback buffer, such as segment n, segment n+1, segment n+2 and segment n+3 optimized for viewport VP1. Therefore, the user experience may be suboptimal before the client starts playing the newly downloaded video frames. The time difference between the time the user starts watching the new viewport VP2 and the time they actually start seeing the highest possible quality tiles / stream in their new viewport can be called the viewport switching delay. For example, the viewport switching delay can be proportional to the sum of the playback buffer duration and the segment duration.

[0038] One technique to optimize such view switching can be to keep the buffer duration very short on the client side. While this helps reduce viewport switching latency, it can introduce issues in protecting the player buffer from varying network conditions on the client side. If the client bandwidth drops, playback may stutter until all required tiles / streams are downloaded. On the other hand, even if the client bandwidth is very high, the player may not be able to pre-buffer fragments to protect the player buffer from being empty during low-bandwidth periods.

[0039] Therefore, viewport-based streaming may be the ideal way to deliver the highest quality video to the client. However, improved Quality of Experience (QoE) can be provided by minimizing viewport switching latency and optimizing the total available bandwidth for smooth playback.

[0040] Therefore, embodiments provide a novel method for decoupling player-side buffer length from viewport switching latency. This method enables the client to retain a larger buffer to protect the player from network jitter without affecting viewport switching latency. This also allows for better utilization of the client's overall bandwidth and provides a more optimized viewport for the user's FOV.

[0041] To achieve this, an embodiment may include two new modules in the 360 ​​video playback pipeline, specifically a Segment Download and Refinement Module (SDRM) and a Tile Merger Module (TMM).

[0042] Figure 5 SDRM 502 is shown, which may be an example of an SDRM according to an embodiment. In addition to downloading future segments in a linear order using a future tile downloader 504, for example, in a manner similar to related art adaptive bitrate (ABR) technology, the SDRM 502 may have the ability to refine the quality of already downloaded segments by obtaining specific segment tiles in a non-linear order using, for example, a segment refinement downloader 506. In an embodiment, when the current playback time approaches the timestamp of a previously downloaded and buffered segment, the SDRM 502 may check whether the current viewport is the same as the viewport used when the segment was originally downloaded. If the viewport has changed, the SDRM 502 may attempt to download multiple new tiles / streams that are more suitable for the new viewport based on the available bandwidth and the current occupancy of the playback buffer. See below Figure 9 An example of this situation is discussed in more detail.In an embodiment, the SDRM 502 may be aware of the current playback timeline and may also have the ability to download individual tiles of a segment in non-increasing order.

[0043] In an embodiment, SDRM 502 can facilitate pre-buffering of video segments under good bandwidth conditions. This allows the player to continue playback even when client bandwidth fluctuates. Another important advantage of this module is that it can record the current playback timeline and refine the viewport quality of previously downloaded segments to closely match the content the viewer is currently watching. This enables it to retrieve more optimized tiles for the user's viewport without having to re-download all tiles.

[0044] Figure 6TMM 602 is shown, which can be an example of a TMM according to an embodiment. Unlike the playback pipeline of the related art that reads video frames from the playback buffer in a first-in-first-out (FIFO) order, in an embodiment, TMM 602 can read downloaded segments from the playback buffer 604 in a non-FIFO order. In an embodiment, TMM 602 can be used to decide which tiles / streams will be part of the next video segment to be decoded at the last possible time, for example, while reading the first instantaneous decoder refresh (IDR) frame of the segment. This means that TMM 602 can also access the user's current viewport to decide which tiles to merge to build a frame. Because the tiles / streams of a given segment can be scattered across the playback buffer 604, for example, Figure 6 As shown, they can therefore be brought together by the TMM 602 to create a single decodable frame that can be fed to the decoder queue. Thus, the TMM 602 can have the ability to read buffered data in a non-FIFO manner.

[0045] In an embodiment, having TMM 602 decide which tiles will form the final frame can help create the highest quality viewport for the viewer. Since TMM 602 is called just before the frame is displayed to the viewer, TMM 602 can use the latest and most accurate FOV information to deliver the highest quality viewport. As an example, if Figure 6 As shown, when constructing a frame corresponding to fragment N, TMM 602 may merge a set of tiles 606 for fragment N and two sets of refined tiles 608 and 610 for fragment N, all of which were downloaded and buffered at different times and stored in different locations in playout buffer 604.

[0046] Figure 7 An example comparison is shown between the position 702 of an unoptimized viewport, the position 704 of a viewport optimized according to an embodiment, and the user position 700. Figure 7 As can be seen, 7. When the user moves in the 360 ​​environment, the embodiment can quickly transmit high-quality tiles in the user's viewport.

[0047] Reference Figure 8 , which illustrates the steps of a method 8000 for streaming (e.g., receiving) an encoded virtual reality video stream. In some implementations, Figure 8 One or more processing blocks of the computer 102 ( Figure 1 ) and server computer 114 ( Figure 1 ) is executed. In some implementations, Figure 8One or more processing blocks of may be performed by another device or group of devices separate from or including the computer 102 , server computer 114 , SDRM 502 , and TMM 602 .

[0048] At 8010, method 8000 includes receiving a plurality of segments of an encoded VR video stream.

[0049] At 8020, method 8000 includes storing a plurality of fragments in a playout buffer. In an embodiment, the buffered fragments from the plurality of fragments include a plurality of buffered tiles, the plurality of buffered tiles including buffered tiles corresponding to at least one refinement of a previous viewport. In an embodiment, the previous viewport may correspond to, for example, VP1 discussed above, the playout buffer may correspond to playout buffer 604 discussed above, and the buffered fragments may correspond to, for example, fragment N discussed above.

[0050] At 8030, method 8000 includes determining whether a current playback time of a VR video corresponding to the encoded VR video stream is close to a playback time of a buffered segment. In an embodiment, the current playback time may be determined to be close to the playback time of the buffered segment when the current playback time is within a threshold time of the playback time of the buffered segment.

[0051] If it is determined that the current play time is close to the play time of the buffered segment (yes at 8030), method 8000 can continue to 8040. If it is determined that the current play time is not close to the play time of the buffered segment (no at 8030), method 8000 can continue to 8100.

[0052] At 8040, method 8000 includes determining whether a current duration of the playout buffer is greater than a threshold duration.

[0053] If it is determined that the current duration of the play buffer is greater than the threshold duration (yes at 8040), method 8000 can continue to 8050. If it is determined that the current duration of the play buffer is not greater than the threshold duration (no at 8040), method 8000 can continue to 8100.

[0054] At 8050, method 8000 includes determining whether the current bandwidth is greater than a threshold bandwidth.

[0055] If it is determined that the current bandwidth is greater than the threshold bandwidth (yes at 8050), method 8000 can continue to 8060. If it is determined that the current bandwidth is not greater than the threshold bandwidth (no at 8050), method 8000 can continue to 8100.

[0056] At 8060, method 8000 includes determining whether the current viewport is different from the previous viewport.

[0057] If it is determined that the current viewport is different from the previous viewport (yes at 8060), method 8000 can continue to 8070. If it is determined that the current viewport is the same as the previous viewport (no at 8060), method 8000 can continue to 8100.

[0058] In an embodiment, elements 8030 , 8040 , 8050 , and 8060 may be performed by, for example, SDRM 502 .

[0059] In an embodiment, elements 8030 , 8040 , 8050 , and 8060 may be rearranged within method 8000 and performed in any order.

[0060] Regardless of the order in which they are executed, based on determining that the current playback time is within a threshold time, the current duration of the playback buffer is greater than the threshold duration, the current bandwidth is greater than the threshold bandwidth, and the current viewport is different from the previous viewport, at 8070, method 8000 includes: storing at least one refined tile corresponding to the current viewport in the playback buffer.

[0061] At 8080 , method 8000 includes constructing a frame corresponding to the buffered fragment based on the plurality of buffered tiles and at least one tessellated tile corresponding to the current viewport. In an embodiment, the frame may be constructed by TMM 602 .

[0062] At 8090, the method includes decoding the encoded VR video stream based on the constructed frame.

[0063] Based on determining that at least one of the current play time is outside the threshold time, the current duration of the play buffer is less than the threshold duration, the current bandwidth is less than the threshold bandwidth, and the current viewport is not different from the previous viewport, at 8100, method 8000 includes storing the next segment of the encoded VR video stream in the play buffer. In an embodiment, this means that the SDRM 502 can determine the latest segment stored in the play buffer and can download a segment that sequentially follows the latest segment and store the segment in the play buffer.

[0064] In an embodiment, based on determining that at least one current playback time is outside a threshold time, the current duration of the playback buffer is less than a threshold duration, the current bandwidth is less than a threshold bandwidth, and the current viewport is no different from the previous viewport, method 8000 may include: constructing a frame corresponding to the buffered fragment based on multiple buffered tiles.

[0065] In an embodiment, at least one refined tile corresponding to the current viewport may have at least one of: higher video quality than at least one buffered tile of the plurality of buffered tiles, and higher resolution than at least one buffered tile of the plurality of buffered tiles.

[0066] In an embodiment, the current viewport may correspond to the user's field of view (FOV) at the current playback time, and the previous viewport may correspond to the user's FOV at a previous time when the buffered segment was stored in the playback buffer.

[0067] In an embodiment, a frame may be constructed by merging a plurality of buffered tiles with at least one tessellated tile corresponding to the current viewport. In an embodiment, the merging may be performed by TMM 602.

[0068] In an embodiment, the plurality of buffered tiles and the at least one tessellated tile corresponding to the current viewport are obtained from the playout buffer in a non-FIFO manner.

[0069] In an embodiment, a frame may be constructed based on a frame read request corresponding to a buffered segment. In an embodiment, the frame read request may be received by the TMM 602 .

[0070] The embodiments can greatly improve the 360-degree VR video streaming playback experience under different bandwidth conditions.

[0071] Embodiments can minimize the possibility of playback stuttering during viewport-optimized 360 VR video streaming by enabling clients to have larger playback buffers without affecting viewport switching latency. Playback stuttering can be detrimental to user experience, especially when VR video is consumed in a head-mounted (HMD) device, forcing the user to wait in the virtual environment.

[0072] In embodiments, the SDRM 502 can better utilize the client's bandwidth over time, and by doing so, can provide streaming of a more uniform quality, rather than frequently changing the quality of the video as bandwidth varies. Uniform quality playback can be a key metric for measuring playback QoE, and embodiments can achieve this by pre-buffering tiles during high bandwidth periods.

[0073] SDRM 502 can also help refine the quality of the viewport by enabling the client to download high-fidelity tiles closer to the actual playback of the segment. This enables SDRM 502 to pre-buffer some tiles and also download some tiles closer to the playback time.

[0074] Viewport optimized streaming can provide the highest quality video in the user's field of view.By performing late merging of tiles in the TMM 602 just before they are passed to the decoder queue, embodiments can enable users to enjoy an optimized viewport for their FOV.

[0075] Overall, the embodiments can significantly improve the quality of the playback experience. The embodiments can ensure that users have the highest quality and smooth playback experience under different network conditions. Furthermore, the embodiments are equally applicable to all types of viewport-optimized streaming solutions, such as stream-based solutions or tile-based solutions.

[0076] It is understandable that Figure 8 This only provides an illustration of one implementation and does not imply any limitation on how different embodiments may be implemented. Many modifications may be made to the described environment depending on design and implementation requirements.

[0077] Figure 9 According to the illustrative embodiment Figure 1 9000 is a block diagram of the internal and external components of a computer. It will be appreciated that Figure 9 This is merely an illustration of one implementation and does not imply any limitation on the environments in which different embodiments may be implemented. Many modifications to the described environment may be made depending on design and implementation requirements.

[0078] Computer 102 ( Figure 1 ) and server computer 114 ( Figure 1 ) may include Figure 4 800B and external component groups 900A, 900B. Each group of internal components 800 includes one or more processors 820 on one or more buses 826, one or more computer-readable RAMs 822 and one or more computer-readable ROMs 824, one or more operating systems 828, and one or more computer-readable tangible storage devices 830.

[0079] The processor 820 is implemented in hardware, firmware, or a combination of hardware and software. The processor 820 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or another type of processing component. In some implementations, the processor 820 includes one or more processors that can be programmed to perform functions. The bus 826 includes components that allow communication between the internal components 800A and 800B.

[0080] Server computer 114 ( Figure 1 ) on one or more operating systems 828, software programs 108 ( Figure 1 ) and video encoding program 116 ( Figure 1 ) are stored on one or more of the respective computer-readable tangible storage devices 830 for execution by one or more of the respective processors 820 via one or more of the respective RAMs 822 (typically including cache memory). Figure 9 In the illustrated embodiment, each computer-readable tangible storage device 830 is a magnetic disk storage device of an internal hard drive. Alternatively, each computer-readable tangible storage device 830 is a semiconductor memory device, such as ROM 824, EPROM, flash memory, optical disk, magneto-optical disk, solid-state disk, compact disk (CD), digital versatile disk (DVD), floppy disk, magnetic cassette, magnetic tape, and / or another type of non-transitory computer-readable tangible storage device that can store computer programs and digital information.

[0081] Each set of internal components 800A, 800B also includes a R / W drive or interface 832 that reads from or writes to one or more portable computer-readable tangible storage devices 936, such as CD-ROMs, DVDs, memory sticks, tapes, magnetic disks, optical disks, or semiconductor memory devices. Figure 1 ) and video encoding program 116 ( Figure 1 ) can be stored on one or more of the corresponding portable computer-readable tangible storage devices 936, read through the corresponding R / W drive or interface 832 and loaded into the corresponding hard disk drive 830.

[0082] Each set of internal components 800A, 800B also includes a network adapter or interface 836, such as a TCP / IP adapter card, a wireless Wi-Fi interface card, or a 3G, 4G, or 5G wireless interface card or other wired or wireless communication link. Figure 1 ) on the software program 108 ( Figure 1 ) and video encoding program 116 ( Figure 1 ), can be downloaded from an external computer to the computer 102 ( via a network (eg, the Internet, a local area network, or other wide area network) and a corresponding network adapter or interface 836. Figure 1) and the server computer 114. From the network adapter or interface 836, the software program 108 and the video encoding program 116 on the server computer 114 are loaded into the corresponding hard disk drive 830. The network may include: copper wire, fiber optic, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers.

[0083] Each set of external components 900A, 900B may include a computer display detector 920, a keyboard 930, and a computer mouse 934. External components 900A, 900B may also include a touch screen, a virtual keyboard, a touchpad, a pointing device, and other human-computer interface devices. Each set of internal components 800A, 800B also includes a device driver 840 connected to the computer display detector 920, the keyboard 930, and the computer mouse 934. The device driver 840, the R / W driver or interface 832, and the network adapter or interface 836 include hardware and software (stored in the storage device 830 and / or ROM 824).

[0084] It should be understood in advance that although the present disclosure includes detailed descriptions about cloud computing, the implementation of the teachings described herein is not limited to a cloud computing environment. Instead, some embodiments can be implemented in conjunction with any other type of computing environment now known or later developed.

[0085] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with the service provider. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0086] Features are as follows:

[0087] On-demand self-service: Cloud consumers can automatically and unilaterally provision computing capabilities such as server time and network storage as needed, without requiring manual interaction with the service provider.

[0088] Broad network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate the use of heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

[0089] Resource pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, dynamically allocating and reallocating different physical and virtual resources based on demand. There is a sense of location independence, where consumers generally have no control or knowledge of the exact location of the provided resources, but can specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0090] Rapid elasticity: Capacity can be provisioned quickly and elastically, and in some cases automatically, to scale up quickly and released quickly to scale out quickly. To the consumer, the capacity available for provisioning often appears unlimited and can be purchased at any time and in any quantity.

[0091] Metered Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being used.

[0092] The service model is as follows:

[0093] Software as a Service (SaaS): The ability provided to consumers is to use the vendor's applications running on a cloud infrastructure. These applications are accessed from a variety of client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, which includes: networks, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0094] Platform as a Service (PaaS): The capability provided to consumers is to deploy applications they create or acquire onto cloud infrastructure. Applications are built using programming languages ​​and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but do have control over deployed applications and the configuration of the application hosting environment.

[0095] Infrastructure as a Service (IaaS): The capability provided to consumers is the provision of processing, storage, networking, and other basic computing resources, where consumers can deploy and run arbitrary software, including operating systems and applications, on these resources. Consumers do not manage or control the underlying cloud infrastructure, but have control over the operating system, storage, deployed applications, and may have limited control over selected network components (for example, host firewalls).

[0096] The deployment model is as follows:

[0097] Private cloud: Cloud infrastructure is operated solely for an organization. A private cloud can be managed by the organization or a third party and can be on-premises or off-premises.

[0098] Community cloud: Cloud infrastructure is shared by multiple organizations and supports a specific community with common concerns (e.g., mission, security requirements, policy, and compliance considerations). It can be managed by the organization or a third party and can be on-premises or off-premises.

[0099] Public cloud: Cloud infrastructure is made available to the general public or large industry groups and is owned by the organization that sells cloud services.

[0100] Hybrid cloud: A cloud infrastructure comprising two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for inter-cloud load balancing).

[0101] The cloud computing environment is service-oriented, focusing on statelessness, low coupling, modularity, and semantic interoperability. The core of cloud computing is the infrastructure consisting of a network of interconnected nodes.

[0102] refer to Figure 10 , shows a cloud computing environment 1000 suitable for implementing certain embodiments of the disclosed subject matter. As shown, the cloud computing environment 1000 includes one or more cloud computing nodes 10, with which local computing devices used by cloud consumers (e.g., personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automobile computer systems 54N) can communicate. The cloud computing nodes 10 can communicate with each other. These cloud computing nodes can be grouped physically or virtually in one or more networks (not shown), such as private clouds, community clouds, public clouds, or hybrid clouds as described above, or a combination thereof. This enables the cloud computing environment 1000 to provide infrastructure, platforms, and / or software as services without the cloud consumer having to maintain resources on a local computing device. It will be understood that Figure 10 The types of computing devices 54A-N shown are for illustration only, and cloud computing node 10 and cloud computing environment 1000 may communicate with any type of computerized device over any type of network and / or network-addressable connection (eg, using a web browser).

[0103] refer to Figure 11 , showing a cloud computing environment 1000 ( Figure 5 ) provides a set of functional abstraction layers 1100. It can be understood in advance that Figure 11 The components, layers, and functions shown are intended to be illustrative only, and the embodiments are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0104] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: mainframe 61; servers based on the Reduced Instruction Set Computer (RISC) architecture 62; servers 63; blade servers 64; storage devices 65; and networks and network components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0105] Virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71 , virtual storage 72 , virtual networks 73 including virtual private networks, virtual applications and operating systems 74 , and virtual clients 75 .

[0106] In one example, the management layer 80 may provide the functionality described below. Resource provisioning 81 provides dynamic procurement of computing resources and other resources for performing tasks within a cloud computing environment. Metering and pricing 82 provides a record of costs when resources are used in a cloud computing environment and bills or invoices are issued for the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection of data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management so that the required service levels are met. Service level agreement (SLA) planning and implementation 85 provides pre-arrangement and procurement of cloud computing resources in anticipation of future demand according to the SLA.

[0107] Workload layer 90 provides examples of functionality that can be used in a cloud computing environment. Examples of workloads and functionality that can be provided from the workload layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom education delivery 93, data analytics processing 94, transaction processing 95, and video encoding / decoding 96. Video encoding / decoding 96 can encode / decode video data using delta angles derived from nominal angles.

[0108] Some embodiments may involve systems, methods, and / or computer-readable media integrated at any possible level of technical detail.Computer-readable media may include computer-readable non-transitory storage media (or media) having computer-readable program instructions thereon for causing a processor to perform operations.

[0109] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanical encoding device (e.g., a punched card or raised structures in grooves on which instructions are recorded), and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be interpreted as a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse through a fiber optic cable), or an electrical signal propagating through an electrical wire.

[0110] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network). The network can include: copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions to be stored in a computer-readable storage medium within the corresponding computing / processing device.

[0111] The computer readable program code / instructions for performing the operations may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source code or object code written in any combination of one or more programming languages, including object oriented programming languages ​​such as Smalltalk, C++, and procedural programming languages ​​such as "C" programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a separate software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, electronic circuits including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) can execute computer-readable program instructions using state information of the computer-readable program instructions to personalize the electronic circuits and thereby perform various aspects or operations.

[0112] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine, such that the instructions executed by the processor of the computer or other programmable data processing device create a device for implementing the functions / actions specified in the flowchart and / or block tiles. These computer-readable program instructions can also be stored in a computer-readable storage medium, which can direct the computer, programmable data processing device, and / or other equipment to operate in a specific manner, such that the computer-readable storage medium storing the instructions includes an article of manufacture of instructions that implements various aspects of the functions / actions specified in the flowchart and / or block tiles or blocks.

[0113] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device, so that a series of operational steps to be performed on the computer, other programmable apparatus, or other device produces a computer-implemented process, so that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / actions specified in one or more blocks in the flowchart and / or block diagram.

[0114] The flowcharts and block diagrams in the figures illustrate the architecture, functions, and operations of possible implementations of the systems, methods, and computer-readable media according to various embodiments. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of an instruction, which includes one or more executable instructions for implementing one (or more) specified logical functions. The method, computer system, and computer-readable media may include additional blocks, fewer blocks, different blocks, or blocks arranged differently from the blocks shown in the figures. In some optional implementations, the functions indicated in the blocks may not appear in the order indicated in the figures. For example, in fact, depending on the functions involved, two blocks shown in succession may be executed concurrently or substantially concurrently, or sometimes these blocks may be executed in the opposite order. It should also be noted that each block in the block diagram and / or flowchart illustration and the combination of blocks in the block diagram and / or flowchart illustration can be implemented by a system based on special-purpose hardware that performs a specified function or action or executes a combination of special-purpose hardware and computer instructions.

[0115] In addition, according to an embodiment, any component, element, module or unit described herein may be embodied as various numbers of hardware, software and / or firmware structures that perform the above-mentioned corresponding functions. For example, these components, elements, modules or units may use direct circuit structures that can perform the corresponding functions under the control of one or more microprocessors or other control devices, such as memory, processors, logic, lookup tables, etc. In addition, these components, elements, modules or units may be specifically embodied by a portion of a program or code, which contains one or more executable instructions for performing a specified logical function. In addition, at least one of these components, elements, modules or units may also include a processor, such as a central processing unit (CPU), a microprocessor, etc. that performs the corresponding function.

[0116] Obviously, the systems and / or methods described herein can be implemented in various forms of hardware, firmware, or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods is not a limitation of implementation. Thus, the operation and behavior of the systems and / or methods are described herein without reference to specific software code - it being understood that software and hardware can be designed to implement the systems and / or methods based on the description herein.

[0117] Any element, behavior or instruction used herein should not be interpreted as critical or essential unless explicitly described as critical or essential. In addition, the articles "one" and "an" used herein are intended to include one or more items and can be used interchangeably with "one or more". In addition, the term "group" as used herein is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, etc.) and can be used interchangeably with "one or more". If only one item is intended to be represented, the term "one" or similar language is used. In addition, the terms "having", "containing", "including", etc. used herein are intended to be open terms. In addition, unless otherwise expressly stated, the word "based on" is intended to mean "at least partially based on".

[0118] The descriptions of the various aspects and embodiments are presented for illustrative purposes and are not intended to be exhaustive or limited to the disclosed embodiments. Even though combinations of features are disclosed in the claims and / or disclosed in the specification, these combinations are not intended to limit the possible implementations of the present application. In fact, many of these features can be combined in ways that are not specifically recited in the claims and / or disclosed in the specification. Although each dependent claim listed below may directly reference only one claim, the disclosure of possible implementations includes each dependent claim in combination with every other claim in the claim set. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the described embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications or technical improvements to technologies found on the market, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

[0119] Selected abbreviations:

[0120] VR: Virtual Reality

[0121] HMD: Head-mounted device

[0122] QoE: Quality of Experience

[0123] FOV: Field of view

[0124] ABR: Adaptive Bitrate

[0125] IDR: Instantaneous Decoder Refresh

[0126] SDRM: Fragment Download and Refinement Module

[0127] TMM: Tile Merging Module

[0128] FIFO: First In First Out

Claims

1. A method for receiving an encoded virtual reality (VR) video stream, the method comprising: receiving a plurality of segments of the encoded VR video stream; storing the plurality of fragments in a playout buffer, wherein buffered fragments from the plurality of fragments include a plurality of buffered tiles, the plurality of buffered tiles including buffered tiles corresponding to at least one tessellation of a previous viewport; Determining whether a current playback time of a VR video corresponding to the encoded VR video stream is within a threshold time of the playback time of the buffered segment; determining whether a current duration of the playout buffer is greater than a threshold duration; Determine whether the current bandwidth is greater than the threshold bandwidth; determining whether the current viewport is different from the previous viewport; Based on determining that the current playback time is within the threshold time, the current duration of the playback buffer is greater than the threshold duration, the current bandwidth is greater than the threshold bandwidth, and the current viewport is different from the previous viewport, storing at least one refined tile corresponding to the current viewport in the playback buffer, the at least one refined tile corresponding to the current viewport having at least one of: a higher video quality than at least one buffered tile of the plurality of buffered tiles, and a higher resolution than at least one buffered tile of the plurality of buffered tiles; constructing a frame corresponding to the buffered fragment based on the plurality of buffered tiles and at least one tessellated tile corresponding to the current viewport; and The encoded VR video stream is decoded based on the constructed frames.

2. The method according to claim 1, further comprising: Based on determining that at least one of the current playback time is outside the threshold time, the current duration of the playback buffer is less than the threshold duration, the current bandwidth is less than the threshold bandwidth, and the current viewport is no different from the previous viewport, the next segment of the encoded VR video stream is stored in the playback buffer.

3. The method according to claim 1, further comprising: Based on determining that at least one of the current playback time is outside the threshold time, the current duration of the playback buffer is less than the threshold duration, the current bandwidth is less than the threshold bandwidth, and the current viewport is no different from the previous viewport, the frame corresponding to the buffered fragment is constructed based on the multiple buffered tiles.

4. The method according to claim 1, wherein The current viewport corresponds to the user's field of view FOV at the current playback time, and Wherein, when the buffered segment is stored in the playback buffer, the previous viewport corresponds to the user's FOV at a previous time.

5. The method according to claim 1, wherein The frame is constructed by merging the plurality of buffered tiles and the at least one tessellated tile corresponding to the current viewport.

6. The method according to claim 1, wherein The plurality of buffered tiles and the at least one tessellated tile corresponding to the current viewport are not obtained from the playout buffer in a first-in-first-out (FIFO) manner.

7. The method according to claim 1, wherein The frame is constructed based on the frame read requests corresponding to the buffered segments.

8. A device for receiving an encoded virtual reality (VR) video stream, the device comprising: at least one memory configured to store program code; as well as At least one processor is configured to read the program code and execute the method according to any one of claims 1 to 7 according to instructions of the program code.

9. A non-transitory computer-readable medium storing instructions, the instructions comprising: One or more instructions, when executed by one or more processors of a device for receiving an encoded virtual reality (VR) video stream, the one or more instructions cause the one or more processors to perform the method of any one of claims 1-7.