Rebuffering Reduction for Adaptive Bitrate Video Streaming

By adjusting the bit rate and playback speed of the video clip based on the fill level of the playback buffer in adaptive bit rate video streaming, the rebuffering problem caused by network bandwidth changes is solved, and user experience and benefits are improved.

CN116962809BActive Publication Date: 2025-07-29AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310141866.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2022-04-25
Filing Date
2023-02-17
Publication Date
2025-07-29
Estimated Expiration
2043-02-17

AI Technical Summary

Technical Problem

In the prior art, video streaming is too long and the frequency of rebuffering caused by changes in network bandwidth, which affects the user experience and the benefits of content providers.

Method used

By adjusting the bit rate level and playback speed of the video clip based on the padding level of the play buffer in adaptive bit rate video streaming, a control algorithm is used to reduce the rebuffering time and frequency.

Benefits of technology

Effectively reduces the rebuffering time and event frequency during video playback, improving the quality of user experience (QoE) and the benefits of content providers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116962809B_ABST
    Figure CN116962809B_ABST
Patent Text Reader

Abstract

The present disclosure relates to reducing rebuffering in adaptive bitrate video streaming. A method is provided that includes setting, by a controller, a first bitrate level for a next video segment and comparing a fill level of a play buffer with a first threshold. If the fill level of the play buffer meets the first threshold, the first bitrate level of the next video segment is replaced by setting a second bitrate level for the next video. A first request for the next video segment encoded at the first bitrate level or, if the fill level of the play buffer meets the first threshold, at the second bitrate level, is sent to a server, and the requested next video segment is downloaded and stored in the play buffer. A decoder decodes the next video segment from the play buffer for playback on a display device after the next video segment has been downloaded and stored in the play buffer.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This description generally relates to video streaming, including, for example, adaptive bitrate video streaming. Background Art

[0002] Internet-based video technologies can rely on HTTP-based adaptive streaming. Such protocols have been standardized under the umbrella of HTTP-based Dynamic Adaptive Streaming over HTTP (DASH). In a DASH system, video content is divided into multiple segments or chunks, each corresponding to a playback time period. The video content is encoded at multiple discrete bitrates, and segments or chunks from different bitrate streams are aligned so that a video player can switch to a different bitrate at chunk boundaries in response to changes in network bandwidth conditions. Summary of the Invention

[0003] In one aspect, the present disclosure relates to a method that includes: setting, by a controller, a first bitrate level for a next video segment; comparing a fill level of a playback buffer with a first threshold; if the fill level of the playback buffer meets the first threshold, then replacing the first bitrate level for the next video segment set by the controller by setting a second bitrate level for the next video segment; issuing, to a server, a first request for the next video segment encoded at the first bitrate level or, if the fill level of the playback buffer meets the first threshold, at the second bitrate level; initiating downloading the requested next video segment from the server and storing the next video segment in the playback buffer; and decoding, by a decoder, the next video segment from the playback buffer for playback on a display device after the next video segment has been downloaded and stored in the playback buffer.

[0004] On the other hand, the present disclosure relates to a non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: issuing a first request to a server for a next video segment encoded at a first bitrate level; initiating downloading from the server the next video segment encoded at the first bitrate level and storing the next video segment in a play buffer; comparing a fill level of the play buffer with a first threshold; if the fill level of the play buffer meets the first threshold, changing a first playback speed set for the next video segment to a second playback speed; and decoding the next video segment from the play buffer for playback on a display device at the first playback speed after the next video segment has been downloaded and stored in the play buffer or at the second playback speed if the fill level of the play buffer meets the first threshold.

[0005] In another aspect, the present disclosure relates to an electronic device including: a memory including a play buffer; and a processor coupled to the memory and configured to: set a first bitrate level for a next video segment by a controller; compare a fill level of the play buffer with a first threshold; if the fill level of the play buffer meets the first threshold, replacing the first bitrate level set by the controller for the next video segment by setting a second bitrate level for the next video segment; issue a first request to a server for the next video segment encoded at the first bitrate level or at the second bitrate level if the fill level of the play buffer meets the first threshold; initiate downloading the next video segment from the server and storing the next video segment in the play buffer; compare the fill level of the play buffer with a second threshold; if the fill level of the play buffer meets the second threshold, changing a first playback speed set for the next video segment to a second playback speed; and decoding the next video segment from the play buffer by a decoder for playback on a display device at the first playback speed after the next video segment has been downloaded and stored in the play buffer or at the second playback speed if the fill level of the play buffer meets the second threshold. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] Certain features of the technology are set forth in the appended claims. However, for explanatory purposes, several embodiments of the technology are set forth in the drawings.

[0007] Figure 1 is a diagram illustrating adaptive bitrate streaming of video content according to aspects of the technology.

[0008] Figure 2 Illustrate an example of a network environment 200 in which an ABR video streaming system according to aspects of the present technology may be implemented.

[0009] Figure 3 Is a block diagram illustrating components of an electronic device according to aspects of the present technology.

[0010] Figure 4 Is a flowchart illustrating an example adaptive bitrate streaming process according to aspects of the present technology.

[0011] Figure 5 Is a graph illustrating the occurrence of rebuffering during adaptive video player operation according to aspects of the present technology.

[0012] Figure 6 Is a block diagram illustrating components of an electronic device according to aspects of the present technology.

[0013] Figure 7 Is a flowchart illustrating an example process for setting a bitrate level of a video segment according to aspects of the present technology.

[0014] Figure 8 Is a block diagram illustrating components of an electronic device according to aspects of the present technology.

[0015] Figure 9 Is a flowchart illustrating an example process for using playback speed control for a video segment according to aspects of the present technology.

[0016] Figure 10 Is a flowchart illustrating an example process for using playback speed control for a video segment according to aspects of the present technology.

[0017] Figure 11 Is a block diagram illustrating an electronic system in which aspects of the present technology may be implemented. Detailed Description

[0018] The following detailed description is intended as a description of various configurations of the present technology and is not intended to represent the only configuration in which the present technology may be practiced. The accompanying drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for providing a thorough understanding of the present technology. However, the present technology is not limited to the specific details set forth herein and may be practiced without one or more of the specific details. In some instances, structures and components are shown in block diagram form in order to avoid obscuring the concepts of the present technology.

[0019] Internet-based video technologies can rely on HTTP (HyperText Transfer Protocol)-based adaptive streaming. Such protocols have been standardized under the umbrella of HTTP-based Dynamic Adaptive Streaming over HTTP (DASH). In a DASH system, video content is divided into multiple segments or chunks, each of which contains a portion of the video content data corresponding to a playback time period (e.g., 2 seconds, 5 seconds, 10 seconds, etc.). The term "playback" refers to the presentation of decoded video content (which can include both visual and audio content) on a display device such as a television, laptop computer, tablet computer, smart phone, etc. The video content is encoded at multiple discrete bitrate levels, and segments or chunks from different bitrate streams are aligned such that a video player can switch to a different bitrate level at chunk boundaries in response to changes in network bandwidth conditions. A bitrate level indicates the amount of data per unit time (e.g., megabits per second) at which the video content is encoded and should be adjusted by the available network bandwidth for uninterrupted streaming of the video content. The increased amount of data provided by higher bitrate levels can be used to improve the quality of the streamed video content, e.g., by increasing the resolution and / or increasing the frame rate. The terms "segment" and "chunk" are used interchangeably herein.

[0020] For example, Figure 1 is a diagram illustrating the adaptive bitrate streaming of video content according to aspects of the present technology. As Figure 1 depicted, M copies of the video content are stored on a server. Each copy of the video content is divided into K segments or chunks and encoded at different respective bitrate levels from a set of available bitrate levels , resulting in M streams of video content encoded at different respective bitrate levels being stored on the server. The solid lines drawn through the respective streams of the video content represent example paths illustrating the changes in bitrate levels made when streaming the video content. The K segments or chunks of the video content streamed at different bitrate levels are arranged along the Figure 1 timeline illustrated at the bottom.

[0021] Quality of Experience (QoE) plays a key role in Internet video applications because it ultimately affects the revenue stream of content providers. Specifically, metrics such as rebuffer duration (e.g., the playback buffer of the player has no content to play), startup latency (i.e., the lag between when the user clicks and when playback can start), average playback bitrate, and availability of the delivered bitrate have become key factors. Among all those factors, the rebuffer time is the most important because overly long or frequent rebuffering can cause the user to abandon watching the current channel and switch to other programs.

[0022] The techniques herein address control algorithms designed to reduce both the amount of rebuffering time and the frequency of rebuffering events during adaptive bitrate (ABR) streaming of video content. In accordance with aspects of the techniques herein, a control algorithm is introduced on top of existing ABR control algorithms that can override the bitrate level decisions made by the ABR control algorithm based on the fill level of the play buffer in order to reduce the rebuffering time and frequency. Alternatively or in addition, another control algorithm can be employed that controls the playback speed of video content based on the fill level of the play buffer during streaming in order to reduce the rebuffering time and frequency. These control algorithms and their associated improvements are discussed in more detail below.

[0023] Figure 2 An example of a network environment 200 in which an ABR video streaming system in accordance with aspects of the techniques herein can be implemented is illustrated. However, it may not be necessary to include all of the depicted components, and one or more implementations may include additional components not shown in the figures. Variations in the arrangement and type of components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be employed.

[0024] The example network environment 200 includes, for example, a content delivery network (CDN) 210 communicatively coupled to an electronic device 220 via a network 208. The CDN 210 may include and / or be communicatively coupled to a content server 212, an antenna 216, and / or a satellite transmitter 218. The content server 212 may encode and / or transmit an encoded data stream via the network 208, such as an MPEG AVC (Advanced Video Coding) / ITU-T H.264 encoded video stream, an MPEG HEVC (High Efficiency Video Coding) / ITU-T H.265 encoded video stream, a VP9 encoded video stream, an AOM AV1 encoded video stream, and / or an MPEG VVC (Versatile Video Coding) / ITU-T H.266 encoded video stream. The antenna 216 transmits the encoded data stream via air, and the satellite transmitter 218 may transmit the encoded data stream to a satellite 215.

[0025] The electronic device 220 may include and / or be coupled to a satellite receiving device 222, such as a satellite dish, that receives the encoded data stream from the satellite 215. In one or more implementations, the electronic device 220 may further include an antenna for receiving the encoded data stream (e.g., an encoded video stream) from the antenna 216 of the CDN 210 via air. The content server 212 and / or the electronic device 220 may be or may include one or more components of the electronic systems discussed below with respect to Figure 3 、 6 、8, and / or 11.

[0026] The network 208 can be a public communication network (such as the Internet, a cellular data network, or a dial-up modem via a telephone network) or a private communication network (such as a private local area network (LAN) or a leased line). The network 208 can also include (but is not limited to) any one or more of the following network topologies, including bus networks, star networks, ring networks, mesh networks, star-bus networks, tree or hierarchical networks, and the like. In one or more embodiments, the network 208 can include transmission lines communicatively coupling the content server 212 and the electronic device 220, such as coaxial transmission lines, fiber optic transmission lines, or substantially any transmission line.

[0027] The content server 212 can include or be coupled to one or more processing devices, a data storage 214, and / or an encoder. The one or more processing devices execute computer instructions stored in the data storage 214, such as to implement a content delivery network. The data storage 214 can store the computer instructions on a non-transitory computer-readable medium. The data storage 214 can further store multiple copies of video content delivered by the CDN 210 encoded at different respective bit rate levels. The encoder can encode a video stream using a codec, such as an AVC / H.264 codec, an HEVC / H.265 codec, a VP9 encoder decoder, an AV1 codec, a VVC / H.266 codec, or any other suitable codec.

[0028] In one or more embodiments, the content server 212 can be a single computing device, such as a computer server. Alternatively, the content server 212 can represent multiple computing devices working together to perform the actions of a server computer (such as a computer cloud and / or a distributed system). The content server 212 can be coupled to various databases, storage services, or other computing devices, such as an adaptive bit rate (ABR) server, that can be collocated with the content server 212 or located separately from the content server 212.

[0029] The electronic device 220 can include or be coupled to one or more processing devices, a memory, and / or a decoder, such as a hardware decoder. The electronic device 220 can be any device capable of decoding an encoded data stream (such as a VVC / H.266 encoded video stream).

[0030] In one or more embodiments, the electronic device 220 can be or can include a laptop or desktop computer, a smart phone, a tablet device, a wearable electronic device (such as a pair of glasses or a watch having one or more processors coupled to and / or embedded therein), a set-top box, a television or other display having one or more processors coupled to and / or embedded therein, a video game console, or any other electronic device that can be used to receive and decode an encoded data stream (such as an encoded video stream).

[0031] In Figure 2 Figure 2 , the electronic device 220 is depicted as a set-top box, e.g., a device coupled to a display 224 and capable of displaying video content on the display 224, such as a television, monitor, or any device capable of displaying video content. In one or more embodiments, the electronic device 220 may be integrated into the display 224, and / or the display 224 may be capable of outputting audio content in addition to video content. The electronic device 220 may receive a stream, e.g., an encoded data stream, from the CDN 210, which includes a video content stream, such as a television program, a movie, or substantially any content item. The electronic device 220 may receive the encoded data stream from the CDN 210 via an antenna 216, via a network 208, and / or via a satellite 215 and decode the encoded data stream, e.g., using a hardware decoder.

[0032] Figure 3 is a block diagram illustrating components of an electronic device (e.g., Figure 2 the electronic device 220 shown in Figure 2 ) in accordance with aspects of the present technology. However, not all of the depicted components may be required, and one or more embodiments may include additional components not shown in the figure. Variations in the arrangement and type of components may be made without departing from the spirit or scope of the claims as set forth herein. The connections between the depicted or described components are not limited to direct connections and may be implemented with one or more intermediate components.

[0033] Figure 3 The electronic device (e.g., an adaptive video player) depicted in Figure 3 includes an HTTP engine 302, a play buffer 304, a throughput predictor 306, an ABR controller 308, and a decoder 310. In accordance with aspects of the present technology, the HTTP engine 302 issues a request ("GET") to a server 312 via a network 314 (e.g., the Internet) for chunks of video content encoded at a selected bitrate level. The HTTP engine 302 downloads the requested chunks from the server 312 via the network 314 and stores the chunks in the play buffer 304. The HTTP engine 302 may also report the network throughput (i.e., bandwidth) experienced when downloading the chunks from the server 312.

[0034] The ABR controller 308 selects a bitrate level for the next chunk to be downloaded by the HTTP engine 302 and notifies the HTTP engine 302 of the selection. The ABR controller 308 makes the bitrate level selection based on one or more inputs received from other components of the electronic device. For example, the throughput predictor 306 estimates the network bandwidth expected to be available for downloading the next chunk based on previous bandwidth measurements delivered by the HTTP engine 302 to the throughput predictor 306. The play buffer 304 reports the amount of available playtime from the video content chunks buffered in the play buffer or the fill level available for querying the play buffer. Other metrics such as the number of chunks or video segments buffered in the play buffer can be used to measure the fill level of the play buffer, for example. One or both of the estimated network bandwidth and the fill level of the play buffer can be used by the ABR controller 308 to make the bitrate level selection. In addition to or instead of the two inputs described above, the ABR controller 308 can also use other inputs.

