Communication method and device, electronic equipment, chip and storage medium
By acquiring information about failed data packet transmissions and using NACK packets to estimate network bandwidth and dynamically adjust the transmission bitrate, the video quality and stability issues caused by changes in network conditions during video calls are resolved, thus improving the smoothness and clarity of video calls.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- BEIJING X RING TECHNOLOGY CO LTD
- Filing Date
- 2026-01-22
- Publication Date
- 2026-04-28
AI Technical Summary
In video calls, existing technologies struggle to effectively adjust the video transmission bitrate under dynamically changing network conditions, making it difficult to balance video quality and network transmission stability.
By obtaining information about failed packet transmissions, the current network bandwidth is estimated using NACK packets, and the transmission rate is dynamically adjusted to match the available network bandwidth, thus avoiding rate adjustment before complete packet loss.
It enables dynamic adjustment of uplink transmission bitrate under conditions of no complete packet loss, reduces bitrate adjustment latency, avoids continuous packet loss and video stuttering caused by excessive bitrate, and improves the video call experience.
Smart Images

Figure CN121940580A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of communications, and more particularly to a communication method, apparatus, electronic device, chip, and storage medium. Background Technology
[0002] In the field of communications, the stability of video data transmission in Long-Term Evolution (Video over LTE, ViLTE) greatly affects the video call experience. Therefore, how to adaptively adjust the video transmission bitrate according to dynamically changing network conditions to achieve the dual goals of network transmission stability and video quality improvement is a key technical challenge in the field of video data transmission. Summary of the Invention
[0003] This disclosure provides a communication method, apparatus, electronic device, chip, and storage medium to solve problems in the related art.
[0004] A first aspect of this disclosure provides a communication method, the method comprising: acquiring a plurality of first pieces of information, the plurality of first pieces of information including identifiers of a plurality of first data packets that failed to be transmitted; determining a first transmission code rate based on the plurality of first pieces of information; and transmitting a second data packet according to the first transmission code rate.
[0005] In some embodiments of this disclosure, determining a first transmission code rate based on multiple first pieces of information includes: determining a target parameter based on the multiple first pieces of information, the target parameter being used to represent an unavailable code rate within a first period, the first period being used to represent the duration of receiving multiple first pieces of information; and determining a first transmission code rate based on the target parameter and a second transmission code rate, the second transmission code rate being the uplink transmission code rate previously used by the terminal.
[0006] In some embodiments of this disclosure, determining the target parameter based on multiple first pieces of information includes: determining multiple first data packets that failed to be sent within a first period based on the multiple first pieces of information; determining the total number of bytes in the multiple first data packets; determining the sending time corresponding to the multiple first data packets; and determining the target parameter based on the total number of bytes in the multiple first data packets and the sending time.
[0007] In some embodiments of this disclosure, determining a target parameter based on the total number of bytes and the transmission time of multiple first data packets includes: determining the transmission time corresponding to the first data packet sent among the multiple first data packets as the start time; determining the transmission time corresponding to the last data packet sent among the multiple first data packets as the end time; determining the difference between the end time and the start time; and determining the ratio of the total number of bytes to the difference as the target parameter.
[0008] In some embodiments of this disclosure, determining multiple first data packets that failed to be transmitted within a first period based on multiple first pieces of information includes: determining an extended sequence number of multiple first data packets based on the identifiers of the multiple first data packets and the value of a counter; and determining multiple first data packets from multiple candidate data packets stored locally based on the extended sequence numbers of the multiple first data packets.
[0009] In some embodiments of this disclosure, determining the first transmission code rate based on the target parameter and the second transmission code rate includes: in response to the ratio of the target parameter to the second transmission code rate being greater than or equal to a first threshold, decreasing the second transmission code rate according to a first preset rule to obtain the first transmission code rate; in response to the ratio of the target parameter to the second transmission code rate being less than the first threshold and greater than the second threshold, determining the second transmission code rate as the first transmission code rate; and in response to the ratio of the target parameter to the second transmission code rate being less than or equal to the second threshold, increasing the second transmission code rate according to a second preset rule to obtain the first transmission code rate.
[0010] In some embodiments of this disclosure, acquiring multiple pieces of first information includes: acquiring multiple pieces of first information within a first period; or acquiring a target number of pieces of first information.
[0011] A second aspect of this disclosure provides a communication apparatus, comprising: an acquisition module for acquiring a plurality of first pieces of information, the plurality of first pieces of information including identifiers of a plurality of first data packets that failed to be transmitted; a processing module for determining a first transmission code rate based on the plurality of first pieces of information; and a transceiver module for transmitting a second data packet according to the first transmission code rate.
[0012] In some embodiments of this disclosure, the processing module is further configured to: determine a target parameter based on a plurality of first information, wherein the target parameter is used to represent the unavailable bit rate within a first period, and the first period is used to represent the duration of receiving the plurality of first information; and determine a first transmission bit rate based on the target parameter and a second transmission bit rate, wherein the second transmission bit rate is the uplink transmission bit rate previously used by the terminal.
[0013] In some embodiments of this disclosure, the processing module is further configured to: determine, based on multiple first pieces of information, multiple first data packets that failed to be sent within a first period; determine the total number of bytes in the multiple first data packets; determine the sending time corresponding to the multiple first data packets; and determine target parameters based on the total number of bytes in the multiple first data packets and the sending time.
[0014] A third aspect of this disclosure provides an electronic device comprising: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor to enable the at least one processor to perform the methods described in the first aspect of this disclosure.
[0015] A fourth aspect of this disclosure provides a non-transitory computer-readable storage medium storing computer instructions, wherein the computer instructions are used to cause a computer to perform the methods described in the first aspect of this disclosure.
[0016] A fifth aspect of this disclosure provides a chip including at least one processor and a communication interface; the communication interface is used to receive signals input to the chip or signals output from the chip, and the processor communicates with the communication interface and implements the method described in the first aspect of this disclosure through logic circuits or executing code instructions.
[0017] In summary, the communication method proposed in this disclosure can acquire first information and determine a first transmission bitrate based on multiple pieces of first information, and then send a second data packet according to the first transmission bitrate. It can dynamically determine the uplink transmission bitrate based on the information of failed data packets, and can adjust the uplink transmission bitrate when no complete packet loss occurs, reducing the delay of bitrate adjustment and avoiding problems such as continuous packet loss and video stuttering caused by continuous network impact due to excessively high bitrate.
[0018] It should be understood that the above general description and the following detailed description are exemplary and explanatory only, and are not intended to limit this disclosure. Attached Figure Description
[0019] The accompanying drawings, which are incorporated in and form part of this specification, illustrate embodiments consistent with this disclosure and, together with the description, serve to explain the principles of this disclosure, and are not intended to unduly limit this disclosure.
[0020] Figure 1 A flowchart illustrating a communication method provided in this embodiment of the disclosure. Figure 1 ; Figure 2 A flowchart illustrating a communication method provided in this embodiment of the disclosure. Figure 2 ; Figure 3 A flowchart illustrating a communication method provided in this embodiment of the disclosure. Figure 3 ; Figure 4 A flowchart illustrating a video bitrate adjustment method based on NACK bandwidth provided in this embodiment of the disclosure; Figure 5 This is a schematic diagram of the structure of a communication device provided in an embodiment of the present disclosure; Figure 6 This is a schematic diagram of the structure of an electronic device provided in an embodiment of this disclosure; Figure 7 This is a schematic diagram of the chip structure provided in an embodiment of this disclosure. Detailed Implementation
[0021] Embodiments of this disclosure are described in detail below. Examples of these embodiments are illustrated in the accompanying drawings, wherein the same or similar reference numerals denote the same or similar elements or elements having the same or similar functions throughout. The embodiments described below with reference to the accompanying drawings are exemplary and intended to explain this disclosure, and should not be construed as limiting this disclosure.
[0022] In ViLTE technology, the stability of video data transmission significantly impacts the video call experience. To ensure both smoothness and clarity under dynamically changing network conditions, a network bandwidth estimation method for improving video call quality is proposed. This method allows the video transmitter to estimate available network bandwidth in real time and dynamically adjust the encoded output bitrate to match the available bandwidth. The aim is to maximize the use of network bandwidth for video data transmission, achieving the dual goals of network transmission stability and improved video quality.
[0023] Currently, video bandwidth estimation speed adjustment methods include bandwidth estimation speed adjustment methods based on packet loss rate and bandwidth estimation speed adjustment methods based on latency.
[0024] Among them, the packet loss rate-based method uses the Real-time Transport Protocol (RTP) Control Protocol (RTCP) receive report to feed back the packet loss rate during the previous RTCP receive report to the video data sender. Based on the packet loss rate, the network bandwidth is estimated, thereby limiting or increasing the sender's bit rate to adapt to the network bandwidth.
[0025] Furthermore, the packet loss rate-based method estimates network bandwidth and adjusts the transmission bitrate by obtaining the cumulative number of lost packets field to assess video data packet loss. Its core mechanism is as follows: when the packet loss rate is between 2% and 10%, i.e., As_hat(i) = As_hat(i-1), the system maintains the current bitrate; when the packet loss rate exceeds 10%, the transmission bitrate is reduced according to the formula As_hat(i) = As_hat(i-1)(1-0.5p), where p is the packet loss rate; when the packet loss rate is below 2%, the bitrate is slightly increased according to the rule As_hat(i) = 1.05 * As_hat(i-1).
[0026] However, this method only triggers bandwidth reduction after complete packet loss occurs. By this time, complete packet loss has already negatively impacted the video call experience. Therefore, it is crucial to detect the reduction in network bandwidth before complete packet loss occurs in order to improve the video call experience.
[0027] The delay-based bandwidth estimation method is a way to detect the reduction in network bandwidth in advance before packet loss. In this method, the transmission time of the (i-1)th video frame is T(i-1), the transmission time of the ith video frame is T(i), the arrival time of the (i-1)th video frame is t(i-1), and the transmission time of the ith video frame is t(i). Then the delay gradient can be expressed as: d(i) = t(i) - t(i-1) - (T(i) - T(i-1)).
[0028] Where T(i) is the last departure time of the current packet group, and t(i) is the last arrival time of the current packet group. When d(i) > 0, the arrival time difference is greater than the sending time difference, indicating network congestion; conversely, the network condition improves. However, this method requires accurate knowledge of the round-trip time (RTT) of data packets to estimate bandwidth. Typically, RTT is estimated using timestamp information carried in RTCP packets, but this time estimation is often difficult to achieve accurately. Besides the above limitations, this method is suitable for situations where the intermediate router buffer queue is sufficiently large. In scenarios with small buffers, the RTT (including absolute and relative RTT) changes insignificantly, leading to a decrease in the accuracy of this method's estimation.
[0029] Therefore, in order to solve the above problems, this disclosure proposes a communication method that estimates the current network bandwidth by calculating the bandwidth of the currently received negative ACK / retransmission request (NACK) data packets. This method can estimate the bandwidth before complete packet loss and thus adjust the bitrate in advance to improve the video call experience.
[0030] In some embodiments, the schemes disclosed herein can be executed by an electronic device, such as a terminal.
[0031] The specific details of this method are as follows.
[0032] Figure 1 A flowchart illustrating a communication method provided in this embodiment of the disclosure. Figure 1 .like Figure 1 As shown, the method may include the following steps.
[0033] Step 101: Obtain multiple pieces of first information.
[0034] In some embodiments, the first information can be used to indicate that the data packet transmission failed or the receiving end failed to receive the data packet. The first information may include information related to the data packet that failed to transmit. Further, multiple pieces of first information may include the identifiers of multiple first data packets that failed to transmit. For example, one piece of first information may include the identifier of one first data packet. The first information may be NACK information.
[0035] In other words, the first message can be triggered when the receiving end fails to receive the first data packet. The first message can be included in the RTCP feedback data packet. The receiving end can send the first message to the sender of the first data packet when it fails to receive a first data packet or fails to receive a first data packet.
[0036] In some embodiments, the sender of the first data packet may receive first information, and the sender may determine the first data packet that failed to be sent based on the first information.
[0037] In some embodiments, acquiring multiple pieces of first information includes: acquiring multiple pieces of first information within a first period; or acquiring a target number of pieces of first information.
[0038] Step 102: Determine the first transmission code rate based on multiple pieces of first information.
[0039] In some embodiments, the first transmission code rate can be determined based on a plurality of first information. Further, the first transmission code rate can be determined based on a plurality of first information received within a first period.
[0040] In some embodiments, determining a first transmission code rate based on a plurality of first information includes: determining a target parameter based on the plurality of first information, the target parameter being used to represent an unavailable code rate within a first period, the first period being used to represent the duration of receiving the plurality of first information; and determining a first transmission code rate based on the target parameter and a second transmission code rate, the second transmission code rate being the uplink transmission code rate previously used by the terminal.
[0041] In some embodiments, the target parameter can be used to represent packet loss information, the target parameter can be used to represent currently unavailable bandwidth, and the target parameter can be used to represent the unavailable bit rate within the first period. The unavailable bit rate can refer to the portion of the total transmission bit rate attempted by the sender under the current network conditions that cannot be effectively transmitted to the receiver by the network, resulting in packet loss and requiring retransmission. The unavailable bit rate can occur when the transmission bit rate used by the sender exceeds the currently available bandwidth of the network path. The target parameter can reflect the difference between the current transmission bit rate and the actual transmission capacity of the network.
[0042] In some embodiments, the first transmission code rate is the transmission code rate that the sending end needs to use subsequently. For example, if the sending end is currently using the second transmission code rate to send data packets, after determining the first transmission code rate based on multiple first pieces of information, it can switch to sending uplink data packets according to the first transmission code rate.
[0043] Step 103: Send the second data packet according to the first transmission code rate.
[0044] In some embodiments, after determining the first transmission rate, the sending end can adjust from sending data packets using the second transmission rate to sending data packets using the first transmission rate.
[0045] In summary, the above embodiments of this application can obtain first information and determine a first transmission bitrate based on multiple pieces of first information, and then send a second data packet according to the first transmission bitrate. This can realize the dynamic determination of the uplink transmission bitrate based on the information of the failed data packet, and can realize the adjustment of the uplink transmission bitrate when no complete packet loss occurs, reducing the delay of bitrate adjustment and avoiding problems such as continuous packet loss and video stuttering caused by the continuous impact of excessively high bitrate on the network.
[0046] Figure 2 A flowchart illustrating a communication method provided in this embodiment of the disclosure. Figure 2 .like Figure 2 As shown, the method may include the following steps.
[0047] Step 201: Determine the target parameters based on multiple pieces of first information.
[0048] In some embodiments, the target parameter is used to represent the unavailable bit rate within a first period, and the first period is used to represent the duration of receiving multiple first messages.
[0049] In some embodiments, determining the target parameter based on a plurality of first information includes: determining a plurality of first data packets that failed to be sent within a first period based on the plurality of first information; determining the total number of bytes in the plurality of first data packets; determining the sending time corresponding to the plurality of first data packets; and determining the target parameter based on the total number of bytes in the plurality of first data packets and the sending time.
[0050] In some embodiments, the identifiers of multiple first data packets that failed to be transmitted within a first period can be determined based on multiple first pieces of information. For example, the identifier can be the sequence number of the first data packet, such as the NACK sequence number, or the RTP sequence number. The multiple first data packets that failed to be transmitted within the first period can be identified, and the total number of data bytes of the multiple first data packets can be counted. The transmission time corresponding to the multiple first data packets can also be determined, that is, the time when the multiple first data packets were sent from the sending end.
[0051] In some embodiments, determining a plurality of first data packets that failed to be transmitted within a first period based on a plurality of first information includes: determining an extended sequence number of a plurality of first data packets based on the identifiers of the plurality of first data packets and the value of a counter; and determining a plurality of first data packets from a plurality of candidate data packets stored locally based on the extended sequence numbers of the plurality of first data packets.
[0052] In some embodiments, since there may be multiple data transmission cycles, the identifier of the first data packet may be reused in different data transmission cycles. For example, the RTP sequence number is a 16-bit field with a limited value range, and it is periodically recycled during continuous data transmission, i.e., it returns to zero from its maximum value (e.g., 65535). Therefore, the identifier of the first data packet with the same value may be reused in different data transmission cycles, but it actually points to different data packets. Since each data packet uniquely corresponds to one extended sequence number, duplicate extended sequence numbers will not occur. Therefore, multiple first data packets can be identified by determining the extended sequence number.
[0053] In some embodiments, the sending end internally maintains a counter to record the number of complete cycles that have occurred for the base RTP sequence number (16 bits). For example, when the sequence number first goes from 0 to 65535, the counter is 0; when the sequence number completes a cycle and starts again from 0, the counter increments to 1, and so on. Then, when the sending end receives the identifier of the first data packet (denoted as seq_base), it determines its corresponding extended sequence number (i.e., seq_extended) as follows: seq_extended = counter * (maximum sequence number value + 1) + seq_base. For example, if the maximum RTP sequence number is 65535, when the cycle counter is 1, and the identifier of the received first data packet is 1000, its extended sequence number is: 1 * 65536 + 1000 = 66536.
[0054] In some embodiments, the sending end can locally store the data packets it sends, or in other words, it can store copies of the data packets it sends, i.e., multiple candidate data packets. After determining the extended sequence number, the sending end can determine the data packet corresponding to the extended sequence number from the multiple candidate data packets stored locally as the first data packet. Then, based on the information of the first data packet stored locally, the sending end can determine the total number of bytes of the multiple first data packets and the sending time corresponding to each first data packet.
[0055] In some embodiments, determining a target parameter based on the total number of bytes in the plurality of first data packets and the transmission time includes: determining the transmission time corresponding to the first data packet sent among the plurality of first data packets as the start time; determining the transmission time corresponding to the last data packet sent among the plurality of first data packets as the end time; determining the difference between the end time and the start time; and determining the ratio of the total number of bytes to the difference as the target parameter.
[0056] For example, the first period includes three first data packets: data packet 1, data packet 2, and data packet 3. The transmission time of data packet 1 is 1000ms, the transmission time of data packet 2 is 1005ms, and the transmission time of data packet 3 is 1012ms. Therefore, the start time is 1000ms, the end time is 1012ms, and the difference is 12ms. The number of bytes in data packet 1 is 1200 bytes, the number of bytes in data packet 2 is 800 bytes, and the number of bytes in data packet 3 is 1000 bytes, so the total number of bytes is 3000 bytes. Therefore, the target parameter can be determined as 3000 bytes / 12 ms. After that, the unit conversion of the target parameter can be performed to obtain an unusable bit rate of 2 Mbps.
[0057] Step 202: Determine the first transmission code rate based on the target parameters and the second transmission code rate.
[0058] In some embodiments, the second transmit code rate is the uplink transmit code rate previously used by the terminal.
[0059] In some embodiments, determining the first transmission code rate based on the target parameter and the second transmission code rate includes: in response to the ratio of the target parameter to the second transmission code rate being greater than or equal to a first threshold, decreasing the second transmission code rate according to a first preset rule to obtain the first transmission code rate; in response to the ratio of the target parameter to the second transmission code rate being less than the first threshold and greater than the second threshold, determining the second transmission code rate as the first transmission code rate; and in response to the ratio of the target parameter to the second transmission code rate being less than or equal to the second threshold, increasing the second transmission code rate according to a second preset rule to obtain the first transmission code rate.
[0060] In some embodiments, after determining the target parameters, the ratio of the target parameters to the second transmission code rate can be determined. This ratio can represent the proportion of unavailable code rate in the second transmission code rate, or the proportion of uplink transmission code rate wasted, or the proportion of network overload. The second transmission code rate can then be adjusted according to this proportion to obtain the first transmission code rate.
[0061] In some embodiments, when the ratio of the target parameter to the second transmission code rate is large (e.g., ≥5%), the proportion of currently unavailable code rate is large. In this case, the second transmission code rate can be reduced. In one implementation, the uplink bandwidth can be reduced by half of the target parameter. For example, if the current second transmission code rate is 1000 kbps, the calculated unavailable code rate is 120 kbps. Then, the ratio of the unavailable code rate to the second transmission code rate is 120 / 1000 = 12%. Since 12% is greater than the first threshold (5%), reducing the uplink bandwidth by half of the target parameter results in a code rate reduction of 120 kbps / 2 = 60 kbps. The adjusted first transmission code rate is 1000 kbps - 60 kbps = 940 kbps.
[0062] In some embodiments, when the ratio of the target parameter to the second transmission code rate is small (e.g., ≤2%), the current network environment may still have sufficient unused bandwidth. Therefore, it is possible to try to increase the second transmission code rate to improve the utilization of network bandwidth. In one implementation, the uplink transmission code rate can be increased by 2% of the second transmission code rate. For example, if the second transmission code rate is 500 kbps and the calculated unusable code rate is 10 kbps, the ratio of the unusable code rate to the second transmission code rate is 10 / 500 = 2%. Since this ratio is equal to the second threshold (2%), the uplink transmission code rate can be increased by 2% of the second transmission code rate, where the code rate increase is 500 kbps × 2% = 10 kbps. The adjusted first transmission code rate is 500 kbps + 10 kbps = 510 kbps.
[0063] In some embodiments, when the ratio of the target parameter to the second transmission rate is in the middle range, it indicates that the current uplink rate is reasonable, and the current rate can be maintained. Specific adjustment strategies can be set according to actual needs, and this disclosure does not impose any restrictions.
[0064] In summary, the above embodiments of this disclosure can determine the target parameters based on the first information, that is, determine the current unavailable bitrate, and make corresponding adjustments based on the relationship between the unavailable bitrate and the second transmission bitrate. This can improve bandwidth utilization, avoid the uplink transmission bitrate from exceeding the bandwidth by too much, which would lead to a large number of data packets being retransmitted and wasting resources, and allow for the adjustment of the transmission bitrate before complete packet loss occurs, thereby reducing the impact of packet loss on user experience.
[0065] Figure 3 A flowchart illustrating a communication method provided in this embodiment of the disclosure. Figure 3 .like Figure 3 As shown, the method includes the following steps.
[0066] Step 301: Within the first cycle, acquire multiple pieces of first information.
[0067] In some embodiments, multiple pieces of first information can be acquired within a first period. For example, the length of the first period can be set, and the first information can be received within the time window of the first period. The target parameter can be determined based on the first information received within the first period.
[0068] For example, if the length of the first cycle is set to 5 seconds, and the transmitter receives 3 first messages within 5 seconds, then the target parameters are determined based on the information of the 3 first data packets indicated by the 3 first messages, and the current uplink transmission rate is adjusted based on the target parameters. Then, the timing of the next first cycle is started so that the transmission rate can be adjusted at the end of the next first cycle.
[0069] Step 302: Obtain multiple pieces of first information for the target quantity.
[0070] In some embodiments, multiple pieces of first information for the target quantity can be obtained. For example, a quantity threshold can be set. When the number of first pieces of information received by the sending end reaches this data threshold, the target parameter is determined based on the first pieces of information for the target quantity received.
[0071] For example, if the quantity threshold is set to 5, then the sending end determines a target parameter every 5 first messages received, and determines the first transmission code rate every 5 first messages received. At this time, the length of the first period is related to the time required for the sending end to receive 5 first messages.
[0072] In summary, the embodiments of this application support the evaluation and adjustment of the transmission rate at fixed time periods, as well as the evaluation and adjustment of the transmission rate when a certain number of packets are lost. This allows for flexible adaptation to different network fluctuation scenarios. By aggregating and analyzing recent packet loss information, the relationship between the current uplink transmission rate and the unavailable transmission rate can be calculated, and the transmission rate can be dynamically adjusted based on this relationship. This ensures that the network condition remains good and guarantees the user experience.
[0073] The technical solutions of this disclosure will be further described in detail below with reference to specific application embodiments.
[0074] The following is a video bitrate adjustment method based on NACK bandwidth provided in this disclosure. This method can solve the problem of poor video call experience, such as stuttering or unclear image quality, that often occurs during terminal video calls due to network congestion or insufficient bandwidth. Figure 4 As shown, the method includes the following steps.
[0075] Step 1: Parse the NACK sequence number in the RTCP feedback packet.
[0076] Step 2: Count the total number of data bytes corresponding to the sequence number from the locally stored RTP video data packets.
[0077] Step 3: Obtain the start and end times of the NACK packet extended sequence number.
[0078] Step 4: Calculate the NACK bandwidth based on the number of NACK bytes and the start and end times of the NACK sequence number.
[0079] Step 5: Adjust the uplink transmission rate according to the NACK bandwidth.
[0080] The NACK bandwidth can be the target parameter mentioned above. It can reflect currently unavailable network bandwidth, packet loss information, and currently unavailable bitrate. After calculating the NACK bandwidth according to steps 1-4, the uplink bitrate adjustment strategy needs to be executed according to step 5. One adjustment strategy includes: when the NACK bandwidth is greater than 5% of the current uplink bandwidth, reducing the uplink bandwidth by half; when the NACK bandwidth is between 2% and 5% of the current uplink bandwidth, maintaining the current uplink bandwidth; and when the NACK bandwidth is less than 2% of the current uplink bandwidth, increasing the bandwidth by 2%. Furthermore, this adjustment strategy is just one of many; other factors can also be considered to adjust the uplink bandwidth.
[0081] In summary, the above examples of this disclosure solve the problem of lag in bandwidth estimation based on packet loss, and address the issues of inaccurate latency estimation and limitation by intermediate router buffer size in bandwidth estimation based on delay. The method in this example can perform uplink speed adjustment even without complete packet loss, reducing the impact of video stuttering. This method is unaffected by intermediate transmission links and has wider applicability.
[0082] Figure 5 This is a schematic diagram of the structure of a communication device 500 provided in an embodiment of this disclosure. Figure 5 As shown, the device includes: an acquisition module 510 for acquiring multiple pieces of first information, the multiple pieces of first information including identifiers of multiple first data packets that failed to be transmitted; a processing module 520 for determining a first transmission code rate based on the multiple pieces of first information; and a transceiver module 530 for transmitting a second data packet according to the first transmission code rate.
[0083] In some embodiments, the processing module is further configured to determine a target parameter based on a plurality of first information, wherein the target parameter is used to represent the unavailable bit rate within a first period, and the first period is used to represent the duration of receiving the plurality of first information; and to determine a first transmission bit rate based on the target parameter and a second transmission bit rate, wherein the second transmission bit rate is the uplink transmission bit rate previously used by the terminal.
[0084] In some embodiments, the processing module is further configured to determine, based on multiple pieces of first information, multiple first data packets that failed to be sent within a first period; determine the total number of bytes in the multiple first data packets; determine the sending time corresponding to the multiple first data packets; and determine target parameters based on the total number of bytes in the multiple first data packets and the sending time.
[0085] In some embodiments, the processing module is further configured to determine the sending time corresponding to the first data packet sent among the plurality of first data packets as the start time; determine the sending time corresponding to the last data packet sent among the plurality of first data packets as the end time; determine the difference between the end time and the start time; and determine the ratio of the total number of bytes to the difference as the target parameter.
[0086] In some embodiments, the processing module is further configured to determine an extended sequence number of a plurality of first data packets based on the identifiers of the plurality of first data packets and the value of a counter; and to determine a plurality of first data packets from a plurality of candidate data packets stored locally based on the extended sequence numbers of the plurality of first data packets.
[0087] In some embodiments, the processing module is further configured to: decrease the second transmission code rate according to a first preset rule to obtain a first transmission code rate when the ratio of the target parameter to the second transmission code rate is greater than or equal to a first threshold; determine the second transmission code rate as the first transmission code rate when the ratio of the target parameter to the second transmission code rate is less than the first threshold and greater than the second threshold; and increase the second transmission code rate according to a second preset rule to obtain the first transmission code rate when the ratio of the target parameter to the second transmission code rate is less than or equal to the second threshold.
[0088] In some embodiments, the acquisition module is further configured to acquire a plurality of first pieces of information within a first period; or acquire a target number of a plurality of first pieces of information.
[0089] In summary, the communication device 500 can acquire first information and determine a first transmission bitrate based on multiple pieces of first information. Then, it can send a second data packet according to the first transmission bitrate. This allows for dynamic determination of the uplink transmission bitrate based on information from failed data packets and adjustment of the uplink transmission bitrate when no complete packet loss occurs. This reduces the delay in bitrate adjustment and avoids problems such as continuous packet loss and video stuttering caused by excessively high bitrates continuously impacting the network.
[0090] The methods and apparatus provided in the embodiments of this application have been described above. To implement the functions of the methods provided in the embodiments of this application, the electronic device may include a hardware structure and software modules, and may implement the above functions in the form of a hardware structure, software modules, or a hardware structure plus software modules. One of the above functions may be executed in the form of a hardware structure, software modules, or a hardware structure plus software modules.
[0091] Figure 6 This is a block diagram illustrating an electronic device 600 for implementing the above-described method according to an exemplary embodiment. For example, the electronic device 600 may be a mobile phone, computer, messaging device, game console, tablet device, medical device, fitness equipment, personal digital assistant, etc.
[0092] Reference Figure 6 The electronic device 600 may include one or more of the following components: a processing component 602, a memory 604, a power supply component 606, a multimedia component 608, an audio component 610, an input / output (I / O) interface 612, a sensor component 614, and a communication component 616.
[0093] Processing component 602 typically controls the overall operation of electronic device 600, such as operations associated with display, telephone calls, data communication, camera operation, and recording operations. Processing component 602 may include one or more processors 620 to execute instructions to perform all or part of the steps of the methods described above. Furthermore, processing component 602 may include one or more modules to facilitate interaction between processing component 602 and other components. For example, processing component 602 may include a multimedia module to facilitate interaction between multimedia component 608 and processing component 602.
[0094] Memory 604 is configured to store various types of data to support the operation of electronic device 600. Examples of such data include instructions for any application or method operating on electronic device 600, contact data, phonebook data, messages, pictures, videos, etc. Memory 604 can be implemented by any type of volatile or non-volatile storage device or a combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic storage, flash memory, magnetic disk, or optical disk.
[0095] Power supply component 606 provides power to various components of electronic device 600. Power supply component 606 may include a power management system, one or more power supplies, and other components associated with generating, managing, and distributing power to electronic device 600.
[0096] Multimedia component 608 includes a screen that provides an output interface between electronic device 600 and user. In some embodiments, the screen may include a liquid crystal display (LCD) and a touch panel (TP). If the screen includes a touch panel, the screen may be implemented as a touchscreen to receive input signals from the user. The touch panel includes one or more touch sensors to sense touches, swipes, and gestures on the touch panel. The touch sensors may sense not only the boundaries of touch or swipe actions but also the duration and pressure associated with the touch or swipe operation. In some embodiments, multimedia component 608 includes a front-facing camera and / or a rear-facing camera. When electronic device 600 is in an operating mode, such as a shooting mode or video mode, the front-facing camera and / or rear-facing camera may receive external multimedia data. Each front-facing camera and rear-facing camera may be a fixed optical lens system or have focal length and optical zoom capabilities.
[0097] Audio component 610 is configured to output and / or input audio signals. For example, audio component 610 includes a microphone (MIC) configured to receive external audio signals when electronic device 600 is in an operating mode, such as call mode, recording mode, and voice recognition mode. The received audio signals may be further stored in memory 604 or transmitted via communication component 616. In some embodiments, audio component 610 also includes a speaker for outputting audio signals.
[0098] I / O interface 612 provides an interface between processing component 602 and peripheral interface modules, such as keyboards, click wheels, buttons, etc. These buttons may include, but are not limited to, home buttons, volume buttons, power buttons, and lock buttons.
[0099] Sensor assembly 614 includes one or more sensors for providing state assessments of various aspects of electronic device 600. For example, sensor assembly 614 may detect the on / off state of electronic device 600, the relative positioning of components such as the display and keypad of electronic device 600, changes in position of electronic device 600 or a component of electronic device 600, the presence or absence of user contact with electronic device 600, orientation or acceleration / deceleration of electronic device 600, and temperature changes of electronic device 600. Sensor assembly 614 may include a proximity sensor configured to detect the presence of nearby objects without any physical contact. Sensor assembly 614 may also include a light sensor, such as a CMOS or CCD image sensor, for use in imaging applications. In some embodiments, sensor assembly 614 may also include an accelerometer, gyroscope, magnetometer, pressure sensor, or temperature sensor.
[0100] Communication component 616 is configured to facilitate wired or wireless communication between electronic device 600 and other devices. Electronic device 600 can access wireless networks based on communication standards, such as WiFi, 2G or 3G, 4G LTE, 5G NR (NewRadio), or combinations thereof. In one exemplary embodiment, communication component 616 receives broadcast signals or broadcast-related information from an external broadcast management system via a broadcast channel. In one exemplary embodiment, communication component 616 also includes a near-field communication (NFC) module to facilitate short-range communication. For example, the NFC module may be implemented based on radio frequency identification (RFID) technology, Infrared Data Association (IrDA) technology, ultra-wideband (UWB) technology, Bluetooth (BT) technology, and other technologies.
[0101] In an exemplary embodiment, the electronic device 600 may be implemented by one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), controllers, microcontrollers, microprocessors, or other electronic components to perform the methods described above.
[0102] In an exemplary embodiment, a non-transitory computer-readable storage medium including instructions is also provided, such as a memory 604 including instructions, which can be executed by a processor 620 of an electronic device 600 to perform the above-described method. For example, the non-transitory computer-readable storage medium may be a ROM, random access memory (RAM), CD-ROM, magnetic tape, floppy disk, and optical data storage device, etc.
[0103] Embodiments of this disclosure also provide a non-transitory computer-readable storage medium storing computer instructions, wherein the computer instructions are used to cause a computer to perform the methods described in the above embodiments of this disclosure.
[0104] Figure 7 This is a schematic diagram illustrating the structure of a chip 700 for implementing the above method according to an exemplary embodiment. (Refer to...) Figure 7 The chip 700 includes a communication interface 701 and at least one processor 702. The communication interface 701 is used to receive signals input to the chip 700 or signals output from the chip 700. The processor 702 communicates with the communication interface 701 and implements the methods described in the above embodiments of this disclosure through logic circuits or executing code instructions.
[0105] It should be noted that the terms "first," "second," etc., used in the specification, claims, and accompanying drawings of this disclosure are used to distinguish similar objects and are not necessarily used to describe a specific order or sequence. It should be understood that such data can be interchanged where appropriate so that the embodiments of this disclosure described herein can be implemented in orders other than those illustrated or described herein. The embodiments described in the following exemplary embodiments do not represent all embodiments consistent with this disclosure. Rather, they are merely examples of apparatuses and methods consistent with some aspects of this disclosure as detailed in the appended claims.
[0106] In the description of this specification, the references to terms such as "one embodiment," "some embodiments," "illustrative embodiment," "example," "specific example," or "some examples," etc., indicate that a specific feature, structure, material, or characteristic described in connection with an embodiment or example is included in at least one embodiment or example of the present invention. In this specification, the illustrative expressions of the above terms do not necessarily refer to the same embodiment or example. Furthermore, the specific features, structures, materials, or characteristics described may be combined in any suitable manner in at least one embodiment or example.
[0107] Any process or method description in the flowchart or otherwise herein can be understood as representing a module, segment, or portion of code comprising one or more executable instructions for implementing a particular logical function or process, and the scope of the preferred embodiments of the invention includes additional implementations in which functions may be performed not in the order shown or discussed, including substantially simultaneously or in reverse order depending on the functions involved, as will be understood by those skilled in the art to which embodiments of the invention pertain.
[0108] The logic and / or steps represented in the flowchart or otherwise described herein, for example, can be considered as a sequenced list of executable instructions for implementing logical functions, and can be embodied in any computer-readable medium for use by, or in conjunction with, an instruction execution system, apparatus, or device (such as a computer-based system, a system including a processing module, or other system that can fetch and execute instructions from, an instruction execution system, apparatus, or device). For the purposes of this specification, "computer-readable medium" can be any means that can contain, store, communicate, propagate, or transmit programs for use by, or in conjunction with, an instruction execution system, apparatus, or device. More specific examples (a non-exhaustive list) of computer-readable media include: an electrical connection having at least one wiring (control method), a portable computer disk drive (magnetic device), random access memory (RAM), read-only memory (ROM), erasable and editable read-only memory (EPROM or flash memory), fiber optic devices, and portable optical disc read-only memory (CDROM). Furthermore, computer-readable media can even be paper or other suitable media on which programs can be printed, because programs can be obtained electronically, for example, by optically scanning the paper or other media, followed by editing, interpreting, or otherwise processing as necessary, and then stored in computer memory.
[0109] It should be understood that various parts of the embodiments of the present invention can be implemented in hardware, software, firmware, or a combination thereof. In the above embodiments, multiple steps or methods can be implemented in software or firmware stored in memory and executed by a suitable instruction execution system. For example, if implemented in hardware, as in another embodiment, it can be implemented using any one or a combination of the following techniques known in the art: discrete logic circuits having logic gates for implementing logical functions on data signals, application-specific integrated circuits (ASICs) having suitable combinational logic gates, programmable gate arrays (PGAs), field-programmable gate arrays (FPGAs), etc.
[0110] Those skilled in the art will understand that all or part of the steps of the methods described in the above embodiments can be implemented by a program instructing related hardware. The program can be stored in a computer-readable storage medium, and when executed, the program includes one or a combination of the steps of the method embodiments.
[0111] Furthermore, the functional units in the various embodiments of the present invention can be integrated into a processing module, or each unit can exist physically separately, or two or more units can be integrated into a module. The integrated module can be implemented in hardware or as a software functional module. If the integrated module is implemented as a software functional module and sold or used as an independent product, it can also be stored in a computer-readable storage medium. The storage medium mentioned above can be a read-only memory, a disk, or an optical disk, etc.
[0112] Although embodiments of the present invention have been shown and described above, it is understood that the above embodiments are exemplary and should not be construed as limiting the present invention. Those skilled in the art can make changes, modifications, substitutions and variations to the above embodiments within the scope of the present invention.
Claims
1. A communication method, characterized in that, include: Acquire multiple pieces of first information, including identifiers of multiple first data packets that failed to be sent; Based on the plurality of first information, a first transmission code rate is determined; Send the second data packet according to the first transmission rate.
2. The method according to claim 1, characterized in that, Determining the first transmission code rate based on the plurality of first information includes: Based on the plurality of first information, a target parameter is determined, wherein the target parameter is used to represent the unavailable bitrate within a first period, and the first period is used to represent the duration of receiving the plurality of first information; The first transmission code rate is determined based on the target parameter and the second transmission code rate, wherein the second transmission code rate is the uplink transmission code rate previously used by the terminal.
3. The method according to claim 2, characterized in that, The step of determining the target parameters based on the plurality of first pieces of information includes: Based on the plurality of first information, determine the plurality of first data packets that failed to be sent within the first period; Determine the total number of bytes in the plurality of first data packets; Determine the transmission time corresponding to the plurality of first data packets; The target parameters are determined based on the total number of bytes in the plurality of first data packets and the sending time.
4. The method according to claim 3, characterized in that, Determining the target parameter based on the total number of bytes and the transmission time of the plurality of first data packets includes: The sending time of the first data packet sent among the plurality of first data packets is determined as the start time; The sending time of the last data packet sent among the plurality of first data packets is determined as the termination time; Determine the difference between the termination time and the start time; The ratio of the total number of bytes to the difference is determined as the target parameter.
5. The method according to claim 3, characterized in that, The step of determining the plurality of first data packets that failed to be sent within the first period based on the plurality of first information includes: Based on the identifiers of the plurality of first data packets and the values of the counters, the extended sequence numbers of the plurality of first data packets are determined; The plurality of first data packets are determined from a plurality of candidate data packets stored locally based on the extended sequence number of the plurality of first data packets.
6. The method according to claim 2, characterized in that, The step of determining the first transmission code rate based on the target parameter and the second transmission code rate includes: In response to the ratio of the target parameter to the second transmission code rate being greater than or equal to a first threshold, the second transmission code rate is reduced according to a first preset rule to obtain the first transmission code rate; When the ratio of the target parameter to the second transmission code rate is less than the first threshold and greater than the second threshold, the second transmission code rate is determined as the first transmission code rate. In response to the ratio of the target parameter to the second transmission code rate being less than or equal to the second threshold, the second transmission code rate is increased according to a second preset rule to obtain the first transmission code rate.
7. The method according to claim 2, characterized in that, The acquisition of multiple pieces of first information includes: During the first period, acquire the plurality of first pieces of information; or Obtain the target number of the plurality of first information.
8. A communication device, characterized in that, The device includes: The acquisition module is used to acquire multiple pieces of first information, including identifiers of multiple first data packets that failed to be sent; The processing module is used to determine a first transmission code rate based on the plurality of first information; The transceiver module is used to send the second data packet according to the first transmission code rate.
9. The apparatus according to claim 8, characterized in that, The processing module is also used for: Based on the plurality of first information, a target parameter is determined, wherein the target parameter is used to represent the unavailable bitrate within a first period, and the first period is used to represent the duration of receiving the plurality of first information; The first transmission code rate is determined based on the target parameter and the second transmission code rate, wherein the second transmission code rate is the uplink transmission code rate previously used by the terminal.
10. The apparatus according to claim 9, characterized in that, The processing module is also used for: Based on the plurality of first information, determine the plurality of first data packets that failed to be sent within the first period; Determine the total number of bytes in the plurality of first data packets; Determine the transmission time corresponding to the plurality of first data packets; The target parameters are determined based on the total number of bytes in the plurality of first data packets and the sending time.
11. An electronic device, characterized in that, include: At least one processor; as well as A memory communicatively connected to the at least one processor; wherein, The memory stores instructions that can be executed by the at least one processor to enable the at least one processor to perform the method of any one of claims 1-7.
12. A non-transitory computer-readable storage medium storing computer instructions, characterized in that, The computer instructions are used to cause the computer to perform the method according to any one of claims 1-7.
13. A chip, characterized in that, It includes at least one processor and a communication interface; the communication interface is used to receive signals input to the chip or signals output from the chip, and the processor communicates with the communication interface and implements the method as described in any one of claims 1 to 7 through logic circuits or executing code instructions.