US20140362764A1 - Selecting a particular codec list for codec negotiation - Google Patents
Selecting a particular codec list for codec negotiation Download PDFInfo
- Publication number
- US20140362764A1 US20140362764A1 US13/911,666 US201313911666A US2014362764A1 US 20140362764 A1 US20140362764 A1 US 20140362764A1 US 201313911666 A US201313911666 A US 201313911666A US 2014362764 A1 US2014362764 A1 US 2014362764A1
- Authority
- US
- United States
- Prior art keywords
- user device
- network
- codec
- list
- data flow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H04L65/602—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/24—Negotiation of communication capabilities
Definitions
- Codec negotiation is a call session establishment process in which user devices (e.g., a calling user device and a called user device) each provide a codec list in order to determine a common codec between the calling user device and called user device.
- the codecs may be used to process data flows (e.g., audio/video data flows) transmitted between the calling user device and called user device.
- codecs can be used to encode a data flow and to decode an encoded data flow.
- the calling user device and the called user device may use the common codec in order to process/transmit the data flows.
- transcoding may need to be performed, thereby reducing audio/video transmission quality and increasing network load.
- FIG. 1 illustrates an example overview of an implementation described herein
- FIG. 2 illustrates an example environment in which systems and/or methods, described herein, may be implemented
- FIG. 3 illustrates example components of a device that may be used within the environment of FIG. 2 ;
- FIG. 4 illustrates an example data structure that may be stored by one or more devices in the environment of FIG. 2 ;
- FIG. 5 illustrates a flowchart of an example process for selecting a particular codec list and establishing a call session based on the particular codec list
- FIGS. 6A-6B illustrate an example implementation as described herein.
- FIGS. 7A-7B illustrate an example implementation as described herein.
- Systems and/or methods, as described herein, may direct a user device to select a particular codec list and provide the particular codec list during a codec negotiation process.
- the particular codec list may be selected based on a type of network device (corresponding to a type of access network) via which a call instruction is transmitted. Additionally or alternatively, the particular codec list may be selected based on a measurement of network quality and may be selected without modification of a session initiation protocol (SIP).
- SIP session initiation protocol
- the particular codec list may list codecs in order of priority. For example, for cellular type networks, the codec list may prioritize codecs that require a lower bit rate than other codecs in the list (e.g., to reduce network load on the cellular network). For other network types where network load may not be an issue, the codec list may prioritize codecs that provide a higher audio/video transmission quality than other codecs.
- FIG. 1 illustrates an example implementation as described herein.
- a calling user device e.g., UD- 1
- a network device in order to place a call (e.g., a telephone call, a video call, or the like) to a called user device (e.g., UD- 2 ).
- the calling user device may present a particular codec list, of multiple lists, to the called user device as part of a codec negotiation process.
- UD- 1 may select the particular codec list based on a selection rule.
- the selection rule may direct UD- 1 to select the particular codec list based on a type of network device with which UD- 1 connects in order to place the call. For example, when UD- 1 places the call via a first network device type (e.g., a cellular network device corresponding to a cellular network), UD- 1 may provide a first codec list to UD- 2 . When UD- 1 places the call via a second network device type (e.g., a wireless local area network (WLAN) device), UD- 1 may provide a second codec list to UD- 2 .
- a first network device type e.g., a cellular network device corresponding to a cellular network
- UD- 1 may provide a first codec list to UD- 2 .
- a second network device type e.g., a wireless local area network (WLAN) device
- WLAN wireless local area network
- a call is to be broadly construed as any type of call, communication, or data flow that is processed using a codec.
- a call may be transmitted as an internet protocol (IP) based message (e.g., a voice over IP (VOIP) message) or some other type of message via a cellular network, a LAN, a circuit switch network, or some other type of network.
- IP internet protocol
- VOIP voice over IP
- the selection rule may direct UD- 1 to select the particular codec list further based on a measurement of network quality.
- UD- 1 may determine the measure of network quality based on performing a network test with the network device to determine the measure of network quality (e.g., based on a bit transfer rate, a latency value, a jitter value, etc.).
- UD- 1 may present a codec list that is particular to the type of network connected to UD- 1 and/or particular to the quality of the network connected to UD- 1 .
- a calling user device e.g., UD- 1
- a particular codec list based on information identifying UD- 1 (e.g., a telephone number of UD- 1 ).
- UD- 2 may select a particular codec list based on a type of network device 240 connected to user device UD- 2 when receiving a call from UD- 1 .
- FIG. 2 is a diagram of an example environment 200 in which systems and/or methods described herein may be implemented.
- environment 200 may include user devices 210 - 1 , . . . , 210 -M (where M ⁇ 1), provisioning server 220 , call processing system 230 , network device 240 , and network 250 .
- User device 210 may include any device capable of communicating via a network, such as network 250 .
- user device 210 may correspond to a mobile communication device (e.g., a smart phone or a personal digital assistant (PDA)), a portable computer device (e.g., a laptop or a tablet computer), a desktop computer, or another type of device.
- PDA personal digital assistant
- a calling user device 210 may place a call to a called user device 210 and may select a particular codec list to provide during a codec negotiation process when placing the call (e.g., based on one or more selection rules).
- Provisioning server 220 may include one or more computing devices, such as a server device or a collection of server devices.
- provisioning server 220 may include an activation server, an over-the-air (OTA) update server, and/or some other type of server to store codec lists and/or selection rules.
- provisioning server 220 may provide the codec lists and/or the selection rules to user device 210 as part of an activation process of user device 210 . Additionally, or alternatively, provisioning server 220 may provide updates to the codec lists and/or the selection rules.
- OTA over-the-air
- Call processing system 230 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, call processing system 230 may establish a call session between user devices 210 . For example, call processing system 230 may receive a call instruction from user device 210 - 1 to place a call to user device 210 - 2 . In some implementations, call processing system 230 may direct user device 210 - 1 and user device 210 - 2 to each provide a codec list as part of a codec negotiation process.
- call processing system 230 may identify a common codec in the codec lists, establish a call session based on identifying the common codec, and may direct user device 210 - 1 and user device 210 - 2 to process data flows using the common codec. In some implementations, call processing system 230 may establish the call session and may transcode data flows (e.g., when a common codec is not present in the codec lists provided by user device 210 - 1 and user device 210 - 2 ).
- Network device 240 may include one or more network devices that receive, process, and/or transmit traffic, such as audio, video, text, and/or other data, destined for and/or received from user device 210 .
- network device 240 may be an eNodeB (eNB) device and may be part of a cellular network and may be associated with a radio access network (RAN). Additionally, or alternatively, network device 240 may be a router, a hub, a gateway, a switch, a wireless access point, and/or some other type of device to receive, process, and/or transmit traffic.
- RAN radio access network
- network device 240 may connect user device 210 to network 250 .
- Network 250 may include one or more wired and/or wireless networks.
- network 250 may include a cellular network (e.g., a 2G network, a 3G network, a 4G network, a 5 G network, a voice over long term evolution (VoLTE) network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a wireless LAN (WLAN), a metropolitan network (MAN), a telephone network (e.g., the Public Switched Telephone Network (PSTN)), an ad hoc network, a managed IP network, a virtual private network (VPN), an intranet, the Internet, a fiber optic-based network, and/or a combination of these or other types of networks.
- PLMN public land mobile network
- LAN local area network
- WAN wide area network
- WLAN wireless LAN
- MAN metropolitan network
- PSTN Public Switched Telephone Network
- VPN virtual private network
- intranet the Internet, a fiber optic-
- the quantity of devices and/or networks, illustrated in FIG. 2 is not limited to what is shown. In practice, there may be additional devices and/or networks; fewer devices and/or networks; different devices and/or networks; or differently arranged devices and/or networks than illustrated in FIG. 2 . Also, in some implementations, one or more of the devices of environment 200 may perform one or more functions described as being performed by another one or more of the devices of environment 200 . Devices of environment 200 may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections.
- FIG. 3 illustrates example components of a device 300 that may be used within environment 200 of FIG. 2 .
- Device 300 may correspond to user device 210 , provisioning server 220 , call processing system 230 , and/or network device 240 .
- Each of user device 210 , provisioning server 220 , call processing system 230 , and/or network device 240 may include one or more devices 300 and/or one or more components of device 300 .
- device 300 may include a bus 305 , a processor 310 , a main memory 315 , a read only memory (ROM) 320 , a storage device 325 , an input device 330 , an output device 335 , and a communication interface 340 .
- a bus 305 may include a bus 305 , a processor 310 , a main memory 315 , a read only memory (ROM) 320 , a storage device 325 , an input device 330 , an output device 335 , and a communication interface 340 .
- ROM read only memory
- Bus 305 may include a path that permits communication among the components of device 300 .
- Processor 310 may include a processor, a microprocessor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or another type of processor that interprets and executes instructions.
- Main memory 315 may include a random access memory (RAM) or another type of dynamic storage device that stores information or instructions for execution by processor 310 .
- ROM 320 may include a ROM device or another type of static storage device that stores static information or instructions for use by processor 310 .
- Storage device 325 may include a magnetic storage medium, such as a hard disk drive, or a removable memory, such as a flash memory.
- Input device 330 may include a component that permits an operator to input information to device 300 , such as a control button, a keyboard, a keypad, or another type of input device.
- Output device 335 may include a component that outputs information to the operator, such as a light emitting diode (LED), a display, or another type of output device.
- Communication interface 340 may include any transceiver-like component that enables device 300 to communicate with other devices or networks. In some implementations, communication interface 340 may include a wireless interface, a wired interface, or a combination of a wireless interface and a wired interface.
- Device 300 may perform certain operations, as described in detail below. Device 300 may perform these operations in response to processor 310 executing software instructions contained in a computer-readable medium, such as main memory 315 .
- a computer-readable medium may be defined as a non-transitory memory device.
- a memory device may include memory space within a single physical storage device or memory space spread across multiple physical storage devices.
- the software instructions may be read into main memory 315 from another computer-readable medium, such as storage device 325 , or from another device via communication interface 340 .
- the software instructions contained in main memory 315 may direct processor 310 to perform processes that will be described later.
- hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein.
- implementations described herein are not limited to any specific combination of hardware circuitry and software.
- device 300 may include additional components, fewer components, different components, or differently arranged components than are shown in FIG. 3 .
- FIG. 4 illustrates an example data structure 400 that may be stored by one or more devices in environment 200 , such as user device 210 and/or provisioning server 220 .
- data structure 400 may be stored in a memory of user device 210 and/or provisioning server 220 .
- data structure 400 may be stored in a memory separate from, but accessible by, user device 210 and/or provisioning server 220 .
- data structure 400 may be stored by some other device in environment 200 , such as call processing system 230 and/or network device 240 .
- a particular instance of data structure 400 may contain different information and/or fields than another instance of data structure 400 .
- data structure 400 may store codec lists and selection rules used to select a particular codec list when user device 210 places a call.
- data structure 400 may include codec lists field 410 , selection rules field 420 , and known codecs field 430 .
- Codec lists field 410 may include information that identifies multiple codec lists stored by user device 210 .
- codec lists field 410 may store a list identifier (ID) for each codec list and may store a corresponding codec list for each list ID.
- the codec list may include codecs listed in order of priority or in reverse order of priority.
- codec lists field 410 may store the codec list “A, B, C, D” for list ID 1.
- codec “A” may have a higher priority than codec “B” (e.g., when codec lists field 410 stores codecs in order of priority).
- codec “D” may have a higher priority than codec “C,” codec “B,” and codec “A” (e.g., when codec lists field 410 stores codecs in an opposite order of priority.
- user device 210 may select a particular codec list to provide during a codec negotiation process.
- provisioning server 220 may provide information stored by data structure 400 to user device 210 (e.g., as part of a provisioning and/or an activation process for user device 210 ).
- a codec list may include adaptive multi-rate (AMR) codecs, G.711 codecs, G.722 codecs, G.729 codecs, and/or some other codec.
- AMR adaptive multi-rate
- Selection rules field 420 may include data inputs that, in some implementations, user device 210 may use to select a particular codec list during a codec negotiation process. For example, user device 210 may select a particular codec list based on data inputs, such as a type of network device 240 connected to user device 210 (e.g., a macro cell device, a femto cell device, a WLAN device, etc.), a type of network 250 associated with network device 240 (e.g., the type of network with which user device 210 communicates to place a call, such as a code division multiple access (CDMA) network, an IP network, a global system for mobile (GSM) network, etc.), and/or a measure of network quality. As described in greater detail below with respect to FIG. 5 , user device 210 may select a particular codec list based on some other data input(s).
- data inputs such as a type of network device 240 connected to user device 210 (e.g., a macro cell device
- the measure of network quality may include a measurement of bit rate (e.g., data transfer speed), a measure of latency, a measure of jitter, and/or some other network quality related measurement associated with a network connection of user device 210 .
- selection rules field 420 may store information that directs user device 210 to select codec list 1 when user device 210 connects to a macro cell type network device 240 associated with a CDMA network type having a bit rate of less than 1 megabits per second (Mbps), a latency of greater than 100 milliseconds (ms), and a jitter of greater than 50 ms.
- Known codecs field 430 may store information identifying one or more codecs that are known to be compatible with a particular user device 210 .
- known codecs field 430 may store information that identifies the particular user device 210 and information identifying codecs that are compatible with the particular user device 210 .
- information may be stored by known codecs field 430 when the particular user device 210 provides a codec list as part of a codec negotiation process.
- user device 210 may use information stored by data structure 400 to select a particular codec list, of multiple codec lists, for a call negotiation process.
- data structure 400 may include additional fields, fewer fields, different fields, or differently arranged fields than are shown in FIG. 4 .
- FIG. 4 illustrates examples of information stored by data structure 400 .
- selection rules field 420 may store any number of rules and the selection rules may differ from what is shown in FIG. 4 .
- FIG. 5 illustrates a flowchart of an example process 500 for selecting a particular codec list and establishing a call session based on the particular codec list.
- process 500 may be performed by one or more components of user device 210 .
- some or all of blocks of process 500 may be performed by one or more components of another device in environment 200 (e.g., provisioning server 220 , call processing system 230 , and/or network device 240 ), or a group of devices including or excluding user device 210 .
- provisioning server 220 e.g., provisioning server 220 , call processing system 230 , and/or network device 240
- FIG. 5 assume that user device 210 - 1 is a calling user device 210 and that user device 210 - 2 is a called user device 210 .
- process 500 may include receiving codec lists and selection rules (block 510 ).
- user device 210 - 1 may receive the codec lists and the selection rules from provisioning server 220 .
- provisioning server 220 may provide the codec lists and the selection rules as part of a provisioning of user device 210 - 1 and/or an initial activation of user device 210 - 1 .
- user device 210 - 1 may receive updated codec lists and/or selection rules from provisioning server 220 when provisioning server 220 stores the updated codec lists and/or selection rules.
- user device 210 - 1 may connect with network device 240 and may receive the codec lists and selection rules from provisioning server 220 via network device 240 (e.g., as part of an initial activation of user device 210 - 1 and/or when provisioning server 220 receives updates to the codec lists and/or the selection rules).
- the codec lists and/or the selection rules may be preinstalled within user device 210 - 1 and/or stored by a SIP client, a message service client, a VoLTE client, and/or some other client of user device 210 - 1 .
- Process 500 may include determining a measure of network quality (block 520 ).
- user device 210 - 1 may determine the measure of network quality by performing a network quality test to determine data used to determine the measure of network quality.
- user device 210 - 1 may transmit and/or receive a test file (e.g., via network device 240 ). Based on transmitting and/or receiving the test file, user device 210 - 1 may determine network quality data, such as network transmission speed (e.g., a transmission bit rate), network latency, network jitter, network packet loss, and/or some other network quality data.
- network transmission speed e.g., a transmission bit rate
- network latency e.g., network jitter
- network packet loss e.g., a packet loss
- some other network quality data such as network transmission speed (e.g., a transmission bit rate), network latency, network jitter, network packet loss, and/or some other network quality data.
- user device 210 - 1 may determine the measure
- the network quality data may further include a signal strength associated with a connection between user device 210 - 1 and network device 240 .
- particular network quality data may be weighted differently in the determination of the measure of network quality. For example, network transmission speed may be weighted differently than network latency.
- the network quality test may be performed upon an initial connection with network device 240 . Additionally, or alternatively, the network quality test may be performed at periodically (e.g., every 30 minutes, every 60 minutes, or at some other interval) in order to prevent the measure of network quality from becoming stale.
- the measure of network quality may be determined based on an identifier of network device 240 and based on information that identifies the measure of network quality corresponding to the identifier of network device 240 .
- the measure of network quality may be provided from network device 240 to user device 210 - 1 .
- network device 240 may perform network quality tests to determine the measure of network quality and provide the measure of network quality to user device 210 - 1 .
- the measure of network quality may correspond to a measure of network load associated with network device 240 .
- the measure of network quality may be inversely proportional to the measure of network load.
- Process 500 may also include receiving a call instruction (block 530 ).
- user device 210 - 1 may receive the call instruction from a user of user device 210 - 1 (e.g., via a keypad, a voice-input device, an application, a user interface, and/or via some other input technique).
- the call instruction may include an instruction to place a telephone call, a video call, or some other type of call to user device 210 - 2 (e.g., a called user device 210 ).
- Process 500 may further include selecting a particular codec list (block 540 ).
- user device 210 - 1 may select a particular codec list based on one or more data inputs and/or based on information stored by data structure 400 .
- a data input may include a type of network device 240 connected to user device 210 - 1 , the measure of network quality (as determined in block 520 ), a subscription level of user device 210 - 1 , a telephone number associated with user device 210 - 2 (e.g., based on information associated with the call instruction of block 530 ), a list of codecs known to be compatible with the called user device, and/or some other information.
- user device 210 - 1 may select the particular codec list based on the type of network device 240 (corresponding to a type of network 250 ) and based on the measure of network quality. For example, when user device 210 - 1 connects to a particular type of network device 240 (e.g., a network device 240 associated with a cellular type network 250 where lower network traffic is prioritized over data flow transmission quality, such as audio bit rate/video resolution), user device 210 - 1 may select a codec list that prioritizes codecs that require a lower bit rate than other codecs in the list.
- a particular type of network device 240 e.g., a network device 240 associated with a cellular type network 250 where lower network traffic is prioritized over data flow transmission quality, such as audio bit rate/video resolution
- user device 210 - 1 may select a codec list that prioritizes codecs that require a lower bit rate than other codecs in the list.
- the selected codec list may prioritize codecs that provide a higher audio/video transmission quality (e.g., codecs that require a higher bit rate) than other codecs in the list. Additionally, or alternatively, the selected codec list may prioritize codecs whose bit rate corresponds to the measure of network quality. For example, the measure of network quality may be proportional to the bit rate associated with the codecs in the codec list.
- user device 210 - 1 may select a codec list that prioritizes codecs based on a measure of codec reliability (e.g., error rates, packet loss rates, etc., associated with the codec). For example, a particular codec may have higher reliability while having a lower transmission quality than another codec. In some implementations (e.g., when user device 210 - 1 connects to a network device 240 where reliability is prioritized over transmission quality), user device 210 - 1 may select a codec list that prioritizes codecs based on the reliability of the codecs.
- a measure of codec reliability e.g., error rates, packet loss rates, etc.
- user device 210 - 1 may select the particular codec list based on a subscription level of user device 210 - 1 . For example, for a particular subscription level, the selected codec list may prioritize codecs that provide a higher audio/video transmission quality than other codecs. For another subscription level, the selected codec list may prioritize codecs that require a lower bit rate than other codecs in the list.
- user device 210 - 1 may select the particular codec list based on a telephone number associated with user device 210 - 2 .
- the particular codec list selected may be based on an area code, a country code, or some other information associated with the telephone number of user device 210 - 2 .
- user device 210 - 1 may select the particular codec list based on codecs that are known to be compatible with user device 210 - 2 .
- user device 210 - 1 may select the particular codec list based on a combination of data inputs (e.g., network device 240 type, subscription level of user device 210 - 1 , telephone number associated with user device 210 - 2 , codecs that are known to be compatible with user device 210 - 2 , and/or some other data input). For example, user device 210 - 1 may apply weightings to each data input to select the particular codec list. Additionally, or alternatively, user device 210 - 1 may generate the particular codec list based on the data inputs and/or the weightings.
- data inputs e.g., network device 240 type, subscription level of user device 210 - 1 , telephone number associated with user device 210 - 2 , codecs that are known to be compatible with user device 210 - 2 , and/or some other data input.
- user device 210 - 1 may apply weightings to each data input to select the particular codec list. Additionally, or alternatively, user device
- Process 500 may also include providing the call instruction with the particular codec list to establish a call session (block 550 ).
- user device 210 - 1 may provide the call instruction with the particular codec list to call processing system 230 as part of a codec negotiation process.
- call processing system 230 may receive the particular codec list from user device 210 - 1 , direct user device 210 - 2 to provide a codec list (e.g., based on the call instruction identifying user device 210 - 2 ), and receive the codec list from user device 210 - 2 .
- call processing system 230 may identify a common codec (e.g., the highest priority codec that is included in both codec lists) and may establish a session between user device 210 - 1 and user device 210 - 2 based on identifying the common codec.
- user device 210 - 1 and user device 210 - 2 may process data flows using the common codec.
- call processing system 230 may transcode data flows when a common codec is not identified.
- call processing system 230 may provide known codecs, associated with user device 210 - 1 and/or user device 210 - 2 to provisioning server 220 .
- call processing system 230 may store the codec lists provided by user device 210 - 1 and user device 210 - 2 to identify codecs that user device 210 - 1 and user device 210 - 2 may be compatible with (e.g., such that a codec list that prioritizes known codecs may be provided during a call negotiation process to reduce instances of transcoding).
- process 500 may include fewer blocks, additional blocks, or a different arrangement of blocks. Additionally, or alternatively, some of the blocks may be performed in parallel. Further, one or more blocks of process 500 may be omitted in some implementations.
- process 500 may also, alternatively, apply to a called user device 210 (e.g., user device 210 - 2 ) selecting a particular codec list (e.g., based on data inputs, such as a type of network device 240 connected to user device 210 - 2 when receiving a call instruction, a measure of network quality, subscription information associated with user device 210 - 2 , and/or information identifying user device 210 - 1 ).
- a called user device 210 e.g., user device 210 - 2
- a particular codec list e.g., based on data inputs, such as a type of network device 240 connected to user device 210 - 2 when receiving a call instruction, a measure of network quality, subscription information associated with user device 210 - 2 , and/or information identifying user device 210 - 1 ).
- FIGS. 6A-6B illustrate an example implementation as described herein.
- user device 210 - 1 may receive multiple codec lists and selection rules from provisioning server 220 .
- provisioning server 220 may receive the multiple codec lists and the selection rules from an operator of provisioning server 220 .
- the multiple codec lists and the selection rules may be based on a design decision that directs user device 210 - 1 to provide a particular codec list that is particular to a particular type of network device 240 and/or particular to a particular measurement of network quality.
- user device 210 - 1 may select a particular codec list, of the multiple codec lists, and provide the particular to call processing system 230 when providing a call instruction to place a call to user device 210 - 2 .
- user device 210 - 2 may also select a particular codec list of multiple codec lists stored by user device 210 - 2 (e.g., in accordance with process 500 ).
- call processing system 230 may receive a codec list from user device 210 - 2 (e.g., based on providing an instruction to cause user device 210 - 2 to provide the codec list).
- call processing system 230 may determine a common codec (e.g., codec “B”) based on the codec list provided by user device 210 - 1 and the codec list provided by user device 210 - 2 .
- call processing system 230 may send an instruction to user device 210 - 1 and to user device 210 - 2 to process data flows using the common codec (e.g., codec “B”).
- user device 210 - 1 and user device 210 - 2 may each send an acknowledgement message to call processing system 230 to indicate that each of user device 210 - 1 and user device 210 - 2 are prepared to process data flows using the common codec (e.g., encode and decode the data flows using the common codec).
- call processing system 230 may establish a communication session between user device 210 - 1 and user device 210 - 2 based on receiving the acknowledgement messages.
- provisioning server 220 may provide updated codec lists and/or updated selection rule sto user device 210 .
- the updated codec lists and the updated selection rules may be based on an analysis that identifies that the updated codec lists and the updated selection rules may result in a performance improvement in transmitting data flows between user devices 210 - 1 and user device 210 - 2 .
- user device 210 - 1 may receive the updated codec lists and the updated selection rules and may select a particular codec list based on the updated codec lists and updated selection rules. As further shown in FIG. 6B , user device 210 - 1 may provide an updated codec list when providing a call instruction to place a call to user device 210 - 2 . Further, a common codec (e.g., the codec “V”) may be used to process data flows transmitted between user device 210 - 1 and user device 210 - 2 . As a result, user device 210 - 1 may present a codec list that is particular to the type of network device 210 connected to user device 210 - 1 and/or particular to the measurement of network quality. Further, the codec list may be based on the updated codec lists that correspond to a performance improvement in processing the data flows between user device 210 - 1 and user device 210 - 2 .
- a common codec e.g., the codec “V”
- FIGS. 6A-6B While a particular example is shown in FIGS. 6A-6B , it will be apparent that the above description is merely an example implementation. Other examples are possible from what is described above with respect to FIGS. 6A-6B .
- FIGS. 7A-7B illustrate an example implementation as described herein.
- user device 210 - 1 may select a particular codec list and provide the particular codec list when placing a call to user device 210 - 2 .
- call processing system 230 may transcode data flows provided by user device 210 - 1 and user device 210 - 2 .
- call processing system 230 may provide the codec list, provided by user device 210 - 2 , to provisioning server 220 .
- the codec list, provided by user device 210 - 2 may correspond to a list of codecs known to be compatible with user device 210 - 2 .
- provisioning server 220 may provide user device 210 - 1 with a list of known codecs known to be compatible with user device 210 - 2 such that user device 210 - 1 prioritizes codec “B” when placing a subsequent call to user device 210 - 2 .
- user device 210 - 1 may present a codec list that prioritizes codec “B” such that call processing system 230 may identify codec “B” as a common codec.
- transcoding may be avoided when user device 210 - 1 places a call to user device 210 - 2 .
- FIGS. 7A-7B While a particular example is shown in FIGS. 7A-7B , it will be apparent that the above description is merely an example implementation. Other examples are possible from what is described above with respect to FIGS. 7A-7B .
- user device 210 may select a particular codec list, of multiple codec lists, based on a type of network device 240 used to provide a call instruction.
- user device 210 may select the particular codec list further based on a quality of a connection between user device 210 and network device 240 . For example, user device 210 may determine a measurement of quality based on performing a network test.
- user device 210 may select the particular codec list further based on information that identifies codecs known to be compatible with a called user device 210 (e.g., based on a previous call session with the called user device 210 ).
- a calling user device 210 may present a codec list that is particular to the type of network device 240 connected to the user device 210 and/or particular to a measure of quality of network 250 access.
- the calling user device 210 may present a list of codecs that is known to be compatible with a called user device 210 , thereby reducing instances of transcoding.
- a calling user device 210 e.g., user device 210 - 1
- a particular codec list based on information identifying user device 210 - 1 (e.g., a telephone number of user device 210 - 1 ).
- user device 210 - 2 may select a particular codec list based on a type of network device 240 connected to user device 210 - 2 when receiving a call from user device 210 - 1 .
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Telephonic Communication Services (AREA)
Abstract
Description
- Codec negotiation is a call session establishment process in which user devices (e.g., a calling user device and a called user device) each provide a codec list in order to determine a common codec between the calling user device and called user device. The codecs may be used to process data flows (e.g., audio/video data flows) transmitted between the calling user device and called user device. For example, codecs can be used to encode a data flow and to decode an encoded data flow. When a codec in both codec lists match (e.g., when the calling user device and the called user device are compatible with a common codec), the calling user device and the called user device may use the common codec in order to process/transmit the data flows. In a situation where the codec lists do not include a common codec, transcoding may need to be performed, thereby reducing audio/video transmission quality and increasing network load.
-
FIG. 1 illustrates an example overview of an implementation described herein; -
FIG. 2 illustrates an example environment in which systems and/or methods, described herein, may be implemented; -
FIG. 3 illustrates example components of a device that may be used within the environment ofFIG. 2 ; -
FIG. 4 illustrates an example data structure that may be stored by one or more devices in the environment ofFIG. 2 ; -
FIG. 5 illustrates a flowchart of an example process for selecting a particular codec list and establishing a call session based on the particular codec list; -
FIGS. 6A-6B illustrate an example implementation as described herein; and -
FIGS. 7A-7B illustrate an example implementation as described herein. - The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
- Systems and/or methods, as described herein, may direct a user device to select a particular codec list and provide the particular codec list during a codec negotiation process. In some implementations, the particular codec list may be selected based on a type of network device (corresponding to a type of access network) via which a call instruction is transmitted. Additionally or alternatively, the particular codec list may be selected based on a measurement of network quality and may be selected without modification of a session initiation protocol (SIP).
- In some implementations, the particular codec list may list codecs in order of priority. For example, for cellular type networks, the codec list may prioritize codecs that require a lower bit rate than other codecs in the list (e.g., to reduce network load on the cellular network). For other network types where network load may not be an issue, the codec list may prioritize codecs that provide a higher audio/video transmission quality than other codecs.
-
FIG. 1 illustrates an example implementation as described herein. As shown inFIG. 1 , a calling user device (e.g., UD-1) may connect to a network via a network device in order to place a call (e.g., a telephone call, a video call, or the like) to a called user device (e.g., UD-2). In some implementations, the calling user device may present a particular codec list, of multiple lists, to the called user device as part of a codec negotiation process. In some implementations, UD-1 may select the particular codec list based on a selection rule. For example, the selection rule may direct UD-1 to select the particular codec list based on a type of network device with which UD-1 connects in order to place the call. For example, when UD-1 places the call via a first network device type (e.g., a cellular network device corresponding to a cellular network), UD-1 may provide a first codec list to UD-2. When UD-1 places the call via a second network device type (e.g., a wireless local area network (WLAN) device), UD-1 may provide a second codec list to UD-2. - As used herein, the term “call” is to be broadly construed as any type of call, communication, or data flow that is processed using a codec. In some implementations, a call may be transmitted as an internet protocol (IP) based message (e.g., a voice over IP (VOIP) message) or some other type of message via a cellular network, a LAN, a circuit switch network, or some other type of network.
- In some implementations, the selection rule may direct UD-1 to select the particular codec list further based on a measurement of network quality. For example, UD-1 may determine the measure of network quality based on performing a network test with the network device to determine the measure of network quality (e.g., based on a bit transfer rate, a latency value, a jitter value, etc.). As a result, UD-1 may present a codec list that is particular to the type of network connected to UD-1 and/or particular to the quality of the network connected to UD-1.
- While systems and/or methods are described in terms of a calling user device (e.g., UD-1) selecting a particular codec list, in practice, the systems and/or methods are not so limited. For example, a called user device (e.g., UD-2) may select a particular codec list based on information identifying UD-1 (e.g., a telephone number of UD-1). Additionally or alternatively, UD-2 may select a particular codec list based on a type of
network device 240 connected to user device UD-2 when receiving a call from UD-1. -
FIG. 2 is a diagram of anexample environment 200 in which systems and/or methods described herein may be implemented. As shown inFIG. 2 ,environment 200 may include user devices 210-1, . . . , 210-M (where M≧1),provisioning server 220,call processing system 230,network device 240, andnetwork 250. -
User device 210 may include any device capable of communicating via a network, such asnetwork 250. For example,user device 210 may correspond to a mobile communication device (e.g., a smart phone or a personal digital assistant (PDA)), a portable computer device (e.g., a laptop or a tablet computer), a desktop computer, or another type of device. In some implementations, acalling user device 210 may place a call to a calleduser device 210 and may select a particular codec list to provide during a codec negotiation process when placing the call (e.g., based on one or more selection rules). - Provisioning
server 220 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations,provisioning server 220 may include an activation server, an over-the-air (OTA) update server, and/or some other type of server to store codec lists and/or selection rules. In some implementations,provisioning server 220 may provide the codec lists and/or the selection rules touser device 210 as part of an activation process ofuser device 210. Additionally, or alternatively,provisioning server 220 may provide updates to the codec lists and/or the selection rules. -
Call processing system 230 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations,call processing system 230 may establish a call session betweenuser devices 210. For example,call processing system 230 may receive a call instruction from user device 210-1 to place a call to user device 210-2. In some implementations,call processing system 230 may direct user device 210-1 and user device 210-2 to each provide a codec list as part of a codec negotiation process. In some implementations,call processing system 230 may identify a common codec in the codec lists, establish a call session based on identifying the common codec, and may direct user device 210-1 and user device 210-2 to process data flows using the common codec. In some implementations,call processing system 230 may establish the call session and may transcode data flows (e.g., when a common codec is not present in the codec lists provided by user device 210-1 and user device 210-2). -
Network device 240 may include one or more network devices that receive, process, and/or transmit traffic, such as audio, video, text, and/or other data, destined for and/or received fromuser device 210. In an example implementation,network device 240 may be an eNodeB (eNB) device and may be part of a cellular network and may be associated with a radio access network (RAN). Additionally, or alternatively,network device 240 may be a router, a hub, a gateway, a switch, a wireless access point, and/or some other type of device to receive, process, and/or transmit traffic. In some implementations,network device 240 may connectuser device 210 tonetwork 250. - Network 250 may include one or more wired and/or wireless networks. For example,
network 250 may include a cellular network (e.g., a 2G network, a 3G network, a 4G network, a 5G network, a voice over long term evolution (VoLTE) network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a wireless LAN (WLAN), a metropolitan network (MAN), a telephone network (e.g., the Public Switched Telephone Network (PSTN)), an ad hoc network, a managed IP network, a virtual private network (VPN), an intranet, the Internet, a fiber optic-based network, and/or a combination of these or other types of networks. - The quantity of devices and/or networks, illustrated in
FIG. 2 , is not limited to what is shown. In practice, there may be additional devices and/or networks; fewer devices and/or networks; different devices and/or networks; or differently arranged devices and/or networks than illustrated inFIG. 2 . Also, in some implementations, one or more of the devices ofenvironment 200 may perform one or more functions described as being performed by another one or more of the devices ofenvironment 200. Devices ofenvironment 200 may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections. -
FIG. 3 illustrates example components of adevice 300 that may be used withinenvironment 200 ofFIG. 2 .Device 300 may correspond touser device 210, provisioningserver 220,call processing system 230, and/ornetwork device 240. Each ofuser device 210, provisioningserver 220,call processing system 230, and/ornetwork device 240 may include one ormore devices 300 and/or one or more components ofdevice 300. - As shown in
FIG. 3 ,device 300 may include a bus 305, aprocessor 310, amain memory 315, a read only memory (ROM) 320, astorage device 325, aninput device 330, anoutput device 335, and acommunication interface 340. - Bus 305 may include a path that permits communication among the components of
device 300.Processor 310 may include a processor, a microprocessor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or another type of processor that interprets and executes instructions.Main memory 315 may include a random access memory (RAM) or another type of dynamic storage device that stores information or instructions for execution byprocessor 310.ROM 320 may include a ROM device or another type of static storage device that stores static information or instructions for use byprocessor 310.Storage device 325 may include a magnetic storage medium, such as a hard disk drive, or a removable memory, such as a flash memory. -
Input device 330 may include a component that permits an operator to input information todevice 300, such as a control button, a keyboard, a keypad, or another type of input device.Output device 335 may include a component that outputs information to the operator, such as a light emitting diode (LED), a display, or another type of output device.Communication interface 340 may include any transceiver-like component that enablesdevice 300 to communicate with other devices or networks. In some implementations,communication interface 340 may include a wireless interface, a wired interface, or a combination of a wireless interface and a wired interface. -
Device 300 may perform certain operations, as described in detail below.Device 300 may perform these operations in response toprocessor 310 executing software instructions contained in a computer-readable medium, such asmain memory 315. A computer-readable medium may be defined as a non-transitory memory device. A memory device may include memory space within a single physical storage device or memory space spread across multiple physical storage devices. - The software instructions may be read into
main memory 315 from another computer-readable medium, such asstorage device 325, or from another device viacommunication interface 340. The software instructions contained inmain memory 315 may directprocessor 310 to perform processes that will be described later. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software. - In some implementations,
device 300 may include additional components, fewer components, different components, or differently arranged components than are shown inFIG. 3 . -
FIG. 4 illustrates anexample data structure 400 that may be stored by one or more devices inenvironment 200, such asuser device 210 and/orprovisioning server 220. In some implementations,data structure 400 may be stored in a memory ofuser device 210 and/orprovisioning server 220. In some implementations,data structure 400 may be stored in a memory separate from, but accessible by,user device 210 and/orprovisioning server 220. In some implementations,data structure 400 may be stored by some other device inenvironment 200, such ascall processing system 230 and/ornetwork device 240. - A particular instance of
data structure 400 may contain different information and/or fields than another instance ofdata structure 400. In some implementations,data structure 400 may store codec lists and selection rules used to select a particular codec list whenuser device 210 places a call. - As shown in
FIG. 4 ,data structure 400 may include codec listsfield 410,selection rules field 420, and knowncodecs field 430. - Codec lists
field 410 may include information that identifies multiple codec lists stored byuser device 210. For example, codec listsfield 410 may store a list identifier (ID) for each codec list and may store a corresponding codec list for each list ID. In some implementations, the codec list may include codecs listed in order of priority or in reverse order of priority. In an example shown inFIG. 4 , codec listsfield 410 may store the codec list “A, B, C, D” forlist ID 1. In some implementations, codec “A” may have a higher priority than codec “B” (e.g., when codec listsfield 410 stores codecs in order of priority). In some implementations, codec “D” may have a higher priority than codec “C,” codec “B,” and codec “A” (e.g., when codec listsfield 410 stores codecs in an opposite order of priority. As described above,user device 210 may select a particular codec list to provide during a codec negotiation process. In some implementations, provisioningserver 220 may provide information stored bydata structure 400 to user device 210 (e.g., as part of a provisioning and/or an activation process for user device 210). In some implementations, a codec list may include adaptive multi-rate (AMR) codecs, G.711 codecs, G.722 codecs, G.729 codecs, and/or some other codec. - Selection rules field 420 may include data inputs that, in some implementations,
user device 210 may use to select a particular codec list during a codec negotiation process. For example,user device 210 may select a particular codec list based on data inputs, such as a type ofnetwork device 240 connected to user device 210 (e.g., a macro cell device, a femto cell device, a WLAN device, etc.), a type ofnetwork 250 associated with network device 240 (e.g., the type of network with whichuser device 210 communicates to place a call, such as a code division multiple access (CDMA) network, an IP network, a global system for mobile (GSM) network, etc.), and/or a measure of network quality. As described in greater detail below with respect toFIG. 5 ,user device 210 may select a particular codec list based on some other data input(s). - In some implementations, the measure of network quality may include a measurement of bit rate (e.g., data transfer speed), a measure of latency, a measure of jitter, and/or some other network quality related measurement associated with a network connection of
user device 210. In an example shown inFIG. 4 , selection rules field 420 may store information that directsuser device 210 to selectcodec list 1 whenuser device 210 connects to a macro celltype network device 240 associated with a CDMA network type having a bit rate of less than 1 megabits per second (Mbps), a latency of greater than 100 milliseconds (ms), and a jitter of greater than 50 ms. - Known
codecs field 430 may store information identifying one or more codecs that are known to be compatible with aparticular user device 210. For example, knowncodecs field 430 may store information that identifies theparticular user device 210 and information identifying codecs that are compatible with theparticular user device 210. As described in greater detail below with respect toFIGS. 7A-7B , information may be stored by knowncodecs field 430 when theparticular user device 210 provides a codec list as part of a codec negotiation process. - As described in greater detail below with respect to
FIG. 5 ,user device 210 may use information stored bydata structure 400 to select a particular codec list, of multiple codec lists, for a call negotiation process. - While particular fields are shown in a particular format in
data structure 400, in practice,data structure 400 may include additional fields, fewer fields, different fields, or differently arranged fields than are shown inFIG. 4 . Also,FIG. 4 illustrates examples of information stored bydata structure 400. In practice, other examples of information stored bydata structure 400 are possible. For example, selection rules field 420 may store any number of rules and the selection rules may differ from what is shown inFIG. 4 . -
FIG. 5 illustrates a flowchart of anexample process 500 for selecting a particular codec list and establishing a call session based on the particular codec list. In some implementations,process 500 may be performed by one or more components ofuser device 210. In some implementations, some or all of blocks ofprocess 500 may be performed by one or more components of another device in environment 200 (e.g., provisioningserver 220,call processing system 230, and/or network device 240), or a group of devices including or excludinguser device 210. InFIG. 5 , assume that user device 210-1 is a callinguser device 210 and that user device 210-2 is a calleduser device 210. - As shown in
FIG. 5 ,process 500 may include receiving codec lists and selection rules (block 510). For example, user device 210-1 may receive the codec lists and the selection rules from provisioningserver 220. In some implementations, provisioningserver 220 may provide the codec lists and the selection rules as part of a provisioning of user device 210-1 and/or an initial activation of user device 210-1. In some implementations, user device 210-1 may receive updated codec lists and/or selection rules from provisioningserver 220 when provisioningserver 220 stores the updated codec lists and/or selection rules. In some implementations, user device 210-1 may connect withnetwork device 240 and may receive the codec lists and selection rules from provisioningserver 220 via network device 240 (e.g., as part of an initial activation of user device 210-1 and/or when provisioningserver 220 receives updates to the codec lists and/or the selection rules). In some implementations, the codec lists and/or the selection rules may be preinstalled within user device 210-1 and/or stored by a SIP client, a message service client, a VoLTE client, and/or some other client of user device 210-1. -
Process 500 may include determining a measure of network quality (block 520). For example, user device 210-1 may determine the measure of network quality by performing a network quality test to determine data used to determine the measure of network quality. In some implementations (e.g., as part of the network quality test), user device 210-1 may transmit and/or receive a test file (e.g., via network device 240). Based on transmitting and/or receiving the test file, user device 210-1 may determine network quality data, such as network transmission speed (e.g., a transmission bit rate), network latency, network jitter, network packet loss, and/or some other network quality data. In some implementations, user device 210-1 may determine the measure of network quality by performing a ping test and/or some other type of network quality test. - In some implementations, the network quality data may further include a signal strength associated with a connection between user device 210-1 and
network device 240. In some implementations, particular network quality data may be weighted differently in the determination of the measure of network quality. For example, network transmission speed may be weighted differently than network latency. - In some implementations, the network quality test may be performed upon an initial connection with
network device 240. Additionally, or alternatively, the network quality test may be performed at periodically (e.g., every 30 minutes, every 60 minutes, or at some other interval) in order to prevent the measure of network quality from becoming stale. - In some implementations, the measure of network quality may be determined based on an identifier of
network device 240 and based on information that identifies the measure of network quality corresponding to the identifier ofnetwork device 240. In some implementations, the measure of network quality may be provided fromnetwork device 240 to user device 210-1. For example,network device 240 may perform network quality tests to determine the measure of network quality and provide the measure of network quality to user device 210-1. In some implementations, the measure of network quality may correspond to a measure of network load associated withnetwork device 240. For example, the measure of network quality may be inversely proportional to the measure of network load. -
Process 500 may also include receiving a call instruction (block 530). For example, user device 210-1 may receive the call instruction from a user of user device 210-1 (e.g., via a keypad, a voice-input device, an application, a user interface, and/or via some other input technique). In some implementations, the call instruction may include an instruction to place a telephone call, a video call, or some other type of call to user device 210-2 (e.g., a called user device 210). -
Process 500 may further include selecting a particular codec list (block 540). For example, user device 210-1 may select a particular codec list based on one or more data inputs and/or based on information stored bydata structure 400. In some implementations, a data input may include a type ofnetwork device 240 connected to user device 210-1, the measure of network quality (as determined in block 520), a subscription level of user device 210-1, a telephone number associated with user device 210-2 (e.g., based on information associated with the call instruction of block 530), a list of codecs known to be compatible with the called user device, and/or some other information. - In some implementations, user device 210-1 may select the particular codec list based on the type of network device 240 (corresponding to a type of network 250) and based on the measure of network quality. For example, when user device 210-1 connects to a particular type of network device 240 (e.g., a
network device 240 associated with acellular type network 250 where lower network traffic is prioritized over data flow transmission quality, such as audio bit rate/video resolution), user device 210-1 may select a codec list that prioritizes codecs that require a lower bit rate than other codecs in the list. When user device 210-1 connects to another type of network device 240 (e.g., anetwork device 240 associated with aLAN type network 250 where network traffic is not an issue), the selected codec list may prioritize codecs that provide a higher audio/video transmission quality (e.g., codecs that require a higher bit rate) than other codecs in the list. Additionally, or alternatively, the selected codec list may prioritize codecs whose bit rate corresponds to the measure of network quality. For example, the measure of network quality may be proportional to the bit rate associated with the codecs in the codec list. - In some implementations, user device 210-1 may select a codec list that prioritizes codecs based on a measure of codec reliability (e.g., error rates, packet loss rates, etc., associated with the codec). For example, a particular codec may have higher reliability while having a lower transmission quality than another codec. In some implementations (e.g., when user device 210-1 connects to a
network device 240 where reliability is prioritized over transmission quality), user device 210-1 may select a codec list that prioritizes codecs based on the reliability of the codecs. - In some implementations, user device 210-1 may select the particular codec list based on a subscription level of user device 210-1. For example, for a particular subscription level, the selected codec list may prioritize codecs that provide a higher audio/video transmission quality than other codecs. For another subscription level, the selected codec list may prioritize codecs that require a lower bit rate than other codecs in the list.
- In some implementations, user device 210-1 may select the particular codec list based on a telephone number associated with user device 210-2. For example, the particular codec list selected may be based on an area code, a country code, or some other information associated with the telephone number of user device 210-2. Additionally, or alternatively, user device 210-1 may select the particular codec list based on codecs that are known to be compatible with user device 210-2.
- In some implementations, user device 210-1 may select the particular codec list based on a combination of data inputs (e.g.,
network device 240 type, subscription level of user device 210-1, telephone number associated with user device 210-2, codecs that are known to be compatible with user device 210-2, and/or some other data input). For example, user device 210-1 may apply weightings to each data input to select the particular codec list. Additionally, or alternatively, user device 210-1 may generate the particular codec list based on the data inputs and/or the weightings. -
Process 500 may also include providing the call instruction with the particular codec list to establish a call session (block 550). For example, user device 210-1 may provide the call instruction with the particular codec list to callprocessing system 230 as part of a codec negotiation process. In some implementations,call processing system 230 may receive the particular codec list from user device 210-1, direct user device 210-2 to provide a codec list (e.g., based on the call instruction identifying user device 210-2), and receive the codec list from user device 210-2. In some implementations,call processing system 230 may identify a common codec (e.g., the highest priority codec that is included in both codec lists) and may establish a session between user device 210-1 and user device 210-2 based on identifying the common codec. In some implementations, user device 210-1 and user device 210-2 may process data flows using the common codec. As described above,call processing system 230 may transcode data flows when a common codec is not identified. - In some implementations,
call processing system 230 may provide known codecs, associated with user device 210-1 and/or user device 210-2 toprovisioning server 220. For example,call processing system 230 may store the codec lists provided by user device 210-1 and user device 210-2 to identify codecs that user device 210-1 and user device 210-2 may be compatible with (e.g., such that a codec list that prioritizes known codecs may be provided during a call negotiation process to reduce instances of transcoding). - While
FIG. 5 showsprocess 500 as including a particular quantity and arrangement of blocks, in some implementations,process 500 may include fewer blocks, additional blocks, or a different arrangement of blocks. Additionally, or alternatively, some of the blocks may be performed in parallel. Further, one or more blocks ofprocess 500 may be omitted in some implementations. - While
FIG. 5 is described in terms of a calling user device 210 (e.g., user device 210-1) selecting a particular codec list, in practice,process 500 may also, alternatively, apply to a called user device 210 (e.g., user device 210-2) selecting a particular codec list (e.g., based on data inputs, such as a type ofnetwork device 240 connected to user device 210-2 when receiving a call instruction, a measure of network quality, subscription information associated with user device 210-2, and/or information identifying user device 210-1). -
FIGS. 6A-6B illustrate an example implementation as described herein. As shown inFIG. 6A , user device 210-1 may receive multiple codec lists and selection rules from provisioningserver 220. For example, provisioningserver 220 may receive the multiple codec lists and the selection rules from an operator ofprovisioning server 220. In some implementations, the multiple codec lists and the selection rules may be based on a design decision that directs user device 210-1 to provide a particular codec list that is particular to a particular type ofnetwork device 240 and/or particular to a particular measurement of network quality. Based on the multiple codec lists, the selection rules, the type ofnetwork device 240, and/or the measurement of network quality (e.g., as determined in accordance withblock 520 described above), user device 210-1 may select a particular codec list, of the multiple codec lists, and provide the particular to callprocessing system 230 when providing a call instruction to place a call to user device 210-2. In some implementations, user device 210-2 may also select a particular codec list of multiple codec lists stored by user device 210-2 (e.g., in accordance with process 500). - As shown in
FIG. 6A ,call processing system 230 may receive a codec list from user device 210-2 (e.g., based on providing an instruction to cause user device 210-2 to provide the codec list). In some implementations,call processing system 230 may determine a common codec (e.g., codec “B”) based on the codec list provided by user device 210-1 and the codec list provided by user device 210-2. In some implementations,call processing system 230 may send an instruction to user device 210-1 and to user device 210-2 to process data flows using the common codec (e.g., codec “B”). - In some implementations, user device 210-1 and user device 210-2 may each send an acknowledgement message to call
processing system 230 to indicate that each of user device 210-1 and user device 210-2 are prepared to process data flows using the common codec (e.g., encode and decode the data flows using the common codec). In some implementations (e.g., based on receiving the acknowledgement messages),call processing system 230 may establish a communication session between user device 210-1 and user device 210-2 based on receiving the acknowledgement messages. - At a later point in time,
provisioning server 220 may provide updated codec lists and/or updated selection rulesto user device 210. For example, the updated codec lists and the updated selection rules may be based on an analysis that identifies that the updated codec lists and the updated selection rules may result in a performance improvement in transmitting data flows between user devices 210-1 and user device 210-2. - Referring to
FIG. 6B , user device 210-1 may receive the updated codec lists and the updated selection rules and may select a particular codec list based on the updated codec lists and updated selection rules. As further shown inFIG. 6B , user device 210-1 may provide an updated codec list when providing a call instruction to place a call to user device 210-2. Further, a common codec (e.g., the codec “V”) may be used to process data flows transmitted between user device 210-1 and user device 210-2. As a result, user device 210-1 may present a codec list that is particular to the type ofnetwork device 210 connected to user device 210-1 and/or particular to the measurement of network quality. Further, the codec list may be based on the updated codec lists that correspond to a performance improvement in processing the data flows between user device 210-1 and user device 210-2. - While a particular example is shown in
FIGS. 6A-6B , it will be apparent that the above description is merely an example implementation. Other examples are possible from what is described above with respect toFIGS. 6A-6B . -
FIGS. 7A-7B illustrate an example implementation as described herein. As shown inFIG. 7A , user device 210-1 may select a particular codec list and provide the particular codec list when placing a call to user device 210-2. InFIGS. 7A-7B , assume that no codecs are common to user device 210-1 and user device 210-2. That is,call processing system 230 may transcode data flows provided by user device 210-1 and user device 210-2. In some implementations,call processing system 230 may provide the codec list, provided by user device 210-2, to provisioningserver 220. In some implementations, the codec list, provided by user device 210-2, may correspond to a list of codecs known to be compatible with user device 210-2. - In
FIGS. 7A-7B , assume that the codec list provided by user device 210-2 prioritizes codec “B.” In some implementations, provisioningserver 220 may provide user device 210-1 with a list of known codecs known to be compatible with user device 210-2 such that user device 210-1 prioritizes codec “B” when placing a subsequent call to user device 210-2. For example, referring toFIG. 7B , when user device 210-1 places a subsequent call to user device 210-2, user device 210-1 may present a codec list that prioritizes codec “B” such thatcall processing system 230 may identify codec “B” as a common codec. As a result, transcoding may be avoided when user device 210-1 places a call to user device 210-2. - While a particular example is shown in
FIGS. 7A-7B , it will be apparent that the above description is merely an example implementation. Other examples are possible from what is described above with respect toFIGS. 7A-7B . - As described above,
user device 210 may select a particular codec list, of multiple codec lists, based on a type ofnetwork device 240 used to provide a call instruction. In some implementations,user device 210 may select the particular codec list further based on a quality of a connection betweenuser device 210 andnetwork device 240. For example,user device 210 may determine a measurement of quality based on performing a network test. - In some implementations,
user device 210 may select the particular codec list further based on information that identifies codecs known to be compatible with a called user device 210 (e.g., based on a previous call session with the called user device 210). As a result, a callinguser device 210 may present a codec list that is particular to the type ofnetwork device 240 connected to theuser device 210 and/or particular to a measure of quality ofnetwork 250 access. Further, the callinguser device 210 may present a list of codecs that is known to be compatible with a calleduser device 210, thereby reducing instances of transcoding. - While systems and/or methods are described in terms of a calling user device 210 (e.g., user device 210-1) selecting a particular codec list, in practice, the systems and/or methods are not so limited. For example, a called user device 210 (e.g., user device 210-2) may select a particular codec list based on information identifying user device 210-1 (e.g., a telephone number of user device 210-1). Additionally or alternatively, user device 210-2 may select a particular codec list based on a type of
network device 240 connected to user device 210-2 when receiving a call from user device 210-1. - The foregoing description provides illustration and description, but is not intended to be exhaustive or to limit the possible implementations to the precise form disclosed. Modifications and variations are possible in light of the above disclosure or may be acquired from practice of the implementations.
- It will be apparent that different examples of the description provided above may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement these examples is not limiting of the implementations. Thus, the operation and behavior of these examples were described without reference to the specific software code—it being understood that software and control hardware can be designed to implement these examples based on the description herein.
- Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of the possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one other claim, the disclosure of the possible implementations includes each dependent claim in combination with every other claim in the claim set.
- No element, act, or instruction used in the present application should be construed as critical or essential unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items and may be used interchangeably with “one or more.” Where only one item is intended, the term “one” or similar language is used. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/911,666 US8913524B1 (en) | 2013-06-06 | 2013-06-06 | Selecting a particular codec list for codec negotiation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/911,666 US8913524B1 (en) | 2013-06-06 | 2013-06-06 | Selecting a particular codec list for codec negotiation |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140362764A1 true US20140362764A1 (en) | 2014-12-11 |
US8913524B1 US8913524B1 (en) | 2014-12-16 |
Family
ID=52005399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/911,666 Active US8913524B1 (en) | 2013-06-06 | 2013-06-06 | Selecting a particular codec list for codec negotiation |
Country Status (1)
Country | Link |
---|---|
US (1) | US8913524B1 (en) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9350772B2 (en) * | 2014-10-24 | 2016-05-24 | Ringcentral, Inc. | Systems and methods for making common services available across network endpoints |
US20160189724A1 (en) * | 2014-12-30 | 2016-06-30 | Q4 Europe Sp. Z O. O. | The method of codec selection in the audio transmission process in ICT systems |
US9398085B2 (en) | 2014-11-07 | 2016-07-19 | Ringcentral, Inc. | Systems and methods for initiating a peer-to-peer communication session |
US20170310730A1 (en) * | 2014-09-25 | 2017-10-26 | Orange | Method for negotiating codecs in ip networks |
FR3052953A1 (en) * | 2016-06-20 | 2017-12-22 | Orange | METHOD FOR CONTROLLING THE REGISTRATION OF A TERMINAL |
US20180167841A1 (en) * | 2016-12-14 | 2018-06-14 | Intel IP Corporation | Management of received internet protocol packet bundling for real time services |
US20190273770A1 (en) * | 2016-09-07 | 2019-09-05 | Cloudminds (Shenzhen) Robotics Systems Co., Ltd. | Volte communication method and base station thereof |
US10624000B2 (en) * | 2016-03-14 | 2020-04-14 | Robert Bosch Gmbh | Digital wireless intercom with user-selectable audio codecs |
US20200187110A1 (en) * | 2016-03-14 | 2020-06-11 | Robert Bosch Gmbh | Distributed wireless intercom audio routing over ethernet with synchornization and roaming |
EP4086899A4 (en) * | 2020-02-11 | 2022-12-28 | Huawei Technologies Co., Ltd. | Audio transmission method and electronic device |
US12131741B2 (en) | 2020-02-11 | 2024-10-29 | Huawei Technologies Co., Ltd. | Audio transmission method and electronic device |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10645228B2 (en) * | 2017-06-26 | 2020-05-05 | Apple Inc. | Adaptability in EVS codec to improve power efficiency |
US10728303B2 (en) | 2017-12-05 | 2020-07-28 | At&T Intellectual Property I, L.P. | Codec selection for end-to-end communication without intermediate transcoding |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139088A1 (en) * | 2001-03-27 | 2004-07-15 | Davide Mandato | Method for achieving end-to-end quality of service negotiations for distributed multi-media applications |
US20090076802A1 (en) * | 2006-03-02 | 2009-03-19 | Andreas Witzel | Wideband codec negotiation |
US20100161325A1 (en) * | 2005-08-16 | 2010-06-24 | Karl Hellwig | Individual Codec Pathway Impairment Indicator for use in a Communication System |
US20130157674A1 (en) * | 2010-03-25 | 2013-06-20 | Nokia Siemens Networks Oy | Bandwidth extension usage optimization |
US20140056296A1 (en) * | 2008-03-06 | 2014-02-27 | Shoretel, Inc. | Bandwidth Management and Codec Negotiation Based on WAN Topology |
-
2013
- 2013-06-06 US US13/911,666 patent/US8913524B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139088A1 (en) * | 2001-03-27 | 2004-07-15 | Davide Mandato | Method for achieving end-to-end quality of service negotiations for distributed multi-media applications |
US20100161325A1 (en) * | 2005-08-16 | 2010-06-24 | Karl Hellwig | Individual Codec Pathway Impairment Indicator for use in a Communication System |
US20090076802A1 (en) * | 2006-03-02 | 2009-03-19 | Andreas Witzel | Wideband codec negotiation |
US20140056296A1 (en) * | 2008-03-06 | 2014-02-27 | Shoretel, Inc. | Bandwidth Management and Codec Negotiation Based on WAN Topology |
US20130157674A1 (en) * | 2010-03-25 | 2013-06-20 | Nokia Siemens Networks Oy | Bandwidth extension usage optimization |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10506011B2 (en) * | 2014-09-25 | 2019-12-10 | Orange | Method for negotiating codecs in IP networks |
US20170310730A1 (en) * | 2014-09-25 | 2017-10-26 | Orange | Method for negotiating codecs in ip networks |
US9350772B2 (en) * | 2014-10-24 | 2016-05-24 | Ringcentral, Inc. | Systems and methods for making common services available across network endpoints |
US10129304B2 (en) | 2014-10-24 | 2018-11-13 | Ringcentral, Inc. | Systems and methods for making common services available across network endpoints |
US9398085B2 (en) | 2014-11-07 | 2016-07-19 | Ringcentral, Inc. | Systems and methods for initiating a peer-to-peer communication session |
US10015246B2 (en) | 2014-11-07 | 2018-07-03 | Ringcentral, Inc. | Systems and methods for initiating a peer-to-peer communication session |
US10637922B2 (en) | 2014-11-07 | 2020-04-28 | Ringcentral, Inc. | Systems and methods for initiating a peer-to-peer communication session |
US20160189724A1 (en) * | 2014-12-30 | 2016-06-30 | Q4 Europe Sp. Z O. O. | The method of codec selection in the audio transmission process in ICT systems |
WO2016108701A1 (en) * | 2014-12-30 | 2016-07-07 | Q4 Europe Sp. Z O. O. | The method of codec selection in the audio transmission process in ict systems |
US10912019B2 (en) * | 2016-03-14 | 2021-02-02 | Robert Bosch Gbmh | Distributed wireless intercom audio routing over ethernet with synchronization and roaming |
US20200187110A1 (en) * | 2016-03-14 | 2020-06-11 | Robert Bosch Gmbh | Distributed wireless intercom audio routing over ethernet with synchornization and roaming |
US10624000B2 (en) * | 2016-03-14 | 2020-04-14 | Robert Bosch Gmbh | Digital wireless intercom with user-selectable audio codecs |
FR3052953A1 (en) * | 2016-06-20 | 2017-12-22 | Orange | METHOD FOR CONTROLLING THE REGISTRATION OF A TERMINAL |
WO2017220883A1 (en) * | 2016-06-20 | 2017-12-28 | Orange | Method for determining a set of encoding formats in order to establish a communication |
US11540209B2 (en) * | 2016-06-20 | 2022-12-27 | Orange | Method for determining a set of encoding formats in order to establish a communication |
US20190273770A1 (en) * | 2016-09-07 | 2019-09-05 | Cloudminds (Shenzhen) Robotics Systems Co., Ltd. | Volte communication method and base station thereof |
US10812552B2 (en) * | 2016-09-07 | 2020-10-20 | Cloudminds (Shenzhen) Robotics Systems Co., Ltd. | VoLTE communication method and base station thereof |
US10313918B2 (en) * | 2016-12-14 | 2019-06-04 | Intel IP Corporation | Management of received internet protocol packet bundling for real time services |
US20180167841A1 (en) * | 2016-12-14 | 2018-06-14 | Intel IP Corporation | Management of received internet protocol packet bundling for real time services |
EP4086899A4 (en) * | 2020-02-11 | 2022-12-28 | Huawei Technologies Co., Ltd. | Audio transmission method and electronic device |
US12131741B2 (en) | 2020-02-11 | 2024-10-29 | Huawei Technologies Co., Ltd. | Audio transmission method and electronic device |
Also Published As
Publication number | Publication date |
---|---|
US8913524B1 (en) | 2014-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8913524B1 (en) | Selecting a particular codec list for codec negotiation | |
JP7257539B2 (en) | User plane routing method and apparatus | |
US11418552B2 (en) | Device service capability discovery | |
US11265694B2 (en) | Network repository function (NRF) discovery control | |
US10771609B2 (en) | Messaging to emergency services via a mobile device in a wireless communication network | |
US11129074B2 (en) | Handing over a user device from one technology to another | |
US8627468B2 (en) | Optimizing performance information collection | |
CN105850182B (en) | It is used to determine when to communicate the method and apparatus from the first access network switching to the second access network | |
US8948106B2 (en) | Controlling telecommunications channel switching | |
US11109276B2 (en) | Establishing a low bitrate communication session with a high bitrate communication device | |
US20160330595A1 (en) | Push-to-talk service features | |
US11445422B2 (en) | Adaptable network communications | |
US10015664B2 (en) | Service routing optimization | |
US8908678B1 (en) | Intelligent call routing | |
US9167484B2 (en) | Transition from packet-switched to circuit-switched connection based on communication quality | |
US10602413B2 (en) | Policy state propagation system | |
US9756522B2 (en) | Session assignment and balancing | |
US20190253916A1 (en) | Systems and methods for tracking and calculating aggregate maximum bit rate across multiple sessions | |
US11589328B2 (en) | Systems and methods for network categorization | |
US10388147B2 (en) | Data driven alert system | |
US9788174B2 (en) | Centralized short message service center server for messaging | |
US9883435B2 (en) | Soft handover for a voice over internet protocol service | |
US20140314058A1 (en) | Optimizing device service availability and usage in a wireless personal network | |
US20180192259A1 (en) | Measuring subscriber count, message count and message type between a wireless communication network and a wireless local access network (wlan) | |
US11653334B2 (en) | Systems and methods for reducing transcoding resource allocation during call setup to multiple terminations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: VERIZON PATENT AND LICENSING INC., NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AKSU, ARDA;REEL/FRAME:030561/0034 Effective date: 20130606 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |