Intra-segment adjustment of video transmission rate
By detecting network degradation by edge devices and adjusting transmission rates to generate video frames at lower bitrates, the client device accelerates decoding and skips reproduction, solving the problem of frame loss caused by network degradation in video transmission, and achieving smooth video continuation and user experience improvement.
Patent Information
- Application Number
- CN202210783142.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-06-28
- Filing Date
- 2022-06-27
- Publication Date
- 2025-07-29
- Estimated Expiration
- 2042-06-27
AI Technical Summary
During video transmission, network degradation leads to a decrease in transmission rate, resulting in loss of video frames and a decrease in user experience, and it is difficult for the prior art to adjust the transmission rate when the current segment is completed to avoid frame dropping.
When edge devices detect network conditions deteriorate, adjust the transmission rate and generate video frames with lower bitrate versions. Client devices accelerate decoding and skip the reproduction of presented frames to ensure smooth and continuous video.
By reducing transmission rates and accelerating decoding when network degradation, avoiding video frame loss, ensuring smooth and continuous video, and improving user experience.
Smart Images

Figure CN115604194B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure generally relates to intrasegment adjustment of video transmission rates. Background Art
[0002] Some devices are capable of receiving video content at various transmission rates. After a device begins receiving video content at a particular transmission rate, there may be degradation in the network used to transmit the video content. This degradation may require a change in the transmission rate. Brief Description of the Drawings
[0003] To enable a person of ordinary skill in the art to understand the present disclosure, a more detailed description may be obtained by reference to aspects of some illustrative embodiments, some of which are shown in the drawings.
[0004] Figures 1A - 1F is a diagram of an example operating environment in accordance with some embodiments.
[0005] Figure 2 is a flowchart representation of a method for changing the transmission rate of a video stream in accordance with some embodiments.
[0006] Figure 3 is a block diagram of a device for changing the transmission rate of a video stream in accordance with some embodiments.
[0007] By convention, the various features illustrated in the drawings may not be drawn to scale. Accordingly, for clarity, the dimensions of the various features may be arbitrarily enlarged or reduced. Additionally, some of the drawings may not depict all of the components of a given system, method, or device. Finally, throughout the specification and drawings, the same reference numerals may be used to denote the same features. Detailed Description
[0008] Numerous details are described in order to provide a thorough understanding of the example embodiments shown in the drawings. However, the drawings merely illustrate some example aspects of the present disclosure and are therefore not considered limiting. A person of ordinary skill in the art will understand that other effective aspects and / or variations do not include all of the specific details described herein. Additionally, well-known systems, methods, components, devices, and circuits have not been described in detail so as not to obscure more relevant aspects of the example embodiments described herein.
[0009] Overview
[0010] Multiple embodiments disclosed herein include devices, systems, and methods for adjusting the transmission rate of a video stream while a segment is being transmitted. In some embodiments, a method includes determining a first transmission rate for an entire segment of a video stream to be transmitted to a client device. The segment includes a set of frames. In some embodiments, the method includes: after transmitting a first subset of the set of frames at the first transmission rate, detecting that the network connectivity of the client device has dropped below a connectivity threshold associated with the first transmission rate. In some embodiments, the method includes: transmitting the entire segment at a second transmission rate less than the first transmission rate. In some embodiments, the method includes: triggering the client device to present a second subset of the set of frames corresponding to a time position in the video stream after the first subset of the set of frames, while forgoing re-presentation of the first subset of the set of frames.
[0011] According to some embodiments, a device includes: one or more processors, non-transitory memory, and one or more programs. In some embodiments, the one or more programs are stored in the non-transitory memory and executed by the one or more processors. In some embodiments, the one or more programs include instructions for performing or causing the performance of any of the methods described herein. According to some embodiments, a non-transitory computer-readable storage medium has stored therein instructions that, when executed by one or more processors of a device, cause the device to perform or cause the performance of any of the methods described herein. According to some embodiments, a device includes: one or more processors, non-transitory memory, and means for performing or causing the performance of any of the methods described herein.
[0012] Example Embodiments
[0013] A video stream being transmitted to a client device includes various segments. Each segment includes a number of frames. While the video stream is being transmitted, the transmission rate of the video stream can be changed. However, the change takes effect after the current segment is completed for playback at the client device. If the transmission rate deteriorates significantly while the current segment is being played at the client device, the client device may discard packets corresponding to the remainder of the current segment, or receive the packets not fast enough, resulting in video loss and a degraded user experience at the client device.
[0014] The present disclosure provides methods, systems, and / or devices for changing the transmission rate of a video stream while a current segment is being transmitted and using the new transmission rate to present the remaining portion of the current segment at a client device. Since the new transmission rate is applied to the current segment, frames in the current segment are not discarded due to network degradation. Instead, if the new transmission rate is not applied to the current segment, some frames in the current segment may be discarded if the network degrades.
[0015] In operation, an edge device adjusts the transmission rate of a video stream being transmitted to a client device. While frames of a higher bitrate version of a segment are being transmitted to the client device, the edge device detects that the network condition has deteriorated. Since the edge device is unable to change the transmission rate for the remaining portion of the frames in the higher bitrate version of the segment being transmitted, the edge device transmits a lower bitrate version of the entire segment at a lower transmission rate. Since the client device has presented the first portion of the higher bitrate version of the segment, the edge device instructs the client device to decode the corresponding first portion of the lower bitrate version of the segment at a faster decoding rate (e.g., at a second decoder) and skip presentation of the first portion of the lower bitrate version of the segment. Since the client device has not received the second portion of the higher bitrate version of the segment, the client device does not present the second portion of the higher bitrate version of the segment. Thus, the edge device instructs the client device to begin presenting the corresponding second portion of the lower bitrate version of the segment.
[0016] Figure 1A is a diagram illustrating an example operating environment 10 in accordance with some embodiments. While relevant features are shown, those of ordinary skill in the art will understand from the present disclosure that, for the sake of brevity and in order not to obscure more relevant aspects of the example embodiments disclosed herein, various other features are not illustrated. To that end, as a non-limiting example, the operating environment 10 includes a client device 20, an edge device 40, and a content memory 110. In some embodiments, the edge device 40 is part of an edge computing network (not shown). Although the content memory 110 is shown as being separate from the edge device 40, in some embodiments, the content memory 110 is integrated into the edge device 40. In some embodiments, the content memory 110 includes a distributed storage system. In some embodiments, the client device 20 is coupled to a display. For example, in some embodiments, the client device 20 includes a dongle connected to a television. Alternatively, in some embodiments, the client device 20 is integrated into a display (e.g., a television). As Figure 1A shown, the client device 20 includes a buffer 30.
[0017] The content memory 110 stores a collection of one or more media content items 120. Each media content item 120 includes a set of content frames. The content memory 110 may store different versions of the media content item 120. For example, the content memory 110 may store a high bitrate version of the media content item 120 and a low bitrate version of the media content item 120. In Figure 1A 's example, the content memory 110 stores higher bitrate content frames 122a, 122b, ……, and 122n and lower bitrate content frames 122a', 122b', ……, and 122n' for the same media content item 120. When the edge device 40 is transmitting the media content item 120 to the client device 20 at the first transmission rate 130, the edge device 40 retrieves the higher bitrate content frames 122a, 122b, ……, and 122n from the content memory 110. Conversely, when the edge device 40 is transmitting the media content item 120 to the client device 20 at a transmission rate lower than the first transmission rate 130, the edge device 40 retrieves the lower bitrate content frames 122a, 122b', ……, and 122n' from the content memory 110.
[0018] As Figure 1A shown, a set of content frames may form a segment. Figure 1A Illustrates a first higher bitrate segment 124a, a second higher bitrate segment 124b, ……, and an nth higher bitrate segment 124n. Figure 1A Also illustrates a first lower bitrate segment 124a', a second lower bitrate segment 124b', ……, and an nth lower bitrate segment 124n'. In Figure 1A 's example, the client device 20 is currently presenting the first higher bitrate segment 124a. Specifically, the client device 20 is presenting the first higher bitrate content frame 122a on the display. The buffer 30 is storing the second higher bitrate content frame 122b that will be presented after the first higher bitrate content frame 122a. The third higher bitrate content frame 122c is being transmitted to the client device 20 at the first transmission rate 130.
[0019] Referring to Figure 1B , the transmission of the third higher bitrate content frame 122c fails or is delayed, for example, because the connection between the edge device 40 and the client device 20 degrades. The transmission of the third higher bitrate content frame 122c may have failed because the bandwidth of the client device 20 may have dropped to a value that does not support the first transmission rate 130. The transmission of the third higher bitrate content frame 122c may have failed because of network congestion (e.g., too many other client devices may be requesting content from the edge device 40). As Figure 1BAs shown, client device 20 is now presenting the second higher-bitrate content frame 122b stored in buffer 30. However, buffer 30 does not store the third higher-bitrate content frame 122c because its transmission failed. In some examples, buffer 30 may store a set of frames that will be presented in sequential manner, and edge device 40 may detect that a subsequent frame not stored in buffer 30 may not arrive at client device 20 in time due to network degradation. For example, buffer 30 may store the next ten frames and edge device 40 may detect that the eleventh frame may not arrive at client device 20 in time due to network degradation.
[0020] Reference Figure 1C , if the network degradation persists, retransmitting the third higher-bitrate content frame 122c at the first transmission rate 130 will likely fail. Thus, instead of retransmitting the third higher-bitrate content frame 122c at the first transmission rate 130, edge device 40 transmits a lower-bitrate version of the first higher-bitrate segment 124a at a lower transmission rate. As Figure 1C shown, edge device 40 transmits the first lower-bitrate segment 124a' at a second transmission rate 132 that is lower than the first transmission rate 130. Specifically, Figure 1CShows a first lower bitrate content frame 122a' that is being transmitted to client device 20 and is being stored in buffer 30. Since the first higher bitrate content frame 122a has already been presented at client device 20, edge device 40 sends a skip presentation instruction 150 to client device 20, and the skip presentation instruction instructs client device 20 to skip the presentation of the first lower bitrate content frame 122a'. In some embodiments, client device 20 skips the presentation of the first lower bitrate content frame 122a' in response to determining that client device 20 has presented the corresponding higher bitrate content frame 122a. Edge device 40 also sends an accelerated decoding instruction 152 to client device 20, and the accelerated decoding instruction instructs client device 20 to decode the first lower bitrate content frame 122a' at an accelerated decoding rate (e.g., a multiple of the default decoding rate, such as 1.25 times the default decoding rate, 5 times the default decoding rate, 10 times the default decoding rate, 35 times the default decoding rate, etc.). In some embodiments, client device 20 determines to decode the first lower bitrate content frame 122a' at an accelerated decoding rate. Client device 20 may apply the accelerated decoding rate based on the timestamp associated with the first lower bitrate content frame 122a' and skip the presentation of the first lower bitrate content frame 122a'. For example, client device 20 may maintain a pointer to the timestamp of the current playback position, and if the corresponding timestamp of the first lower bitrate content frame 122a' is less than the timestamp of the current playback position, client device 20 may skip the presentation of the first lower bitrate content frame 122a'.
[0021] In operation, client device 20 receives the first lower bitrate content frame 122a', and client device 20 decodes the first lower bitrate content frame 122a' at an accelerated decoding rate. However, client device 20 does not present the first lower bitrate content frame 122a' because client device 20 has already presented the first higher bitrate content frame 122a. Refer to Figure 1D , edge device 40 transmits a second lower bitrate content frame 122b' at a second transmission rate 132. As shown in Figure 1D , edge device 40 may include a skip presentation instruction 150 and an accelerated decoding instruction 152 regarding the second lower bitrate content frame 122b'. Client device 20 receives the second lower bitrate content frame 122b', and client device 20 decodes the second lower bitrate content frame 122b' at an accelerated decoding rate. However, client device 20 does not present the second lower bitrate content frame 122b' because client device 20 has already presented the second higher bitrate content frame 122b.
[0022] Refer to Figure 1E, the edge device 40 transmits the third lower-bitrate content frame 122c' at the second transmission rate 132. Since the third higher-bitrate content frame 122c has not been presented at the client device 20 before, the edge device 40 sends a presentation instruction 160 that instructs the client device 20 to present the third lower-bitrate content frame 122c'. The edge device 40 may also send an accelerated decoding instruction 152 that instructs the client device 20 to decode the third lower-bitrate content frame 122c' at an accelerated decoding rate. As Figure 1E shown, the client device 20 decodes the third lower-bitrate content frame 122c' and presents the third lower-bitrate content frame 122c'. In some embodiments, the client device 20 determines to present the third lower-bitrate content frame 122c' based on a timestamp associated with the third lower-bitrate content frame 122c'. For example, if the corresponding timestamp of the third lower-bitrate content frame 122c' matches the timestamp of the current playback position, the client device 20 may present the third lower-bitrate content frame 122c'.
[0023] Transmitting a lower-bitrate version of the first higher-bitrate segment 124a allows the edge device 40 to reduce the transmission rate while the first higher-bitrate segment 124a is being presented at the client device 20. Reducing the transmission rate while the client device 20 is presenting the first higher-bitrate segment 124a gives the appearance that the client device 20 successfully presents the first higher-bitrate segment 124a. Since the user of the client device 20 may not be able to distinguish between the first higher-bitrate segment 124a and the first lower-bitrate segment 124a', starting with the first higher-bitrate segment 124a and ending with the first lower-bitrate segment 124a' gives the perception that the client device 20 successfully receives and presents the first higher-bitrate segment 124a. In other words, starting with the first higher-bitrate segment 124a and ending with the first lower-bitrate segment 124a' ensures that the presentation of the media content item 120 at the client device 20 is not interrupted due to network degradation.
[0024] Figure 1F illustrates Figures 1C - 1E an alternative to the embodiment illustrated in Figure 1F . Referring to Figure 1FIn the example, the encoder 170 may generate a third lower-bitrate content frame 122c' based on the first higher-bitrate content frame 122a. The edge device 40 transmits the third lower-bitrate content frame 122c', which is stored in the buffer 30 and presented by the client device 20 after the second higher-bitrate content frame 122b. In this embodiment, the content memory 110 may not have to store the lower-bitrate content frames because the encoder 170 can generate lower-bitrate content frames based on higher-bitrate content frames. Thus, the content memory 110 uses less memory. Additionally, the edge device 40 does not have to send lower-bitrate versions of content frames that have already been presented. For example, the edge device 40 does not have to send the first lower-bitrate content frame 122a' and the second lower-bitrate content frame 122b' (as Figure 1C and Figure 1D shown). Not sending lower-bitrate versions of content frames that have already been presented reduces congestion on the network that may already be congested. In this embodiment, the client device 20 does not have to decode lower-bitrate versions of content frames that the client device 20 has already presented.
[0025] Figure 2 FIG. is a flowchart representation of a method 200 for changing the transmission rate of a video stream. In various embodiments, the method 200 is performed by a device (e.g., by the edge device 40 shown in Figures 1A - 1F ). In some embodiments, the method 200 is performed by processing logic—including hardware, firmware, software, or a combination thereof. In some embodiments, the method 200 is performed by a processor executing code stored in a non-transitory computer-readable medium (e.g., a memory).
[0026] As represented by block 210, in various embodiments, the method 200 includes determining a first transmission rate for an entire segment of a video stream to be transmitted to a client device. For example, as Figure 1A shown, the edge device 40 is transmitting a third higher-bitrate content frame 122c at a first transmission rate 130. The segment includes a set of frames. For example, as Figure 1A shown, the first higher-bitrate segment 124a includes the higher-bitrate content frames 122a, 122b, 122c, 122d, and 122e. The first transmission rate may be selected based on network state data indicating the state of the network. For example, the first transmission rate may be selected based on the congestion level of the network. The first transmission rate may also be selected based on the bandwidth of the client device 20. For example, the higher the bandwidth, the greater the first transmission rate.
[0027] As represented by block 220, in some embodiments, method 200 includes detecting that the network connectivity of the client device has dropped below a connectivity threshold associated with the first transmission rate after transmitting a first subset of the set of frames at the first transmission rate. For example, as described with respect to Figure 1B the communication channel between edge device 40 and client device 20 may degrade due to network congestion and / or due to a sudden decrease in the bandwidth of client device 20.
[0028] As represented by block 220a, in some embodiments, detecting that the network connectivity has dropped includes: detecting that the amount of bandwidth available to the client device has dropped to a value less than a threshold bandwidth amount that supports the first transmission rate. For example, the first transmission rate may require a certain amount of client bandwidth, and the client bandwidth may have dropped to a value less than the required bandwidth. As such, transmitting frames at the first transmission rate may cause the frames to be dropped and not received by the client device.
[0029] As represented by block 220b, in some embodiments, method 200 includes periodically polling the client device to obtain status data indicative of the network connectivity of the client device. For example, edge device 40 periodically obtains a report from client device 20. The report may indicate network status data that client device 20 is collecting. For example, the report may indicate the current bandwidth of client device 20. Edge device 40 may also generate status data on its own. For example, edge device 40 may monitor the communication channel between edge device 40 and client device 20 to determine the health of the communication channel (e.g., bandwidth, congestion, etc.). In some embodiments, the status data may indicate the number of frames successfully received by client device 20. The status data may indicate the timestamp of the last frame successfully received by client device 20.
[0030] As represented by block 230, in multiple embodiments, method 200 includes transmitting the entire segment at a second transmission rate that is less than the first transmission rate. For example, as Figure 1C shown, edge device 40 begins transmitting first lower bitrate segment 124a' at second transmission rate 132. As represented by block 230a, in some embodiments, method 200 includes selecting the second transmission rate based on the network connectivity of the client device. For example, the second transmission rate may be proportional to the client bandwidth. As another example, the second transmission rate may be inversely proportional to the network congestion level.
[0031] As represented by block 230b, in some embodiments, method 200 includes transmitting subsequent segments of the video stream at the second transmission rate until the network connectivity meets the connectivity threshold associated with the first transmission rate. For example, referring to Figure 1E , if the network condition does not improve, the edge device 40 may send the second lower-bitrate segment 124b' at the second transmission rate 132 instead of sending the second higher-bitrate segment 124b at the first transmission rate 130. In some embodiments, method 200 includes: when the network connectivity meets the connectivity threshold associated with the first transmission rate, switching from the second transmission rate to the first transmission rate. For example, if the network condition improves, the edge device 40 may send the second higher-bitrate segment 124b at the first transmission rate 130 instead of sending the second lower-bitrate segment 124b' at the second transmission rate 132.
[0032] As represented by block 230c, in some embodiments, the video stream is associated with a first version adapted to the first transmission rate and a second version adapted to the second transmission rate. For example, as Figures 1A - 1E shown, the media content item 120 includes higher-bitrate content frames and lower-bitrate content frames. In some embodiments, transmitting the first subset at the first transmission rate includes: transmitting the first version adapted to the first transmission rate. For example, as regarding Figure 1A and Figure 1B described, the edge device 40 successfully sends the first higher-bitrate content frame 122a and the second higher-bitrate content frame 122b to the client device 20. In some embodiments, transmitting the entire segment at the second transmission rate includes: transmitting the second version adapted to the second transmission rate. For example, as regarding Figures 1C - 1D described, when it is not feasible to send the first higher-bitrate segment 124a at the first transmission rate 130, the edge device 40 transmits the first lower-bitrate segment 124a' at the second transmission rate 132.
[0033] In some embodiments, transmitting the entire segment at the second transmission rate includes generating a lower-bitrate version of the second subset of the frame set based on a higher-bitrate version of a reference frame. In some embodiments, method 200 includes transmitting the lower-bitrate version of the second subset of the frame set while forgoing transmission of the lower-bitrate version of the first subset of the frame set. For example, as Figure 1F shown, the edge device 40 transmits the lower-bitrate content frame 122c' to the client device 20 without transmitting Figure 1EThe lower bitrate content frames 122a' and 122b' shown in []. In some embodiments, method 200 includes transmitting a lower bitrate version of a reference frame and the second subset of the set of frames, while forgoing transmission of the lower bitrate version of the first subset of the set of frames.
[0034] As represented by block 240, in some embodiments, method 200 includes triggering the client device to present a second subset of the set of frames corresponding to a time position in the video stream after the first subset of the set of frames, while forgoing a re-presentation of the first subset of the set of frames. For example, as Figures 1C - 1E shown in [], edge device 40 instructs client device 20 to skip presentation of the first lower bitrate content frame 122a' and the second lower bitrate content frame 122b' because client device 20 has already presented the first higher bitrate content frame 122a and the second higher bitrate content frame 122b.
[0035] As represented by block 240a, in some embodiments, triggering the client device to present the second subset of the set of frames includes: instructing the client device to decode the first subset of the set of frames at an accelerated decoding rate greater than a default decoding rate, and forgoing a re-presentation of the first subset of the set of frames. For example, as Figure 1C shown in [], edge device 40 sends an accelerated decoding instruction 152 to client device 20, the accelerated decoding instruction instructing client device 20 to decode the first lower bitrate content frame 122a' at an accelerated decoding rate. Additionally, as Figure 1C shown in [], edge device 20 sends a skip presentation instruction 150 to client device 20, the skip presentation instruction instructing client device 20 to skip presentation of the first lower bitrate content frame 122a' because client device 20 has already presented the first higher bitrate content frame 122a.
[0036] In some embodiments, transmitting the entire segment at the second transmission rate includes: in each frame of the first subset, including an instruction to decode the frame at the accelerated decoding rate and forgo a re-presentation of the frame. For example, as Figure 1C shown in [], edge device 40 sends a skip presentation instruction 150 and an accelerated decoding instruction 152 to client device 20. The skip presentation instruction 150 and the accelerated decoding instruction 152 can be integrated into the first lower bitrate content frame 122a' (e.g., integrated into the metadata of the first lower bitrate content frame 122a).
[0037] In some embodiments, the accelerated decoding rate is a multiple of the default decoding rate. In some embodiments, edge device 40 designates the accelerated decoding rate. Refer to Figure 1C, the accelerated decoding instruction 152 may specify the accelerated decoding rate. Alternatively, the client device 20 may determine the accelerated decoding rate. For example, the client device 20 may decode frames as fast as possible.
[0038] In some embodiments, triggering the client device to render the second subset includes: instructing the client device to decode frames in the second subset at the default decoding rate. For example, referring to Figure 1E , the edge device 40 may instruct the client device 20 to decode the fourth lower bitrate content frame 122d' at the default decoding rate instead of the accelerated decoding rate.
[0039] Figure 3 is a block diagram of a device 300 according to some embodiments. In some embodiments, the device 300 implements Figures 1A - 1F the edge device 40 shown in. Although certain specific features are illustrated, those of ordinary skill in the art will understand from this disclosure that, for the sake of brevity and to not obscure more relevant aspects of the embodiments disclosed herein, various other features are not illustrated. To that end, as a non-limiting example, in some embodiments, the device 300 includes one or more processing units (CPUs) 301, a network interface 302, a programming interface 303, a memory 304, one or more input / output (I / O) devices 310, and one or more communication buses 305 for interconnecting these and various other components.
[0040] In some embodiments, the network interface 302 is provided to, among other things, establish and maintain a metadata tunnel between a cloud-hosted network management system and at least one private network including one or more compatible devices. In some embodiments, one or more communication buses 305 include circuitry for interconnecting system components and controlling communication between system components. The memory 304 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid-state memory devices, and may include non-volatile memory, such as one or more disk storage devices, optical storage devices, flash memory devices, or other non-volatile solid-state storage devices. The memory 304 optionally includes one or more storage devices remotely located from one or more CPUs 301. The memory 304 includes non-transitory computer-readable storage medium.
[0041] In some embodiments, the memory 304 or the non-transitory computer-readable storage medium of the memory 304 stores the following programs, modules, and data structures or subsets thereof - including an optional operating system 306, a data fetcher 320, a transmission rate determiner 330, and a data transmitter 340. In multiple embodiments, the device 300 executes Figure 2The method 200 shown in
[0042] In some embodiments, the data acquirer 320 includes instructions 320a and heuristics and metadata 320b for acquiring network status data. For example, the data acquirer 320 may periodically poll the client device to obtain the bandwidth value. The data acquirer 320 may analyze the communication channel between the device 300 and the client device to generate network status data. In some embodiments, the data acquirer 320 performs at least some of the operations represented by Figure 2 block 220 in
[0043] In some embodiments, the transmission rate determiner 330 includes instructions 330a and heuristics and metadata 330b for determining the transmission rate for transmitting content frames to the client device. The transmission rate determiner 330 may determine the transmission rate based on the network status data (e.g., client bandwidth) acquired by the data acquirer 320. For example, the transmission rate determiner 330 may decrease the transmission rate when the client bandwidth decreases and / or when the network congestion increases. As another example, the transmission rate determiner 330 may increase the transmission rate when the client bandwidth increases and / or when the network congestion decreases. In some embodiments, the transmission rate determiner 330 performs at least some of the operations represented by Figure 2 block 210 and block 230 in
[0044] In some embodiments, the data transmitter 340 transmits content frames to the client device at the transmission rate determined by the transmission rate determiner 330. In some embodiments, the data transmitter 340 selects different versions of the video content based on the transmission rate determined by the transmission rate determiner 330. For example, when the transmission rate determiner 330 decreases the transmission rate, the data transmitter 340 sends a lower bitrate version of the video content. In some embodiments, the data transmitter 340 performs at least some of the operations represented by Figure 2 block 240 in
[0045] In some embodiments, one or more I / O output devices 310 include a receiver for receiving network status data and a transmitter for transmitting content frame data.
[0046] It should be understood that Figure 3 is intended as a functional description of the various features that may exist in a particular embodiment, rather than a structural schematic of the embodiments described herein. As will be appreciated by those of ordinary skill in the art, the items shown separately may be combined and some items may be separated. For example, Figure 3Some of the functional blocks shown separately herein may be implemented as a single block, and the various functions of a single functional block may be implemented by one or more of the functional blocks in multiple embodiments. The actual number of blocks and the specific partitioning of functions, as well as how features are allocated between them, will vary from one embodiment to another and, in some embodiments, will depend in part on the particular combination of hardware, software, and / or firmware selected for a particular embodiment.
[0047] Although aspects of embodiments within the scope of the appended claims have been described above, it should be understood that the various features of the embodiments described above may be embodied in a variety of forms and that any specific structure and / or function described above is merely illustrative. Based on the present disclosure, those skilled in the art should understand that one aspect described herein may be implemented independently of any other aspect, and two or more of these aspects may be combined in various ways. For example, a device may be implemented using any number of the aspects set forth herein and / or a method may be practiced. Additionally, such a device may be implemented and / or such a method may be practiced using other structures and / or functions in addition to one or more of the aspects set forth herein.
Claims
1. A method, comprising: at an edge device including a non - transitory memory and one or more processors: determine a first transmission rate for transmitting an entire segment of a video stream, wherein the segment includes a set of frames; after transmitting a first subset of the set of frames at the first transmission rate, detect that the network connectivity of the client device has dropped below a connectivity threshold associated with the first transmission rate; in response to the network connectivity having dropped below the connectivity threshold associated with the first transmission rate: abandon transmitting the remaining portion of the set of frames in the segment at the first transmission rate; transmit the entire segment at a second transmission rate less than the first transmission rate, wherein transmitting the entire segment at the second transmission rate includes re - transmitting the first subset of the set of frames that was transmitted at the first transmission rate; and trigger the client device to present a second subset of the set of frames corresponding to a time position in the video stream after the first subset of the set of frames, while abandoning re - presentation of the first subset of the set of frames.
2. The method according to claim 1, wherein detecting that the network connectivity has decreased includes: Detect that the amount of bandwidth available to the client device has dropped below a threshold bandwidth amount that supports the first transmission rate.
3. The method according to claim 1, wherein triggering the client device to present the second subset of the frame set comprises: Instruct the client device to: decode the first subset of the set of frames at an accelerated decoding rate greater than a default decoding rate; and abandon re - presentation of the first subset of the set of frames.
4. The method according to claim 3, wherein transmitting the entire segment at the second transmission rate comprises: In each frame of the first subset, include instructions to decode the frame at the accelerated decoding rate and abandon re - presentation of the frame.
5. The method according to claim 3, wherein the accelerated decoding rate is a multiple of the default decoding rate.
6. The method according to claim 3, wherein triggering the client device to present the second subset comprises: Instruct the client device to decode frames in the second subset at the default decoding rate.
7. The method according to claim 1, further comprising: transmit subsequent segments of the video stream at the second transmission rate until the network connectivity meets the connectivity threshold associated with the first transmission rate; and when the network connectivity meets the connectivity threshold associated with the first transmission rate, switch from the second transmission rate to the first transmission rate.
8. The method according to claim 1, further comprising periodically polling the client device to obtain status data indicating the network connectivity of the client device.
9. The method according to claim 1, further comprising selecting the second transmission rate based on the network connectivity of the client device.
10. The method according to claim 1, wherein the video stream is associated with a first version adapted to the first transmission rate and a second version adapted to the second transmission rate; wherein transmitting the first subset at the first transmission rate includes transmitting the first version adapted to the first transmission rate; and wherein transmitting the entire segment at the second transmission rate includes transmitting the second version adapted to the second transmission rate.
11. The method according to claim 1, wherein transmitting the entire segment at the second transmission rate includes: Generate a lower bitrate version of the second subset of the frame set based on a reference frame; And Transmit the lower bitrate version of the second subset of the frame set while forgoing transmission of the lower bitrate version of the first subset of the frame set.
12. An apparatus, comprising: One or more processors; Non-transitory memory; And One or more programs stored in the non-transitory memory, the one or more programs, when executed by the one or more processors, cause the apparatus to: Determine a first transmission rate for transmitting an entire segment of a video stream to a client device, wherein the segment includes a frame set; After transmitting a first subset of the frame set at the first transmission rate, detect that the network connectivity of the client device has dropped below a connectivity threshold associated with the first transmission rate; In response to the network connectivity having dropped below the connectivity threshold associated with the first transmission rate: Forgo transmitting the remainder of the frame set in the segment at the first transmission rate; Transmit the entire segment at a second transmission rate that is less than the first transmission rate, wherein transmitting the entire segment at the second transmission rate includes retransmitting the first subset of the frame set that was transmitted at the first transmission rate at the second transmission rate; And Trigger the client device to present a second subset of the frame set corresponding to a time position in the video stream after the first subset of the frame set while forgoing re-presentation of the first subset of the frame set.
13. The apparatus according to claim 12, wherein detecting that the network connectivity has decreased includes: Detect that the amount of bandwidth available to the client device has dropped below a threshold bandwidth amount that supports the first transmission rate.
14. The apparatus according to claim 12, wherein triggering the client device to present the second subset of the frame set comprises: Instruct the client device to: Decode the first subset of the frame set at an accelerated decoding rate that is greater than a default decoding rate; And Forgo re-presentation of the first subset of the frame set.
15. The apparatus according to claim 14, wherein transmitting the entire segment at the second transmission rate comprises: In each frame of the first subset, include an instruction to decode the frame at the accelerated decoding rate and forgo re-presentation of the frame.
16. The apparatus according to claim 14, wherein the accelerated decoding rate is a multiple of the default decoding rate.
17. The apparatus according to claim 14, wherein triggering the client device to present the second subset comprises: Instruct the client device to decode frames in the second subset at the default decoding rate.
18. The apparatus according to claim 12, wherein the one or more programs further cause the apparatus to: Transmit subsequent segments of the video stream at the second transmission rate until the network connectivity meets the connectivity threshold associated with the first transmission rate; and When the network connectivity meets the connectivity threshold associated with the first transmission rate, switch from the second transmission rate to the first transmission rate.
19. The apparatus according to claim 12, wherein the one or more programs further cause the apparatus to select the second transmission rate based on the network connectivity of the client device.
20. A non-transitory memory storing one or more programs, the one or more programs, when executed by one or more processors of a device, cause the device to: Determine a first transmission rate for an entire segment of a video stream to be transmitted to a client device, where the segment includes a set of frames; After transmitting a first subset of the set of frames at the first transmission rate, it is detected that the network connectivity of the client device has dropped below a connectivity threshold associated with the first transmission rate; In response to the network connectivity having dropped below the connectivity threshold associated with the first transmission rate: Abandon transmitting the remaining portion of the set of frames in the segment at the first transmission rate; Transmit the entire segment at a second transmission rate that is less than the first transmission rate, where Transmitting the entire segment at the second transmission rate includes retransmitting the first subset of the set of frames that was transmitted at the first transmission rate; And Trigger the client device to present a second subset of the set of frames corresponding to a time position in the video stream after the first subset of the set of frames, while abandoning re-presentation of the first subset of the set of frames.
Citation Information
Patent Citations
Rate-Adapted Delivery of Virtual Desktop Image Elements by an Edge Server in a Computer Network Environment
US20150113157A1