Conference where mixing is time controlled by a rendering device

A telecommunications terminal hosts a conference mixer adapted to enable an at least audio conference between a first conference peer and at least two further conference peers. The conference mixer includes for each of the at least two further conference peers, a respective first data buffer configured to buffer portions of at least an audio data stream received from the respective conference peer; a first audio data stream portions mixer fed by the first data buffers and configured to: a) get audio data stream portions buffered in the first data buffers; b) mix the audio data stream portions from the first data buffers to produce a first mixed audio data portion; and c) feed the first mixed audio data portion to a rendering device of the telecommunications terminal, wherein the first audio data stream portions mixer is configured to perform operations a), b) and c) upon receipt of a notification from the rendering device indicating that the rendering device is ready to render a new mixed audio data portion.

CROSS REFERENCE TO RELATED APPLICATION

This application is a national phase application based on PCT/EP2006/012598, filed Dec. 29, 2006.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention generally relates to the field of telecommunications, and particularly to audio or audio/video conferencing. Specifically, the invention concerns a telecommunications terminal hosting an audio, or an audio/video conference mixer.

2. Description of the Related Art

In the field of telecommunications, the diffusion of Voice over Internet Protocol (VoIP) services, and of devices supporting them, is growing rapidly. A similar rapid growth is experienced by video communication (VDC) services and supporting devices.

Most often, services of this kind involve two intercommunicating peers, but an interesting extension is represented by “virtual” audio and/or video conferencing, where more than two parties (“peers”) are involved in the audio and/or video communication session, and can interact with each other by listening/speaking and/or viewing.

Apparatuses that enable virtual audio and/or video conferences are known as “conference mixers”. Essentially, a conference mixer gathers the audio and/or video contents generated by local capturing devices (microphones, videocameras) provided in user terminals (the “endpoints”) at each of the conferencing parties, properly mixes the gathered audio and/or video contents, and redistributes the mixed contents to every party to the virtual conference.

Conventionally, conference mixers are apparatuses distinct and remote from the endpoints of the conferencing parties, being core network apparatuses (referred to as “Master Control Units”, shortly MCUs).

Solutions for incorporating conference mixing functions in the endpoints of the conference peers are known in the art.

For example, in the published patent application US 2003/0142662 a packet data terminal is disclosed, particularly a personal computer, personal digital assistant, telephone, mobile radiotelephone, network access device, Internet peripheral and the like, which initiates, coordinates and controls the provision of on-demand conference call services, with little or no network support. A digital-to-analog converter for converting first and second packet data stream into separate analog representation; a selective mixer manipulates the analog representations to provide a mixed output; a multiplexer circuit distributes the packet data stream to a plurality of call sessions.

SUMMARY OF THE INVENTION

The Applicant from one hand observes that the implementation of virtual audio or audio/video conference services based on the provision of dedicated core network equipments (the MCUs) is not satisfactory, mainly because it impacts the telephone/telecommunications network structure, and involves costs for the network operators. Thus, the Applicant believes that a different implementation of virtual conference services, in which an audio or audio/video conference mixing functionality is hosted at the endpoint of at least one of the peers engaged in the virtual audio or audio/video conference is better, because it has essentially no impact on the telephone/telecommunications network.

Nevertheless, the Applicant has observed that an important aspect that remains to be carefully considered is the reduction, as far as possible, of the end-to-end delay which is experienced by the peers engaged in a virtual conference.

The Applicant has tackled the problem of how to reduce the end-to-end delay in virtual audio or audio/video conference services to be enjoyed through a conference mixer hosted in an endpoint of one of the conference peers.

The Applicant has found that the end-to-end delay experienced in virtual audio or audio/video conferences can be reduced, provided that the mixing operations are timed by the rendering device(s) and/or the capturing device(s) of the endpoint hosting the conference mixer.

According to an aspect of the present invention, a telecommunications terminal is provided, hosting a conference mixer adapted to enabling an at least audio conference between a first conference peer and at least two further conference peers. The conference mixer comprises:for each of the at least two further conference peers, a respective first data buffer configured to buffering portions of at least an audio data stream received from the respective conference peer;a first audio data stream portions mixer fed by the first data buffers and configured to:a) get audio data stream portions buffered in the first data buffers;b) mix the audio data stream portions got from the first data buffers to produce a first mixed audio data portion; andc) feed the first mixed audio data portion to a rendering device of the telecommunications terminal,

