Codec configuration adaptation based on packet loss rate

Devices adjust codec configurations based on packet loss rate thresholds received from a server, addressing inefficient negotiation and maintaining audio quality and resource efficiency.

JP7600142B2Active Publication Date: 2024-12-16QUALCOMM INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2021564159
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-05-04
Filing Date
2020-05-05
Publication Date
2024-12-16
Estimated Expiration
2040-05-05

AI Technical Summary

Technical Problem

Existing communication devices experience perceptible loss of audio quality due to high packet loss rates during data transmission, leading to inefficient negotiation of codec configurations between devices from different manufacturers with varying settings, resulting in suboptimal audio transmission.

Method used

A system where devices receive codec configuration data from a configuration server indicating packet loss rate thresholds and adaptive request types, allowing them to adjust codec configurations based on measured packet loss rates to maintain optimal audio quality and network efficiency.

Benefits of technology

Enables devices to adapt codec configurations efficiently, improving audio quality and reducing bandwidth consumption by aligning with changing network conditions, thus enhancing user experience and resource utilization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007600142000004
    Figure 0007600142000004
  • Figure 0007600142000005
    Figure 0007600142000005
  • Figure 0007600142000006
    Figure 0007600142000006
Patent Text Reader

Abstract

The method of communication includes receiving configuration data at a first device from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration. The method also includes determining a packet loss rate at the first device, the packet loss rate associated with one or more first packets received at the first device over a network from a second device. The method also includes sending a request to the second device to change the codec configuration of the second device based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate satisfies the first packet loss rate threshold. The method also includes receiving second packets at the first device over the network from the second device, the second packets being encoded based on the second codec configuration.
Need to check novelty before this filing date? Find Prior Art

Description

Claiming priority

[0001]

[0001] This application claims the benefit of priority to commonly owned U.S. Provisional Patent Application No. 62 / 843,826, filed May 6, 2019, U.S. Provisional Patent Application No. 62 / 866,728, filed June 26, 2019, and U.S. Nonprovisional Patent Application No. 16 / 865,579, filed May 4, 2020, the entire contents of each of which are expressly incorporated herein by reference. [Technical field]

[0002] This disclosure relates generally to adjusting coder-decoder (codec) configuration based on packet loss rate. [Background technology]

[0003]

[0003] Advances in technology have resulted in smaller and more powerful computing devices. For example, there are now a variety of portable personal computing devices, including wireless telephones, such as mobile phones and smartphones, tablets, and laptop computers, that are small, lightweight, and easily carried by users. These devices can communicate voice and data packets over wireless networks. In addition, many such devices incorporate additional functionality, such as digital still cameras, digital video cameras, digital recorders, and audio file players. Such devices can also process executable instructions, including software applications, such as web browser applications that may be used to access the Internet. Thus, these devices may contain significant computing power.

[0004]

[0004] Communication of data to a mobile phone device, such as encoded audio data sent to such a device during a phone call, may be affected based on a rate of packet loss associated with transmitting the data. For example, the encoded audio data may be transmitted over a wireless network as a stream of packets from the sending device to the mobile phone device. One or more packets of the audio data stream may be "lost," such as a packet being dropped due to a buffer overflow in a network switch, or a packet being delayed such that the audio data of the packet is not available in time for playback at the mobile phone device. When packets are lost at a high enough rate, a perceptible loss of audio quality occurs and may impair the user's experience. Summary of the Invention

[0005] In one particular aspect, a method of communication includes receiving configuration data at a first device from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration. The method includes determining a packet loss rate at the first device, the packet loss rate being associated with one or more first packets received at the first device over a network from a second device. The method includes sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold. The method also includes receiving a second packet at the first device over the network from the second device, the second packet being encoded based on the second codec configuration.

[0006]

[0006] In another particular aspect, a device includes a memory and one or more processors. The memory is configured to store configuration data received from a configuration server. The configuration data indicates a first packet loss rate threshold associated with a first codec configuration. The one or more processors are configured to determine a packet loss rate associated with one or more first packets received over a network from a second device. The one or more processors are configured to send a request to the second device to change a codec configuration of the second device based on determining that the decoder has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold. The one or more processors are also configured to receive, over the network, from the second device, second packets encoded based on the second codec configuration.

[0007]

[0007] In another particular aspect, a non-transitory computer-readable medium includes instructions that, when executed by one or more processors of a device, cause the one or more processors to perform operations for communication. The operations include receiving configuration data at a first device from a configuration server. The configuration data indicates a first packet loss rate threshold associated with a first codec configuration. The operations include determining a packet loss rate at the first device. The packet loss rate is associated with one or more first packets received at the first device over a network from a second device. The operations include sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold. The operations also include receiving a second packet at the first device over the network from the second device. The second packet is encoded based on the second codec configuration.

[0008]

[0008] In another particular aspect, an apparatus includes means for receiving configuration data at a first device from a configuration server. The configuration data indicates a first packet loss rate threshold associated with a first codec configuration. The apparatus includes means for determining a packet loss rate at the first device. The packet loss rate is associated with one or more first packets received at the first device over a network from a second device. The apparatus includes means for sending a request to the second device to change a codec configuration of the second device. The request is sent based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold. The apparatus also includes means for receiving a second packet at the first device over the network from the second device. The second packet is encoded based on the second codec configuration.

[0009]

[0009] Other aspects, advantages, and features of the present disclosure will become apparent after review of the entire application, including the following sections: Brief Description of the Drawings, Detailed Description of the Invention, and Claims. [Brief description of the drawings]

[0010] [Figure 1]

[0010] FIG. 1 is a block diagram of a particular illustrative aspect of a system operable to adapt a codec configuration based on a packet loss rate. [Diagram 2]

[0011] 2 is a table of example descriptions and formats of configuration data generated by the system of FIG. 1; [Diagram 3]

[0012] 2 is a diagram of an illustrative example of configuration data that may be generated by the system of FIG. 1; [Figure 4]

[0013] 2 is a graph of an illustrative example of codec configuration adaptation that may be implemented by the system of FIG. 1; [Diagram 5]

[0014] 4 is a flow chart illustrating a method for determining codec configuration adaptation based on packet loss rate. [Figure 6]

[0015] 4 is a diagram of another example of a system operable to adapt a codec configuration based on a packet loss rate. [Figure 7]

[0016] 7 is a table of example descriptions and formats of configuration data generated by the system of FIG. 6. [Figure 8]

[0017] 1 is a block diagram of a particular illustrative example of a device operable to implement codec configuration adaptation based on packet loss rate. [Figure 9]

[0018] 1 is a block diagram of a base station operable to implement codec configuration adaptation based on packet loss rate. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011]

[0019] Audio data transmitted from a sending device to a receiving device may be affected based on the rate of packet loss associated with the transmission of the data. For example, audio data may be transmitted as a stream of packets over a wireless network. When packets are lost at a high enough rate, a perceptible loss of audio quality may occur, impairing the user's experience.

[0012]

[0020] The effects of packet loss may be mitigated, at least in part, by adjusting the codec modes associated with encoding the audio data at the sending device and decoding the audio data at the receiving device. For example, some codec modes may include encoding techniques that provide less "robustness" to packet loss (e.g., can tolerate a relatively smaller rate of packet loss), and other codec modes may include another encoding technique that provides more robustness to packet loss (e.g., can tolerate a relatively larger rate of packet loss). Thus, when the packet loss rate becomes too high for a particular codec mode, each of the sending and receiving devices may adjust its respective codec to operate in a more robust mode. Similarly, when the packet loss rate is sufficiently low, the codecs at the sending and receiving devices may be adjusted to operate in a less robust codec mode that uses less bandwidth, consumes less power, allows for higher audio quality (e.g., bandwidth used for data redundancy may be reallocated to provide improved audio information), or a combination thereof.

[0013]

[0021] However, if the sending device and the receiving device cannot adjust the codec configuration in lockstep with each other, transmission errors may occur. In one illustrative example, if the sending device and the receiving device are from different manufacturers and have different settings regarding what an acceptable packet loss rate is for a particular codec configuration, the devices may not be able to efficiently negotiate when to transition from a first codec configuration to a second, more robust codec configuration. As another example, the devices may not be able to efficiently negotiate which codec configuration will be used as the second, more robust codec configuration.

[0014]

[0022] According to various implementations disclosed herein, the sending device and the receiving device receive codec configuration data from a third device, such as a configuration server of a network operator. The codec configuration data indicates a plurality of allowable codec configurations and a packet loss rate threshold associated with each of the codec configurations. The sending device and the receiving device can access the codec configuration data to determine when to adjust the codec mode and to select the next codec configuration mode to be used based on comparing the determined packet loss rate with the packet loss rate threshold in the configuration data. As a result, the sending device and the receiving device can adapt more efficiently to changing network conditions to provide improved audio transmission compared to a system in which inefficient or ineffective negotiations to change the codec configuration result in the continued use of a codec configuration that is no longer suitable for the changing network conditions.

[0015]

[0023] Certain aspects of the present disclosure are described below with reference to the drawings. In the description, common features are designated by common reference numerals. As used herein, various terms are used only to describe particular implementations and are not intended to limit the implementations. For example, the singular forms "a," "an," and "the" are intended to include the plural unless the context clearly indicates otherwise. It will be further understood that the terms "comprise," "comprises," and "comprising" may be used interchangeably with "include," "includes," or "including." It will be further understood that the term "wherein" may be used interchangeably with "where." As used herein, "exemplary" may indicate an example, an implementation, and / or an aspect and should not be construed as limiting or as indicating a preferred or preferred implementation. As used herein, ordinal terms (e.g., "first," "second," "third," etc.) used to modify an element, such as a structure, component, operation, etc., do not in themselves indicate any priority or order of that element relative to another element, but rather merely distinguish the element from other elements having the same name (apart from the use of the ordinal term). As used herein, the term "set" refers to one or more of a particular element, and the term "plurality" refers to a plurality (e.g., two or more) of a particular element.