[0035] The decoder 310 consumes and decodes video content chunks from the play buffer 304 and provides the decoded video content to the display 316 for playing the video content to a viewer. The decoder 310 can also report a user-perceived quality of experience (QoE) score to assist the decision-making logic in the ABR controller 308. An example of the process outlined above is explained in more detail in the description provided below.

[0036] Figure 3 Each or one or more portions of the components depicted therein can be implemented in software (e.g., instructions, subroutines, code), can be implemented in hardware (e.g., application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), programmable logic device (PLD), controller, state machine, gated logic, discrete hardware components, or any other suitable device), and / or can be implemented as a combination of both.

[0037] Figure 4 is a flowchart illustrating an example adaptive bitrate streaming process according to aspects of the present technology. For purposes of explanation, Figure 4 The blocks of the process illustrated therein are described herein as occurring serially or linearly. However, multiple blocks of the process can occur in parallel. Additionally, the blocks of the process need not be executed in the order shown and / or one or more blocks of the process need not be executed and / or can be replaced by other operations.

[0038] For purposes of describing Figure 4 the process illustrated therein, the downloaded video content is modeled as a set of consecutive video segments or chunks V = {1, 2, …, K}, where L is the segment time (i.e., each segment contains L seconds of video). Multiple copies of the video content are stored on the server, where each copy is at a different bitrate level from a set of available bitrate levels Encoded at different selected bitrates, where r1 < r2 <... < r M . The adaptive video player can choose to download video segment k at the selected bitrate level . B(t) ∈ [0, B max is the fill level at time t (i.e., the playback time of the remaining video content in the playback buffer), and B max is the maximum amount of playback time of video content that can be buffered in the playback buffer. B k = B(t k ) represents the fill level of the playback buffer at time t k , where time t k is the time when the adaptive video player starts downloading video segment k from the server.

[0039] At the start of the process in Figure 4 , both tracking parameters total_rebuffering_time (tr_time) and total_rebuffering_events (tr_events) are reset to 0. Total_rebuffering_time keeps track of the total amount of time the adaptive video player spends in rebuffering during the playback of video content and thus does not play the video to add one or more video segments to the playback buffer in response to the playback buffer being emptied by the decoder. Total_rebuffering_events keeps track of the total number of instances during the playback of video content that rebuffering occurs. Additionally, the current video segment number is set to 1 (k = 1), the bitrate level selected for the first video segment is set to the lowest available bitrate level (R1 = r1), and the fill levels of other playback buffers are initialized to 0 (B1 = 0). With these values, the HTTP engine issues a request for video segment 1 encoded at bitrate r1, and the fill level is updated to B2 = B1 + L. After the parameter initialization outlined above, playback by the decoder begins.

[0040] When the process has started, the occupancy level of the playback buffer is checked to determine if there is space in the playback buffer to append video segment k (box 402). If there is not enough space in the playback buffer for video segment k, then the occupancy level of the playback buffer is reduced using Playback((B k+1 + L - B max ) + ), where Playback(t) is a function that consumes video content of length t in the playback buffer, and (x) + = max(x, 0) ensures that the term can never be negative (box 404). Then, the fill level of the playback buffer is updated to Bk+1 = B k+1 - (B k+1 + L - B max ) + 。

[0041] αt k represents the waiting time after the download of chunk k by the HTTP engine has completed and before it can start downloading chunk k + 1. Δt is used in some ABR control algorithms k to improve the fairness of multi - player video streaming. If Δt k is adopted, then the fill level of the playback buffer is decreased using Playback(Δt k ) and the fill level is updated to B k+1 = B k+1 - Δt k (box 406).

[0042] The bit - rate level (R k+1 ) of the next video segment is determined by the ABR controller (box 408). For example, the bit - rate level of the next video segment can be determined using a function where is the predicted bandwidth for downloading the next video segment, and B k+1 is the fill level of the playback buffer at the start of downloading video segment k + 1. The predicted throughput or bandwidth can depend on previous measurements of the network bandwidth. For example, C = {C k-N+1 , C k-N+2 ,..., C k-1 , C k} can represent the measured network bandwidth experienced during the download of the last N video segments, and can be represented as the predicted network bandwidth determined for the last N video segments. The predicted bandwidth for downloading the next video segment (i.e., video segment k + 1) is a function of C and , i.e., For example, the predicted bandwidth can be determined by taking the harmonic mean of the previously measured bandwidths shown in the equation below.

[0043]

[0044]

[0045]

[0046] The present technology is not limited to algorithms that use both the predicted bandwidth and the fill level. For example, some algorithms may use only the predicted bandwidth to select and set the bitrate level for the next video segment. Alternatively, other algorithms may use only the fill level to select and set the bitrate level for the next video segment.

[0047] Regarding the bitrate level set for the next video segment, increment k (k = k + 1) (block 410), and the HTTP engine issues a request for the next video segment to the server (block 412).

[0048] The ABR controller may periodically monitor the network bandwidth experienced during the download of a video segment and may make a decision to abandon the download of the video segment at the current bitrate level and, if certain conditions are met, restart the download of the video segment at a new, lower bitrate level (block 414). The conditions may include whether the download time elapsed at the current bitrate level meets a first predefined threshold, whether the remaining download time at the current bitrate level meets another predefined threshold, whether the bitrate level estimated based on the network bandwidth experienced so far during the download of the video segment is less than the current bitrate level set for the video segment, and / or whether the estimated size of the video segment at the lower bitrate level is less than the size of the video segment remaining to be downloaded at the current bitrate level. The present technology is not limited to these conditions for evaluating whether to abandon the download of the video segment and start downloading the video segment at a lower bitrate level.

[0049] If the download of the video segment at the current bitrate level is abandoned (block 414), then the amount of re-buffering time and the number of re-buffering events are determined for the period of time before the download was abandoned, and the occupancy level of the play buffer is updated to reflect the amount of video content consumed by the decoder in the play buffer (block 416). These updates may be made based on the following equations:

[0050]

[0051]

[0052]

[0053]

[0054] where sd k (R k ) is the size of the portion of the video segment downloaded at the current bitrate level before the download was abandoned, SC k is the average network bandwidth (throughput) experienced during the download of the video segment at the current bitrate level before the download was abandoned, and

[0055] Regarding the download of a video segment at the currently abandoned bitrate level R k determine a new bitrate level and set the R of the video segment k to (box 418). For example, the new bitrate level (where ) can be a function of the size sd of the video segments downloaded so far k (R k ), the size d of the current video segment k (R k ), the network bandwidth SC experienced so far k and the current bitrate level R k , i.e.:

[0056]

[0057] This technique is not limited to any specific function for determining the new bitrate level . Additionally, the function can be based on fewer factors or more factors than those outlined above. Regarding the new bitrate level set for video segment k, the process returns to the HTTP engine to issue a request to the server for the video segment encoded at the new bitrate level (box 412).

[0058] If the download of video segment k is allowed to complete instead of being abandoned (box 414), then the amount of re-buffering time and the number of re-buffering events are determined during the period in which the download occurs and the occupancy level of the play buffer is updated to reflect the amount of video content consumed by the decoder during that period in the play buffer (box 420). These updates can be made based on the following equations:

[0059]

[0060]

[0061]

[0062]

[0063] where d k (R k ) is the size of video segment k encoded at bitrate level R k , and C k is the average network bandwidth (throughput) experienced during the download of video segment k.

[0064] The process continues by determining whether any video segments of the video content have remained downloaded from the server (k < K) (block 422). If a video segment remains downloaded on the server, the process returns to check the occupancy level of the play buffer to determine whether there is space in the play buffer to append video segment k (block 402). If all K video segments of the video content V have been downloaded from the server, the video segments remaining in the play buffer are decoded by the decoder for playback, and playback of the video content ends.

[0065] As described above, rebuffering is an important factor in evaluating QoE in Internet video applications. Figure 5 is a graph illustrating the occurrence of rebuffering during the operation of an adaptive video player according to aspects of the present technology. At time t k , the adaptive video player begins downloading chunk (video segment) k. The download time for this chunk will be d k (R k ) / C k , i.e., it depends on the size of the chunk selected at bitrate R k and the average download bandwidth (throughput) C k . Once chunk k is fully downloaded, the video player waits for Δt k and begins downloading the next chunk k+1 at time t k+1 . The fill level B(t) evolves as chunks are downloaded and the video is played. Specifically, the fill level increases by L seconds after chunk k is downloaded and decreases by d k (R k ) / C k seconds as the player consumes chunks from the play buffer. The buffer dynamics can be expressed as follows:

[0066]

[0067]

[0068] As Figure 5 illustrated, if then the play buffer becomes empty while the adaptive video player is still downloading chunk k, resulting in a rebuffering event. The total amount of rebuffering time experienced during the playback of video content V can be defined as:

[0069]

[0070] Similarly, the total number of rebuffering events experienced during the playback of video content V can be defined as:

[0071]

[0072] An example of a QoE metric that can be used to evaluate the performance of an adaptive video system takes into account the user experience and includes the average video quality within all downloaded chunks and the losses caused by the average quality change from one chunk to another, the re-buffering time, and the startup delay. The QoE metric is defined as:

[0073]

[0074] where q(.) is a non-decreasing function that maps the selected bitrate level R k to the video quality q(R k ) perceived by the user, and where α, β, γ are non-negative weighting parameters corresponding to the video quality change, the re-buffering time, and the startup delay, respectively.

[0075] By assuming the quality mapping function q(R k ) = R k and setting α = 1, and γ = 0, the QoE metric can be simplified to the effective bitrate (i.e., the average playback bitrate minus the losses due to the re-buffering time and the streaming video quality change). Then, the effective bitrate for streaming K chunks can be defined as:

[0076]

[0077] Here, the initial startup delay is not included in the effective bitrate metric because it is typically a fixed amount of time regardless of which ABR control algorithm is used.

[0078] Figure 6 is a block diagram illustrating the components of an electronic device according to aspects of the present technology. However, not all of the depicted components may be required, and one or more embodiments may include additional components not shown in the figure. Variations in the arrangement and type of components may be made without departing from the spirit or scope of the claims as set forth herein. The connections between the depicted or described components are not limited to direct connections and may be implemented with one or more intermediate components.

[0079] Figure 6 The electronic device depicted in Figure 3 is similar to the electronic device described above in connection with Figure 6The electronic device depicted in includes an under and over buffer controller 602 that applies a control algorithm on top of the control algorithm applied by the ABR controller 308 to set the bitrate level of video segments requested and downloaded from the server 312 via the network 314. The new control algorithm applied by the under and over buffer controller 602 reduces rebuffering times and events and improves QoE using the fill level of the play buffer 304 to identify conditions where the bitrate level set by the ABR controller 308 can be replaced with a more appropriate bitrate level for the corresponding fill level. The process performed by the under and over buffer controller 602 is described in more detail below in conjunction with Figure 7 More detailed description.

[0080] Figure 6 Each or one or more parts of the components depicted in can be implemented in software (e.g., instructions, subroutines, code), can be implemented in hardware (e.g., application specific integrated circuit (ASIC), field programmable gate array (FPGA), programmable logic device (PLD), controller, state machine, gated logic, discrete hardware components or any other suitable device), and / or can be implemented as a combination of both.

[0081] Figure 7 is a flowchart illustrating an example process for setting the bitrate level of a video segment according to aspects of the present technology. For explanatory purposes, Figure 7 The blocks of the process illustrated in are described herein as occurring serially or linearly. However, multiple blocks of the process can occur in parallel. Additionally, the blocks of the process need not be executed in the order shown and / or one or more blocks of the process need not be executed and / or can be replaced by other operations.

[0082] Figure 7 The process illustrated in replaces or supplements the operations described above in conjunction with Figure 4 Block 408 of. In the Figure 7 process, the ABR controller determines and sets the bitrate level of the next video segment to be downloaded by the HTTP engine (block 702) in the manner described above with respect to Figure 4 Block 408 in. Specifically, the bitrate level of the next video segment can be determined using the function where is the predicted bandwidth for downloading the next video segment, and B k+1 is the fill level of the play buffer when the download of video segment k + 1 begins.

[0083] The fill level B k+1 is compared with a first threshold Th low representing a relatively low fill level of the play buffer. If the fill level B k+1 is less than the first threshold Th low(Frame 704), the first bitrate level of the next video segment set by the ABR controller is replaced with a predetermined second bitrate level (Frame 706). For example, the ABR controller can write the set first bitrate level into a control register accessible by the HTTP engine. When the fill level meets the first threshold, the second bitrate level can replace the first bitrate level in the control register. The predetermined second bitrate level is a relatively low bitrate level that will allow the next video segment to be downloaded to the play buffer faster and is expected to avoid rebuffering events. For example, the predetermined second bitrate level can be the lowest bitrate level from such that R k+1 = r1.

[0084] If the fill level B k+1 is not less than the first threshold Th low (Frame 704), then the fill level B k+1 is compared with a second threshold Th high representing a relatively high fill level of the play buffer. If the fill level B k+1 is greater than the second threshold Th high (Frame 708), then the first bitrate level of the next video segment set by the ABR controller is replaced with a predetermined third bitrate level (Frame 710). The predetermined third bitrate level is a relatively high bitrate level that will utilize the play time buffer provided by the relatively high fill level to increase the bitrate level of the next video segment and thereby improve the quality of the next video segment during playback. For example, the predetermined third bitrate level can be the highest bitrate level from such that R k+1 = r M .

[0085] If the fill level B k+1 does not meet the second threshold (Frame 708), then the bitrate level of the next video segment set by the ABR controller remains unchanged. In summary, the under and over buffer controller modifies the adaptive video player such that the bitrate level set for the next video segment R k+1 is set according to the following criteria:

[0086]

[0087] The first and second thresholds Th low and Th high can be configurable. According to aspects of the present technology, the two thresholds can be set as follows:

[0088]

[0089]

[0090] Figure 8 It is a block diagram illustrating components of an electronic device according to aspects of the present technology. However, it may not be necessary to have all of the depicted components, and one or more embodiments may include additional components not shown in the figures. Variations in the arrangement and type of components may be made without departing from the spirit or scope of the claims as set forth herein. The connections between the depicted or described components are not limited to direct connections and may be implemented with one or more intermediate components.

[0091] Figure 8 The electronic device depicted in Figure 3 and 6 is similar to the electronic devices described above in connection with Figure 8 For example, all three electronic devices include an HTTP engine 302, a play buffer 304, a throughput predictor 306, an ABR controller 308, and a decoder 310, and their descriptions will not be repeated. Additionally, Figure 8 the electronic device depicted in Figure 8 includes an under and over buffer controller 602, and its description will not be repeated either. However, the electronic device depicted in

[0092] has been modified to include a play speed controller 802. It should be noted that the incorporation of the under and over buffer controller 602 in the electronic device of Figure 8 is optional, and the play speed controller 802 may be incorporated into an electronic device with or without the under and over buffer controller 602.

[0092] According to aspects of the present technology, the play speed controller 802 implements a control algorithm that adjusts the play speed of video segments based on the fill level of the play buffer. The control algorithm utilizes the properties of the human visual system, where a viewer typically does not notice the play speed of video content within approximately 10% (10% higher or lower) of the real-time play speed. For example, if the fill level is less than a predefined low threshold, i.e., Th low , or if the fill level is less than a predefined intermediate threshold, i.e., Th mid , and the previous video segment download is abandoned, then the decoder is set to the slow play mode (e.g., 90% of the real-time play speed) of the video segment. Slowing down the play speed of the decoder for the video segment provides more time to download the next video segment into the play buffer before the current video segment finishes playing and thus reduces the chance of a rebuffering event or potentially shortens the duration of a rebuffering event. If the fill level is higher than a predefined high threshold, i.e., Th high , and the play is behind the real-time play speed due to the previous use of the slow play mode, then the decoder switches to the fast play mode (e.g., 110% of the real-time play speed) of the video segment to catch up with the play speed. Otherwise, the decoder is set to the normal real-time play mode. The operation of the play speed controller 802 is described below in connection withFigure 9 and 10 is described in more detail.

[0093] Figure 8 Each or one or more parts of the components depicted in may be implemented in software (e.g., instructions, subroutines, code), may be implemented in hardware (e.g., application specific integrated circuit (ASIC), field programmable gate array (FPGA), programmable logic device (PLD), controller, state machine, gated logic, discrete hardware components or any other suitable device), and / or may be implemented as a combination of both.

[0094] Figure 9 is a flowchart illustrating an example process for using playback speed control for a video segment according to aspects of the present technology. For purposes of explanation, Figure 9 the blocks of the process illustrated in are described herein as occurring serially or linearly. However, multiple blocks of the process may occur in parallel. Additionally, the blocks of the process need not be executed in the order shown and / or one or more blocks of the process need not be executed and / or may be replaced by other operations.

[0095] Figure 9 The process illustrated in replaces or supplements the process described above for Figure 4 block 416 of. As discussed above, this stage of the process follows the decision to abandon the download of the video segment in order to restart the video segment using a lower bitrate level. Initially, the fill level of the playback buffer is compared with a threshold PTh low (block 902). If the fill level is less than PTh low , then the playback speed controller 802 changes the playback speed set for the video segment by reducing the playback speed by a specified amount (e.g., 10%, 5%, 3%, etc.), thereby changing the playback speed of the first playback speed to a second playback speed (block 904).

[0096] If the fill level of the playback buffer does not meet the threshold PTh low , then the fill level of the playback buffer is compared with a threshold PTh low greater than PTh mid (block 906). Additionally, the process determines whether the download of the previous video segment was abandoned and restarted at a lower bitrate level (block 906). This determination can be made by checking whether a flag in a specified memory location has been set. If it is determined that the fill level is less than the threshold PTh mid and the download of the previous video segment was abandoned, then the playback speed controller 802 changes the playback speed of the video segment by reducing the playback speed by a specified amount (e.g., 10%, 5%, 3%, etc.), thereby changing the playback speed of the first playback speed to a second playback speed (block 904). The amount by which the playback speed is reduced may be the same as that used for where the fill level meets the threshold PTh lowThe conditions are the same, or they can be reduced by different amounts.

[0097] If the fill level of the playback buffer does not meet the threshold PTh mid , then the fill level of the playback buffer is compared with a threshold PTh mid greater than PTh high (block 908). Additionally, the process makes a determination as to whether the amount of playback lag time is greater than 0 (block 908). Playback lag time tracks the amount by which the time playback of the current video content lags behind the real-time playback of the video content due to the playback speed of one or more previous video segments being reduced. If the fill level is greater than the threshold PTh high and the current amount of playback lag time is greater than zero, then the playback speed controller 802 changes the playback speed for the video segment by increasing the playback speed by a specified amount (e.g., 10%, 5%, 3%, etc.), thereby changing the playback speed of the first playback speed to a third playback speed (block 910). If the fill level of the playback buffer is not greater than PTh high , or there is no playback lag time, then the playback speed of the video segment is not changed.

[0098] After reducing the playback speed of the video segment (block 904), increasing the playback speed of the video segment (block 910), or if the playback speed is not changed, then the process continues to update the amount of rebuffering time, the number of rebuffering events, the fill level, and the amount of playback lag time for video segment k during the period from when it starts downloading until abandonment (block 912). The manner in which these parameters are updated varies depending on whether the playback speed of the video segment is reduced, increased, or remains the same.

[0099] If the playback speed of the video segment is reduced, then the following equations are used to update the parameters:

[0100]

[0101]

[0102]

[0103]

[0104]

[0105] where δ is a small amount by which the playback speed is changed (e.g., 0.1, 0.05, 0.03, etc.), and pt_lag is the amount of playback lag time accumulated during the playback of the video content. Playback lag time starts at the beginning of playing the video content (e.g., Figure 4It is initialized to 0 when the process represented in [[ ]] starts. δ can be a configurable value. If the playback speed of the video segment is increased and the playback lag time is greater than 0, then the following equation is used to update the parameter:

[0106]

[0107]

[0108]

[0109]

[0110]

[0111] If the playback speed of the video segment is not changed, then the parameter is updated in the manner described above for Figure 4 in box 416. Then, the process sets the previous video segment discard flag to true to reflect discarding the downloaded video segment (box 914).

[0112] Figure 10 is a flowchart illustrating an example process for using playback speed control for a video segment in accordance with aspects of the present technology. For explanatory purposes, Figure 10 the boxes of the process illustrated in [[ ]] are described herein as occurring serially or linearly. However, multiple boxes of the process may occur in parallel. Additionally, the boxes of the process need not be executed in the order shown and / or one or more boxes of the process need not be executed and / or may be replaced by other operations.

[0113] Figure 10 The process illustrated in [[ ]] replaces or supplements the process described above for Figure 4 box 420. As discussed above, this stage of the process follows the decision not to discard the downloaded video segment k. The portions of the process (boxes 1002, 1004, 1006, 1008, and 1010) for adjusting the playback speed of video segment k based on the fill level of the playback buffer follow the same corresponding portions (boxes 902, 904, 906, 908, and 910) of the process described above for Figure 9 and the description of this portion of the process will not be repeated.

[0114] After decreasing the playback speed of the video segment (box 1004), increasing the playback speed of the video segment (box 1010), or if the playback speed is not changed, then the process continues to update the re-buffering time amount, the number of re-buffering events, the fill level, and the playback lag time amount after video segment k has finished downloading (box 1012). Similar to the content discussed above for Figure 9 the manner in which these parameters are updated varies depending on whether the playback speed of the video segment is decreased, increased, or remains the same.

[0115] If the playback speed of a video segment is decreased, then the following equation is used to update a parameter:

[0116]

[0117]

[0118]

[0119]

[0120]

[0121] If the playback speed of a video segment is increased and the playback latency is greater than 0, then the following equation is used to update a parameter:

[0122]

[0123]

[0124]

[0125]

[0126]

[0127] If the playback speed of the video segment is not changed, then the parameter is updated in the manner described above with respect to Figure 4 in box 420. The process then sets the previous video segment discard flag to false to reflect that the download of video segment k is complete (box 1014).

[0128] Threshold PTh low 、PTh mid and PTh high may be configurable. For example, these thresholds may be set as follows:

[0129]

[0130]

[0131]

[0132] Although the values of PTh low and PTh high indicated above are the same as the PTh Figure 7 and PTh low used for the embodiment described above in connection with highThe values are the same, but the present technology is not limited to using the same threshold for these different control algorithms and different control algorithms with different thresholds can be implemented.

[0133] Changing the playback speed used by the decoder to decode video segments from the playback buffer can depend on the trick mode to lower or increase the playback speed while matching the target display frame rate. For example, frame rate conversion (FRC) can be turned on in the decoder when the playback speed is decreased to insert additional frames between existing frames in the video segment. Similarly, the decoder can periodically discard one or more existing frames from the video segment during playback when the playback speed is increased. Additionally, audio / voice pitch correction can be applied to the audio portion of the video segment to match the expected sound pitch experienced during constant playback speed.

[0134] Figure 11 An electronic system 1100 in which one or more embodiments of the present technology can be implemented is conceptually illustrated. The electronic system 1100 can be, for example, a data device, a media converter, a desktop computer, a laptop computer, a tablet computer, a server, a telephone, or substantially any electronic device capable of transmitting signals via a network and implementing an adaptive video player in the manner described above. This electronic system 1100 includes various types of computer-readable media and interfaces for various other types of computer-readable media. In one or more embodiments, the electronic system 1100 is or includes one or more of the server 112 and / or the electronic device 120. The electronic system 1100 includes a bus 1108, one or more processing units 1112, a system memory 1104, a read-only memory (ROM) 1110, a permanent storage device 1102, an input device interface 1114, an output device interface 1106, and a network interface 1116 or subsets and variations thereof.

[0135] The bus 1108 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 1100. In one or more embodiments, the bus 1108 communicatively connects the one or more processing units 1112 to the ROM 1110, the system memory 1104, and the permanent storage device 1102. The one or more processing units 1112 retrieve instructions to be executed and data to be processed from these various memory units in order to perform the processes of the present disclosure. In different embodiments, the one or more processing units 1112 can be a single processor or a multi-core processor.

[0136] The ROM 1110 stores static data and instructions required by one or more processing units 1112 of the electronic system and other modules. On the other hand, the permanent storage device 1102 is a read-write memory device. The permanent storage device 1102 is a non-volatile memory unit that stores instructions and data even when the electronic system 1100 is turned off. One or more embodiments of the present disclosure use a mass storage device (such as a solid state drive or a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 1102.

[0137] Other embodiments use a removable storage device (such as a flash memory drive and its corresponding disk drive, an external magnetic hard drive, etc.) as the permanent storage device 1102. Like the permanent storage device 1102, the system memory 1104 is a read-write memory device. However, different from the permanent storage device 1102, the system memory 1104 is a volatile read-write memory, such as a random access memory. The system memory 1104 stores any of the instructions and data that one or more processing units 1112 need during operation. In one or more embodiments, the processes of the present disclosure are stored in the system memory 1104, the permanent storage device 1102, and / or the ROM 1110. One or more processing units 1112 retrieve the instructions to be executed and the data to be processed from these various memory units in order to execute the processes of one or more embodiments.

[0138] The bus 1108 is also connected to the input device interface 1114 and the output device interface 1106. The input device interface 1114 enables a user to convey information and selection commands to the electronic system. Input devices used with the input device interface 1114 include, for example, an alphanumeric keyboard and a pointing device (also referred to as a "cursor control device"). The output device interface 1106 enables the display of, for example, images generated by the electronic system 1100. Output devices used with the output device interface 1106 include, for example, a printer and a display device, such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information. One or more embodiments include a device that functions as both an input device and an output device, such as a touch screen. In these embodiments, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input can be received from the user in any form, including acoustic, voice, or tactile input.

[0139] Finally, as Figure 11As shown, bus 1108 also couples electronic system 1100 to one or more networks (not shown) via one or more network interfaces 1116. In this way, the computer can be part of one or more computer networks (e.g., a local area network (LAN), a wide area network (WAN), or an intranet or network of networks, such as the Internet). Any or all components of electronic system 1100 can be used in conjunction with this disclosure.

[0140] Embodiments within the scope of this disclosure can be implemented in part or in whole using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types). The nature of the tangible computer-readable storage medium can also be non-transitory.

[0141] A computer-readable storage medium can be any storage medium that can be read from, written to, or otherwise accessed by a general or special-purpose computing device, including any processing electronics and / or processing circuitry capable of executing instructions. By way of example, and not limitation, the computer-readable medium can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. The computer-readable medium can also include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, racetrack memory, FJG, and Millipede memory.

[0142] In addition, the computer-readable storage medium can include any non-semiconductor memory, such as optical disk storage devices, disk storage devices, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In some embodiments, the tangible computer-readable storage medium can be directly coupled to the computing device, while in other embodiments, the tangible computer-readable storage medium can be indirectly coupled to the computing device, e.g., via one or more wired connections, one or more wireless connections, or any combination thereof.

[0143] The instructions can be directly executable or can be used to develop executable instructions. For example, the instructions can be implemented as executable or non-executable machine code or in the form of a high-level language that can be compiled to generate executable or non-executable machine code. In addition, the instructions can also be implemented as data or can include data. The computer-executable instructions can also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As those skilled in the art will recognize, details including (but not limited to) the number, structure, sequence, and organization of the instructions can vary significantly without changing the underlying logic, functionality, processing, and output.

[0144] While the foregoing discussion has mainly related to microprocessors or multi-core processors that execute software, one or more embodiments are executed by one or more integrated circuits such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In one or more embodiments, the integrated circuit executes instructions stored on the circuit itself.

[0145] According to aspects of the present technology, a method is provided that includes setting, by a controller, a first bit rate level for a next video segment and comparing a fill level of a play buffer with a first threshold. If the fill level of the play buffer meets the first threshold, then replacing the first bit rate level for the next video segment set by the controller by setting a second bit rate level for the next video segment. Sending a first request to a server for the next video segment encoded at the first bit rate level or, if the fill level of the play buffer meets the first threshold, at the second bit rate level, and initiating downloading of the requested next video segment from the server and storing the next video segment in the play buffer. The next video segment from the play buffer is decoded for playing on a display device after the next video segment has been downloaded and stored in the play buffer.

[0146] The method may further include: comparing the fill level of the play buffer with a second threshold; and if the fill level of the play buffer meets the second threshold, then replacing the first bit rate level for the next video segment set by the controller by setting a third bit rate level for the next video segment. Sending the first request to the server for the next video segment encoded at the third bit rate level if the fill level of the play buffer meets the second threshold. The second threshold may be greater than the first threshold, and the fill level may meet the second threshold by exceeding the second threshold and meet the first threshold by being less than the first threshold. The third bit rate level may be greater than the second bit rate level. The second bit rate level may be the lowest bit rate level at which the next video segment is encoded on the server from a set of bit rate levels, and the third bit rate level may be the highest bit rate level at which the next video segment is encoded on the server from the set of bit rate levels. The fill level of the play buffer may be determined before storing the next video segment in the play buffer.

[0147] The method may further comprise: stopping the download of the next video segment from the server before completion based on one or more network bandwidth conditions; comparing the fill level of the play buffer with a third threshold; and if the fill level of the play buffer meets the third threshold, changing a first play speed set for the next video segment to a second play speed. The method may further comprise: setting a fourth bitrate level for the next video segment; and sending a second request to the server for the next video segment encoded at the fourth bitrate level, wherein the next video segment is decoded by the decoder for playing on the display device at the first play speed set for the next video segment or at the second play speed if the fill level of the play buffer meets the third threshold.

[0148] The method may further comprise: comparing the fill level of the play buffer with a fourth threshold if the fill level of the play buffer does not meet the third threshold; and if the fill level of the play buffer meets the fourth threshold, changing the first play speed of the next video segment to a third play speed, wherein the fourth threshold is greater than the third threshold and the third play speed is greater than the second play speed. The method may further comprise determining whether a current play lag time is greater than 0, wherein if the fill level meets the fourth threshold and the current play lag time is greater than 0, then changing the play speed set for the next video segment to the third play speed.

[0149] The method may further comprise: comparing the fill level of the play buffer with a fifth threshold, wherein the fifth threshold is greater than the third threshold and less than the fourth threshold; determining whether the download of a previous video segment has stopped; and if the fill level of the play buffer meets the fifth threshold and the download of the previous video segment has stopped, then changing the first play speed set for the next video segment to the second play speed. The play speed may be decreased by the decoder inserting one or more frames into the next video segment using frame rate conversion, and the play speed may be increased by the decoder periodically discarding one or more frames from the next video segment. The method may further comprise applying pitch correction to an audio portion of the next video segment based on a change made to the play speed set for the next video segment.

[0150] According to an aspect of the present technology, there is provided a non - transitory computer - readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations. The operations include: sending a first request to a server for a next video segment encoded at a first bit - rate level; initiating downloading from the server the next video segment encoded at the first bit - rate level and storing the next video segment in a play buffer. The operations further include: comparing a fill level of the play buffer with a first threshold; if the fill level of the play buffer meets the first threshold, then changing a first play speed set for the next video segment to a second play speed; and decoding the next video segment from the play buffer for playing on a display device at the first play speed after the next video segment has been downloaded and stored in the play buffer or at the second play speed if the fill level of the play buffer meets the first threshold.

[0151] The operations may further include: comparing the fill level of the play buffer with a second threshold; determining whether a current play lag time is greater than 0; and if the fill level of the play buffer meets the second threshold and if the current play lag time is greater than 0, then changing the first play speed set for the next video segment to a third play speed, where the second threshold is greater than the first threshold and the third play speed is greater than the second play speed. The operations may further include: comparing the fill level of the play buffer with a third threshold, where the third threshold is greater than the first threshold and less than the second threshold; determining whether downloading of a previous video segment has stopped; and if the fill level of the play buffer meets the third threshold and downloading of the previous video segment has stopped, then changing the first play speed of the next video segment to the second play speed.

[0152] The operations may further include: stopping the downloading of the next video segment from the server before completion based on one or more network bandwidth conditions; setting the bit - rate level of the next video segment to a second bit - rate level; sending a second request to the server for the next video segment encoded at the second bit - rate level; and initiating downloading of the next video segment encoded at the second bit - rate level and storing the next video segment in the play buffer.

[0153] The operation may further comprise: setting, by a controller, the first bitrate level of the next video segment; comparing the fill level of the play buffer with a third threshold; and if the fill level of the play buffer meets the third threshold, then replacing the first bitrate level of the next video segment set by the controller by setting a third bitrate level of the next video segment, wherein a first request for the next video segment encoded at the third bitrate level if the fill level of the play buffer meets the third threshold is issued to the server.

[0154] The operation may further comprise: comparing the fill level of the play buffer with a fourth threshold greater than the third threshold; and if the fill level of the play buffer meets the fourth threshold, then replacing the bitrate level of the next video segment set by the adaptive bitrate controller by setting a fourth bitrate level of the next video segment greater than the third bitrate level, wherein a first request for the next video segment encoded at the fourth bitrate level if the fill level of the play buffer meets the fourth threshold is issued to the server, and wherein the fill level meets the fourth threshold by exceeding the fourth threshold and meets the third threshold by being less than the third threshold.

[0155] According to an aspect of the present technology, there is provided an electronic device comprising: a memory including a play buffer; and a processor coupled to the memory. The processor is configured to: set, by a controller, a first bitrate level of a next video segment; compare the fill level of the play buffer with a first threshold; and if the fill level of the play buffer meets the first threshold, then replace the first bitrate level set by the controller for the next video segment by setting a second bitrate level of the next video segment. The processor is further configured to: issue a first request to a server for the next video segment encoded at the first bitrate level or at the second bitrate level if the fill level of the play buffer meets the first threshold; initiate downloading the next video segment from the server and storing the next video segment in the play buffer; and compare the fill level of the play buffer with a second threshold. If the fill level of the play buffer meets the second threshold, then change a first playback speed set for the next video segment to a second playback speed, and decode, by a decoder, the next video segment from the play buffer for playback on a display device at the first playback speed or at the second playback speed if the fill level of the play buffer meets the second threshold after the next video segment has been downloaded and stored in the play buffer.

[0156] The processor may further be configured to: compare the fill level of the play buffer with a third threshold greater than the first threshold; and if the fill level of the play buffer meets the third threshold, then replace the first bit rate level of the next video segment set by the controller by setting a third bit rate level of the next video segment greater than the second bit rate level, wherein the fill level meets the third threshold by exceeding the third threshold and meets the second threshold by being less than the second threshold.

[0157] The processor may further be configured to: stop the download of the next video segment from the server before completion based on one or more network bandwidth conditions; set a third bit rate level of the next video segment; and issue a second request to the server for the next video segment encoded at the third bit rate level, wherein the next video segment encoded at the third bit rate level is downloaded and stored in the play buffer and decoded from the play buffer for playback on the display device.

[0158] The foregoing description is provided to enable any person skilled in the art to practice the various aspects described herein. Those skilled in the art will readily recognize various modifications to these aspects, and the general principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language of the claims, where the reference to an element in the singular is not intended to mean "one and only one" but "one or more" unless expressly so stated. Unless otherwise expressly stated, the term "some" means one or more. Pronouns in the masculine (e.g., he) include the feminine and neuter genders (e.g., she and it), and vice versa. Headings and subheadings (if any) are used only for convenience and do not limit the disclosure.

[0159] The predicates "configured to", "operable to", and "programmed to" do not imply any particular tangible or intangible modification of the subject, but are intended to be used interchangeably. For example, a processor configured to monitor and control an operation or component may also mean that the processor is programmed to monitor and control the operation or that the processor is operable to monitor and control the operation. Similarly, a processor configured to execute code may be interpreted as a processor programmed to execute code or operable to execute code.

[0160] Phrases such as “aspect” do not imply that this aspect is essential to the technology or that this aspect applies to all configurations of the technology. The disclosure related to an aspect may apply to all configurations or one or more configurations. For example, the phrase “an aspect” may refer to one or more aspects, and vice versa. Phrases such as “configuration” do not imply that this configuration is essential to the technology or that this configuration applies to all configurations of the technology. The disclosure related to a configuration may apply to all configurations or one or more configurations. For example, the phrase “a configuration” may refer to one or more configurations, and vice versa.

[0161] The term “example” is used herein to mean “serving as an example or illustration”. Any aspect or design described herein as an “example” is not necessarily to be construed as preferred or advantageous over other aspects or designs.

[0162] All structural and functional equivalents of the elements of various aspects known or later to be known to those of ordinary skill in the art throughout the disclosure are expressly incorporated herein by reference and are intended to be covered by the claims. In addition, nothing disclosed herein is intended to be dedicated to the public, whether or not the disclosure is explicitly recited in the claims. No claim element shall be construed under the provisions of 35 U.S.C. § 112(f) unless the element is expressly recited using the phrase “means for...”, or in the case of a method claim, the element is recited using the phrase “step for...”. Further, to the extent that the terms “comprising”, “having”, or the like are used in a description or claim, such terms are intended to be inclusive in a manner similar to the term “including” as interpreted when used as a transitional word in a claim.

[0163] Those skilled in the art will appreciate that the various illustrative blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, the various illustrative blocks, modules, elements, components, methods, and algorithms have been described above generally in terms of their functionality. Whether this functionality is implemented as hardware or software depends upon the particular application and the design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in varying ways for each particular application. The various components and blocks may be arranged differently (e.g., arranged in a different order or partitioned in a different manner), all of which do not depart from the scope of the technology.

[0164] The predicate words "configured to", "operable to", and "programmed to" do not imply any particular physical or non - physical modification of the subject, but are intended to be used interchangeably. For example, a processor configured to monitor and control operations or components may also mean that the processor is programmed to monitor and control operations or that the processor is operable to monitor and control operations. Similarly, a processor configured to execute code may be interpreted as a processor programmed to execute code or operable to execute code.

Claims

1. A non - transitory computer - readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations including the following: Issue a first request to a server for the next video segment encoded at a first bit - rate level; Initiate downloading the next video segment encoded at the first bit - rate level from the server and storing the next video segment in a playback buffer; Compare a fill level of the playback buffer with a first threshold and a second threshold; Determine whether a current playback latency is greater than 0; If the fill level of the playback buffer meets the first threshold, change a first playback speed set for the next video segment to a second playback speed, or if the fill level of the playback buffer meets the second threshold and if the current playback latency is greater than 0, change the first playback speed set for the next video segment to a third playback speed; And Decode the next video segment from the playback buffer for playback on a display device at the first playback speed or, if the fill level of the playback buffer meets the first threshold, at the second playback speed after the next video segment has been downloaded and stored in the playback buffer, wherein the second threshold is greater than the first threshold and the third playback speed is greater than the second playback speed, wherein the fill level meets the first threshold by being less than the first threshold, and wherein the fill level meets the second threshold by exceeding the second threshold.

2. The non - transitory computer - readable medium according to claim 1, wherein the operations further include: Compare the fill level of the playback buffer with a third threshold, wherein the third threshold is greater than the first threshold and less than the second threshold; Determine whether downloading of a previous video segment has stopped; And If the fill level of the playback buffer meets the third threshold and downloading of the previous video segment has stopped, change the first playback speed of the next video segment to the second playback speed, wherein the fill level meets the third threshold by being less than the third threshold.

3. The non - transitory computer - readable medium according to claim 1, wherein the operations further include: Stop the downloading of the next video segment from the server before completion based on one or more network bandwidth conditions; Set the bit - rate level of the next video segment to a second bit - rate level; Issue a second request to the server for the next video segment encoded at the second bit - rate level; and Initiate downloading the next video segment encoded at the second bit - rate level and storing the next video segment in the playback buffer.

4. The non - transitory computer - readable medium according to claim 1, wherein the operations further include: Set the first bit - rate level of the next video segment by a controller; Compare the fill level of the playback buffer with a third threshold; And If the fill level of the playback buffer meets the third threshold, then replace the first bitrate level of the next video segment set by the controller by setting the third bitrate level of the next video segment, where a first request for the next video segment encoded at the third bitrate level if the fill level of the playback buffer meets the third threshold is sent to the server, and where the fill level meets the third threshold by being less than the third threshold.

5. The non-transitory computer-readable medium according to claim 4, wherein the operation further comprises: comparing the fill level of the playback buffer with a fourth threshold greater than the third threshold; and if the fill level of the playback buffer meets the fourth threshold, then replace the bitrate level of the next video segment set by the adaptive bitrate controller by setting a fourth bitrate level of the next video segment greater than the third bitrate level, where a first request for the next video segment encoded at the fourth bitrate level if the fill level of the playback buffer meets the fourth threshold is sent to the server, and where the fill level meets the fourth threshold by exceeding the fourth threshold.

6. An electronic device, comprising: a memory including a playback buffer; and a processor coupled to the memory and configured to: set a first bitrate level of a next video segment by a controller; compare the fill level of the playback buffer with a first threshold; if the fill level of the playback buffer meets the first threshold, then replace the first bitrate level set by the controller for the next video segment by setting a second bitrate level of the next video segment; send a first request to the server for the next video segment encoded at the first bitrate level or if the fill level of the playback buffer meets the first threshold then encoded at the second bitrate level; initiate downloading the next video segment from the server and storing the next video segment in the playback buffer; compare the fill level of the playback buffer with a second threshold and a third threshold; determine whether a current playback lag time is greater than 0; if the fill level of the playback buffer meets the second threshold, then change a first playback speed set for the next video segment to a second playback speed, or if the fill level of the playback buffer meets the third threshold and if the current playback lag time is greater than 0, then change the first playback speed set for the next video segment to a third playback speed; and The decoder decodes the next video segment from the playback buffer for playback on a display device at the first playback speed after the next video segment has been downloaded and stored in the playback buffer, or at the second playback speed if the fill level of the playback buffer meets the second threshold, or at the third playback speed if the fill level of the playback buffer meets the third threshold and the playback latency is greater than 0. Wherein the fill level meets the first threshold by being less than the first threshold, wherein the fill level meets the second threshold by being less than the second threshold, and wherein the fill level meets the third threshold by exceeding the third threshold.

7. The electronic device according to claim 6, wherein the processor is further configured to: Compare the fill level of the playback buffer with a third threshold greater than the first threshold; and If the fill level of the playback buffer meets the third threshold, then replace the first bit rate level of the next video segment set by the controller with a third bit rate level greater than the second bit rate level.

8. The electronic device according to claim 6, wherein the processor is further configured to: Stop the download of the next video segment from the server before completion based on one or more network bandwidth conditions; Set the third bit rate level of the next video segment; and Send a second request to the server for the next video segment encoded at the third bit rate level, Wherein the next video segment encoded at the third bit rate level is downloaded and stored in the playback buffer and decoded from the playback buffer for playback on the display device.

9. A method, comprising: Sending a first request to a server for a next video segment encoded at a first bit rate level; Initiating the download of the next video segment encoded at the first bit rate level from the server and storing the next video segment in a playback buffer; Comparing the fill level of the playback buffer with a first threshold and a second threshold; Determining whether the current playback latency is greater than 0; If the fill level of the playback buffer meets the first threshold, then changing the first playback speed set for the next video segment to a second playback speed, or if the fill level of the playback buffer meets the second threshold and if the current playback latency is greater than 0, then changing the first playback speed set for the next video segment to a third playback speed; And Decoding the next video segment from the playback buffer for playback on a display device at the first playback speed after the next video segment has been downloaded and stored in the playback buffer, or at the second playback speed if the fill level of the playback buffer meets the first threshold. wherein the second threshold is greater than the first threshold and the third playback speed is greater than the second playback speed, wherein the fill level satisfies the first threshold by being less than the first threshold, and wherein the fill level satisfies the second threshold by exceeding the second threshold.

10. The method according to claim 9, wherein the method further comprises: comparing the fill level of the playback buffer with a third threshold, wherein the third threshold is greater than the first threshold and less than the second threshold; determining whether the download of the previous video segment has stopped; and if the fill level of the playback buffer satisfies the third threshold and the download of the previous video segment has stopped, then changing the first playback speed of the next video segment to the second playback speed, wherein the fill level satisfies the third threshold by being less than the third threshold.

11. The method according to claim 9, wherein the method further comprises: stopping the download of the next video segment from the server before completion based on one or more network bandwidth conditions; setting the bitrate level of the next video segment to a second bitrate level; issuing a second request to the server for the next video segment encoded at the second bitrate level; and initiating the download of the next video segment encoded at the second bitrate level and storing the next video segment in the playback buffer.

12. The method according to claim 9, wherein the method further comprises: setting, by a controller, the first bitrate level of the next video segment; comparing the fill level of the playback buffer with a third threshold; and if the fill level of the playback buffer satisfies the third threshold, then replacing the first bitrate level of the next video segment set by the controller by setting a third bitrate level of the next video segment, wherein a first request is issued to the server for the next video segment encoded at the third bitrate level if the fill level of the playback buffer satisfies the third threshold, and wherein the fill level satisfies the third threshold by being less than the third threshold.

13. The method according to claim 12, wherein the method further comprises: comparing the fill level of the playback buffer with a fourth threshold greater than the third threshold; and if the fill level of the playback buffer satisfies the fourth threshold, then replacing the bitrate level of the next video segment set by the adaptive bitrate controller by setting a fourth bitrate level of the next video segment greater than the third bitrate level, wherein a first request is issued to the server for the next video segment encoded at the fourth bitrate level if the fill level of the playback buffer satisfies the fourth threshold, and wherein the fill level satisfies the fourth threshold by exceeding the fourth threshold.

Citation Information

Patent Citations

  • Embedded multimedia systems with adaptive rate control for power efficient video streaming

    CN109982112A

  • Technique for dynamically controlling data packet transmissions

    EP1872537A1