IP Library Granted Patent US 12707024
Granted Patent B2
US 12707024 · App. 18/686,968 · Granted Aug 11, 2026

Method for processing video calls, device and storage medium

Inventors: Yunchang Xia (Guangzhou, CN); Yong Deng (Guangzhou, CN)
Assignee: BIGO TECHNOLOGY PTE. LTD.
H04N7/147H04L41/0896H04L65/403H04N7/15H04N7/152
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12707024
App. No.
18/686,968
Granted
Aug 11, 2026
Kind
B2
Abstract

Provided is a method for processing video calls. The method includes: determining a layer bit rate corresponding to each frame layer in video data sent by a transmitter, wherein a plurality of video frames in the video data are organized into a plurality of frame layers based on an inter-frame dependency relationship, and the layer bit rate comprises a bit rate acquired by counting bit rates of video frames in a corresponding frame layer; determining, based on uplink bit rates corresponding to a plurality of receivers and a total downlink detected bandwidth, downlink allocated bandwidths corresponding to the receivers; determining, based on the downlink allocated bandwidths corresponding to the receivers and the layer bit rates, target frame layers corresponding to the receivers; and forwarding video data subjected to frame extraction processing for the target frame layers to corresponding receivers.

Claims (56)

1 . A method for processing video calls, comprising:

determining a layer bit rate corresponding to each frame layer in video data sent by a transmitter, wherein a plurality of video frames in the video data are organized into a plurality of frame layers based on an inter-frame dependency relationship, and the layer bit rate comprises a bit rate acquired by counting bit rates of video frames in a corresponding frame layer;

determining, based on uplink bit rates corresponding to a plurality of receivers and a total downlink detected bandwidth, downlink allocated bandwidths corresponding to the receivers;

determining, based on the downlink allocated bandwidths corresponding to the receivers and the layer bit rates, target frame layers corresponding to the receivers; and

forwarding video data subjected to frame extraction processing for the target frame layers to corresponding receivers.

2 . The method according to claim 1 , wherein in response to determining that a first video frame depends on a second video frame, a level of a frame layer to which the second video frame belongs is lower than or equal to a level of a frame layer to which the first video frame belongs; and

forwarding the video data subjected to frame extraction processing for the target frame layers to corresponding receivers comprises:

for each of the receivers of which the downlink allocated bandwidth is less than the uplink bit rate, forwarding video frames of a first frame layer to the receiver, determining video frames to be sent in a corresponding target frame layer based on a predetermined frame extraction strategy, forwarding the video frames to be sent to the receiver, and discarding video frames in the target frame layer other than the video frames to be sent and video frames in a second frame layer, wherein a level of the first frame layer is lower than a level of the corresponding target frame layer, and a level of the second frame layer is higher than a level of the corresponding target frame layer.

3 . The method according to claim 2 , wherein determining the video frames to be sent in the corresponding target frame layer based on the predetermined frame extraction strategy comprises:

determining, for a third video frame in the target frame layer corresponding to a first receiver, whether a size of the third video frame is less than or equal to a first threshold of number of bytes corresponding to the first receiver, and determining, based on the size of the third video frame is less than or equal to the first threshold of number of bytes corresponding to the first receiver, the third video frame as the video frame to be sent;

wherein the first threshold of number of bytes is determined based on a first type number of bytes corresponding to the first receiver, the first type number of bytes is a dynamically maintained number of bytes, and the first type number of bytes is dynamically reduced based on a size of actual forwarded data corresponding to the first receiver and dynamically increased based on a speed of the downlink allocated bandwidth corresponding to the first receiver, the actual forwarded data comprising video data and non-video data.

4 . The method according to claim 3 , wherein the first type number of bytes corresponding to the first receiver is determined by:

acquiring an updated first type number of bytes by subtracting, upon sending first data to the first receiver, a size of the first data from a current first type number of bytes; and

determining, upon detecting that a predetermined increase event is triggered, a first time interval between a current moment and last time the predetermined increase event is triggered, determining a first increase number of bytes based on a product of the first time interval and a first target bit rate corresponding to the first receiver, and acquiring the updated first type number of bytes by adding the first increase number of bytes to the current first type number of bytes; wherein the first target bit rate is matched with the downlink allocated bandwidth corresponding to the first receiver.

5 . The method according to claim 3 , wherein the first threshold of number of bytes is determined based on a sum of the first type number of bytes corresponding to the first receiver and a second type number of bytes; wherein the second type number of bytes is determined based on a product of a predetermined time window length and a corresponding downlink allocated bandwidth, and the predetermined time window length is determined based on a time series length occupied by video frames depending on a current video frame.

6 . The method according to claim 3 , wherein determining whether the size of the third video frame is less than or equal to the first threshold of number of bytes and determining, based on the size of the third video frame is less than or equal to the first threshold of number of bytes corresponding to the first receiver, the third video frame as the video frame to be sent comprises:

determining whether the size of the third video frame is less than or equal to the first threshold of number of bytes, determining, based on the size of the third video frame is less than or equal to the first threshold of number of bytes corresponding to the first receiver, whether a total size of the video frames to be determined corresponding to the receivers is less than or equal to a total threshold of number of bytes, wherein the third video frame is included in the video frames to be determined, and determining, based on the total size of the video frames to be determined corresponding to the receivers is less than or equal to the total threshold of number of bytes, the third video frame as the video frame to be sent;

wherein the total threshold of number of bytes is determined based on a third type number of bytes, and the third type number of bytes is a dynamically maintained number of bytes, wherein the third type number of bytes is dynamically reduced based on a size of actual forwarded data of a server and dynamically increased based on a speed of the total downlink detected bandwidth.

7 . The method according to claim 1 , wherein determining the layer bit rate corresponding to each frame layer in video data sent by the transmitter comprises:

determining, for each frame layer in the video data sent by the transmitter, a target statistical window corresponding to a current frame layer, and acquiring a layer bit rate corresponding to the current frame layer by calculating an average bit rate of video frames belonging to the current frame layer falling within the target statistical window.

8 . The method according to claim 1 , wherein determining, based on the uplink bit rates corresponding to the plurality of receivers and the total downlink detected bandwidth, the downlink allocated bandwidths corresponding to the receivers comprises:

making a sum of downlink allocated bandwidths corresponding to the receivers is equal to the total downlink detected bandwidth by reducing, in response to determining that a sum of the uplink bit rates corresponding to the receivers is greater than the total downlink detected bandwidth, an initial allocated bandwidth corresponding to at least one receiver in a descending order of the uplink bit rates, wherein the initial allocated bandwidth is matched with a value of a corresponding uplink bit rate.

9 . The method according to claim 2 , wherein determining, based on the downlink allocated bandwidths corresponding to the receivers and the layer bit rates, the target frame layers corresponding to the receivers comprises:

acquiring an accumulated value of layer bit rate by sequentially accumulating, for each receiver of which the downlink allocated bandwidth is less than the uplink bit rate, the layer bit rates corresponding to the frame layers from the frame layer of a lowest level in a level ascending order, and determining, in response to determining that the accumulated value of layer bit rate is greater than a corresponding downlink allocated bandwidth for the first time, a latest accumulated frame layer as the target frame layer.

10 . A computer device for processing video calls, comprising a memory, a processor and a computer program stored in the memory and executable on the processor, wherein the processor, when loading and running the computer program, is caused to perform;

determining a layer bit rate corresponding to each frame layer in video data sent by a transmitter, wherein a plurality of video frames in the video data are organized into a plurality of frame layers based on an inter-frame dependency relationship, and the layer bit rate comprises a bit rate acquired by counting bit rates of video frames in a corresponding frame layer;

determining, based on uplink bit rates corresponding to a plurality of receivers and a total downlink detected bandwidth, downlink allocated bandwidths corresponding to the receivers;

determining, based on the downlink allocated bandwidths corresponding to the receivers and the layer bit rates, target frame layers corresponding to the receivers; and

forwarding video data subjected to frame extraction processing for the target frame layers to corresponding receivers.

11 . A non-transitory computer-readable storage medium, wherein a computer program in the non-transitory computer-readable storage medium, when loaded and run by a processor, causes the processor to perform;

determining a layer bit rate corresponding to each frame layer in video data sent by a transmitter, wherein a plurality of video frames in the video data are organized into a plurality of frame layers based on an inter-frame dependency relationship, and the layer bit rate comprises a bit rate acquired by counting bit rates of video frames in a corresponding frame layer;

determining, based on uplink bit rates corresponding to a plurality of receivers and a total downlink detected bandwidth, downlink allocated bandwidths corresponding to the receivers;

determining, based on the downlink allocated bandwidths corresponding to the receivers and the layer bit rates, target frame layers corresponding to the receivers; and

forwarding video data subjected to frame extraction processing for the target frame layers to corresponding receivers.

12 . The computer device according to claim 10 , wherein a first video frame depends on a second video frame, a level of a frame layer to which the second video frame belongs is lower than or equal to a level of a frame layer to which the first video frame belongs; and

the processor, when loading and running the computer program, is caused to perform:

for each of the receivers of which the downlink allocated bandwidth is less than the uplink bit rate, forwarding video frames of a first frame layer to the receiver, determining video frames to be sent in a corresponding target frame layer based on a predetermined frame extraction strategy, forwarding the video frames to be sent to the receiver, and discarding video frames in the target frame layer other than the video frames to be sent and video frames in a second frame layer, wherein a level of the first frame layer is lower than a level of the corresponding target frame layer, and a level of the second frame layer is higher than a level of the corresponding target frame layer.

13 . The computer device according to claim 12 , wherein the processor, when loading and running the computer program, is caused to perform:

determining, for a third video frame in the target frame layer corresponding to a first receiver, whether a size of the third video frame is less than or equal to a first threshold of number of bytes corresponding to the first receiver, and determining, based on the size of the third video frame is less than or equal to the first threshold of number of bytes corresponding to the first receiver, the third video frame as the video frame to be sent;

wherein the first threshold of number of bytes is determined based on a first type number of bytes corresponding to the first receiver, the first type number of bytes is a dynamically maintained number of bytes, and the first type number of bytes is dynamically reduced based on a size of actual forwarded data corresponding to the first receiver and dynamically increased based on a speed of the downlink allocated bandwidth corresponding to the first receiver, the actual forwarded data comprising video data and non-video data.

14 . The computer device according to claim 13 , wherein the first type number of bytes corresponding to the first receiver is determined by:

acquiring an updated first type number of bytes by subtracting, upon sending first data to the first receiver, a size of the first data from a current first type number of bytes; and

determining, upon detecting that a predetermined increase event is triggered, a first time interval between a current moment and last time the predetermined increase event is triggered, determining a first increase number of bytes based on a product of the first time interval and a first target bit rate corresponding to the first receiver, and acquiring the updated first type number of bytes by adding the first increase number of bytes to the current first type number of bytes; wherein the first target bit rate is matched with the downlink allocated bandwidth corresponding to the first receiver.

15 . The computer device according to claim 13 , wherein the first threshold of number of bytes is determined based on a sum of the first type number of bytes corresponding to the first receiver and a second type number of bytes; wherein the second type number of bytes is determined based on a product of a predetermined time window length and a corresponding downlink allocated bandwidth, and the predetermined time window length is determined based on a time series length occupied by video frames depending on a current video frame.

16 . The computer device according to claim 13 , wherein the processor, when loading and running the computer program, is caused to perform:

determining whether the size of the third video frame is less than or equal to the first threshold of number of bytes, determining, based on the size of the third video frame is less than or equal to the first threshold of number of bytes corresponding to the first receiver, whether a total size of the video frames to be determined corresponding to the receivers is less than or equal to a total threshold of number of bytes, wherein the third video frame is included in the video frames to be determined, and determining, based on the total size of the video frames to be determined corresponding to the receivers is less than or equal to the total threshold of number of bytes, the third video frame as the video frame to be sent;

wherein the total threshold of number of bytes is determined based on a third type number of bytes, and the third type number of bytes is a dynamically maintained number of bytes, wherein the third type number of bytes is dynamically reduced based on a size of actual forwarded data of a server and dynamically increased based on a speed of the total downlink detected bandwidth.

17 . The computer device according to claim 10 , wherein the processor, when loading and running the computer program, is caused to perform:

determining, for each frame layer in the video data sent by the transmitter, a target statistical window corresponding to a current frame layer, and acquiring a layer bit rate corresponding to the current frame layer by calculating an average bit rate of video frames belonging to the current frame layer falling within the target statistical window.

18 . The computer device according to claim 10 , wherein the processor, when loading and running the computer program, is caused to perform:

making a sum of downlink allocated bandwidths corresponding to the receivers is equal to the total downlink detected bandwidth by reducing, in response to determining that a sum of the uplink bit rates corresponding to the receivers is greater than the total downlink detected bandwidth, an initial allocated bandwidth corresponding to at least one receiver in a descending order of the uplink bit rates, wherein the initial allocated bandwidth is matched with a value of a corresponding uplink bit rate.

19 . The computer device according to claim 12 , wherein the processor, when loading and running the computer program, is caused to perform:

acquiring an accumulated value of layer bit rate by sequentially accumulating, for each receiver of which the downlink allocated bandwidth is less than the uplink bit rate, the layer bit rates corresponding to the frame layers from the frame layer of a lowest level in a level ascending order, and determining, in response to determining that the accumulated value of layer bit rate is greater than a corresponding downlink allocated bandwidth for the first time, a latest accumulated frame layer as the target frame layer.

20 . The non-transitory computer-readable storage medium according to claim 11 , wherein a first video frame depends on a second video frame, a level of a frame layer to which the second video frame belongs is lower than or equal to a level of a frame layer to which the first video frame belongs; and

the computer program in the non-transitory computer-readable storage medium, when loaded and run by a processor, causes the processor to perform:

for each of the receivers of which the downlink allocated bandwidth is less than the uplink bit rate, forwarding video frames of a first frame layer to the receiver, determining video frames to be sent in a corresponding target frame layer based on a predetermined frame extraction strategy, forwarding the video frames to be sent to the receiver, and discarding video frames in the target frame layer other than the video frames to be sent and video frames in a second frame layer, wherein a level of the first frame layer is lower than a level of the corresponding target frame layer, and a level of the second frame layer is higher than a level of the corresponding target frame layer.