[0016]

[0024] As used herein, "coupled" may include "communicatively coupled," "electrically coupled," or "physically coupled," and (or alternatively) may include any combination thereof. Two devices (or components) may be directly or indirectly coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) via one or more other devices, components, wires, buses, networks (e.g., wired networks, wireless networks, or combinations thereof), and the like. Two devices (or components) that are electrically coupled may be included in the same device or in different devices, and may be connected via electronic circuits, one or more connectors, or inductive coupling, as illustrative and non-limiting examples. In some implementations, two devices (or components) that are communicatively coupled, such as in electrical communication, may send and receive electrical signals (digital or analog signals) directly or indirectly, such as via one or more wires, buses, networks, and the like. As used herein, "directly coupled" may include two devices that are coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) without any intervening components.

[0017]

[0025] In this disclosure, terms such as "determining," "calculating," "estimating," "shifting," "adjusting," and the like may be used to describe how one or more operations are performed. It should be noted that such terms should not be construed as limiting, and other techniques may be utilized to perform similar operations. Additionally, as referred to herein, "generating," "calculating," "estimating," "using," "selecting," "accessing," and "determining" may be used interchangeably. For example, "generating," "calculating," "estimating," or "determining" a parameter (or signal) may refer to actively generating, estimating, calculating, or determining a parameter (or signal), or may refer to using, selecting, or accessing a parameter (or signal) that has already been generated, such as by another component or device.

[0018]

[0026] 1, a particular exemplary embodiment of a system is disclosed, generally referred to as 100. The system 100 includes a configuration server 142 communicatively coupled to one or more devices, such as device 102 and device 122, via a network 150. In a particular embodiment, the device 102 (or device 122) may enter, exit, or move within the coverage area of ​​the network 150 at various times. The network 150 may include a wired network, a wireless network, or both. The configuration server 142 is configured to send configuration data 107 to the device 102, the device 122, or both to facilitate codec configuration changes in the device 102 and the device 122.

[0019]

[0027] The device 102 includes a codec 140, a codec configuration adaptation circuit 137, a memory 105, a receiver 106, a transmitter 108, or a combination thereof. The codec 140 includes an encoder 114, a decoder (not shown), or both. The encoder 114 is configured to generate encoded packets based on a codec configuration 116. The transmitter 108 is configured to transmit the encoded packets over a network 150 to the device 122. The receiver 106 is configured to receive a request 192 from the device 122 over the network 150. In response to receiving the request 192, the codec configuration adaptation circuit 137 is configured to update the codec configuration 116 based on the configuration data 107, as described herein. The memory 105 is configured to store the configuration data 107.

[0020]

[0028] The device 122 includes a codec 130, a codec configuration adaptation circuit 139, a memory 125, a receiver 126, a transmitter 128, or a combination thereof. The codec 130 includes an encoder (not shown), a decoder 134, or both. The receiver 126 is configured to receive encoded packets from the device 102 over a network 150. The decoder 134 is configured to generate decoded packets by decoding the encoded packets based on the codec configuration 136. The codec configuration adaptation circuit 137 is configured to determine a packet loss rate (PLR) 129 as described herein. The codec configuration adaptation circuit 137 is configured to generate a request 192 to change the codec configuration based on the PLR ​​129 and the configuration data 107. The transmitter 128 is configured to send the request 192 over the network 150 to the device 102. The memory 105 is configured to store the configuration data 107, the PLR ​​129, or both.

[0021]

[0029] During operation, the configuration server 142 generates the configuration data 107. In a particular aspect, the configuration data 107 is based on default data, user input, configuration settings, or a combination thereof. The configuration data 107 includes a PLR average window duration 162, a codec configuration list 164, a high PLR threshold list 166, a low PLR threshold list 168, a high PLR adaptation request type list 172, a low PLR adaptation request type list 174, or a combination thereof. The configuration data 107 including lists is provided as an illustrative example. In other examples, the configuration data 107 includes other data structures, such as a set, a table, an array, or a combination thereof. In one particular aspect, the configuration data 107 includes one or more Open Mobile Alliance (OMA) Device Management (DM) standardized objects to specify one or more of the PLR ​​average window duration 162, the codec configuration list 164, the high PLR threshold list 166, the low PLR threshold list 168, the high PLR adaptation request type list 172, or the low PLR adaptation request type list 174. Descriptions, formats, and examples of elements of the configuration data 107 are provided in FIGS.

[0022]

[0030] In FIG. 2, table 200 includes a description column 202 and a format column 204. Description column 202 includes example descriptions of elements of configuration data 107. Format column 204 includes example formats of elements of configuration data 107. For example, PLR averaging window duration 162 indicates the duration of a sliding averaging window over which PLR will be measured. In a particular aspect, configuration data 107 indicates PLR averaging window duration 162 in milliseconds. In FIG. 3, codec configuration list 164 includes codec configurations 302-312, high PLR threshold list 166 includes high PLR thresholds 324-332, low PLR threshold list 168 includes low PLR thresholds 342-350, high PLR adaptation request type list 172 includes high PLR adaptation request types 364-372, and low PLR adaptation request type list 174 includes low PLR adaptation request types 382-390.

[0023]

[0031] The codec configuration list 164 includes an ordered sequence (e.g., an ordered list) of codec configurations. In a particular aspect, the ordered list includes codec configurations supported for a particular media type (e.g., audio or video). In a particular aspect, the codec configuration includes a codec type, a codec mode, an application layer redundancy level (e.g., 0%-300%), or a combination thereof. In a particular example, the codec configuration includes one or more of an adaptive multi-rate wideband (AMR-WB) codec configuration, an AMR-WB / G.718 interoperable (IO) codec configuration, an enhanced voice services (EVS) AMR-WB IO codec configuration, an EVS wideband (WB), ultra-wideband (SWB) codec configuration, or an EVS WB, SWB channel-aware codec configuration.

[0024]

[0032] In a particular aspect, the codec configuration list 164 is ordered based on the robustness of the codec configurations to packet loss. For example, the EVS WB, SWB channel aware codec configuration, the EVS WB, SWB codec configuration, the EVS AMR-WB IO codec configuration, and the AMR-WB codec configuration have a first ordered position, a second ordered position, a third ordered position, and a fourth ordered position, respectively, in the codec configuration list 164. In a particular aspect, the codec configuration list 164 is ordered based on decreasing robustness, increasing quality, decreasing power consumption, decreasing bandwidth usage, or a combination thereof. For example, the first ordered position (e.g., 0) of the EVS WB, SWB channel-aware codec configuration is lower (e.g., less than) than the second ordered position (e.g., 1) of the EVS WB, SWB codec configuration, indicating that the EVS WB, SWB channel-aware codec configuration is more robust to packet loss compared to the EVS WB, SWB (e.g., non-channel-aware) codec configuration. For example, the EVS WB, SWB channel-aware codec configuration is associated with a first maximum supported end-to-end PLR (e.g., 9%) that is higher than a second maximum supported end-to-end PLR (e.g., 6%) associated with the EVS WB, SWB codec configuration. In a particular aspect, the EVS WB, SWB (e.g., non-channel-aware) codec configuration corresponds to higher media quality, lower bandwidth usage, lower power consumption, or a combination thereof, compared to the EVS WB, SWB channel-aware codec configuration.

[0025]

[0033] The high PLR threshold list 166 indicates a first PLR threshold associated with a codec configuration included in the codec configuration list 164. In one particular example, the first PLR threshold indicates a PLR value at or above which a codec configuration of higher robustness (or a lower order position) will be required. In one particular aspect, each codec configuration (except for the codec configuration in the first order position) is associated with a first PLR threshold in the high PLR threshold list 166. For example (as shown in FIG. 3), the high PLR threshold list 166 includes a high PLR threshold 324 associated with the codec configuration 304 of the codec configuration list 164. The high PLR threshold list 166 does not include any high PLR threshold associated with the codec configuration 302 having the first order position in the codec configuration list 164 (e.g., being the most robust supported codec configuration).

[0026]

[0034] The high PLR adaptation request type list 172 indicates a high PLR adaptation request type associated with a high PLR threshold included in the high PLR threshold list 166. In a particular example, the high PLR adaptation request type indicates a type of request that will be sent when the corresponding high PLR threshold is met. For example, the high PLR adaptation request type list 172 includes a high PLR adaptation request type 364 associated with the high PLR threshold 324, indicating that a request of the high PLR adaptation request type 364 will be sent in response to determining that the PLR ​​meets the high PLR threshold 324. In a particular example, the codec configuration 302 includes an EVS WB, SWB channel aware codec configuration, the codec configuration 304 includes an EVS WB, SWB codec configuration, and the high PLR adaptation request type 364 is associated with the high PLR threshold 324 of the EVS WB, SWB codec configuration (e.g., the codec configuration 304). In this example, the high PLR adaptation request type 364 indicates a change to an EVS WB, SWB channel aware codec configuration request type. In another example, the high PLR adaptation request type 364 indicates a change to a particular application layer redundancy level (e.g., 200%) or a particular change to the application layer redundancy level (e.g., an increase by 50%).

[0027]