wherein said first audio data stream portions mixer is configured to perform operations a), b) and c) upon receipt of a notification from said rendering device indicating that the rendering device is ready to render a new mixed audio data portion.

For the purposes of the present invention, by “audio conference” there is meant a virtual conference between three or more peers, including at least audio. Possibly, the audio conference could also include video, i.e. it could be an audio/video virtual conference.

According to another aspect of the present invention, a method of performing an at least audio conference between a first conference peer and at least two further conference peers, the method comprising:at a telecommunications terminal of the first conference peer, performing a first buffering of portions of at least an audio data stream received from each of the at least two further conference peer; andupon receipt of a notification from a rendering device of the telecommunications terminal, indicating that the rendering device is ready to render a new mixed audio data portion:mixing the audio data stream portions buffered in said first buffering, to produce the mixed audio data portion; andfeeding the mixed audio data portion to the rendering device.

DETAILED DESCRIPTION OF AN EMBODIMENT OF THE INVENTION

Referring to the drawings, inFIG. 1a scenario where the present invention is applicable is schematically shown. Reference numerals105a,105band105cdenote three persons engaged in an virtual audio conference, exploiting respective communication terminals110a,110band110c, like for example video-telephones, Personal Digital Assistants (PDAs), mobile phones, personal computers, interconnected through a telecommunication network115that may include a wireline and/or wireless telephone network, and a packet data network like the Internet.

The three persons (peers)105a,105band105cinvolved in the virtual audio conference can each talk to, and be seen by the other two peers, and each of the three peers can listen to and see the other two peers. This is made possible by a conference mixer, the main functionality of which is to provide “virtual conferencing” user experience.

It is pointed out that the choice of considering just three conferencing peers is merely dictated by reasons of description simplicity: the present invention is not so limited, and is applicable to any number of conferencing peers.

Referring toFIG. 2, the main components of an audio conference mixer according to an embodiment of the present invention are schematically shown.

The conference mixer, denoted205, is hosted by one of the terminals (endpoints) of the three peers engaged in the virtual audio conference, in the shown example at the endpoint110cof the peer105c(the “peer C”). It is sufficient that the endpoint of at least one of the peers involved in the virtual conference hosts the conference mixer (in general, the conference mixer may be hosted by the endpoint of the peer that initiates the virtual conference), however nothing prevents that a conference mixer is also hosted by one or more of the endpoints of the other peers.

The conference mixer205comprises a first mixer220configured to receive audio data streams225aand225c, respectively received from the endpoint110aof the peer105a(the “peer A”) and generated by the endpoint110cof the peer C, and to generate a mixed audio data stream225acto be sent to the endpoint110bof the peer105b(the “peer B”). The audio data streams225aand225care generated by capturing devices like microphones215aand215cof the endpoints110aand110c; at the endpoint110b, the mixed audio data stream225acis rendered by a rendering device like a loudspeaker210b.

The conference mixer further comprises a second mixer230, configured to receive the audio data stream225c, generated by the endpoint110cof the peer C, and an audio data stream225breceived from the endpoint110bof the peer B, and to generate a mixed audio data stream225bcto be sent to the endpoint110aof the peer A. The audio data stream225bis generated by a microphone215bof the endpoints110b; at the endpoint110a, the mixed audio data stream225bcis rendered by a loudspeaker210a.

The conference mixer further comprises a third mixer235, configured to receive the audio data stream225a, received from the endpoint110aof the peer A, and the audio data stream225b, received from the endpoint110bof the peer B, and to generate a mixed audio data stream225ab, rendered by a loudspeaker210cof the endpoint110c.

In particular, the audio data streams are in digital format, and the mixers are digital mixers.

It is pointed out that the number of data stream mixers of the conference mixer205, as well as the number of data streams that each of the mixers is configured to receive and mix, depend on the number of peers engaged in the virtual conference.

It is also worth pointing out that the operation performed by the conference mixer205differs from the operation performed by a MCU provided in the core network. The conference mixer205integrates the operations of grabbing, rendering and mixing in a single device (the device110c), while a MCU in the core network performs all the operation relevant to a rendering device in order to have access to the audio samples to be mixed, mixes them and transmits (possibly compressing) to the appropriate peer.

Referring toFIG. 3, there is schematically depicted the hardware structure of the endpoint110cthat hosts the conference mixer205. Essentially, it is the general structure of a data processing apparatus, with several units that are connected in parallel to an internal data communication bus305. In detail, a data processor (microprocessor or microcontroller)310controls the operation of the terminal110c; a RAM (Random Access Memory)315is directly used as a working memory by the data processor310, and a ROM (Read Only Memory)320stores the microcode (firmware) to be executed by the data processor310. A communication subsystem325includes hardware devices for handling at least the physical level of the communications over the telephone/telecommunications network115; a keyboard330is provided for dialing the telephone numbers; an audio/video subsystem335manages the loudspeaker/display device210cand the microphone/videocamera215c.

Passing toFIG. 4, the functional components of the conference mixer205are shown in greater detail. In particular,FIG. 4shows the partial content of the working memory315of the terminal110cduring a virtual conference between the peers A, B and C; thus, the functional blocks depicted inFIG. 4are to be intended as software/firmware modules, or instances of software/firmware modules. This is however not to be construed as a limitation of the present invention, which might be implemented totally in hardware, or as a combination of hardware and software/firmware.

Blocks405aand405brepresent instances of a grabbing multimedia software module, adapted to perform the tasks of grabbing the mixed audio data streams225bc′ and, respectively,225ac′, code them to obtain coded (i.e. compressed) data streams225bcand, respectively,225ac, and of transmitting them over the telephone/telecommunications network115to the endpoints110aand, respectively,110bof the peers A and B.

In a preferred embodiment of the present invention, the mixing operation of the audio data streams that generates the mixed audio data streams225bcand225acis performed in the uncompressed domain (on Pulse Code Modulated values); this avoids the problem of compatibility between different compression algorithms (for example G.723, AMR, G.722) that may have been negotiated between the different peers (in other words, peers A and C might have negotiated a compression algorithm different from that negotiated between the peers B and C). In this case, the grabbing multimedia software module instances405aand405bare also responsible of the encoding the mixed audio data streams225bcand225acin a respective, predetermined coding standard, that may be different for the different peers A and B of the virtual conference.

Blocks410aand410brepresent instances of a rendering multimedia software module adapted to perform the tasks (independent from the grabbing tasks performed by blocks405aand405b) of receiving the audio data streams225aand225b, respectively, transmitted by the endpoints110aand, respectively,110bover the telephone/telecommunications network115, decode the received audio data streams225aand225bto obtain decoded data streams225a′ and225b′, and render them through the loudspeaker210cof the endpoint110c.

The grabbing and rendering multimedia software module instances405a,405b,410aand410bare user-space applications, running at the application layer level in the endpoint110c. As known to those skilled in the art, the working memory of a data processor (like the RAM315of the terminal110c) can ideally be divided into two basic memory spaces: a “user space” and a “kernel space”. The user space is the memory region where the user software/firmware applications or executables reside and run. The kernel space is the memory region where the kernel software/firmware modules or executables reside; kernel software/firmware modules are software/firmware modules forming the core of an operating system which is started at the bootstrap of the data processor, and whose function is to provide an environment in which other programs can run, provide hardware services to them (like supplying memory and access to space on storage devices), schedule their execution and allow multiple processes to coexist.

Generally, in order to access audio capturing and playing (grabbing and rendering) resources (the microphone215c, the loudspeaker,210c), the grabbing and rendering multimedia software module instances405a,405b,410aand410bexploit dedicated library modules, typically user-space library modules.

As known to those skilled in the art, there are two possible approaches in accessing and using devices like microphones and loudspeakers: using library modules running in user space, or directly using kernel-space device drivers Application Program Interfaces (APIs). Library modules use device driver APIs to control the device of interest. Kernel-space device drivers are used when the operating system prevents user-space applications to access directly the hardware resources; normally this is related to the presence of hierarchical protection domains (or protection rings) in the operating system, acting as a protection method from application-generated faults. Device drivers can run in user space (and thus act as a user-space library modules) when the operating system does not implement protection rings concepts.

In an embodiment of the present invention, the conference mixer205is implemented as a user-space process or thread, preferably of high priority, running in the endpoint110c; in this case, the conference mixer205can replace the library modules used by the instances405a,405b,410aand410bof the user-space grabbing and rendering multimedia modules (application layer) to access the capturing and rendering audio resources210cand215c.

Alternatively, the conference mixer205might be implemented as a kernel-space device driver. In this case, the conference mixer205replaces the kernel device driver normally responsible of handling the audio grabbing and rendering operations.

Implementing the conference mixer functionality as a kernel-space device driver allows better exploiting the low latency benefit of treating data within an interrupt service routine, and avoiding charging the system with high priority user space threads/processes.

InFIG. 4, line415indicates an API exposed by the conference mixer205, through which it can be accessed by the grabbing and rendering multimedia software module instances405a,405b,410aand410b. The API415replicates the same functionalities provided by the library modules used to access the I/O resources210cand215c. The behavior of the multimedia rendering and grabbing module instances405a,405b,410aand410bdoes not need to be changed in order to allow them interact with the conference mixer205(whose presence is thus transparent to the multimedia rendering and grabbing module instances405a,405b,410aand410b).

The conference mixer205comprises (in the example herein considered of virtual conference involving three peers) three audio data stream chunk mixers420,425and430, adapted to mix portions (or chunks) of the audio data streams. Two data buffers420-1and420-2,425-1and425-2, and430-1and430-2are operatively associated with each of the mixers420,425and430. Data buffers420-1and425-1are the data contribution buffers provided in respect of the audio data streams coming from the peers A and, respectively, B, for grabbing purposes. Data buffers420-2and425-2are the data recipient buffers for the mixed audio data streams to be sent to the peers B and, respectively, A. Data buffers430-1and430-2are the mixer contribution buffers for the audio data streams received from the peers A and B, respectively, for rendering purposes.

In particular, the mixers420,425and430are digital mixers.

In case more than three peers are engaged in the virtual conference, the number of mixers and associated buffers increases; in particular, for each additional peer participating to the virtual conference, a mixer like the mixer420, with an associated pair of buffers like the buffers420-1and420-2needs to be added; also, a buffer like the buffer430-1or430-2has to be added for each additional peer.

Reference numeral435denotes an audio rendering procedure, for sending audio data streams chunks ready to be rendered to the loudspeaker210c, for rendering them. Reference numeral440denotes an audio capturing procedure, for receiving audio data captured by the microphone215c.

In case the conference mixer205is implemented as a user-space process, the mixing operations performed by the mixers420,425and430may be implemented as high priority threads/processes. For high priority processes it is intended threads/processes running at a priority higher than the normal tasks. For the purposes of the present invention, high priority is intended to mean the highest possible priority (closest to real-time priority), that does not jeopardize the system stability. Alternatively, if the conference mixer205is a kernel-space device driver, the mixing operations performed by the mixers420,425and430may be implemented as interrupt service routines, that are started as soon as an interrupt is received from the rendering and capturing devices.

In particular, the mixing operations are performed at the Input/Output (I/O) rate (i.e., at the rate at which data are captured by the capturing devices215c, and at the rate data to be rendered are consumed by the rendering devices210c).

In detail, every time a new chunk of audio data is available from the input interface of the microphone215c, an input mixing operation is performed by the mixers420and425: the next available chunk of data present in the data contribution buffer420-1and425-1, respectively, is taken, and it is mixed with the new audio data chunk just captured by the microphone215c.

Similarly, every time a new chunk of audio data is requested by the loudspeaker210coutput interface, an output mixing operation is performed by the mixer430, using the next available chunk of audio data present in the mixer contribution buffers430-1and430-2.

This guarantees the minimum end-to-end delay between the availability of data (from the microphone215c, or from the rendering multimedia software module instances410aand410b) and the production of data (for the grabbing multimedia software module instances405aand405band the loudspeaker205c).

The operation of the conference mixer205is explained in detail herein below, referring to the flowchart ofFIG. 5. In the following explanation, it is assumed that the rendering devices210cand the capturing devices215coperate on a same time base, i.e. with a same clock, so that they (their I/O interfaces) generate simultaneous interrupts (i.e., they are synchronous); however, this is not to be construed as a limitation for the present invention, which applies as well in the case the rendering devices210cand the capturing devices215coperate with nominally equal but different clocks (the different clocks can drift), and also in case the two clocks are not even nominally equal (in these cases, the interrupts generated by the (input interfaces of the) rendering and capturing devices are not, as a rule, simultaneous.

When the render time of a new audio data chunk arrives (block505, exit branch Y), the elder data chunks present in the mixer contribution buffers430-1and430-2are taken (block510), they are mixed together on the fly (block515) and the mixed data are fed to the loudspeaker210cfor rendering (block520). The arrival of the render time of the new audio data chunk is an event507that may be signaled by a notification, like an interrupt from the (input interface of the) loudspeaker210c, if the conference mixer205is implemented as a kernel-space device driver, or said notification may be an asynchronous notification from the loudspeaker driver, in case the conference mixer205is implemented as a user-space process.

Under the above assumption that the rendering and capturing devices operate based on the same clock, the arrival of the render time of a new data chunk coincides with the arrival of the grabbing time of a new audio data chunk; however, in general, when the grabbing time of a new audio data chunk arrives (also in this case, this event can be an interrupt, if the conference mixer is implemented as a kernel-space device driver, or it can be an asynchronous notification from the microphone driver), the freshly captured audio data chunk is taken (block525), the elder data chunks present in the data contribution buffers420-1and, respectively,425-1are taken (block530), and they are mixed, by the mixers420and425, with the freshly captured data chunk (block535), to produce a new chunk of mixed audio to be sent to the peers, and the mixed data are put in the data recipient buffers420-1and425-2, respectively (block540). The grabbing multimedia software module instances405aand405bthen fetch the elder mixed audio data chunks from the respective data recipient buffer425-2and420-2.

The arrival of the render time of the new audio data chunk is also used to trigger the load of the mixer contribution buffers430-1and430-2with a new audio frame (i.e., a part, a fragment of the audio data stream) made available by the rendering multimedia software module instances410aand410b(block545), which accesses the conference mixer205through the rendering API it exposes; in this description, the term trigger means signaling to the multimedia rendering software module instances410aand410bthat free space is available in the associated buffer430-0.1and430-2. The multimedia rendering software module instances can then (when data are available) write a new audio frame into the buffers430-1and430-2; the same audio frame is also copied into the respective data contribution buffer420-1or425-1.

Concerning the size of the buffers420-1and420-2,425-1and425-2, and430-1and430-2, a trade-off exists. In order to keep the end-to-end delay low, the buffers should be kept as small as possible. However, this contrasts the requirement of having buffers as big as possible, in order to avoid introducing glitches in the audio streams, due to underflow in one of the data contribution buffers420-1and425-1(for example, this happens when the data contribution buffer420-1is empty when a new captured audio data chunk arrives from the microphone215c).

Concerning the size of the audio data chunks to be stored in the buffers, significant parameters for determining it are the number of bits per audio sample (for example, 16 bits), the sampling rate (for example, 8 kHz for narrow band compression algorithms like G.723, or 16 kHz for wide band compression algorithms like G.722.2), the duration of the audio frame, i.e. the minimum amount of data handled by the chosen compression algorithm (for example, 10 ms for G.729, 30 ms for G.723, 20 ms for G722). Thus, the data chunk size can be:
data chunk size=samplerate*bitpersample/8*durationofaudioframe.

When the endpoints110aand110bof the peers A and B use different data compression algorithms, the size of the audio frames coming from the two peers (and made available by the rendering multimedia software module instances) may be different. This introduces additional cases of underflow during the mixing operation: if the amount of data available from all the different contributors of the mixing operation is not enough to produce a complete data chunk in output, a glitch is introduced.

According to an embodiment of the present invention, the conference mixer205may compute a single data chunk size, that is used for all the buffers, using the lowest common multiple of all the audio frame sizes used by the different conference peers. For example, assuming that peer A transmits (and receives) audio frames of 30 ms, and peer B transmits (and receives) audio frames of 20 ms, the size of the audio data chunk used by the conference mixer (i.e., the “quantum” of audio data processed by the conference mixer205) may be 60 ms; this means that every 60 ms, an interrupt arrives from the loudspeaker210c, and a new data chunk of 60 ms is generated on-the-fly by the mixer430and sent to the loudspeaker210c(similarly, under the assumption that a single time base exists, every 60 ms a new data chunk of audio captured by the microphone215cis ready).

The number of data chunks that the generic buffer of the conference mixer205is designed to store is tuned taking into consideration the interrupt latency time or the task switch latency time provided by the equipment/operating system hosting the multimedia modules. Under the assumption that the latency time is lower than the duration (i.e. the size) of a data chunk, the number of data chunks can be kept to the minimum (each buffer has two registers, each of the size of one data chunk, that are used in a “ping-pong” access mode, alternatively for reading and writing). In other words, when the system is able to process a single data chunk within its duration, an approach wherein each buffer can store two data chunks is regarded as a preferred method for handling data in order to minimize the end-to-end delay: while the processing of a new data chunk is in progress, the system can feed the old data chunk to (from) the rendering (capturing) device. This concept is described better in the description relevant toFIG. 6.

The minimum end-to-end delay introduced by the conference mixer205is equal to the duration of one audio data chunk between the peers A and C and between the peers B and C (as described inFIG. 6). The additional end-to-end delay introduced by the mixer is equal to the waiting time that a data chunk has to wait in the buffer430-1or430-2before rendering. In order to avoid underflow in one of the aforementioned buffer, a minimum waiting time of one data chunk time is needed. No additional end-to-end delay is instead introduced in the grabbing path from peer C to peer A or B. The buffers that introduce end-to-end delay are the buffers420-1,425-1,430-1and430-2.

Referring toFIG. 6, there is schematically depicted the delay introduced by the mixer contribution buffers430-1and430-2. The minimum level of buffering possible, without introducing artifacts during the mixing operation due to underflow in one of the mixer contribution buffers430-1and430-2, is equal to one data chunk; thus, the end-to-end delay is equal to one data chunk. In the drawing, INT(n−1), INT(n), INT(n+1), INT(n+2), INT(n+3) denote five consecutive interrupts from the rendering device (the loudspeaker210c), occurring at instants Tn−1, Tn, Tn+1, Tn+2, Tn+3. Interrupt INT(n−1) starts the rendering of the (n−1)-th audio data chunk, interrupt INT(n) starts the rendering of the n-th audio data chunk, and so on.

Assuming for the sake of simplicity that the data chunk size equals the audio frame size, the generic one of the rendering multimedia software module instances410aor410bstarts writing (event Ws(n)) the n-th audio frame to the respective mixer contribution buffer430-1and430-2at instant Tn−1, when the audio rendering procedure435receives the interrupt INT(n−1) for starting to play the (n−1)-th data chunk; the writing of the n-th audio frame to the mixer contribution buffer ends (event We(n)) before the arrival of the next interrupt INT(n), thus when this next interrupt arrives the new audio data chunk is ready to be played; when, at instant Tn, the audio rendering procedure435receives the next interrupt INT(n) for starting to play the (n)-th data chunk, the rendering multimedia software module instance410aor410bstart writing (event Ws(n+1)) the (n+1)-th audio frame to the respective mixer contribution buffers430-1and430-2; the writing of the (n+1)-th audio frame to the mixer contribution buffer ends (event We(n)) before the arrival of the next interrupt INT(n), so the new data chunk is ready to be played when the next interrupt INT(n+1) arrives, and so on.

Thanks to the fact that the mixing operation is performed on the fly in the audio rendering procedure435, starting at the receipt of the interrupt (or of the asynchronous notification) from the rendering devices, additional buffering and delays are avoided.

As mentioned in the foregoing, a possibility when the audio frames coming from/to be sent to the different peers are different in size, is to work with data chunks of size equal to the lowest common multiple of the sizes of the different audio frames. Referring toFIG. 7, in a time diagram similar to that ofFIG. 6there is depicted a case in which the two peers A and B adopt different audio frames; this translates into different periods TA, TBat which the rendering multimedia software module instances410aor410bmake the audio frames available. Supposing that, at the instant Tn−1at which the rendering multimedia software module instance410astarts making available the n-th frame of the audio stream coming from peer A, the rendering multimedia software module instance410balso starts making available the n-th frame of the audio stream coming from the peer B. At instant Tnthe rendering multimedia software module instance410acompletes the n-th audio frame, and starts making available the (n+1) audio frame; the rendering multimedia software module instance410binstead completes the n-th audio frame later, at instant Tn+a. Similarly, the rendering multimedia software module instance410acompletes the (n+1)-th audio frame at instant Tn+1, whereas the rendering multimedia software module instance410bcompletes the (n+1)-th audio frame later, at instant Tn+1+a. The rendering multimedia software module instance410acompletes the (n+2)-th audio frame at instant Tn+2, whereas the rendering multimedia software module instance410bcompletes the (n+2)-th audio frame later, at instant Tn+3, when the rendering multimedia software module instance410acompletes the (n+3)-th audio frame: at this instant, the two rendering multimedia software module instances410aand410bare again synchronized. In order to prevent underflow at the instant Tn+a, the mixer contribution buffers430-1and430-2may be designed so as to contain data chunks of size equal to four audio frames from peer A, and three audio frames from peer B.

Preferably, in order to keep the end-to-end delay as low as possible, the size of the data chunks used by the conference mixer205may be equal to maximum common divisor, instead of the lowest common multiple, of the audio frames adopted by the different peers. For example, assuming again that the audio frames from/to peer A are of 30 ms, and those from/to the peer B are of 20 ms, the conference mixer205may be designed to work with data chunks of 10 ms; this means that every 10 ms, an interrupt arrives from the loudspeaker210c, and a new data chunk of 10 ms is generated (by mixing data chunks of 10 ms of the audio frames stored in the mixer contribution buffers430-1and430-2) on-the-fly by the mixer430and sent to the loudspeaker210c; every two interrupts, the rendering multimedia software module instance410bis notified that in the buffer430-2there is space for a new audio frame, while this happens every three interrupts for the rendering multimedia software module instance410a.

This allows to perform mixing operation with an integer number of data chunk “quanta” on every buffer (on the contrary, should the data chunk size used in mixing be different for the different peers, more data would have to be buffered in order to prevent artifacts due to buffer underflow).

An advantage of implementing the conference mixer205in such a way that it exposes the same APIs to the grabbing and rendering multimedia software module instances405a,405b,410aand410bas conventional rendering/grabbing libraries or kernel device drivers make it suitable to be “transparently” inserted in an already working equipment architecture, without impacting on the rendering and grabbing multimedia modules implementation.

In a preferred embodiment of the present invention, the usage of the conference mixer205is selectable by the user on a per-connection basis: during a communication involving just two peers, like for example peers A and C, or peers B and C, no mixing is needed, while the mixing becomes necessary during a multi-peer (three or more) session.

Restricting the usage of the conference mixer205to those cases wherein mixing is really necessary allows reducing side effects, like increasing the end-to-end delay during a conversation between just two peers.

In particular, the conference mixer205may be adapted to “auto enabling” when a third peer of a virtual conference starts producing an requesting audio data chunks.

In principle, as long as only two peers are engaged in a communication, the conference mixer could be not used, thus avoiding introducing additional end-to-end delay, and when a third peer enters the communication session, the mixer could be inserted. However, this live, on-the-fly insertion of the conference mixer is a time consuming operation that might cause long artifacts. In a preferred embodiment of the invention, in order to both avoid adding end-to-end delay when the mixing operation is not needed, and at the same time avoid the artifacts caused by the delay of insertion of the mixer when the third peer enter the conference, the conference mixer205is already used since the beginning of the communication between the first two peers, and the buffering is reduced to the minimum required by the number of peers actively engaged in the conference. By “actively engaged” it is meant having “open” rendering/grabbing devices. The engagement of the mixer does not rely on the data flow (to or from its data interfaces) but on the explicit intention of a multimedia software module (grabbing or rendering) to start a new session; data flow in fact can be discontinuous as it is related to data availability for the remote peer. In particular, when only two peers, e.g. peers A and C are active, no mixing operations are needed and the conference mixer205prevents buffering of audio data chunks in the data contribution buffer420-1and in the mixer contribution buffer430-1. Data chunks are directly written by the rendering multimedia software module instance410ato the output device210c, without any buffering. In this way, no extra delay is introduced. In this condition, the thread435that, when the mixer is enabled, working synchronously with the interrupts received from the output rendering device210c, takes the data chunks from the mixer contribution buffers430-1and430-2, when the mixer is disabled does not perform any mixing, but it is only responsible for signaling to the rendering multimedia software module instance410athat the device is ready for rendering. A similar behavior is performed by the grabbing thread. When a new peer, like peer B, becomes active, the mixing operation, and the relevant buffering operations are re-enabled.

The rendering and grabbing multimedia software modules do not need to change behavior when the conference-mixer is enabled. This reduces the complexity of the software itself, especially in a crucial part as the low latency handling of audio.

The present invention has been here described considering some exemplary embodiments. Those skilled in the art will readily appreciate that several modifications to the described embodiments are possible, as well as different embodiments, without departing from the scope of protection defined in the appended claims.

In particular, although in the above description reference has been made to an audio conference, the present invention can also be applied to audio/video virtual conferences, by adding the buffers and mixers for the video component in an analogous manner as that described in the foregoing.