- From: Justin Uberti <juberti@google.com>
- Date: Tue, 13 May 2014 10:43:00 -0700
- To: Roman Shpount <rshpount@turbobridge.com>
- Cc: Robin Raymond <robin@hookflash.com>, Bernard Aboba <Bernard.Aboba@microsoft.com>, "public-ortc@w3.org" <public-ortc@w3.org>
- Message-ID: <CAOJ7v-0n1XTaE_v4+zvuA15=UTjyLk0MMsxXfDwvqrsjp699yw@mail.gmail.com>
Agree with Roman's points. The receiver should be able to switch codecs without reinitialization. On Mon, May 12, 2014 at 11:47 AM, Roman Shpount <rshpount@turbobridge.com>wrote: > Few considerations regarding codec switching that might affect > implementation: > > 1. When transmitting we should be able to specify multiple codecs for a > single RTP sender to support things like CN and RFC 4733 tones. Transmitter > should switch to those automatically based on transmitted audio. > > 2. When playing back audio transmitted using different payloads a smoothed > time-synchronized playback needs to be ensured. In other words, when > switching from CN to OPUS and back same jitter buffer needs to be used and > audio should be continuously played back. > > 3. Receiver should be able to differentiate between payload switch and > packet loss. In other words, if an audio stream switches from OPUS to CN > and back, receiver should start playback of CN and not used packet loss > concealment for OPUS for the time period when CN is available. Audio codec > state might also need to be reinitialized after each payload switch. > > 4. We should be able to deal with redundant payload, like RFC 4733 and > OPUS audio, which can be available for some period of time. Only one of the > audio representations should be played back. > > I believe that 3 and 4 would require a way for RTP receiver to specify > that several payloads are related and only one of them should be played > back at any given time. > > _____________ > Roman Shpount > > > On Mon, May 12, 2014 at 10:21 AM, Robin Raymond <robin@hookflash.com>wrote: > >> >> Yes, you are absolutely correct that we must be capable of switching >> between codecs without signaling. It's critical and there are many use case >> even beyond legacy boxes that do that. This is why I suggesting that it >> should work for any codec, not just non-SVC codecs. >> >> But to be fair, there are two ways to do that switch without signaling >> with the model we have: >> a) Each "receiver" object could latches onto 1 codec per SSRC. To receive >> with a different codec on the same SSRC, use a different "receiver" object >> (which will output it's own "media track") >> -or- >> b) Each "receiver" object contains a list of all codecs for a given SSRC >> and the receiver object can auto-switch between them should the sender >> change codecs >> >> Either will work. Option "a" requires the application developer manually >> switch between "media tracks" as each track become active. Option "b" has >> the advantage of re-using the same output "media track" despite the codec >> changing so it doesn't require the application developer to re-wire their >> rendered output every time a codec is changed (i.e. auto-switching). We >> justified including auto-switching for simulcasting within the "receiver" >> object so the receiver can output to the same "media track" without setting >> up new receiver objects per simulcast stream. >> >> This leads to a few questions: >> 1) With our current model, despite having a list of codecs, do we only >> latch to one codec and if the sender changes codecs would that require a >> new "receiver" object if the codec changed? >> 2) If the current model does allow switching between codecs on the same >> SSRC without a new receiver object, can we make it work for SVC codecs too >> and not just non-SVC codecs? >> >> -Robin >> >> Roman Shpount <rshpount@turbobridge.com> >> May 12, 2014 at 12:11 AM >> One thing I like to mention is that we do need an ability to receive >> multiple codecs and switch between them based on the payload type to be >> interoperable with current VoIP. To interop with current WebRTC we need to >> support ability to switch between OPUS, RFC 4733 tones and comfort noise >> based on the payload type. I am also familiar with quite a few system which >> switch the transmitting audio codec without any signaling notification to >> the remote side, such as international VoIP carriers that switch between >> G.729 and G.711 within the same call with no signaling. >> >> _____________ >> Roman Shpount >> >> >> >> Robin Raymond <robin@hookflash.com> >> May 11, 2014 at 8:24 PM >> >> Currently the receiver has a payload type for each codec. This >> configuration allows the receiver can receiver with any codec on the same >> SSRC and allow auto-switching between them. This ability is true so long as >> the codec is not SVC enabled because the layering information was defined >> within the context of the receiver object itself and not within the context >> of receiver's codec. >> >> If the receiver object is only supposed to work with a particular codec >> only then why are we supplying the receiver object with a set of codecs and >> payload type for each codec? So to me, that suggests the receiver object >> CAN switch between codecs. If does allow this behaviour then why doesn't it >> then work too for SVC codecs but only non SVC codecs? >> >> To me this implies we should do one of the following: >> 1) make the sender / receiver only have one codec and that's it. Want to >> receive or send with a different codec? Use a different sender / receiver >> object. -OR- >> 2) make the sender / receiver work for all codecs equally by defining the >> layering within the context of the SVC codec and not within the context of >> the receiver >> >> I'm completely fine with either scenario "1" or "2" but I don't like the >> way it kind-of half works now. "2" is more work for ORTC implementors but >> it allows for easier management of the receiving streams for an application >> developer. >> >> -Robin >> >> >
Attachments
- image/jpeg attachment: postbox-contact.jpg
- image/jpeg attachment: compose-unknown-contact.jpg
Received on Tuesday, 13 May 2014 17:43:48 UTC