[0035] The low PLR threshold list 168 indicates a second PLR threshold associated with a codec configuration included in the codec configuration list 164. In a particular example, the second PLR threshold indicates a PLR value at or below which a codec configuration of lower robustness (or higher order position) is required. In a particular aspect, a codec with lower robustness may support higher media quality, lower bandwidth consumption, lower power consumption, or a combination thereof. In a particular aspect, each codec configuration (except for the codec configuration in the highest order position) is associated with a second PLR threshold in the low PLR threshold list 168. For example, the low PLR threshold list 168 includes the low PLR threshold 342 associated with the codec configuration 302 of the codec configuration list 164. The low PLR threshold list 168 does not include any low PLR thresholds associated with a codec configuration 312 that has the last ordinal position in the codec configuration list 164 (eg, is the least robust supported codec configuration).

[0028]

[0036] The low PLR adaptation request type list 174 indicates a low PLR adaptation request type associated with a low PLR threshold included in the low PLR threshold list 168. In one particular example, the low PLR adaptation request type indicates a type of request that will be sent when the corresponding low PLR threshold is met. For example, the low PLR adaptation request type list 174 includes a low PLR adaptation request type 382 associated with the low PLR threshold 342, indicating that a request of the low PLR adaptation request type 382 will be sent in response to determining that the PLR ​​meets the low PLR threshold 342.

[0029]

[0037] In FIG. 4, the graph 400 has a horizontal axis (e.g., x-axis) corresponding to increasing PLR values ​​and a vertical axis (e.g., y-axis) corresponding to increasing robustness (or decreasing ordinal position) of the codec configuration. The graph 400 shows examples of PLR thresholds corresponding to various codec configurations. In FIG. 4, the low PLR threshold (e.g., low PLR threshold 342) of a codec configuration (e.g., codec configuration 302) is lower than the high PLR threshold (e.g., high PLR threshold 324) of the next less robust codec configuration (e.g., codec configuration 304). Having the low PLR threshold of a codec configuration lower than the high PLR threshold of the next less robust codec configuration reduces the likelihood of fluctuations between the codec configuration and the next codec configuration due to small fluctuations in PLR 129. In another implementation, the low PLR threshold of a codec configuration is the same as the high PLR threshold of the next less robust codec configuration.

[0030]

[0038] 1, the configuration server 142 sends the configuration data 107 to the device 102, the device 122, or both. For example, the configuration server 142 sends the configuration data 107 to the device 122 in response to detecting that the device 122 has entered the coverage area of ​​the network 150. In another example, the configuration server 142 sends the configuration data 107 to the device 122 in response to receiving a request from the device 122.

[0031]

[0039] In a particular aspect, the device 122 establishes a session (e.g., a data communication session) with the device 102. For example, the device 102 and the device 122 exchange negotiation messages indicating the codecs supported in each device. For illustration, the device 102 sends a first negotiation message to the device 122, and the device 122 sends a second negotiation message. The first negotiation message indicates one or more first codec configurations supported by the codec 140 of the device 102. The second negotiation message indicates one or more second codec configurations supported by the codec 130 of the device 122. The device 102 and the device 122 may use various negotiation techniques to select the first codec configuration supported by each of the codecs 130 and 140. The codec configuration adaptation circuit 137 sets the codec configuration 116 of the encoder 114 to the first codec configuration. The codec configuration adaptation circuit 139 sets the codec configuration 136 of the decoder 134 to the first codec configuration.

[0032]

[0040] During the session, the receiver 126 receives one or more packets 152 from the device 102 over the network 150. In a particular example, the encoder 114 encodes the packets 152 based on a codec configuration indicated by the codec configuration 116. The transmitter 108 transmits the packets 152 over the network 150 to the device 122. In a particular aspect, the packets 152 received by the receiver 126 are a subset of the packets transmitted by the transmitter 108. For example, one or more of the transmitted packets are not received due to network issues.

[0033]

[0041] The codec configuration adaptation circuit 139 determines the PLR ​​129 associated with a particular duration. The PLR ​​129 is an indication of how many of the packets transmitted by the device 102 were not received at the device 122 as packets 152 within time to be used by the device 122. In one particular implementation, the PLR ​​129 is determined based on a lost packet (LP) counter. For example, a count of lost packets indicated by the LP counter during a particular duration may be used to calculate the PLR ​​129. The LP counter may be reset from time to time. Alternatively, the LP counter may maintain a count of lost packets associated with a sliding window of a particular duration. The particular duration is indicated by the PLR ​​average window duration 162. The codec configuration adaptation circuit 139 increments the LP counter when a lost packet is detected. For example, a lost packet may be detected when the time to play out a particular packet arrives and the particular packet is not available for playout (e.g., not in the de-jitter buffer).

[0034]

[0042] The codec configuration adaptation circuit 139 determines that the configuration data 107 indicates that a first codec configuration (e.g., the codec configuration 306 indicated by the codec configuration 136) is associated with a high PLR threshold (e.g., the high PLR threshold 326), a low PLR threshold (e.g., the low PLR threshold 346), or both.

[0035]

[0043] The codec configuration adaptation circuit 139, in response to determining that the PLR ​​129 meets (e.g., is greater than) the high PLR threshold, identifies a next more robust supported codec configuration in the codec configuration list 164. The next more robust supported codec configuration either has a lower ordinal position (e.g., second) than the ordinal position (e.g., third) of the first codec configuration (e.g., codec configuration 306) in the codec configuration list 164, is included within the first codec configuration supported by the codec 140, is included within the second codec configuration supported by the codec 130, is not associated with any high PLR threshold, or is associated with a high PLR threshold greater than or equal to the PLR ​​129, or a combination thereof. In one particular aspect, the first codec configuration includes the codec configuration 306 and the next more robust supported codec configuration includes the codec configuration 304. In one particular example, the codec configuration 304 is skipped because the codec configuration 304 is not supported by the codec 130, the codec configuration 304 is not supported by the codec 140, the PLR ​​129 is greater than the high PLR threshold 324 associated with the codec configuration 304, or a combination thereof. In this example, the next more robust supported codec configuration includes the codec configuration 302.

[0036]

[0044] The codec configuration adaptation circuit 139 generates the request 192 in response to determining that the PLR ​​129 meets (e.g., is greater than) a high PLR threshold (e.g., high PLR threshold 326) associated with a first codec configuration (e.g., codec configuration 306) and identifying a next more robust supported codec configuration. Alternatively, the codec configuration adaptation circuit 139 refrains from generating the request 192 in response to determining that the PLR ​​129 meets (e.g., is greater than) a high PLR threshold (e.g., high PLR threshold 326) associated with a first codec configuration (e.g., codec configuration 306) and that the codec configuration list 164 does not include a next more robust supported codec configuration.

[0037]

[0045] In one particular aspect, the type of the request 192 indicates that the codec configuration is to be changed to a more robust (e.g., or lower ordered) codec configuration. In one particular aspect, the request 192 indicates the identified next more robust supported codec configuration (e.g., codec configuration 302, or codec configuration 304). In one particular aspect, the request 192 includes the PLR ​​129 to enable the codec configuration adaptation circuit 137 to identify the next more robust supported codec configuration (e.g., codec configuration 302, or codec configuration 304) based on the configuration data 107.

[0038]

[0046] In a particular aspect, the type of the request 192 is based on the high PLR adaptation request type list 172. For example, the codec configuration adaptation circuit 139 generates the request 192 for the first high PLR adaptation request type in response to determining that the high PLR adaptation request type list 172 indicates that a first codec configuration (e.g., codec configuration 306) is associated with a first high PLR adaptation request type (e.g., high PLR adaptation request type 366). The codec configuration adaptation circuit 139 initiates transmission of the request 192 to the device 102 via the transmitter 128 and the network 150.

[0039]

[0047] In a particular aspect, the codec configuration adaptation circuit 139, in response to determining that the PLR ​​129 meets (e.g., is less than) the low PLR threshold, identifies a next less robust supported codec configuration in the codec configuration list 164. The next less robust supported codec configuration either has a higher (e.g., fourth) ordinal position (e.g., third) than the first codec configuration (e.g., codec configuration 306) in the codec configuration list 164, is included within the first codec configuration supported by the codec 140, is included within the second codec configuration supported by the codec 130, is not associated with any low PLR threshold, or is associated with a low PLR threshold less than or equal to the PLR ​​129, or a combination thereof. In a particular aspect, the first codec configuration includes the codec configuration 306, and the next less robust supported codec configuration includes the codec configuration 308. In one particular example, the codec configuration 308 is skipped because the codec 308 is not supported by the codec 130, the codec configuration 308 is not supported by the codec 140, the PLR ​​129 is less than the low PLR threshold 348 associated with the codec configuration 308, or a combination thereof. In this example, the next less robust supported codec configuration includes the codec configuration 310.

[0040]

[0048] The codec configuration adaptation circuit 139 generates the request 192 in response to determining that the PLR ​​129 meets (e.g., is below) a low PLR threshold (e.g., low PLR threshold 346) associated with the first codec configuration (e.g., codec configuration 306) and identifying a next less robust supported codec configuration. Alternatively, the codec configuration adaptation circuit 139 refrains from generating the request 192 in response to determining that the PLR ​​129 meets (e.g., is below) a low PLR threshold (e.g., low PLR threshold 346) associated with the first codec configuration (e.g., codec configuration 306) and that the codec configuration list 164 does not include a next less robust supported codec configuration.

[0041]

[0049] In one particular aspect, the type of the request 192 indicates that the codec configuration is to be changed to a less robust (or higher ordered) codec configuration. In one particular aspect, the request 192 indicates the next less robust supported codec configuration identified (e.g., codec configuration 308, or codec configuration 310). In one particular aspect, the request 192 includes the PLR ​​129 to enable the codec configuration adaptation circuit 137 to identify the next less robust supported codec configuration (e.g., codec configuration 308, or codec configuration 310) based on the configuration data 107.

[0042]

