System and method for transferring call from primary device to secondary device
The system addresses the issue of missed calls in multi-device environments by establishing and managing multiple sessions to transfer and separate audio streams, ensuring seamless call handling across devices.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-09-19
- Publication Date
- 2026-03-05
AI Technical Summary
Existing call continuity systems in multi-device environments lack independent control over multiple incoming calls, leading to missed important calls when a primary device is busy, as they fail to seamlessly transfer and manage calls between connected devices.
A system and method that utilizes processors and memory to establish multiple sessions, de-packetize and separate audio streams based on CSRC values, and relay encoded audio frames to a secondary device, enabling independent call management and transfer.
Enables seamless call transfer and management across devices, allowing calls to be handled independently even when the primary device is busy, reducing the likelihood of missed important calls.
Smart Images

Figure KR2024096172_05032026_PF_FP_ABST
Abstract
Description
SYSTEM AND METHOD FOR TRANSFERRING CALL FROM PRIMARY DEVICE TO SECONDARY DEVICE
[0001] The present disclosure relates to call continuity in a multi-device environment, and more particularly, relates to a method and a system for transferring a call from a primary device to a secondary device, when the secondary device is connected to the primary device via a server.
[0002] In today's fast-paced digital world, the boundaries between electronic devices, for example, smartphones, tablets, laptops, etc., are increasingly blurred, particularly, in the field of communication. Initially, when an incoming call is received on a smartphone (primary subscriber identity module (SIM) device), the incoming call remains tethered to that smartphone only and is not visible on other connected devices (secondary device), for example, a laptop or a tablet connected with the smartphone. Thus, when a user forgets to carry the smartphone, in that case, the user generally misses receiving important calls and notifications, even if the user carries the connected devices, for example, the tablet or a laptop with him / her. Currently, many technological developments have taken place to solve the abovementioned limitations.
[0003] Currently, each of the electronic devices is connected via a wireless connection, for example, a call and message continuity (CMC) server in a multi-device environment. The CMC server enables the transferring of a single call and message to other connected devices from the smartphones ensuring continuous communication. The CMC establishes voice-over Wireless Fidelity (Vo-WiFi) calls between the smartphone and the other connected device. Referring to FIG. 1, when the incoming call is received on the smartphone 104 from a caller device 102, in that case, the other connected devices, for example, the tablet 106 or a laptop (not shown) inform the user about the receiving incoming call through different means, for example, ringing or notification, enabling receiving of the incoming call either on the smartphone or the other connected devices. Further, when the user accepts the call on the other connected devices, the smartphone 104 is not used for the call, and only relays the call to the other connected devices.
[0004] This configuration also enables the transferring of a call in progress from the smartphone 104 to the other connected devices without disconnecting the call. This configuration enables seamless synchronization of the incoming and outgoing messages, message history between the smartphone 104 and the other connected devices. Further, this configuration enables seamless synchronization of the incoming call and message history between the smartphone 104 and the other connected devices.
[0005] However, the current configuration, as discussed above, has certain limitations, referring to FIG. 1, the smartphone 104 receives an incoming call from another caller device 108, while the call received from the caller device 102 is in progress on the smartphone 104. In in that case, the user can either hold the call received from the caller device 102 and receive the incoming call from another caller device 108 or can merge the incoming call from another caller device 108 with the call, in progress, received from the caller device 102. This process lacks in forwarding the incoming call from another device 108 to the other connected devices. Thus, this process lacks in providing independent control of each call received from the caller device 102 and another caller device 108, on the smartphones 104 and the other connected devices respectively, even if the other connected devices are in an idle state. This increases the discomfort of the user, and also leads to missing any important call when the smartphone 104 is busy.
[0006] Therefore, in view of the above-mentioned problems, it is advantageous to provide an improved system and method that can overcome the above-mentioned problems and limitations associated with call continuity in the multi-device environment.
[0007] This summary is provided to introduce a selection of concepts, in a simplified format, that are further described in the detailed description of the invention. This summary is neither intended to identify key or essential inventive concepts of the invention nor is it intended for determining the scope of the invention.
[0008] One aspect of the present disclosure provides an electronic device for transferring of a call from the electronic device to a secondary device. The secondary device is connected to the electronic device via a server. The electronic device includes one or more processors, and a memory storing instructions. The instructions, when executed by the one or more processors, cause the device to establish a plurality of sessions on the electronic device corresponding to a plurality of calls connected on the electronic device through a network. The instructions, when executed by the one or more processors, cause the device to receive a first set of RTP packets from the network corresponding to the established plurality of sessions on the electronic device. The instructions, when executed by the one or more processors, cause the device to de-packetize each of the received first set of RTP packets into a contributing source, CSRC, value included in each RTP packet and encoded audio frames based on each connected call, wherein each CSRC value corresponds to an associated session of the plurality of sessions. The instructions, when executed by the one or more processors, cause the device to generate a decoded mixed audio based on the encoded audio frames. The instructions, when executed by the one or more processors, cause the device to separate the decoded mixed audio into a plurality of audio streams corresponding to the plurality of calls based on the CSRC value included in each RTP packet. The instructions, when executed by the one or more processors, cause the device to relay, a second set of RTP packets corresponding to encoded audio frames from the electronic device to the secondary device, wherein the encoded audio frames correspond to at least one audio stream of the plurality of audio streams.
[0009] In some examples, to establish the plurality of sessions, the instructions, when executed by the one or more processors, cause the device to establish a zeroth session from the plurality of sessions, based on a first call from the plurality of calls, wherein the zeroth session is associated with a SSRC value corresponding to a CSRC value. The instructions, when executed by the one or more processors, cause the device to establish a first session from the plurality of sessions based on a second call from the plurality of calls, wherein the second call is transferred on the secondary device such that the secondary device receives the second call while the zeroth session is on hold, wherein the first session is associated with another SSRC value corresponding to another CSRC value. The instructions, when executed by the one or more processors, cause the device to establish a second session of the plurality of sessions, by merging the zeroth session and the first session, where the second call is transferred to the secondary device through the network. The instructions, when executed by the one or more processors, cause the device to reset the zeroth session and the first session to relay the second set of RTP packets from the electronic device to the secondary device and receive a third set of packets from the secondary device.
[0010] In some examples, the received first set of RTP packets are arranged in an incremental sequential order.
[0011] In some examples, the instructions, when executed by the one or more processors, cause the device to store the CSRC value of the received first set of RTP packets in a session controller of the electronic device.
[0012] In some examples, to de-packetize each of the received first set of RTP packets, the instructions, when executed by the one or more processors, cause the device to de-packetize each of the received first set of RTP packets into a header and a payload, on the electronic device, wherein the header includes the CSRC value included in each RTP packet and the payload includes the encoded audio frames based on each connected call.
[0013] In some examples, after de-packetizing each of the received first set of RTP packets, the instructions, when executed by the one or more processors, cause the device to filter the encoded audio frames based on the CSRC value included in each RTP packet to generate the decoded mixed audio on the electronic device. The instructions, when executed by the one or more processors, cause the device to separate the decoded mixed audio into the plurality of audio streams by a neural separation model of a packet controller of the electronic device.
[0014] In some examples, to separate the decoded mixed audio into the plurality of audio streams, the instructions, when executed by the one or more processors, cause the device to train the neural separation model based on another audio stream from the plurality of audio streams having a predetermined length in a range of 495 ms to 500 ms. The instructions, when executed by the one or more processors, cause the device to feed the decoded mixed audio to the trained neural separation model. The instructions, when executed by the one or more processors, cause the device to place another audio stream, by the trained neural separation model, on a first speaker to recognize the first speaker on the electronic device, wherein the first speaker includes a CSRC value same as a SSRC value of a zeroth session from the plurality of sessions. The instructions, when executed by the one or more processors, cause the device to place the at least one audio, by the trained neural separation model, on a second speaker of the secondary device to recognize the second speaker, wherein the second speaker includes a CSRC value same as a SSRC value of a first session from the plurality of sessions.
[0015] In some examples, after separating the decoded mixed audio, the instructions, when executed by the one or more processors, cause the device to convert at least one audio stream from the plurality of audio streams, on the electronic device, to encoded audio frames, wherein the encoded audio frames are packetized and include the second set of RTP packets.
[0016] In some examples, to relay the second set of RTP packets, the instructions, when executed by the one or more processors, cause the device to relay the second set of RTP packets by one relay engine of a plurality of relay engines of the electronic device.
[0017] In some examples, after relaying the second set of RTP packets, the instructions, when executed by the one or more processors, cause the device to receive, on the electronic device, a third set of RTP packets corresponding to an encoded audio stream from the secondary device, based on the relayed encoded audio frames.
[0018] In some examples, to receive the third set of RTP packets, the instructions, when executed by the one or more processors, cause the device to receive the third set of RTP packets by another relay engine of a plurality of relay engines of the electronic device.
[0019] In some examples, the instructions, when executed by the one or more processors, cause the device to de-packetize the third set of RTP packets into a header and a payload to extract encoded audio frames by another relay engine and the encoded audio frames is decoded by another relay engine, wherein the header includes a CSRC value included in each RTP packet, and the payload includes encoded audio frames based on the encoded audio stream. The instructions, when executed by the one or more processors, cause the device to mix the decoded audio frames with a MIC audio by an audio handler of the electronic device. The instructions, when executed by the one or more processors, cause the device to transmit the mixed decoded audio frames to a media handler of the electronic device such that the media handler encodes the decoded audio frames. The instructions, when executed by the one or more processors, cause the device to packetize the encoded audio frames into a fourth set of RTP packets such that the fourth set of RTP packets is transferred to the network by at least one session from the plurality of sessions.
[0020] In some examples, to mix the decoded audio frames with the MIC audio by the audio handler, the instructions, when executed by the one or more processors, cause the device to sample the MIC audio and the decoded audio frames at a predetermined frequency. The instructions, when executed by the one or more processors, cause the device to compute sampled MIC audio and the decoded audio frames to generate an average value of the sampled MIC audio and the decoded audio frames. The instructions, when executed by the one or more processors, cause the device to obtain mix audio pulse-code modulation (PCM) based on the generated average value. The instructions, when executed by the one or more processors, cause the device to place the obtained mix audio PCM in a mixed audio buffer of the electronic device for mixing the decoded audio frames with the MIC audio.
[0021] In some examples, the instructions, when executed by the one or more processors, cause the device to packetize the encoded audio frames into the fourth set of RTP packets such that the fourth set of RTP packets is transferred to the network by a second session from the plurality of sessions for enabling transferring of the call from the electronic device to the secondary device.
[0022] One aspect of the present disclosure provides a method for transferring of a call from a primary device to a secondary device, the secondary device being connected to the primary device. The method includes establishing a plurality of sessions on the primary device corresponding to a plurality of calls connected on the primary device through a network. The method includes receiving a first set of RTP packets from the network corresponding to the established plurality of sessions on the primary device. The method includes de-packetizing each of the received first set of RTP packets into a contributing source (CSRC) value included in each RTP packet and encoded audio frames based on each connected call. Each CSRC value corresponds to an associated session of the plurality of sessions. The method includes separating a generated decoded mixed audio, generated based on the encoded audio frames, into a plurality of audio streams corresponding to the plurality of calls, on the primary device, based on the CSRC value included in each RTP packet. The method includes relaying, a second set of RTP packets corresponding to encoded audio frames from the primary device to the secondary device, where the encoded audio frames correspond to at least one audio stream from the plurality of audio streams.
[0023] In some examples, the establishing of the plurality of sessions includes establishing a zeroth session from the plurality of sessions, based on a first call from the plurality of calls, wherein the zeroth session is associated with a SSRC value corresponding to a CSRC value. The establishing includes establishing a first session from the plurality of sessions based on a second call from the plurality of calls, wherein the second call is transferred on the secondary device such that the secondary device receives the second call while the zeroth session is on hold, wherein the first session is associated with another SSRC value corresponding to another CSRC value. The establishing includes establishing a second session from the plurality of sessions, by merging the zeroth session and the first session, where the second call is transferred to the secondary device through the network. The establishing includes resetting the zeroth session and the first session to relay the second set of RTP packets from the primary device to the secondary device and receive the third set of packets from the secondary device.
[0024] In some examples, the received first set of RTP packets are arranged in an incremental sequential order.
[0025] In some examples, the method further includes storing the CSRC value of the received first set of RTP packets in a session controller of the primary device.
[0026] In some examples, the de-packetizing of each of the received first set of RTP packets includes de-packetizing each of the received first set of RTP packets into a header and a payload, on the primary device, wherein the header includes the CSRC value included in each RTP packet, and the payload includes the encoded audio frames based on each connected call.
[0027] In some examples, wherein after de-packetizing each of the received first set of RTP packets, the method includes the filtering the encoded audio frames based on the CSRC value included in each RTP packet to generate the decoded mixed audio on the primary device, and separating the generated decoded mixed audio into the plurality of audio streams by a neural separation model of a packet controller of the primary device.
[0028] In some examples, the separating of the generated decoded mixed audio into the plurality of audio streams includes training the neural separation model based on another audio stream from the plurality of audio streams having a predetermined length in a range of 495 ms to 500 ms. The separating includes feeding the generated decoded mixed audio to the trained neural separation model. The separating includes placing another audio stream, by the trained neural separation model, on a first speaker to recognize the first speaker on the primary device, wherein the first speaker includes a CSRC value same as a SSRC value of a zeroth session from the plurality of sessions. The separating includes placing the at least one audio, by the trained neural separation model, on a second speaker of the secondary device to recognize the second speaker, wherein the second speaker includes a CSRC value same as a SSRC value of a first session from the plurality of sessions.
[0029] In some examples, after separating the generated decoded mixed audio, the method includes converting at least one audio stream from the plurality of audio streams, on the primary device, to encoded audio frames, wherein the encoded audio frames are packetized and include the second set of RTP packets.
[0030] In some examples, the relaying of the second set of RTP packets includes relaying the second set of RTP packets by one relay engine of a plurality of relay engines of the primary device.
[0031] In some examples, after relaying the second set of RTP packets, the method includes receiving, on the primary device, a third set of RTP packets corresponding to an encoded audio stream from the secondary device, based on the relayed encoded audio frames.
[0032] In some examples, the receiving of the third set of RTP packets includes receiving the third set of RTP packets by another relay engine of a plurality of relay engines of the primary device.
[0033] In some examples, the method includes de-packetizing the third set of RTP packets into a header and a payload to extract encoded audio frames by another relay engine and the encoded audio frames is decoded by another relay engine, wherein the header includes a CSRC value included in each RTP packet, and the payload includes encoded audio frames based on the encoded audio stream. The method includes mixing the decoded audio frames with a microphone (MIC) audio by an audio handler of the primary device. The method includes transmitting the mixed decoded audio frames to a media handler of the primary device such that the media handler encodes the decoded audio frames. The method includes packetizing the encoded audio frames into a fourth set of RTP packets such that the fourth set of RTP packets is transferred to the network by at least one session from the plurality of sessions.
[0034] In some examples, the mixing of the decoded audio frames with the MIC audio by the audio handler includes sampling the MIC audio and the decoded audio frames at a predetermined frequency. The mixing includes computing sampled MIC audio and the decoded audio frames to generate an average value of the sampled MIC audio and the decoded audio frames. The mixing includes obtaining mix audio pulse-code modulation (PCM) based on the generated average value. The mixing includes placing the obtained mix audio PCM in a mixed audio buffer of the primary device for mixing the decoded audio frames with the MIC audio.
[0035] In some examples, the method includes packetizing the encoded audio frames into the fourth set of RTP packets such that the fourth set of RTP packets is transferred to the network by a second session from the plurality of sessions for enabling transferring of the call from the primary device to the secondary device.
[0036] One aspect of the present disclosure provides a system for transferring of a call from a primary device to a secondary device, the secondary device being connected to the primary device via a server. The system includes a memory and at least one processor. The at least one processor is communicatively coupled with the memory. The at least one processor is configured to establish a plurality of sessions on the primary device corresponding to a plurality of calls connected on the primary device through a network. The at least one processor is configured to receive a first set of RTP packets from the network corresponding to the established plurality of sessions on the primary device. The at least one processor is configured to de-packetize each of the received first set of RTP packets into a CSRC value included in each RTP packet and encoded audio frames based on each connected call. Each CSRC value corresponds to an associated session of the plurality of sessions. The at least one processor is configured to separate a generated decoded mixed audio, generated based on the encoded audio frames, into a plurality of audio streams corresponding to the plurality of calls, on the primary device, based on the CSRC value included in each RTP packet. The at least one processor is configured to relay, a second set of RTP packets corresponding to encoded audio frames from the primary device to the secondary device, where the encoded audio frames correspond to at least one audio stream from the plurality of audio streams.
[0037] One aspect of the present disclosure provides a computer program stored on a computer readable storage medium, when executed by one or more processors, cause an electronic device to perform any one of the methods.
[0038] To further clarify the advantages and features of the present invention, a more particular description of the invention will be rendered by reference to specific embodiments thereof, which is illustrated in the appended drawing. It is appreciated that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting its scope. The invention will be described and explained with additional specificity and detail with the accompanying drawings.
[0039] The foregoing and other features ofembodiments will become more apparent from the following detailed description of embodiments when read in conjunction with the accompanying drawings. In the drawings, like reference numerals refer to like elements.
[0040] FIG. 1 illustrates a connection of call from a primary device to a secondary device, as per existing art.
[0041] FIG. 2 illustrates an environment comprising a primary device having a system for transferring a call from the primary device to a secondary device, the secondary device being connected with the primary device, in accordance with an embodiment of the present disclosure.
[0042] FIG. 3 illustrates a block diagram of the system for transferring the call from the primary device to the secondary device, in accordance with an embodiment of the present disclosure.
[0043] FIG. 4 illustrate an overview of a specific operation of the system, in accordance with an embodiment of the present disclosure.
[0044] FIG. 5a and FIG. 5b illustrate a call connection in the primary device, in accordance with an embodiment of the present disclosure.
[0045] FIGs. 6a-6c illustrate an establishment of the plurality of sessions by the system, in accordance with an embodiment of the present disclosure.
[0046] FIG. 7 illustrate a decoding and separation of encoded audio frames by the system, in accordance with an embodiment of the present disclosure.
[0047] FIG. 8 illustrates an example of decoding and separating of the encoded audio frames by the system, in accordance with an embodiment of the present disclosure.
[0048] FIGs. 9a-9f illustrate a plurality of examples of decoding and separating of the encoded audio frames with respect to the primary device, a first call, and a second call, respectively, by the system, in accordance with an embodiment of the present disclosure.
[0049] FIG. 10 illustrates a mixing of decoded audio frames by an audio handler on the primary device, in accordance with an embodiment of the present disclosure.
[0050] FIG. 11 illustrates a flowchart for transferring the call from the primary device to the secondary device, in accordance with an embodiment of the present disclosure.
[0051] For the purpose of promoting an understanding of the principles of the present disclosure, reference will now be made to the various embodiments and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope of the present disclosure is thereby intended, such alterations and further modifications in the illustrated system, and such further applications of the principles of the present disclosure as illustrated therein being contemplated as would normally occur to one skilled in the art to which the present disclosure relates.
[0052] It will be understood by those skilled in the art that the foregoing general description and the following detailed description are explanatory of the present disclosure and are not intended to be restrictive thereof.
[0053] Whether or not a certain feature or element was limited to being used only once, it may still be referred to as "one or more features" or "one or more elements" or "at least one feature" or "at least one element." Furthermore, the use of the terms "one or more" or "at least one" feature or element do not preclude there being none of that feature or element, unless otherwise specified by limiting language including, but not limited to, "there needs to be one or more쪋" or "one or more elements is required."
[0054] Reference is made herein to some "embodiments." It should be understood that an embodiment is an example of a possible implementation of any features and / or elements of the present disclosure. Some embodiments have been described for the purpose of explaining one or more of the potential ways in which the specific features and / or elements of the proposed disclosure fulfil the requirements of uniqueness, utility, and non-obviousness.
[0055] Use of the phrases and / or terms including, but not limited to, "a first embodiment," "a further embodiment," "an alternate embodiment," "one embodiment," "an embodiment," "multiple embodiments," "some embodiments," "other embodiments," "further embodiment", "furthermore embodiment", "additional embodiment" or other variants thereof do not necessarily refer to the same embodiments. Unless otherwise specified, one or more particular features and / or elements described in connection with one or more embodiments may be found in one embodiment, or may be found in more than one embodiment, or may be found in all embodiments, or may be found in no embodiments. Although one or more features and / or elements may be described herein in the context of only a single embodiment, or in the context of more than one embodiment, or in the context of all embodiments, the features and / or elements may instead be provided separately or in any appropriate combination or not at all. Conversely, any features and / or elements described in the context of separate embodiments may alternatively be realized as existing together in the context of a single embodiment.
[0056] Any particular and all details set forth herein are used in the context of some embodiments and therefore should not necessarily be taken as limiting factors to the proposed disclosure.
[0057] The terms "comprises", "comprising", or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a process or method that comprises a list of steps does not include only those steps but may include other steps not expressly listed or inherent to such process or method. Similarly, one or more devices or sub-systems or elements or structures or components proceeded by "comprises... a" does not, without more constraints, preclude the existence of other devices or other sub-systems or other elements or other structures or other components or additional devices or additional sub-systems or additional elements or additional structures or additional components.
[0058] Embodiments of the present disclosure will be described below in detail with reference to the accompanying drawings.
[0059] For the sake of clarity, the first digit of a reference numeral of each component of the present disclosure is indicative of the Figure number, in which the corresponding component is shown. For example, reference numerals starting with digit "1" are shown at least in FIG. 1. Similarly, reference numerals starting with digit "2" are shown at least in FIG. 2.
[0060] FIG. 2 illustrates an environment 200 including an electronic device having a system 204 for transferring a call from the primary device 202 to a secondary device 206. For example, the electronic device may include a primary device 202. The secondary device 206 may be connected with the primary device 202, in accordance with an embodiment of the present disclosure. In an embodiment, the primary device 202 may be a smartphone having a subscriber identity module (SIM), without departing from the scope of the present disclosure. In one embodiment, the primary device 202 may be any other electronic device configured to support the SIM, without departing from the scope of the present disclosure. In an embodiment, the secondary device 206 may be at least one of a laptop, a tablet, etc., where at least one of the laptop, the tablet etc., may be connected with the primary device 202, without departing from the scope of the present disclosure. In one embodiment, the secondary device 206 may include any other devices which does not support the SIM and may be connected with the primary device 202, without departing from the scope of the present disclosure. In an embodiment, the primary device 202 and the secondary device 206 may belong to the same user and may be pre-authorized by the user with same login profile, without departing from the scope of the present disclosure. Further, the primary device 202 and the secondary device 206 may be connected with each other via at least one communication server, for example, CMC server, without departing from the scope of the present disclosure.
[0061] In an embodiment, when the primary device 202 receives an incoming call from a second caller while the primary device 202 has a call in progress from a first caller. In response to the incoming call from the second caller, the system 204 may be configured to transfer the incoming call, from the second caller, from the primary device 202 to the secondary device 206. The secondary device 206 may be in an idle state. Thus, this configuration ensures the transferring of the call from the primary device 202 to the secondary device 206 while the primary device 202 is busy with another call in progress.
[0062] Further, the constructional detail of the system 204 is explained in the subsequent paragraphs.
[0063] FIG. 3 illustrates a block diagram of the system for transferring the call from the primary device to the secondary device, the secondary device being connected with the primary device, in accordance with an embodiment of the present disclosure.
[0064] In an embodiment, the system 204 may be deployed in the primary device 202, without departing from the scope of the present disclosure. In one embodiment, the system 204 may be located outside the primary device 202 and communicatively coupled with the primary device 202, without departing from the scope of the present disclosure.
[0065] In an embodiment, the system 204 may include, but is not limited to, at least one processor (referred to here as one or more processor, a processor) 304, a memory 308, and a plurality of modules 312 among other examples which are explained in detail in the subsequent paragraphs.
[0066] Further, the system 204 may include a transceiver 350 and an Input / Output (I / O) interface 352. In some embodiments where the system 204 is implemented as a standalone entity at a server / cloud architecture, the system 204 may be in communication with multiple devices to receive data from each device. Further, the details provided below with respect to the system 204, the primary device 202, and the secondary device 206, are applicable for the system and the multiple devices as well.
[0067] In an exemplary embodiment, the processor 304 may be communicatively coupled with the memory. The processor may be operatively coupled to each of the I / O interface 352, the plurality of modules 312, and the transceiver 350. In one embodiment, the processor 304 may include a graphical processing unit (GPU) and / or an artificial intelligence (AI) engine (AIE). In one embodiment, the processor 304 may include at least one data processor for executing processes in a virtual storage area network. The processor 304 may include specialized processing units such as, integrated system (bus) controllers, memory management control units, floating point units, graphics processing units, digital signal processing units, etc. In one embodiment, the processor 304 may include a central processing unit (CPU), a graphics processing unit (GPU), or both. The processor 304 may be one or more general processors, digital signal processors, application-specific integrated circuits, field-programmable gate arrays, servers, networks, digital circuits, analog circuits, combinations thereof, or other now-known or later developed devices for analyzing and processing data. The processor 304 may execute a software program, such as code generated manually (i.e., programmed) to perform the desired operation.
[0068] The processor 304 may be disposed in communication with one or more input / output (I / O) devices via the I / O interface 352. In some embodiments, the processor 304 may communicate with the primary device 202 using the I / O interface 352. In some embodiments, the I / O interface 352 may be implemented within the primary device 202. In an embodiment, the I / O interface 352 may enable input and output to and from the system 204 using suitable devices such as, but not limited to, camera, display, and so forth.
[0069] Using the I / O interface 352, the system 204 may communicate with one or more I / O devices, specifically, the primary device 202, from which the system 204 transfers the call to the secondary device 206. For example, the input device may be an antenna, microphone, touch screen, touchpad, storage device, transceiver, recording device / source, etc. The output devices may be a video display (e.g., cathode ray tube (CRT), liquid crystal display (LCD), light-emitting diode (LED), plasma, Plasma Display Panel (PDP), Organic light-emitting diode display (OLED) or the like), audio speaker, etc.
[0070] The processor 304 may be disposed in communication with a communication network via a network interface. In an embodiment, the network interface may be the I / O interface 352. The network interface may connect to the communication network to enable the connection of the system 204 with the primary device 202 and the secondary device 206. The network interface may employ connection protocols including, without limitation, direct connect, Ethernet (e.g., twisted pair 10 / 100 / 1000 Base T), transmission control protocol / internet protocol (TCP / IP), token ring, IEEE 702.11a / b / g / n / x, user datagram protocol (UDP) protocol, etc. The communication network may include, without limitation, a direct interconnection, local area network (LAN), wide area network (WAN), wireless network (e.g., using Wireless Application Protocol), the Internet, etc. Using the network interface and the communication network, the system 204 may communicate with other devices.
[0071] The transceiver 350 may be configured to receive and / or transmit signals to and from the primary device 202 and the secondary device 206. In one embodiment, the database may be configured to store the information as required by the plurality of modules 312 and the processor 304 for transferring the call from the primary device 202 to the secondary device 206.
[0072] In some embodiments, the memory 308 may be communicatively coupled to the processor 304. The memory 308 may be configured to store data, and instructions executable by the processor 304. In one embodiment, the memory 308 may be provided within the primary device 202. In one embodiment, the memory 308 may be provided within the system 204 being remote from the primary device 202. In yet one embodiment, the memory 308 may communicate with the processor 304 via a bus within the system 204. In yet one embodiment, the memory 308 may be located remote from the processor 304 and may be in communication with the processor 304 via a network. The memory 308 may include, but is not limited to, a non-transitory computer-readable storage media, such as various types of volatile and non-volatile storage media including, but not limited to, random access memory, read-only memory, programmable read-only memory, electrically programmable read-only memory, electrically erasable read-only memory, flash memory, magnetic tape or disk, optical media and the like.
[0073] In one example, the memory 308 may include a cache or random-access memory for the processor 304. In alternative examples, the memory 308 is separate from the processor 304, such as a cache memory of a processor, the system memory, or other memory. The memory 308 may be an external storage device or database for storing data. The memory 308 may be operable to store instructions executable by the processor 304. The functions, acts, or tasks illustrated in the figures or described may be performed by the programmed processor 304 for executing the instructions stored in the memory 308. The functions, acts, or tasks are independent of the particular type of instruction set, storage media, processor, or processing strategy and may be performed by software, hardware, integrated circuits, firmware, micro-code, and the like, operating alone or in combination. Likewise, processing strategies may include multiprocessing, multitasking, parallel processing, and the like.
[0074] In some embodiments, the plurality of modules 312 may be included within the memory 308. The memory 308 may further include a database to store data. The plurality of modules 312 may include a set of instructions that may be executed to cause the system 204, in particular, the processor 304 of the system 204, to perform any one or more of the methods / processes disclosed herein. The plurality of modules 312 may be configured to perform the steps of the present disclosure using the data stored in the database. For instance, the plurality of modules 312 may be configured to perform the steps disclosed in FIG. 5a to FIG 10-.
[0075] In an embodiment, each of the plurality of modules 312 may be a hardware unit which may be outside the memory 308. Further, the memory 308 may include an operating system for performing one or more tasks of the system 204, as performed by a generic operating system.
[0076] At least one of the plurality of modules 312 may be implemented through an AI model. A function associated with AI may be performed through the non-volatile memory, the volatile memory, and the processor 304.
[0077] The processor 304 may include one or a plurality of processors. At this time, one or a plurality of processors may be a general-purpose processor, such as a central processing unit (CPU), an application processor (AP), or the like, a graphics-only processing unit such as a graphics processing unit (GPU), a visual processing unit (VPU), and / or an AI-dedicated processor such as a neural processing unit (NPU).
[0078] The one or a plurality of processors control the processing of the input data in accordance with a predefined operating rule or artificial intelligence (AI) model stored in the non-volatile memory and the volatile memory. The predefined operating rule or artificial intelligence model is provided through training or learning.
[0079] Here, being provided through learning means that, by applying a learning technique to a plurality of learning data, a predefined operating rule or AI model of a desired characteristic is made. The learning may be performed in a device itself in which AI according to an embodiment is performed, and / or may be implemented through a separate server / system.
[0080] The AI model may consist of a plurality of neural network layers. Each layer has a plurality of weight values and performs a layer operation through calculation of a previous layer and an operation of a plurality of weights. Examples of neural networks include, but are not limited to, convolutional neural network (CNN), deep neural network (DNN), recurrent neural network (RNN), restricted Boltzmann Machine (RBM), deep belief network (DBN), bidirectional recurrent deep neural network (BRDNN), generative adversarial networks (GAN), and deep Q-networks.
[0081] The learning technique is a method for training a predetermined target device (for example, a robot) using a plurality of learning data to cause, allow, or control the target device to make a determination or prediction. Examples of learning techniques include, but are not limited to, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning.
[0082] According to the disclosure, in the system 204 of the primary device 202, the system 204 for transferring the call from the primary device 202 to the secondary device 206 may use an artificial intelligence model to recommend / execute a plurality of instructions by using the plurality of audio streams. The processor 304 may perform a pre-processing operation on the plurality of audio streams to convert into a form appropriate for use as an input for the artificial intelligence model. The artificial intelligence model may be obtained by training. Here, "obtained by training" means that a predefined operation rule or artificial intelligence model configured to perform a desired feature (or purpose) is obtained by training a basic artificial intelligence model with multiple pieces of training data by a training technique. The artificial intelligence model may include a plurality of neural network layers. Each of the plurality of neural network layers includes a plurality of weight values and performs neural network computation by computation between a result of computation by a previous layer and the plurality of weight values.
[0083] Reasoning prediction is a technique of logically reasoning and predicting by determining information and includes, e.g., knowledge-based reasoning, optimization prediction, preference-based planning, or recommendation.
[0084] In one example, the modules 312 may include an establishing module 314, a resetting module 316, a receiving module 318, a storing module 320, a de-packetizing module 322, a filtering module 324, a separating module 326, a training module 328, a feeding module 330, a placing module 332, a converting module 334, a relaying module 336, a mixing module 338, a sampling module 340, a computing module 342, an obtaining module 344, a transmitting module 346, and a packetizing module 348. Each of the modules 314-348 are in communication with each other. Further, each of the modules 314-348 may be in communication with the processor 304.
[0085] Further, the present invention also contemplates a computer-program product that includes instructions or receives and executes instructions responsive to a propagated signal. Further, the instructions are transmitted or received over the network via a communication port or interface or using a bus (not shown). The communication port or interface may be a part of the processor 304 or may be a separate component. The communication port may be created in software or may be a physical connection in hardware. The communication port may be configured to connect with the network, external media, the display, or any other components in the system 204. The connection with the network may be a physical connection, such as a wired ethernet connection, or may be established wirelessly. Likewise, the additional connections with other components of the system 204 may be physical or may be established wirelessly. The network may alternatively be directly connected to the bus. For the sake of brevity, the architecture, and standard operations of the memory 308 and the processor 304 are not discussed in detail.
[0086] In an embodiment, the computer-program product, having machine-readable instructions stored therein, when executed by the processor 304, causes the processor 304 to perform an operation for transferring the call from the primary device 202 to the secondary device 206. The details on the operation(s) performed by the processor 304 have been elaborated in subsequent paragraphs at least with reference to FIG. 5a to FIG. 10.
[0087] The processor 304, in conjunction with the modules 314-348 may be configured to perform specific operations explained in subsequent paragraphs.
[0088] FIG. 4illustrate an overview of a specific operation of the system 204 for transferring the call from the primary device 202 to the secondary device 206, in accordance with an embodiment of the present disclosure.
[0089] In an embodiment, initially, at step 402, a first call may be connected between a caller and the primary device 202 through the network. Thereafter, the primary device 202 receives a second call from another caller, while the primary device 202 is busy on the first call. Thus, a plurality of calls may be connected on the primary device 202. Further, at step 404, a plurality of sessions may be established corresponding to the plurality of calls, by a session controller, on the primary device 202. At step 406, the system 204 may receive a first set of Real-time Transport Protocol (RTP) packets from the network corresponding to the established plurality of sessions on the primary device 202, where each RTP packet may have a contributing source (CSRC) value. Once the first set of RTP packets are received, then after performing operations like filtering, separation, etc. at step 408, a plurality of audio streams may be generated. Further, at step 410, the system 204 may relay a second set of RTP packets associated with at least one audio stream of the plurality of audio streams from the primary device 202 to the secondary device 206. Further, the system 204 may receive a third set of RTP packets from the secondary device 206, based on the relaying of the second set of RTP packets. Further, the third set of RTP packets may be de-packetize to extract encoded audio frames. Then, the encoded audio frames are decoded by a decoder of the system 204. Thereafter, at step 412, the system 204 may mix decoded audio frames with a MIC audio and encode the decoded audio frames. Further, at step 414, the system 204 may packetize the encoded audio frames into a fourth set of RTP packets, such that the fourth set of RTP packets may be transferred to the network by at least one of the plurality of sessions for enabling the transferring of the call from the primary device 202 to the secondary device 204.
[0090] Further, the operation of the system 204 for transferring the call from the primary device 202 to the secondary device 206 may be explained in detail in subsequent paragraphs with reference to FIG. 5a to FIG. 10 in conjunction with FIG. 4.
[0091] FIG. 5a and FIG. 5b illustrate a call connection in the primary device 202, in accordance with an embodiment of the present disclosure. FIGs. 6a-6c illustrate an establishment of the plurality of sessions by the system 204, in accordance with an embodiment of the present disclosure. FIG. 7 illustrate a decoding and separation of encoded audio frames by the system 204, in accordance with an embodiment of the present disclosure. FIG. 8 illustrates an example of decoding and separating of the encoded audio frames by the system 204, in accordance with an embodiment of the present disclosure. FIGs. 9a-9f illustrate a plurality of examples of decoding and separating of the encoded audio frames with respect to the primary device 202, the first call 502, and the second call 606, respectively, in accordance with an embodiment of the present disclosure. FIG. 10 illustrates a mixing of decoded audio frames by an audio handler 1000 on the primary device 202, in accordance with an embodiment of the present disclosure.
[0092] In the present disclosure, FIG. 5a to FIG. 10 along with FIG. 4 are explained in conjunction for the sake of brevity.
[0093] In an embodiment, referring to step 402 and FIGs. 5a and 5b, the plurality of calls may be connected between the plurality of callers and the primary device 202. In such an embodiment, the caller device may need to negotiate an appropriate set of parameters (codec) for media delivery with the primary device 202 through the network using session description protocol (SDP) syntax. The caller device may list the media capabilities in the SDP offer of INVITE and send to the network. The primary device 202 lists associated media capabilities in the 200 OK response to the INVITE. Further, one or more parameters to connect the plurality of calls may be provided below:
[0094] Important Media ParametersCodec ListEVS, AMR-WB, AMR-NB, OPUSMedia directionSend / receiveMedia descriptionMedia type, port number, transport protocol and format
[0095] In an embodiment, referring to FIG. 6a and step 404, the establishing module 314 may establish the plurality of sessions on the primary device 202 corresponding to the plurality of calls connected on the primary device 202 through the network. The establishing module 314 along with the session controller of the primary device 202 may be configured to establish the plurality of sessions on the primary device 202.
[0096] In such an embodiment, the establishing module 314 may establish a zeroth session 602 from the plurality of sessions, based on the first call 502 from the plurality of calls, as shown in Table 2. The zeroth session 602 may be associated with a synchronization source (SSRC) value corresponding to a CSRC value. In an instance, when the primary device 202 accepts the first call 502, in that case, the secondary device 206 may show a pull notification. There may not be any session created in the secondary device 206 since the call is not accepted. Further, the second call 606 may be successfully negotiated with the primary device 202. In that case, a call alert of the second call 606 may be visible on the primary device 202. Thus, the primary device 202 may be busy on the first call 502 and also in ringing state because of the second call 606. Further, a user of the second call 606 may be notified "user of the primary device 202 is on another call, please wait or call again later". Lastly, no new session may be created. Therefore, the zeroth session 602 may be represented as:
[0097] ReceiveSendProcessSession 0CD1CD1Play
[0098] The establishing module 314 may establish a first session 604 from the plurality of sessions based on a second call 606 from the plurality of calls as shown in Table 3. The second call 606 may be transferred on the secondary device 206 such that the secondary device 206 receives the second call 606 while the zeroth session 502 is on hold. The first session 604 may be associated with another SSRC value corresponding to another CSRC value. In an instance, when the first call 504 is active on the primary device 202 and the primary device 202 receives the second call 606, in that case, the primary device 202 may show one or more secondary devices connected with the primary device 202 to the user. The user of the primary device 202 chooses to pass the second call 606 to the secondary device 206, while the first call 502 is active on the primary device 202. Thus, when the user chooses to pass the second call 606, the first call 502 becomes on hold. Further, the first session 604 for the second call 606 may be created. Therefore, the first session 604 may be represented as:
[0099] ReceiveSendProcessSession 0HoldHoldHoldSession 1CD2CD2Play
[0100] The establishing module 314 may establish a second session 608 from the plurality of sessions, by merging the zeroth session 602 and the first session 604, where the second call 606 may be transferred to the secondary device 206 through the network as shown in Table 4.
[0101] ReceiveSendProcessSession 0ResetResetResetSession 1ResetResetResetSession 2CD1 / CD2CD1 / CD2Play CD1 / Forward CD2
[0102] The second session 608 may include a CSRC list. The CSRC list may contain SSRC value corresponding to the zeroth session 602 and the first session 604, respectively.
[0103] Further, the resetting module 316 may be configured to reset the zeroth session 602 and the first session 604 to relay the second set of RTP packets from the primary device 202 to the secondary device 206 and receive the third set of packets from the secondary device 206 as shown at Table 5. In an instance, the call alert of the second call 606 may be sent to the secondary device 606. Further, another user may accept the second call 606. As soon as the second call 606 is accepted on the secondary device 606, a new session is created in the primary device 202 for the conference call. Further, the resetting module 316 along with the session controller may reset the zeroth session 602 and the first session 604 and use for relaying the call to / from the secondary device 206. The table for resetting is provided below:
[0104] ReceiveSendProcessSession 0SDSession 2RelaySession 1Session 2SDRelaySession 2CD1 / CD2CD1 / CD2Play CD1 / Forward CD2
[0105] In an embodiment, step 406, the receiving module 318 may receive the first set of RTP packets from the network corresponding to the established plurality of sessions on the primary device. In such an embodiment, the received first set of RTP packets may be arranged in an incremental sequential order. Each RTP packet may include a CSRC value based on the CSRC value of each session. Further, the storing module 320 may store the CSRC value of the received first set of RTP packets, in a priority queue, in the session controller of the primary device 202 as shown in step 404.
[0106] In an embodiment, again referring to step 406, the de-packetizing module 322 may be configured to de-packetize each of the received first set of RTP packets into the CSRC value included in each RTP packet and encoded audio frames based on each connected call. Each CSRC value corresponds to an associated session of the plurality of sessions. In such an embodiment, the de-packetizing module 322 may de-packetize each of the received first set of RTP packets into a header and a payload on the primary device 202. The header includes the CSRC value included in each RTP packet. Further, the header also includes another value, for example, version (V), padding (P), extension bit (X), contributing source count (CC), payload type (PT), time stamp, SSRC value corresponding to CSRC value in the CSRC list, sequence number, etc. The CC indicates several sources, based on several audios, contributing to the payload. The time stamp may be used to synchronize time between a caller and a receiver. The payload includes the encoded audio frames based on each connected call.
[0107] In an embodiment, the separating module 326 may separate a generated decoded mixed audio into the plurality of audio streams 706 corresponding to the plurality of calls, on the primary device 202, based on the CSRC value included in each RTP packet. The decoded mixed audio frame may be generated based on the encoded audio frames.
[0108] Particularly, referring to step 408 and FIG. 7, after de-packetizing each of the received first set of RTP packets, the filtering module 324 may filter the encoded audio frames based on the CSRC value included in each RTP packet to generate the decoded mixed audio on the primary device 202. In such an embodiment, the decoded mixed audio may be generated by a decoder 702 of a packet controller, without departing from the scope of the present disclosure. In one embodiment, the filtering module 324 may filter the encoded audio frames directly to generate the decoded mixed audio, without departing from the scope of the present disclosure. Further, the separating module 326 may separate the generated decoded mixed audio into the plurality of audio streams 706 by a neural separation module 704 of the packet controller of the primary device 202.
[0109] In an embodiment, to separate the generated decoded mixed audio into the plurality of audio streams, the training module 328 may train the neural separation model 704 based on another audio stream from the plurality of audio streams 706. In an exemplary embodiment, another audio stream may have a predetermined length in a range of 495 ms to 500 ms. The feeding module 330 may feed the generated decoded mixed audio to the trained neural separation model 704. The placing module 332 may place another audio stream, by the trained neural separation model 704, on a first speaker to recognize the first speaker on the primary device 202. The first speaker includes a CSRC value same as the SSRC value of the zeroth session 602. The placing module 332 may place the at least one audio, by the trained neural separation model 804, on a second speaker of the secondary device 206 to recognize the second speaker. The second speaker includes a CSRC value same as the SSRC value of the first session 604.
[0110] In one example, referring to FIG. 8, the plurality of sessions having the SSRC value is configured to separate the plurality of audio streams 706 based on each SSRC value. The separating module 326 may separate the plurality of audio streams 706 into two / three different audios. Further, the placing module 332 may place at least two audio streams, by the trained neural separation model 704, on the first speaker to recognize the first speaker on the primary device 202. The placing module 332 may place another audio stream, by the trained neural separation model 704, on the second speaker of the secondary device 206 to recognize the second speaker, establishing clear differentiation between all the audio streams unlike as the known art, where the plurality of audio streams is not separated and also is not placed on different speakers of different devices, thus lacks in clear differentiation between the plurality of audio streams.
[0111] In another example, referring to FIG. 9a, in a specific scenario, when the primary device 202 receives the first call 502 from a first caller, in that case, with the help of the trained neural network 704, the audio stream is generated. Further, referring to FIG. 9b, in a conference scenario established by a network mixer, when the primary device 202 receives the second call 606 while the first call 502 is in progress, then in that case, with the help of the trained neural network 704, the plurality of audio streams is differentiated and generated accordingly based on the SSRC value of each session.
[0112] In yet another example, referring to FIG. 9c, in a normal scenario, the neural network may be trained on the audio stream of the primary device 202. Further, the audio stream may include CSRC value indicated by 3. Thereafter, referring to FIG. 9d, when the conference call is established between the user of the primary device 202, the user of the secondary device 206, the user on the second call 606, the user on the first call 502 by a network mixer, then in that case, only the audio stream from the primary device 202 may be audible to the user on the first call 502. Further, the other audio stream may be discarded, simultaneously.
[0113] In yet another example, referring to FIGs. 9e and 9f, when the second call 606 gets connected with the primary device 202, while the primary device 202 is busy on the first call 502. In that case, the primary device 202 and the first call 502 may be muted till the time instance, when the second call 606 gets received on the secondary device 206. Thereafter, once the second call 606 may be connected / received on the secondary device 206, in that case, the primary device 202 and the first call 502 may be unmuted.
[0114] In an embodiment, referring to step 410, after separating the generated decoded mixed audio, the converting module 334 may convert at least one audio stream from the plurality of audio streams on the primary device 202, to encoded audio frames. Particularly, in an embodiment, the converting module 334 may convert the at least one audio stream into the audio frames and further, an encoder may be configured to encode the audio frames. The encoded audio frames may be packetized by a packetizer and include the second set of RTP packets. The second set of RTP packets may include a header and a payload. Further, the header may include another value, for example, version (V), padding (P), extension bit (X), contributing source count (CC), payload type (PT), time stamp, SSRC value corresponding to CSRC value in the CSRC list, sequence number, etc. The CC indicates the number of sources, based on the number of audios, contributing to the payload. The time stamp may be used to synchronize time between the caller and the receiver.
[0115] In an embodiment, the relaying module 336 may relay the second set of RTP packets corresponding to encoded audio frames from the primary device 202 to the secondary device 206. Particularly, the first session 604 may receive the second set of RTP packets from the second session 608 and then, along with the relaying module 336 relays the second set of RTP packets to the secondary device 206. The encoded audio frames correspond to at least one audio stream from the plurality of audio streams 706. In such an embodiment, the relaying module 336 may relay the second set of RTP packets by one relay engine of a plurality of relay engines of the primary device 202.
[0116] In an embodiment, after relaying the second set of RTP packets, the receiving module 318 may receive, on the primary device 202, a third set of RTP packets corresponding to an encoded audio stream from the secondary device 206, based on the relayed encoded audio frames. Particularly, the receiving module 318 may receive the third set of RTP packets such that the third set of RTP packets may be stored in the zeroth session 602, is encoded, and then transferred the third set of RTP packets to the second session 608. In such an embodiment, the receiving module 318 may receive the third set of RTP packets by another relay engine of the plurality of relay engines of the primary device 202. Further, the de-packetizing module 322, along with a depacketizer, may de-packetize the third set of RTP packets into a header and a payload to extract encoded audio frames by another relay engine. The header may include another value, for example, version (V), padding (P), extension bit (X), contributing source count (CC), payload type (PT), time stamp, SSRC value corresponding to CSRC value in the CSRC list, sequence number, etc. The CC indicates the number of sources, based on the number of audios, contributing to the payload. The time stamp may be used to synchronize time between the caller and the receiver.
[0117] Further, the encoded audio frames are decoded by another relay engine, particularly, by a decoder as per the audio coding standard. The header includes a CSRC value included in each RTP packet. The payload includes encoded audio frames based on the encoded audio stream.
[0118] Referring to FIG. 10 and step 412, the mixing module 338 may mix the decoded audio frames, in pulse-code modulation (PCM) profile, with the MIC audio, in the PCM profile, by an audio handler 1000 of the primary device 202. Further, to mix the decoded audio frames with the MIC audio by the audio handler 1000, the sampling module 340 may sample 1002 the MIC audio and the decoded audio frames at a predetermined frequency. In an embodiment, the predetermined frequency may be approximately 16 kHz & 16 bits / sample. The computing module 342 may compute sampled MIC audio and the decoded audio frames to generate an average value 1008 of the sampled MIC audio and the decoded audio frames. Particularly, in the audio handler, a digital mixing technique 1006 may be used for checking normalization, mixing or adding the sampled audios, reducing volume of each audio, soft clipping each audio, etc. Further, the computing module 342 may compute the sampled MIC audio and the decoded audio frames to generate the average value 1008. The obtaining module 344 may obtain mix pulse-code modulation (PCM) 1010 based on the generated average value 1006. The placing module 332 may place the obtained mix audio PCM in a mixed audio buffer of the primary device 202 for mixing the decoded audio frames with the MIC audio.
[0119] Further, step 414, after mixing, the transmitting module 346 may transmit the mixed decoded audio frames to a media handler of the primary device 202 such that the media handler encodes the decoded audio frames. Particularly, an encoder of the media handler encodes the decoded audio frames.
[0120] The packetizing module 348 may packetize the encoded audio frames into the fourth set of RTP packets, in a packetizer, such that the fourth set of RTP packets may be transferred to the network by at least one session from the plurality of sessions. The fourth set of RTP packets may include a header and a payload. Further, the header may include another value, for example, version (V), padding (P), extension bit (X), contributing source count (CC), payload type (PT), time stamp, SSRC value corresponding to CSRC value in the CSRC list, sequence number, etc. The CC indicates the number of sources, based on the number of audios, contributing to the payload. The time stamp may be used to synchronize time between the caller and the receiver.
[0121] In such an embodiment, the packetizing module 348 may packetize the encoded audio frames into the fourth set of RTP packets such that the fourth set of RTP packets may be transferred to the network by the second session 608 to enable the transferring of the call from the primary device 202 to the secondary device 206.
[0122] FIG. 11 illustrates a method 1100 performed by the system 204 for transferring of the call from the primary device 202 to the secondary device 206, the secondary device 206 being connected to the primary device 202 via the server, in accordance with an embodiment of the present disclosure.
[0123] The method 1100 can be performed by programmed computing devices, for example, based on instructions retrieved from non-transitory computer-readable media. The computer-readable media can include machine-executable or computer-executable instructions to perform all or portions of the described method. The computer-readable media may be, for example, digital memories, magnetic storage media, such as magnetic disks and magnetic tapes, hard drives, or optically readable data storage media.
[0124] The method 1100 includes a series of operations shown at step 1102 through step 1110 of FIG. 11. The method 1100 may be performed by the system 204 in conjunction with the modules 312, the details of which are explained in conjunction with FIG. 3 to FIG. 10, and the same are not repeated here for the sake of brevity in the present disclosure. The method begins at step 1102.
[0125] At step 1102, the method 1100 includes establishing a plurality of sessions on the primary device 202 corresponding to the plurality of calls connected on the primary device 202 through the network. The method 1100 includes establishing the zeroth session 602 from the plurality of sessions, based on the first call from the plurality of calls. The zeroth session 602 may be associated with the SSRC value corresponding to the CSRC value. The method 1100 includes establishing the first session 604 from the plurality of sessions based on the second call from the plurality of calls. The second call may be transferred on the secondary device 206 such that the secondary device 206 receives the second call while the zeroth session 602 may be on hold. The first session 604 may be associated with another SSRC value corresponding to another CSRC value. The method 1100 includes establishing the second session 608 from the plurality of sessions, by merging the zeroth session 602 and the first session 604, where the second call is transferred to the secondary device 206 through the network. The method 1100 includes resetting the zeroth session 602 and the first session 604 to relay the second set of RTP packets from the primary device 202 to the secondary device 206 and receive the third set of packets from the secondary device 206.
[0126] At step 1104, the method 1100 includes receiving the first set of RTP packets from the network corresponding to the established plurality of sessions on the primary device 202. The received first set of RTP packets may be arranged in an incremental sequential order. The method 1100 includes storing the CSRC value of the received first set of RTP packets in the session controller of the primary device 202.
[0127] At step 1106, the method 1100 includes de-packetizing each of the received first set of RTP packets into a CSRC value included in each RTP packet and encoded audio frames based on each connected call. Each CSRC value corresponds to an associated session of the plurality of sessions. The method 1100 includes de-packetizing each of the received first set of RTP packets into the header and the payload, on the primary device 202. The header may include the CSRC value included in each RTP packet and the payload includes the encoded audio frames based on each connected call.
[0128] At step 1108, the method 1100 includes separating the generated decoded mixed audio, generated based on the encoded audio frames, into the plurality of audio streams 706 corresponding to the plurality of calls, on the primary device 202, based on the CSRC value included in each RTP packet. Particularly, after de-packetizing each of the received first set of RTP packets, the method 1100 includes filtering the encoded audio frames based on the CSRC value included in each RTP packet to generate the decoded mixed audio on the primary device 202. The method 1100 includes separating the generated decoded mixed audio into the plurality of audio streams 706 by a neural separation model 704 of the packet controller of the primary device 202.
[0129] For separating, the method 1100 includes training the neural separation model 704 based on another audio stream from the plurality of audio streams 706 having a predetermined length in the range of 495 ms to 500 ms. The method 1100 includes feeding the generated decoded mixed audio to the trained neural separation model 704. The method 1100 includes placing another audio stream, by the trained neural separation model 704, on the first speaker to recognize the first speaker on the primary device 202. The first speaker includes the CSRC value same as the SSRC value of the zeroth session 602. The method 1100 includes placing the at least one audio, by the trained neural separation model 704, on the second speaker of the secondary device 206 to recognize the second speaker. The second speaker includes the CSRC value same as the SSRC value of the first session 604.
[0130] After separating the generated decoded mixed audio, the method 1100 includes converting at least one audio stream from the plurality of audio streams 706, on the primary device 202, to encoded audio frames. The encoded audio frames may be packetized and include the second set of RTP packets.
[0131] At step 1110, the method 1100 includes relaying, the second set of RTP packets corresponding to encoded audio frames from the primary device 202 to the secondary device 206. The encoded audio frames correspond to at least one audio stream from the plurality of audio streams 706. The method 1100 includes relaying the second set of RTP packets by one relay engine of the plurality of relay engines of the primary device 202.
[0132] After relaying the second set of RTP packets, the method 1100 includes receiving, on the primary device 202, the third set of RTP packets corresponding to the encoded audio stream from the secondary device 206, based on the relayed encoded audio frames. Further, for receiving the third set of RTP packets, the method 1100 includes receiving the third set of RTP packets by another relay engine of the plurality of relay engines of the primary device 202.
[0133] The method 1100 includes de-packetizing the third set of RTP packets into the header and the payload to extract encoded audio frames by another relay engine and the encoded audio frames is decoded by another relay engine. The header includes the CSRC value included in each RTP packet, and the payload includes encoded audio frames based on the encoded audio stream. The method 1100 includes mixing the decoded audio frames with the MIC audio by the audio handler 1000 of the primary device 202. The method 1100 includes transmitting the mixed decoded audio frames to the media handler of the primary device 202 such that the media handler encodes the decoded audio frames. The method 1100 includes packetizing the encoded audio frames into the fourth set of RTP packets such that the fourth set of RTP packets may be transferred to the network by at least one session from the plurality of sessions.
[0134] For mixing of the decoded audio frames with the MIC audio by the audio handler 1000, the method 1100 includes sampling the MIC audio and the decoded audio frames at the predetermined frequency. The method 1100 includes computing sampled MIC audio and the decoded audio frames to generate the average value 1008 of the sampled MIC audio and the decoded audio frames. The method 1100 includes obtaining the mix audio pulse-code modulation (PCM) based on the generated average value 1008. The method 1100 includes placing the obtained mix audio PCM in the mixed audio buffer of the primary device 202 for mixing the decoded audio frames with the MIC audio.
[0135] Further, packetizing the encoded frames, the method 1100 includes packetizing the encoded audio frames into the fourth set of RTP packets such that the fourth set of RTP packets may be transferred to the network by the second session 608 for enabling transferring of the call from the primary device 202 to the secondary device 208.
[0136] Further, a plurality of use cases is provided in the subsequent paragraphs.
[0137] , A first subject is speaking with a second subject initially, on the primary device 202. Now, the first subject receives an incoming call from a third subject. In that case, the first subject forwards the receiving call to the secondary device 206 while maintaining the initial call in progress.
[0138] When the first subject is busy on the call with the second subject and wants to share the video via the connected secondary device 206. In that case, he / she may be able to do so. In such cases, other media is relayed on the secondary device 206. With the fifth Generation (5G), new upcoming technologies such as IMS Data Channel are developed. While traditional calls transmit only voice (and video) media, the 5G new calling with IMS Data channel also transmits other media, such as text, geolocation, documents, etc.
[0139] The 5G new calling enables the two subjects to interact with each other during the call, such as screen sharing, marking, whiteboard, AR expression, gesture effect, etc., so that the subject on the primary device 202 may experience these features on his / her secondary idle device (such as Tab and Laptop) 206 even while being on an active call.
[0140] Unlike initially, when the first subject is busy on the call with the second subject and wants to share the video via the connected secondary device 206. However, in that case, he / she may not be able to do so because of the absence of the IMS Data channel.
[0141] The present system 204 and the method 1100 provides various technical advancements which are provided as below:
[0142] The system 204 and method 1100 as disclosed eliminate the need to keep multiple SIM to activate each device for receiving calls. This ensures the comfort of the user.
[0143] The system 204 and method 1100 ensure transferring of the incoming call from the primary device 202 to the secondary device 206 when the primary device 202 is busy on another call and the secondary device 206 does not have the SIM. This helps in improving the experience of enhanced calls. This configuration also ensures the engagement of multiple callers from a single primary device 202 via multiple secondary devices at the same time.
[0144] The system 204 and method 1100 as disclosed ensures that the user now has access to share documents and other data while being on an active call on the primary device 202.
[0145] According to an embodiment, the instructions may, the one or more computer programs further include computer-executable instructions that, when executed by the one or more processors (304) individually or collectively, cause the electronic device (for example, a primary device (202)) to transfer a call from a primary device (202) to a secondary device (206), the secondary device (206) being connected to the primary device (202) via a server
[0146] According to various embodiments described herein, an electronic device may be a device of one of various types. The electronic device may include, as non-limiting examples, a portable communication device (e.g., a smartphone, etc.), a computing device, a portable multimedia device, a portable medical device, a camera, a wearable device, or a home appliance. However, the electronic device is not limited to the examples described above.
[0147] It should be appreciated that various embodiments of the disclosure and the terms used therein are not intended to limit the technological features set forth herein to particular embodiments and include various changes, equivalents, or replacements for a corresponding embodiment. As used herein, "A or B," "at least one of A and B," "at least one of A or B," "A, B, or C," "at least one of A, B, and C," and "A, B, or C," each of which may include any one of the items listed together in the corresponding one of the phrases, or all possible combinations thereof. Terms such as "first," "second," or "initial" or "next" or "subsequent" may simply be used to distinguish the component from other components in question, and do not limit the components in other aspects (e.g., importance or order). It is to be understood that if a component (e.g., a first component) is referred to, with or without the term "operatively" or "communicatively," as "coupled with," "coupled to," "connected with," or "connected to" another component (e.g., a second component), it means that the component may be coupled with the other component directly (e.g., by wire), wirelessly, or via a third component.
[0148] As used in connection with various embodiments of the disclosure, the term "module" may include a unit implemented in hardware, software, or firmware, and may interchangeably be used with other terms, for example, "logic," "logic block," "part," or "circuitry." A module may be a single integral component, or a minimum unit or part thereof, adapted to perform one or more functions. For example, according to an embodiment, the module may be implemented in the form of an application-specific integrated circuit (ASIC).
[0149] Various embodiments set forth herein may be implemented as software (e.g., a program) including one or more instructions that are stored in a storage medium (e.g., internal memory or external memory) that is readable by a machine (e.g., an electronic device). For example, a processor of a device (e.g., the electronic device) may invoke at least one of the one or more instructions stored in the storage medium and execute it. This allows the machine to be operated to perform at least one function according to the at least one instruction invoked. The one or more instructions may include code generated by a complier or code executable by an interpreter. The machine-readable storage medium may be provided in the form of a non-transitory storage medium. Here, the term "non-transitory" simply means that the storage medium is a tangible device, and does not include a signal (e.g., an electromagnetic wave), but this term does not differentiate between where data is semi-permanently stored in the storage medium and where the data is temporarily stored in the storage medium.
[0150] According to various embodiments, a method according to an embodiment of the disclosure may be included and provided in a computer program product. The computer program product may be traded as a product between a seller and a buyer. The computer program product may be distributed in the form of a machine-readable storage medium (e.g., compact disc read-only memory (CD-ROM)), or be distributed (e.g., downloaded or uploaded) online via an application store (e.g., PlayStoreTM) or between two user devices (e.g., smart phones) directly. If distributed online, at least part of the computer program product may be temporarily generated or at least temporarily stored in the machine-readable storage medium, such as memory of the manufacturer's server, a server of the application store, or a relay server.
[0151] According to various embodiments, each component (e.g., a module or a program) of the above-described components may include a single entity or multiple entities, and some of the multiple entities may be separately disposed in different components. According to various embodiments, one or more of the above-described components or operations may be omitted, or one or more other components or operations may be added. Alternatively or additionally, a plurality of components (e.g., modules or programs) may be integrated into a single component. In such a case, according to various embodiments, the integrated component may still perform one or more functions of each of the plurality of components in the same or similar manner as they are performed by a corresponding one of the plurality of components before the integration. According to various embodiments, operations performed by the module, the program, or another component may be carried out sequentially, in parallel, repeatedly, or heuristically, or one or more of the operations may be executed in a different order or omitted, or one or more other operations may be added.
[0152] While the disclosure has been shown and described with reference to various embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the disclosure as defined by the appended claims and their equivalents.
Claims
1.An electronic device (202) for transferring of a call from the electronic device (202) to a secondary device (206), the secondary device (206) being connected to the electronic device (202) via a server, the electronic device (202) comprising:one or more processors (304); anda memory (308) storing instructions that, when executed by the one or more processors (304), cause the device to:establish a plurality of sessions on the electronic device (202) corresponding to a plurality of calls connected on the electronic device (202) through a network;receive a first set of RTP packets from the network corresponding to the established plurality of sessions on the electronic device (202);de-packetize each of the received first set of RTP packets into a contributing source, CSRC, value included in each RTP packet and encoded audio frames based on each connected call, wherein each CSRC value corresponds to an associated session of the plurality of sessions;generate a decoded mixed audio based on the encoded audio frames;separate the decoded mixed audio into a plurality of audio streams (706) corresponding to the plurality of calls based on the CSRC value included in each RTP packet; andrelay, a second set of RTP packets corresponding to encoded audio frames from the electronic device (202) to the secondary device (206), wherein the encoded audio frames correspond to at least one audio stream of the plurality of audio streams (706).2.The electronic device (202) of claim 1, wherein to establish the plurality of sessions, the instructions, when executed by the one or more processors (304), cause the device to:establish a zeroth session (602) from the plurality of sessions, based on a first call from the plurality of calls, wherein the zeroth session is associated with a SSRC value corresponding to a CSRC value;establish a first session (604) from the plurality of sessions based on a second call from the plurality of calls, wherein the second call is transferred on the secondary device (206) such that the secondary device (206) receives the second call while the zeroth session (602) is on hold, wherein the first session (604) is associated with another SSRC value corresponding to another CSRC value;establish a second session (608) from the plurality of sessions, by merging the zeroth session (602) and the first session (604), where the second call is transferred to the secondary device (206) through the network; andreset the zeroth session (602) and the first session (604) to relay the second set of RTP packets from the electronic device (202) to the secondary device (206) and receive a third set of packets from the secondary device (206).3.The electronic device (202) of claim 1 or claim 2, wherein, the received first set of RTP packets are arranged in an incremental sequential order.4.The electronic device (202) of any one of the preceding claims, the instructions, when executed by the one or more processors (304), cause the device to:store the CSRC value of the received first set of RTP packets in a session controller of the electronic device (202).5.The electronic device (202) of any one of the preceding claims, wherein to de-packetize each of the received first set of RTP packets, the instructions, when executed by the one or more processors (304), cause the device to:de-packetize each of the received first set of RTP packets into a header and a payload, on the electronic device (202), wherein the header includes the CSRC value included in each RTP packet, and the payload includes the encoded audio frames based on each connected call.6.The electronic device (202) of any one of the preceding claims, wherein, after de-packetizing each of the received first set of RTP packets, the instructions, when executed by the one or more processors (304), cause the device to:filter the encoded audio frames based on the CSRC value included in each RTP packet to generate the decoded mixed audio on the electronic device (202); andseparate the decoded mixed audio into the plurality of audio streams (706) by a neural separation model (704) of a packet controller of the electronic device (202).7.The electronic device (202) of any one of the preceding claims, wherein to separate the decoded mixed audio into the plurality of audio streams (706), the instructions, when executed by the one or more processors (304), cause the device to:train the neural separation model (704) based on another audio stream from the plurality of audio streams (706) having a predetermined length in a range of 495 ms to 500 ms;feed the decoded mixed audio to the trained neural separation model (704);place another audio stream, by the trained neural separation model (704), on a first speaker to recognize the first speaker on the electronic device (202), wherein the first speaker includes a CSRC value same as a SSRC value of a zeroth session (602) from the plurality of sessions; andplace the at least one audio, by the trained neural separation model (704), on a second speaker of the secondary device (206) to recognize the second speaker, wherein the second speaker includes a CSRC value same as a SSRC value of a first session (604) from the plurality of sessions.8.The electronic device (202) of any one of the preceding claims, wherein after separating the decoded mixed audio, the instructions, when executed by the one or more processors (304), cause the device to:convert at least one audio stream from the plurality of audio streams (706), on the electronic device (202), to encoded audio frames, wherein the encoded audio frames are packetized and include the second set of RTP packets;9.The electronic device (202) of any one of the preceding claims, wherein to relay the second set of RTP packets, the instructions, when executed by the one or more processors (304), cause the device to:relay the second set of RTP packets by one relay engine of a plurality of relay engines of the electronic device (202).10.The electronic device (202) of any one of the preceding claims, wherein after relaying the second set of RTP packets, the instructions, when executed by the one or more processors (304), cause the device to:receive, on the electronic device (202), a third set of RTP packets corresponding to an encoded audio stream from the secondary device (206), based on the relayed encoded audio frames.11.The electronic device (202) of any one of the preceding claims, wherein to receive the third set of RTP packets, the instructions, when executed by the one or more processors (304), cause the device to:receive the third set of RTP packets by another relay engine of a plurality of relay engines of the electronic device (202).12.The electronic device (202) of any one of the preceding claims, wherein the instructions, when executed by the one or more processors (304), cause the device to:de-packetize the third set of RTP packets into a header and a payload to extract encoded audio frames by another relay engine and the encoded audio frames is decoded by another relay engine, wherein the header includes a CSRC value included in each RTP packet, and the payload includes encoded audio frames based on the encoded audio stream;mix the decoded audio frames with a MIC audio by an audio handler (1000) of the electronic device (202);transmit the mixed decoded audio frames to a media handler of the electronic device (202) such that the media handler encodes the decoded audio frames; andpacketize the encoded audio frames into a fourth set of RTP packets such that the fourth set of RTP packets is transferred to the network by at least one session from the plurality of sessions.13.The electronic device (202) of any one of the preceding claims, wherein to mix the decoded audio frames with the MIC audio by the audio handler (1000), the instructions, when executed by the one or more processors (304), cause the device to:sample the MIC audio and the decoded audio frames at a predetermined frequency;compute sampled MIC audio and the decoded audio frames to generate an average value of the sampled MIC audio and the decoded audio frames;obtain mix audio pulse-code modulation (PCM) based on the generated average value (1008); andplace the obtained mix audio PCM in a mixed audio buffer of the electronic device (202) for mixing the decoded audio frames with the MIC audio.14.The electronic device (202) of any one of the preceding claims, wherein the instructions, when executed by the one or more processors (304), cause the device to:packetize the encoded audio frames into the fourth set of RTP packets such that the fourth set of RTP packets is transferred to the network by a second session (608) from the plurality of sessions for enabling transferring of the call from the electronic device (202) to the secondary device (206).15.A method (1100) for transferring of a call from a primary device (202) to a secondary device (206), the secondary device (206) being connected to the primary device (202) via a server, the method (1100) comprising:establishing (1102) a plurality of sessions on the primary device (202) corresponding to a plurality of calls connected on the primary device (202) through a network;receiving (1104) a first set of RTP packets from the network corresponding to the established plurality of sessions on the primary device (202);de-packetizing (1106) each of the received first set of RTP packets into a contributing source, CSRC, value included in each RTP packet and encoded audio frames based on each connected call, wherein each CSRC value corresponds to an associated session of the plurality of sessions;separating (1108) a generated decoded mixed audio, generated based on the encoded audio frames, into a plurality of audio streams (706) corresponding to the plurality of calls, on the primary device (202), based on the CSRC value included in each RTP packet; andrelaying (1108), a second set of RTP packets corresponding to encoded audio frames from the primary device (202) to the secondary device (206), wherein the encoded audio frames correspond to at least one audio stream from the plurality of audio streams (706).
Citation Information
Patent Citations
Conferencing System Including a Remote Microphone and Method of Using the Same
US20150201082A1
Method, Device, and System to Notify a Call Transfer Event from a First Device to a Second Device
US20180091655A1
Switch controller for separating multiple portions of call
US20200014732A1
Media packet forwarding method, forwarding server, and storage medium
US20210306274A1