[0050] In a particular aspect, the type of the request 192 is based on the low PLR adaptation request type list 174. For example, the codec configuration adaptation circuit 139 generates the request 192 for the first low PLR adaptation request type in response to determining that the low PLR adaptation request type list 174 indicates that a first codec configuration (e.g., codec configuration 306) is associated with a first low PLR adaptation request type (e.g., low PLR adaptation request type 386). The codec configuration adaptation circuit 139 initiates transmission of the request 192 to the device 102 via the transmitter 128 and the network 150.

[0043]

[0051] In response to determining that the type of request 192 indicates that the codec configuration is to be changed to a more robust (or lower ordered) codec configuration and identifying the next more robust supported codec configuration at the device 102 receiving the request 192, the codec configuration adaptation circuit 137 sets the codec configuration 116 of the encoder 114 to the identified next more robust supported codec configuration. Alternatively, in response to determining that the type of request 192 indicates that the codec configuration is to be changed to a more robust (or lower ordered) codec configuration and that the codec configuration list 164 does not include any next more robust supported codec configuration for the first codec configuration (e.g., indicated by the codec configuration 116), the codec configuration adaptation circuit 137 refrains from updating the codec configuration 116.

[0044]

[0052] For example, the receiver 106 receives a request 192 from the device 122 via the network 150. The codec configuration adaptation circuit 137 updates the codec configuration 116 of the encoder 114 in response to receiving the request 192. In an example where the PLR ​​129 is too high, the codec configuration adaptation circuit 137 identifies a next more robust supported codec configuration relative to the first codec configuration (indicated by the codec configuration 116) in the codec configuration list 164 in response to determining that the type of the request 192 indicates that the codec configuration is to be changed to a more robust (or lower ordered) codec configuration. The next more robust supported codec configuration has a lower ordinal position (e.g., third) than the ordinal position (e.g., third) of the first codec configuration (e.g., codec configuration 306) in the codec configuration list 164, is included within the first codec configuration supported by codec 140, is included within the second codec configuration supported by codec 130, is not associated with any high PLR threshold, or is associated with a high PLR threshold greater than or equal to PLR 129, or a combination thereof. In one particular aspect, the request 192 does not indicate PLR ​​129. In this aspect, the next more robust supported codec configuration has a lower ordinal position (e.g., third) than the ordinal position (e.g., third) of the first codec configuration (e.g., codec configuration 306) in the codec configuration list 164, is included within the first codec configuration supported by codec 140, is included within the second codec configuration supported by codec 130, or a combination thereof.

[0045]

[0053] In another example, in response to determining that the type of request 192 indicates that the codec configuration is to be changed to a less robust (or higher in the order position) codec configuration in the device 102 and identifying a next less robust supported codec configuration, the codec configuration adaptation circuit 137 sets the codec configuration 116 of the encoder 114 to the identified next less robust supported codec configuration. Alternatively, in response to determining that the type of request 192 indicates that the codec configuration is to be changed to a less robust (or higher in the order position) codec configuration and that the codec configuration list 164 does not include any next less robust supported codec configuration for a first codec configuration (e.g., as indicated by the codec configuration 116), the codec configuration adaptation circuit 137 refrains from updating the codec configuration 116.

[0046]

[0054] For example, when PLR 129 is low, the codec configuration adaptation circuit 137, in response to determining that the type of request 192 indicates that the codec configuration is to be changed to a less robust (or higher ordered) codec configuration, identifies a next less robust supported codec configuration in the codec configuration list 164 relative to the first codec configuration (indicated by codec configuration 116). The next less robust supported codec configuration either has a higher ordered position (e.g., third) than the first codec configuration (e.g., codec configuration 306) in the codec configuration list 164, is included within the first codec configuration supported by codec 140, is included within the second codec configuration supported by codec 130, is not associated with any low PLR threshold, or is associated with a low PLR threshold that is less than or equal to PLR 129, or a combination thereof. In a particular aspect, the request 192 does not indicate PLR ​​129. In this aspect, the next less robust supported codec configuration has a higher ordinal position (e.g., third) than the first codec configuration (e.g., codec configuration 306) in the codec configuration list 164, is included within the first codec configuration supported by codec 140, is included within the second codec configuration supported by codec 130, or is a combination thereof.

[0047]

[0055] In other implementations, the request 192 can indicate a particular codec configuration, in which the codec configuration adaptation circuit 137 sets the codec configuration 116 to the particular codec configuration in response to determining that the particular codec configuration is included within a first codec configuration supported by the codec 140.

[0048]

[0056] After sending the request 192, the receiver 126 at the device 122 receives one or more packets 154 from the device 102 via the network 150. The packets 154 are encoded based on a second codec configuration (e.g., a next more robust supported codec configuration, a next less robust supported codec configuration, or a particular codec configuration). For example, the encoder 114 encodes the one or more second packets based on the two codec configurations indicated by the codec configuration 116. The encoder 114 begins transmitting the one or more second packets via the transmitter 108. The packets 154 received by the receiver 126 are a subset of the second packets transmitted by the transmitter 108 (e.g., one or more of the second packets may be lost during transmission to the device 122).

[0049]

[0057] Thus, system 100 allows codec configuration 116 of device 102 to be adapted based on PLR 129 received by device 122. For example, when device 122 is experiencing a high PLR (e.g., higher than a threshold PLR), device 102 and device 122 may move to a more robust codec configuration. Alternatively, when device 122 is experiencing a low PLR (e.g., lower than a threshold PLR), device 102 and device 122 may move to a codec configuration with higher media quality, lower bandwidth consumption, lower power consumption, or a combination thereof.

[0050]

[0058] 5, a method of codec configuration adaptation based on packet loss is shown and generally referred to as 500. In a particular aspect, one or more operations of method 500 are performed by the receiver 126, the transmitter 128, the codec configuration adaptation circuitry 139, the device 122, the receiver 106, the transmitter 108, the codec configuration adaptation circuitry 137, the device 102, the system 100, or combinations thereof of FIG.

[0051]

[0059] The method 500 includes receiving configuration data at a first device from a configuration server, at 502. For example, the receiver 126 of Figure 1 receives the configuration data 107 from the configuration server 142, as described with reference to Figure 1. In a particular aspect, the configuration data 107 indicates a high PLR threshold 326 and a low PLR threshold 346 associated with a codec configuration 306, as described with reference to Figure 3.

[0052]

[0060] The method 500 also includes determining a packet loss rate at the first device, at 504. For example, the codec configuration adaptation circuit 139 of Figure 1 determines the PLR ​​129 as described with reference to Figure 1. The PLR ​​129 is associated with one or more packets 152 received at the device 122 from the device 102 via the network 150.

[0053]

[0061] The method 500 further includes, at 506, sending a request to the second device to change a codec configuration of the second device based on determining that the decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold. For example, the codec configuration adaptation circuit 139 of FIG. 1 sends a request 192 to the device 102 to change a codec configuration of the device 102 based on determining that the decoder 134 has a first codec configuration (indicated by codec configuration 136), as described with reference to FIG.

[0054]

[0062] The method 500 also includes receiving a second packet at the first device over the network from the second device, at 508. For example, the receiver 126 receives one or more packets 154 from the device 102 over the network 150. The packets 154 are encoded based on a second codec configuration (e.g., the updated codec configuration indicated by the codec configuration 116) as described with reference to FIG.

[0055]

[0063] Thus, method 500 allows the codec configuration 116 of device 102 to be adapted based on the PLR ​​129 received by device 122. For example, when device 122 is experiencing a high PLR (e.g., higher than a threshold PLR), device 102 and device 122 may move to a more robust codec configuration. Alternatively, when device 122 is experiencing a low PLR (e.g., lower than a threshold PLR), device 102 and device 122 may move to a less robust codec configuration that provides other benefits, such as higher media quality, lower bandwidth usage, or power savings.

[0056]

[0064] The components of FIG. 1 are provided as an illustrative example. In other implementations, the system 100 may include fewer or more components than those shown in FIG. 1. In some examples, one or more of the PLR ​​averaging window duration 162, the high PLR adaptation request type list 172, or the low PLR adaptation request type list 174 are omitted from the configuration data 107. In some examples, the information in the codec configuration list 164, the high PLR threshold list 166, and the low PLR threshold list 168 may be combined, e.g., each entry in the codec configuration list 164 may indicate a high PLR threshold, a low PLR threshold, or both for that entry. Although the codec configuration list 164 is shown as including six codec configurations, in other implementations, the codec configuration list 164 has fewer than six codec configurations (e.g., as few as one or two codec configurations) or has more than six codec configurations (e.g., seven, ten, fifty, or any other number of codec configurations).

[0057]

[0065] 6, a particular example of a system is disclosed, generally referred to as 600. In comparison to the system 100 of FIG. 1, the system 600 includes a de-jitter buffer 670 and a de-jitter buffer PLR indicator 672. For example, the device 122 includes the de-jitter buffer 670, and the configuration data 107 includes the de-jitter buffer PLR indicator 672. In the example shown in FIG. 6, the configuration data 107 does not include the high PLR adaptation request type list 172 and the low PLR adaptation request type list 174. In some other examples, the configuration data 107 includes the de-jitter buffer PLR indicator 672 in addition to the high PLR adaptation request type list 172, the low PLR adaptation request type list 174, or both. Descriptions, formats, and examples of elements of the configuration data 107 are provided in FIG. 7.

[0058]

[0066] 7, table 700 includes a description column 702 and a format column 704. Description column 702 and format column 704 differ from description column 202 and format column 204 of FIG. 2 in the addition of a description and format, respectively, of de-jitter buffer PLR indicator 672. For example, a first value (e.g., 0) of de-jitter buffer PLR indicator 672 indicates that a PLR estimate (e.g., PLR 129) for comparison with a threshold indicated in high PLR threshold list 166 or low PLR threshold list 168 will be measured before the de-jitter buffer. As another example, a second value (e.g., 1) of de-jitter buffer PLR indicator 672 indicates that a PLR estimate (e.g., PLR 129) will be measured after the de-jitter buffer.

[0059]

[0067] Returning to FIG. 6, the codec configuration adaptation circuit 139 is configured to determine the PLR ​​129 based on a count of pre-de-jitter buffer packet loss events in response to determining that the de-jitter buffer PLR indicator 672 has a first value (e.g., 0). In one particular aspect, the codec configuration adaptation circuit 139 detects a pre-de-jitter packet loss event in response to determining that an expected packet was not received (e.g., not received within an expected time) at the device 122. For example, the codec configuration adaptation circuit 139 determines that the packet(s) 152 includes a first packet received at the receiver 126 at a first time. The codec configuration adaptation circuit 139 determines that a second packet following the first packet is expected to be received at the receiver 126. For example, the first packet indicates a first sequence number, and a second packet having a second sequence number is expected to be received at the receiver 126. In response to determining that a packet having the second sequence number was not received at the receiver 126 within the first time threshold duration, the codec configuration adaptation circuit 139 detects that an expected packet was not received within the expected time. In response to detecting that an expected packet was not received within the expected time, the codec configuration adaptation circuit 139 increments a count of pre-de-jitter buffer packet loss events (e.g., indicated by an LP counter). The PLR ​​129 is based on the value of the LP counter. In one particular aspect, the PLR ​​129 is based on a comparison of a first count of packets 152 received at the device 122 to the value of the LP counter (e.g., PLR 129 = LP counter value / (first count + LP counter value)).

[0060]

[0068] In one particular aspect, the codec configuration adaptation circuit 139 is configured to determine the PLR ​​129 based on a count of post-de-jitter buffer packet loss events in response to determining that the de-jitter buffer PLR indicator 672 has a second value (e.g., 1). In one particular aspect, the codec configuration adaptation circuit 139 detects a post-de-jitter buffer packet loss event in response to determining that a particular packet is not available for playout (e.g., not in the de-jitter buffer 670) when the time for the particular packet to be played out arrives. In response to detecting the post-de-jitter buffer packet loss event, the codec configuration adaptation circuit 139 updates the count of post-de-jitter buffer packet loss events (e.g., indicated by an LP counter). The PLR ​​129 is based on the value of the LP counter. In one particular aspect, the PLR ​​129 is based on a comparison of a first count of a subset of packets 152 available in the de-jitter buffer at the corresponding playout time with the value of the LP counter (e.g., PLR 129 = LP counter value / (first count + LP counter value)).

[0061]

[0069] In some aspects, the first PLR based on a post-de-jitter buffer packet loss event is more representative of the user experience compared to a pre-de-jitter buffer packet loss event. For example, a post-de-jitter buffer packet loss event includes a packet received at the device 122 after the packet's playout time. The packet is not played out (e.g., not added to the de-jitter buffer 670), and not playing out the packet may adversely affect the user experience (e.g., reduced audio / voice quality). Codec configuration adaptation using a PLR based on a post-de-jitter buffer packet loss event can improve the user experience compared to a pre-de-jitter buffer packet loss event. A network operator can use the de-jitter buffer PLR indicator 672 so that various devices in the network use the same metric for codec configuration adaptation and users of the devices have a similar user experience. For example, a first network operator may specify a first value (e.g., 0) of the de-jitter buffer PLR indicator 672 to use a more traditional estimation of PLR based on pre-de-jitter buffer packet loss events (e.g., count of expected packets not received at a device). A second network operator may specify a second value (e.g., 1) of the de-jitter buffer PLR indicator 672 to use an estimation of PLR based on post-de-jitter buffer packet loss events (e.g., count of packets not available for playout) such that the user experience of users of devices in the network is improved.

[0062]

[0070] With reference to FIG. 8, a block diagram of a particular illustrative example of a device (e.g., a wireless communication device) is shown, generally referred to as 800. In various aspects, device 800 may have fewer or more components than those shown in FIG. 8. In one exemplary aspect, device 800 may correspond to device 102, device 122, configuration server 142, or a combination thereof of FIG. 1. In one exemplary aspect, device 800 may perform one or more operations described with reference to the systems and methods of FIGS. 1-7.

[0063]

[0071] In one particular aspect, the device 800 includes a processor 806 (e.g., a central processing unit (CPU)). The device 800 may include one or more additional processors 810 (e.g., one or more digital signal processors (DSPs)). The processor 810 may include a decoder 818, an encoder 814, a codec configuration adaptation circuit 819, or a combination thereof. The encoder 814 may include the encoder 114 of FIG. 1. The decoder 818 may include the decoder 134 of FIG. 1. The codec configuration adaptation circuit 819 may include the codec configuration adaptation circuit 137, the codec configuration adaptation circuit 139, or both of FIG. 1.

[0064]

[0072] The device 800 may include a memory 852 and a codec 834. Although the encoder 814, the decoder 818, and the codec configuration adaptation circuit 819 are shown as components (e.g., dedicated circuitry and / or executable programming code) of the processor 810, in other aspects one or more components of the encoder 814, the decoder 818, the codec configuration adaptation circuit 819, or combinations thereof, may be included in the processor 806, the codec 834, another processing component, or combinations thereof.

[0065]

[0073] The device 800 may include a transceiver 850 coupled to the antenna 842. The transceiver 850 may include a receiver 807, a transmitter 808, or both. The receiver 807 may include the receiver 106, the receiver 126, or both of FIG. 1. The transmitter 808 may include the transmitter 108, the transmitter 128, or both of FIG. 1. The processor 810 is coupled to the transceiver 850 via the wireless controller 840.

[0066]

[0074] The device 800 may include a display 828 coupled to a display controller 826. One or more speakers 848 may be coupled to the codec 834. One or more microphones 846 may be coupled to the codec 834 via one or more input interfaces. The codec 834 may include a digital-to-analog converter (DAC) 802 and an analog-to-digital converter (ADC) 804.

[0067]

[0075] The memory 852 may include instructions 856 executable by the processor 806, the processor 810, the codec 834, another processing unit of the device 800, or a combination thereof, to perform one or more operations described with reference to Figures 1-7. The memory 852 may store one or more signals, one or more parameters, one or more thresholds, one or more indicators, or a combination thereof, described with reference to Figures 1-7. For example, the memory 852 is configured to store the configuration data 107, the PLR ​​129, or both of Figure 1.

[0068]

[0076] One or more components of device 800 may be implemented via dedicated hardware (e.g., circuitry), by a processor executing instructions to perform one or more tasks, or a combination thereof. As an example, memory 852, or one or more components of processor 806, processor 810, and / or codec 834 may be a memory device (e.g., a computer-readable storage device) such as random access memory (RAM), magnetoresistive random access memory (MRAM), spin torque transfer MRAM (STT-MRAM), flash memory, read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), registers, a hard disk, a removable disk, or a compact disk read only memory (CD-ROM). The memory device may include (e.g., store) instructions (e.g., instructions 856) that, when executed by a computer (e.g., one or more processors, such as a processor in codec 834, processor 806, and / or processor 810), may cause the computer to perform one or more operations described with reference to FIGS. 1-7. As an example, memory 852, or one or more components of processor 806, processor 810, and / or codec 834, may be a non-transitory computer-readable medium that includes instructions (e.g., instructions 856) that, when executed by a computer (e.g., one or more processors, such as a processor in codec 834, processor 806, and / or processor 810), may cause the computer to perform one or more operations described with reference to FIGS. 1-7.

[0069]

[0077] In a particular aspect, the device 800 may be included in a system-in-package or system-on-chip device (e.g., a mobile station modem (MSM)) 822. In a particular aspect, the processor 806, the processor 810, the display controller 826, the memory 852, the codec 834, and the transceiver 850 are included in the system-in-package or system-on-chip device 822. In a particular aspect, an input device 830, such as a touch screen and / or a keypad, and a power source 844 are coupled to the system-on-chip device 822. Furthermore, in a particular aspect, the display 828, the input device 830, the speaker 848, the microphone 846, the antenna 842, and the power source 844 are external to the system-on-chip device 822, as shown in FIG. 8. However, each of the display 828, the input device 830, the speaker 848, the microphone 846, the antenna 842, and the power source 844 may be coupled to a component of the system-on-chip device 822, such as an interface or a controller.

[0070]

[0078] The device 800 may include a wireless telephone, a mobile communications device, a mobile device, a mobile phone, a smartphone, a cellular phone, a virtual reality headset, an augmented reality headset, a vehicle (e.g., a car), a laptop computer, a desktop computer, a computer, a tablet computer, a set-top box, a personal digital assistant (PDA), a display device, a television, a gaming console, a music player, a radio, a video player, an entertainment unit, a communications device, a fixed location data unit, a personal media player, a digital video player, a digital video disc (DVD) player, a tuner, a camera, a navigation device, a decoder system, an encoder system, or any combination thereof.

[0071]

[0079] In a particular aspect, one or more components of the system and device 800 described with reference to Figures 1-7 may be incorporated into a decoding system or apparatus (e.g., an electronic device, codec, or processor therein), an encoding system or apparatus, or both. In other aspects, one or more components of the system and device 800 described with reference to Figures 1-7 may be incorporated into a mobile device, a wireless phone, a tablet computer, a desktop computer, a virtual reality headset, an augmented reality headset, a vehicle (e.g., a car), a laptop computer, a set-top box, a music player, a video player, an entertainment unit, a television, a game console, a navigation device, a communications device, a personal digital assistant (PDA), a fixed location data unit, a personal media player, or another type of device.

[0072]

[0080] It should be noted that various functions performed by one or more components of the system and device 800 described with reference to FIGS. 1-7 are described as being performed by several components or modules. This division of components and modules is for illustration purposes only. In an alternative embodiment, the functions performed by a particular component or module may be divided among multiple components or modules. Moreover, in an alternative embodiment, two or more components or modules described with reference to FIGS. 1-7 may be combined into a single component or module. Each component or module described with reference to FIGS. 1-7 may be implemented using hardware (e.g., a field programmable gate array (FPGA) device, an application specific integrated circuit (ASIC), a DSP, a controller, etc.), software (e.g., instructions executable by a processor), or any combination thereof.

[0073]

[0081] In accordance with the described aspects, the apparatus includes means for receiving configuration data at the first device from a configuration server. For example, the means for receiving the configuration data may include the receiver 126 of FIG. 1, the receiver 106, the receiver 807 of FIG. 8, the transceiver 850, one or more structures, devices, or circuits configured to receive the configuration data at the first device from the configuration server, or a combination thereof. The configuration data indicates a first packet loss rate threshold associated with the first codec configuration.

[0074]

[0082] The apparatus also includes means for determining a packet loss rate at the first device. For example, the means for determining the packet loss rate may include the codec configuration adaptation circuit 137, the codec configuration adaptation circuit 139, the device 102, the device 122, the processor(s) 810, the codec configuration adaptation circuit 819, one or more structures, devices, or circuits configured to determine a packet loss rate at the first device, or a combination thereof. The packet loss rate is associated with one or more first packets received at the first device from the second device over the network. For example, the packet loss rate is associated with a comparison of a count of the first packets and a count of second packets expected and not received at the first device. As another example, the packet loss rate is associated with a count of a subset of the first packets that are available in the de-jitter buffer at a corresponding playout time and a count of second packets that are not available in the de-jitter buffer at a corresponding playout time.

[0075]

[0083] The apparatus further includes means for sending a request to the second device to change the codec configuration of the second device. For example, the means for sending the request may include the transmitter 108 of FIG. 1, the transmitter 128, the transmitter 808 of FIG. 8, the transceiver 850, one or more structures, devices, or circuits, or combinations thereof, configured to send a request to change the codec configuration to the second device based on determining that the decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold. The request is sent based on determining that the decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold.

[0076]

[0084] The apparatus also includes means for receiving a second packet at the first device over the network from the second device. For example, the means for receiving the second packet may include receiver 126 of FIG. 1, receiver 106, receiver 807 of FIG. 8, transceiver 850, one or more structures, devices, or circuits, or combinations thereof, configured to receive the second packet at the first device over the network from the second device. The second packet is encoded based on a second codec configuration.

[0077]

[0085] Referring to Figure 9, a block diagram of a particular illustrative example of a base station 900 is shown. In various implementations, the base station 900 may have more or less components than those shown in Figure 9. In an illustrative example, the base station 900 may include the device 102, the device 122, the configuration server 142, or a combination thereof, of Figure 1. In an illustrative example, the base station 900 may perform one or more operations described with reference to Figures 1-7.

[0078]

[0086] The base station 900 may be part of a wireless communication system. The wireless communication system may include multiple base stations and multiple wireless devices. The wireless communication system may be a Long Term Evolution (LTE) system, a Code Division Multiple Access (CDMA) system, a Global System for Mobile Communications (GSM) system, a Wireless Local Area Network (WLAN) system, or some other wireless system. The CDMA system may implement Wideband CDMA (WCDMA), CDMA 1X, Evolution Data Optimized (EVDO), Time Division Synchronous CDMA (TD-SCDMA), or some other version of CDMA.

[0079]

[0087] A wireless device may also be referred to as a user equipment (UE), a mobile station, a terminal, an access terminal, a subscriber unit, a station, etc. A wireless device may include a cellular phone, a smartphone, a tablet, a wireless modem, a personal digital assistant (PDA), a handheld device, a laptop computer, a smartbook, a netbook, a tablet, a cordless phone, a wireless local loop (WLL) station, a Bluetooth device, etc. A wireless device may include or correspond to device 800 of FIG.

[0080]

[0088] Various functions, such as sending and receiving messages and data (e.g., audio data), may be performed by one or more components of the base station 900 (and / or in other components not shown). In one particular example, the base station 900 includes a processor 906 (e.g., a CPU). In one particular aspect, the processor 906 includes multiple processors. The base station 900 may include a transcoder 910. The transcoder 910 may include an audio codec 908. For example, the transcoder 910 may include one or more components (e.g., circuits) configured to perform operations of the audio codec 908. As another example, the transcoder 910 may be configured to execute one or more computer-readable instructions to perform operations of the audio codec 908. Although the audio codec 908 is shown as a component of the transcoder 910, in other examples, one or more components of the audio codec 908 may be included in the processor 906, another processing component, or a combination thereof. For example, the decoder 938 (e.g., a vocoder decoder) may be included in the receiver data processor 964. As another example, the encoder 936 (e.g., a vocoder encoder) may be included in the transmit data processor 982.

[0081]

[0089] The transcoder 910 may function to transcode messages and data between two or more networks. The transcoder 910 may be configured to convert messages and audio data from a first format (e.g., a digital format) to a second format. To illustrate, the decoder 938 may decode an encoded signal having a first format, and the encoder 936 may encode the decoded signal to become an encoded signal having a second format. Additionally or alternatively, the transcoder 910 may be configured to perform data rate adaptation. For example, the transcoder 910 may downconvert a data rate or upconvert a data rate without changing the format audio data. To illustrate, the transcoder 910 may downconvert a 64 kbit / s signal to a 16 kbit / s signal.

[0082]

[0090] In a particular aspect, the transcoder 910 is configured to perform codec configuration adaptation. For example, the transcoder 910 includes the codec configuration adaptation circuit 137, the codec configuration adaptation circuit 139, or both of FIG. 1. The audio codec 908 may include an encoder 936 and a decoder 938. The encoder 936 may include the encoder 114 of FIG. 1. The decoder 938 may include the decoder 134 of FIG. 1.

[0083]

[0091] The base station 900 may include a memory 932. The memory 932, such as a computer-readable storage device, may include instructions. The instructions may include one or more instructions executable by the processor 906, the transcoder 910, or a combination thereof, to perform one or more operations described with reference to FIGS. 1-7. In a particular aspect, the memory 932 is configured to store the configuration data 107, the PLR ​​129, or both of FIG. 1. The base station 900 may include multiple transmitters and receivers (e.g., transceivers), such as a first transceiver 952 and a second transceiver 954, coupled to an array of antennas. The array of antennas may include a first antenna 942 and a second antenna 944. The array of antennas may be configured to wirelessly communicate with one or more wireless devices, such as the device 800 of FIG. 8. For example, the second antenna 944 may receive a data stream 914 (e.g., a bit stream) from the wireless device. The data stream 914 may include a message, data (eg, encoded speech data), or a combination thereof.

[0084]

[0092] The base station 900 may include a network connection 960, such as a backhaul connection. The network connection 960 may be configured to communicate with a core network, or one or more base stations of a wireless communication network. For example, the base station 900 may receive a second data stream (e.g., a message or audio data) from the core network via the network connection 960. The base station 900 may process the second data stream to generate a message or audio data and provide the message or audio data to one or more wireless devices via one or more antennas of an array of antennas, or to another base station via the network connection 960. In a particular implementation, the network connection 960 may be a wide area network (WAN) connection, as an illustrative and non-limiting example. In some implementations, the core network may include or correspond to a public switched telephone network (PSTN), a packet backbone network, or both.

[0085]

[0093] The base station 900 may include a media gateway 970 coupled to the network connection 960 and the processor 906. The media gateway 970 may be configured to convert between media streams of different telecommunication technologies. For example, the media gateway 970 may convert between different transmission protocols, different coding schemes, or both. For illustration, the media gateway 970 may convert from PCM signals to Real-time Transport Protocol (RTP) signals, as one illustrative, non-limiting example. The media gateway 970 may convert data between packet-switched networks (e.g., Voice over Internet Protocol (VoIP) networks, IP Multimedia Subsystem (IMS), fourth generation (4G) wireless networks such as LTE, WiMax, and UMB), circuit-switched networks (e.g., PSTN), and hybrid networks (e.g., second generation (2G) wireless networks such as GSM, GPRS, and EDGE, third generation (3G) wireless networks such as WCDMA, EV-DO, and HSPA).

[0086]

[0094] Additionally, the media gateway 970 may include a transcoder, such as the transcoder 910, and may be configured to transcode data when the codecs are incompatible. For example, the media gateway 970 may transcode between an adaptive multi-rate (AMR) codec and a G.711 codec, as one illustrative, non-limiting example. The media gateway 970 may include a router and multiple physical interfaces. In some implementations, the media gateway 970 may also include a controller (not shown). In one particular implementation, the media gateway controller may be external to the media gateway 970, external to the base station 900, or both. The media gateway controller may control and coordinate the operation of multiple media gateways. The media gateway 970 may receive control signals from the media gateway controller and may function to bridge between different transmission technologies and add services to end-user capabilities and connections.

[0087]

[0095] The base station 900 may include a demodulator 962 coupled to the transceivers 952, 954, a receiver data processor 964, and the processor 906, which may be coupled to the processor 906. The demodulator 962 may be configured to demodulate modulated signals received from the transceivers 952, 954 and to provide demodulated data to the receiver data processor 964. The receiver data processor 964 may be configured to extract message or audio data from the demodulated data and send the message or audio data to the processor 906.

[0088]

[0096] The base station 900 may include a transmit data processor 982 and a transmit multiple-input multiple-output (MIMO) processor 984. The transmit data processor 982 may be coupled to the processor 906 and to the transmit MIMO processor 984. The transmit MIMO processor 984 may be coupled to the transceivers 952, 954 and to the processor 906. In some implementations, the transmit MIMO processor 984 may be coupled to the media gateway 970. The transmit data processor 982 may be configured to receive messages or audio data from the processor 906, as an illustrative and non-limiting example, and to code the messages or audio data based on a coding scheme such as CDMA or orthogonal frequency division multiplexing (OFDM). The transmit data processor 982 may provide the coded data to the transmit MIMO processor 984.

[0089]

[0097] The coded data may be multiplexed with other data, such as pilot data, using CDMA or OFDM techniques to generate multiplexed data. The multiplexed data may then be modulated (i.e., symbol mapped) by the transmit data processor 982 based on a particular modulation scheme (e.g., binary phase shift keying ("BPSK"), quadrature phase shift keying ("QSPK"), multi-level phase shift keying ("M-PSK"), multi-level quadrature amplitude modulation ("M-QAM"), etc.) to generate modulation symbols. In a particular implementation, the coded data and other data may be modulated using different modulation schemes. The data rate, coding, and modulation for each data stream may be determined by instructions performed by the processor 906.

[0090]

[0098] The transmit MIMO processor 984 may be configured to receive the modulation symbols from the transmit data processor 982 and may further process the modulation symbols and perform beamforming on the data. For example, the transmit MIMO processor 984 may apply beamforming weights to the modulation symbols. The beamforming weights may correspond to one or more antennas of an array of antennas from which the modulation symbols are transmitted.

[0091]

[0099] During operation, the second antenna 944 of the base station 900 may receive the data stream 914. The second transceiver 954 may receive the data stream 914 from the second antenna 944 and may provide the data stream 914 to a demodulator 962. The demodulator 962 may demodulate the modulated signal of the data stream 914 and provide demodulated data to the receiver data processor 964. The receiver data processor 964 may extract the audio data from the demodulated data and provide the extracted audio data to the processor 906.

[0092]

[0100] The processor 906 may provide the audio data to the transcoder 910 for transcoding. The decoder 938 of the transcoder 910 may decode the audio data from a first format to decoded audio data, and the encoder 936 may encode the decoded audio data to a second format. In some implementations, the encoder 936 may encode the audio data using a higher data rate (e.g., upconvert) or a lower data rate (e.g., downconvert) than that received from the wireless device. In other implementations, the audio data may not be transcoded. Although the transcoding (e.g., decoding and encoding) is shown as being performed by the transcoder 910, the transcoding operations (e.g., decoding and encoding) may be performed by multiple components of the base station 900. For example, the decoding may be performed by the receiver data processor 964 and the encoding may be performed by the transmit data processor 982. In other implementations, the processor 906 may provide the audio data to the media gateway 970 for conversion to another transmission protocol, coding scheme, or both. The media gateway 970 may provide the converted data to another base station or to a core network via a network connection 960.

[0093]

[0101] In a particular aspect, the transcoder 910 updates the codec configuration of the encoder 936 in response to receiving the request 192 of FIG. 1. The encoder 936 may generate encoded audio data based on the updated codec configuration. The encoded audio data generated in the encoder 936, such as the transcoded data, may be provided to the transmit data processor 982 or the network connection 960 via the processor 906.

[0094]

[0102] The transcoded audio data from the transcoder 910 may be provided to a transmit data processor 982 for coding in accordance with a modulation scheme, such as OFDM, to generate modulation symbols. The transmit data processor 982 may provide the modulation symbols to a transmit MIMO processor 984 for further processing and beamforming. The transmit MIMO processor 984 may apply beamforming weights and provide the modulation symbols to one or more antennas of an array of antennas, such as the first antenna 942, via the first transceiver 952. Thus, the base station 900 may provide a transcoded data stream 916 corresponding to a data stream 914 received from a wireless device to another wireless device. The transcoded data stream 916 may have a different coding format, data rate, or both than the data stream 914. In other implementations, the transcoded data stream 916 may be provided to a network connection 960 for transmission to another base station or a core network.

[0095]

[0103] Thus, the base station 900 may include a computer-readable storage medium (e.g., memory 932) storing instructions that, when executed by one or more processors (e.g., processor 906, transcoder 910, or both), cause the processor to perform operations for communication. The operations include receiving configuration data from a configuration server. The configuration data indicates a first packet loss rate threshold associated with a first codec configuration. The operations include determining a packet loss rate associated with one or more first packets received at the base station 900 over the network from a second device. The operations include sending a request to the second device to change the codec configuration of the second device based on determining that a decoder of the base station 900 has the first codec configuration and that the packet loss rate meets the first packet loss threshold. The operations also include receiving a second packet from the second device over the network. The second packet is encoded based on the second codec configuration.

[0096]

[0104] An example of details describing codec configurations is provided. In one particular implementation, a global list per media type is used. The global list ranks example codec configurations for a media type in order of robustness. If a subset of codecs or configurations is negotiated for a session, the terminal adapts among the negotiated subset using the same robustness ordering from the global list. Each entry in the global list includes a codec name field (e.g., MIME type), a codec rate field (e.g., in bits per second), a redundancy field, or a combination thereof. The following fields may be used for each entry in the global list:

[0097] [Table 1]

[0098]

[0105] In one particular implementation, a per-codec type list is used. The per-codec type list ranks example codec configurations for a particular codec type in order of robustness. If a subset of codec configurations is negotiated for a session, the terminal adapts among the negotiated subset using the same robustness ordering from the per-codec type list. The following fields may be used for each entry in the list that is specific to a codec type:

[0099] [Table 2]

[0100] [Table 3]

[0101]

[0106] The above description of the disclosed aspects is provided to enable any person skilled in the art to make or use the disclosed aspects. Various modifications to these aspects will be readily apparent to those skilled in the art, and the principles defined herein may be applied to other aspects without departing from the scope of the present disclosure. Thus, the present disclosure is not intended to be limited to the aspects shown herein, but is to be accorded the widest possible scope consistent with the principles and novel features as defined by the following claims. The invention as described in the claims of the present application as originally filed is set forth below. [C1] 1. A method of communication comprising: receiving configuration data at a first device from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration; determining a packet loss rate at the first device, the packet loss rate associated with one or more first packets received at the first device over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving a second packet at the first device over the network from the second device, the second packet being encoded based on a second codec configuration; The method includes: [C2] the configuration data includes an ordered list of codec configurations, the first codec configuration having a first ordered position and the second codec configuration having a second ordered position in the ordered list of codec configurations. The method according to C1. [C3] the ordered list of codec configurations is ordered based on the robustness of the codec configurations to packet loss. The method described in C2. [C4] the configuration data includes a list of first packet loss rate thresholds associated with the ordered list of codec configurations, a first high packet loss rate threshold among the first packet loss rate thresholds being associated with the first codec configuration; The method described in C2. [C5] and in response to determining that the packet loss rate is greater than the first high packet loss rate threshold, determining that the packet loss rate meets the first packet loss rate threshold. The method according to C4. [C6] the configuration data includes a list of first request types associated with the list of first packet loss rate thresholds, a first request type among the first request types being associated with the first high packet loss rate threshold, and the request being of the first request type; The method according to C5. [C7] the configuration data includes a list of second packet loss rate thresholds associated with the ordered list of codec configurations, a first low packet loss rate threshold among the second packet loss rate thresholds being associated with the first codec configuration; The method described in C2. [C8] and determining, in response to determining that the packet loss rate is less than the first low packet loss rate threshold, that the packet loss rate meets the first packet loss rate threshold. The method according to C7. [C9] the configuration data includes a list of second request types associated with the list of second packet loss rate thresholds, a second one of the second request types being associated with the first low packet loss rate threshold, and the request being of the second request type. The method according to C8. [C10] the request indicating the second codec configuration. The method according to C1. [C11] The configuration data indicates an ordered sequence of codec configurations, and the method further comprises, prior to sending the request to the second device: receiving a message from the second device indicating one or more codec configurations supported by the second device; generating the request indicating the second codec configuration based on determining that the second codec configuration has a second ordered position in the ordered sequence of codec configurations that is greater than a first ordered position of the first codec configuration, that the one or more codec configurations supported by the second device include the second codec configuration, and that the first device supports the second codec configuration; The method of C10, further comprising: [C12] the first codec configuration comprises an adaptive multi-rate wideband (AMR-WB) codec configuration, an AMR-WB / G.718 interoperable (IO) codec configuration, an enhanced voice services (EVS) AMR-WB IO codec configuration, an EVS wideband (WB), ultra-wideband (SWB) codec configuration, or an EVS WB, SWB channel-aware codec configuration; The method according to C1. [C13] the configuration data includes a packet loss rate averaging window duration, the packet loss rate being based on a sliding window of the packet loss rate averaging window duration; The method according to C1. [C14] The method of claim 1, wherein the configuration data includes a de-jitter buffer packet loss rate indicator, and in response to determining that the de-jitter buffer packet loss rate indicator has a first value, the packet loss rate is based on a count of pre-de-jitter buffer packet loss events. [C15] The method of claim 1, wherein the configuration data includes a de-jitter buffer packet loss rate indicator, and in response to determining that the de-jitter buffer packet loss rate indicator has a second value, the packet loss rate is based on a count of post-de-jitter buffer packet loss events. [C16] A device, comprising: a memory configured to store configuration data received from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration; one or more processors; wherein the one or more processors: determining a packet loss rate associated with one or more first packets received over the network from the second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving, from the second device over the network, a second packet encoded according to a second codec configuration; A device configured to: [C17] The decoder; A receiver; The receiver further comprises: receiving the configuration data from the configuration server; receiving the first packet from the second device over the network; receiving the second packet from the second device over the network; The device of C16, configured to: [C18] The device of C16, wherein the memory and the one or more processors are incorporated in a mobile device. [C19] The device of C16, wherein the memory and the one or more processors are incorporated in a base station. [C20] When executed by one or more processors of a device, the one or more processors are receiving configuration data from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration; determining a packet loss rate associated with one or more first packets received at the device over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving a second packet from the second device over the network, the second packet being encoded based on a second codec configuration; A non-transitory computer-readable medium comprising instructions to cause [C21] The instructions, when executed by the one or more processors, cause the one or more processors to: determining a packet loss rate based on a count of pre-de-jitter buffer packet loss events in response to determining that a de-jitter buffer packet loss rate indicator has a particular value, wherein the configuration data includes the de-jitter buffer packet loss rate indicator; The non-transitory computer-readable medium of claim 20, [C22] An apparatus comprising: means for receiving configuration data at a first device from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration; means for determining a packet loss rate at the first device, the packet loss rate associated with one or more first packets received at the first device over a network from a second device; means for sending a request to the second device to change a codec configuration of the second device, the request being sent based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; means for receiving a second packet at the first device over the network from the second device, the second packet being encoded according to a second codec configuration; An apparatus comprising: [C23] in response to a de-jitter buffer packet loss rate indicator having a particular value, the packet loss rate is based on a count of post-de-jitter buffer packet loss events, and wherein the configuration data includes the de-jitter buffer packet loss rate indicator. The apparatus described in C22. [C24] 1. A method of communication comprising: receiving configuration data at a first device from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration, wherein the configuration data includes a de-jitter buffer packet loss rate indicator; determining a packet loss rate based on a count of pre-de-jitter buffer packet loss events or a count of post-de-jitter buffer packet loss events in response to a value of the de-jitter buffer packet loss rate indicator; the packet loss rate associated with one or more first packets received at the first device over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving a second packet at the first device over the network from the second device, the second packet being encoded based on a second codec configuration; The method includes: [C25] the configuration data includes an ordered list of codec configurations, the first codec configuration having a first ordered position and the second codec configuration having a second ordered position in the ordered list of codec configurations. The method described in C24. [C26] A device, comprising: a memory configured to store configuration data received from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration, wherein the configuration data includes a de-jitter buffer packet loss rate indicator; A de-jitter buffer; one or more processors; wherein the one or more processors: determining a packet loss rate based on a count of pre-de-jitter buffer packet loss events or a count of post-de-jitter buffer packet loss events in response to a value of the de-jitter buffer packet loss rate indicator, the packet loss rate being associated with one or more first packets received over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving, from the second device over the network, a second packet encoded according to a second codec configuration; A device configured to: [C27] The decoder; The receiver; The receiver further comprises: receiving the configuration data from the configuration server; receiving the first packet from the second device over the network; receiving the second packet from the second device over the network; 23. The device of claim 22, configured to: [C28] A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors of a device, cause the one or more processors to perform operations for communication, the operations including: receiving configuration data from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration, where the configuration data includes a de-jitter buffer packet loss rate indicator; determining a packet loss rate based on a count of pre-de-jitter buffer packet loss events or a count of post-de-jitter buffer packet loss events in response to a value of the de-jitter buffer packet loss rate indicator, the packet loss rate being associated with one or more first packets received at the device over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving a second packet from the second device over the network, the second packet being encoded based on a second codec configuration; A non-transitory computer readable medium comprising: [C29] the configuration data includes a packet loss rate averaging window duration, the packet loss rate being based on a sliding window of the packet loss rate averaging window duration; A non-transitory computer readable medium as described in C28. [C30] An apparatus comprising: means for receiving configuration data at a first device from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration, where the configuration data includes a de-jitter buffer packet loss rate indicator; means for determining a packet loss rate based on a first count of pre-de-jitter buffer packet loss events or a second count of post-de-jitter buffer packet loss events in response to a value of the de-jitter buffer packet loss rate indicator, wherein the packet loss rate is associated with one or more first packets received at the first device over a network from a second device; means for sending a request to the second device to change a codec configuration of the second device, the request being sent based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; means for receiving a second packet at the first device over the network from the second device, the second packet being encoded according to a second codec configuration; An apparatus comprising:

Claims

1. 1. A method of communication comprising: receiving configuration data at a first device from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration, where the configuration data includes a de-jitter buffer packet loss rate indicator; determining a packet loss rate based on a count of pre-de-jitter buffer packet loss events or a count of post-de-jitter buffer packet loss events in response to a value of the de-jitter buffer packet loss rate indicator, the packet loss rate being associated with one or more first packets received at the first device over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the first device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving, at the first device, a second packet from the second device over the network, the second packet being encoded based on a second codec configuration; A method for providing the above.

2. the configuration data includes an ordered list of codec configurations, in which the first codec configuration has a first ordered position and the second codec configuration has a second ordered position, and optionally the ordered list of codec configurations is ordered based on the robustness of the codec configurations to packet loss. The method of claim 1.

3. the configuration data includes a list of first packet loss rate thresholds associated with the ordered list of codec configurations, a first high packet loss rate threshold among the first packet loss rate thresholds being associated with the first codec configuration; The method of claim 2.

4. determining that the packet loss rate meets the first packet loss rate threshold in response to determining that the packet loss rate is greater than the first high packet loss rate threshold; and optionally the configuration data includes a list of first request types associated with the list of first packet loss rate thresholds, a first request type in the list of first request types being associated with the first high packet loss rate threshold, and the request being of the first request type. The method according to claim 3.

5. the configuration data includes a list of second packet loss rate thresholds associated with the ordered list of codec configurations, a first low packet loss rate threshold of the second packet loss rate thresholds being associated with the first codec configuration; The method of claim 2.

6. responsive to determining that the packet loss rate is less than the first low packet loss rate threshold, determining that the packet loss rate meets the first packet loss rate threshold; and optionally the configuration data includes a list of second request types associated with the list of second packet loss rate thresholds, a second request type in the list of second request types being associated with the first low packet loss rate threshold, and the request being of the second request type. The method according to claim 5.

7. The request indicates the second codec configuration and the configuration data indicates an ordered sequence of codec configurations, and the method further comprises, prior to sending the request to the second device: receiving a message from the second device indicating one or more codec configurations supported by the second device; generating the request indicating the second codec configuration based on determining that the second codec configuration has a second ordered position in the ordered sequence of codec configurations that is greater than a first ordered position of the first codec configuration, that the one or more codec configurations supported by the second device include the second codec configuration, and that the first device supports the second codec configuration; The method of claim 1 further comprising:

8. The first codec configuration includes an adaptive multi-rate wideband (AMR-WB) codec configuration, an AMR-WB / G.718 interoperable (IO) codec configuration, an enhanced voice services (EVS) AMR-WB IO codec configuration, an EVS wideband (WB), ultra-wideband (SWB) codec configuration, or an EVS WB, SWB channel-aware codec configuration; The method of claim 1.

9. the configuration data includes a packet loss rate averaging window duration, the packet loss rate being based on a sliding window of the packet loss rate averaging window duration; The method of claim 1.

10. A device, comprising: a memory configured to store configuration data received from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration, where the configuration data includes a de-jitter buffer packet loss rate indicator; A de-jitter buffer; one or more processors; wherein the one or more processors: determining a packet loss rate based on a count of pre-de-jitter buffer packet loss events or a count of post-de-jitter buffer packet loss events in response to a value of the de-jitter buffer packet loss rate indicator, the packet loss rate being associated with one or more first packets received over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving, from the second device over the network, a second packet encoded according to a second codec configuration; A device configured to:

11. The device according to claim 10, wherein the memory and / or the one or more processors are configured to perform the method according to any one of claims 2 to 9.

12. The decoder; A receiver; The receiver further comprises: receiving the configuration data from the configuration server; receiving the first packet from the second device over the network; receiving the second packet from the second device over the network; and The device of claim 10 configured to:

13. The device of claim 10 , wherein the memory and the one or more processors are integrated into a mobile device.

14. The device of claim 10 , wherein the memory and the one or more processors are incorporated in a base station.

15. A non-transitory computer-readable storage medium storing instructions that, when executed by one or more processors of a device, cause the one or more processors to perform operations for communication, the operations including: receiving configuration data from a configuration server, the configuration data indicating a first packet loss rate threshold associated with a first codec configuration, where the configuration data includes a de-jitter buffer packet loss rate indicator; determining a packet loss rate based on a count of pre-de-jitter buffer packet loss events or a count of post-de-jitter buffer packet loss events in response to a value of the de-jitter buffer packet loss rate indicator, the packet loss rate being associated with one or more first packets received at the device over a network from a second device; sending a request to the second device to change a codec configuration of the second device based on determining that a decoder of the device has the first codec configuration and that the packet loss rate meets the first packet loss rate threshold; receiving, from the second device over the network, a second packet encoded according to a second codec configuration; A non-transitory computer readable storage medium comprising:

Citation Information

Patent Citations

  • Management of video adaptive algorithms

    JP2012530469A

  • Method and apparatus for packet loss rate-based codec adaptation

    JP2014534722A

  • System and method for estimating initial channel quality in a multirate system

    US20040141551A1

  • Radio condition triggering of bitrate request for codec rate adaptation

    WO2018144928A1

  • Methods for increasing VOIP network coverage

    WO2018226318A1