Re: [codec] #16: Multicast?
"Raymond (Juin-Hwey) Chen" <rchen@broadcom.com> Sat, 24 April 2010 21:41 UTC
Return-Path: <rchen@broadcom.com>
X-Original-To: codec@core3.amsl.com
Delivered-To: codec@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 710AB3A6800 for <codec@core3.amsl.com>; Sat, 24 Apr 2010 14:41:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.629
X-Spam-Level:
X-Spam-Status: No, score=-0.629 tagged_above=-999 required=5 tests=[AWL=0.111, BAYES_20=-0.74]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EXiTuba81Six for <codec@core3.amsl.com>; Sat, 24 Apr 2010 14:41:14 -0700 (PDT)
Received: from MMS3.broadcom.com (mms3.broadcom.com [216.31.210.19]) by core3.amsl.com (Postfix) with ESMTP id 457F93A694A for <codec@ietf.org>; Sat, 24 Apr 2010 14:41:14 -0700 (PDT)
Received: from [10.9.200.133] by MMS3.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.3.2)); Sat, 24 Apr 2010 14:40:53 -0700
X-Server-Uuid: B55A25B1-5D7D-41F8-BC53-C57E7AD3C201
Received: from IRVEXCHCCR01.corp.ad.broadcom.com ([10.252.49.30]) by IRVEXCHHUB02.corp.ad.broadcom.com ([10.9.200.133]) with mapi; Sat, 24 Apr 2010 14:42:17 -0700
From: "Raymond (Juin-Hwey) Chen" <rchen@broadcom.com>
To: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Importance: low
X-Priority: 5
Date: Sat, 24 Apr 2010 14:40:51 -0700
Thread-Topic: [codec] #16: Multicast?
Thread-Index: AcrimhyNUh3NLsf5RvSfcmuOhmvRfwBUwYUA
Message-ID: <CB68DF4CFBEF4942881AD37AE1A7E8C74AB3F4A287@IRVEXCHCCR01.corp.ad.broadcom.com>
References: <062.7439ee5d5fd36480e73548f37cb10207@tools.ietf.org> <3E1D8AD1-B28F-41C5-81C6-478A15432224@csperkins.org> <D6C2F445-BE4A-4571-A56D-8712C16887F1@americafree.tv> <C0347188-A2A1-4681-9F1E-0D2ECC4BDB3B@csperkins.org> <u2x6e9223711004210733g823b4777y404b02330c49dec1@mail.gmail.com> <000001cae173$dba012f0$92e038d0$@de> <r2q6e9223711004211010gfdee1a70q972e8239fef10435@mail.gmail.com> <001101cae177$e8aa6780$b9ff3680$@de> <t2t6e9223711004211119i6b107798pa01fc4b1d33debf1@mail.gmail.com> <002d01cae188$a330b2c0$e9921840$@de> <CB68DF4CFBEF4942881AD37AE1A7E8C74AB3F4A017@IRVEXCHCCR01.corp.ad.broadcom.com> <4BD11C50.2020206@usherbrooke.ca>
In-Reply-To: <4BD11C50.2020206@usherbrooke.ca>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
MIME-Version: 1.0
X-WSS-ID: 67CDBAEF31G102528969-01-01
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Cc: "codec@ietf.org" <codec@ietf.org>, 'stephen botzko' <stephen.botzko@gmail.com>
Subject: Re: [codec] #16: Multicast?
X-BeenThere: codec@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Codec WG <codec.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/codec>, <mailto:codec-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/codec>
List-Post: <mailto:codec@ietf.org>
List-Help: <mailto:codec-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/codec>, <mailto:codec-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 24 Apr 2010 21:41:15 -0000
Hi Jean-Marc, I would like to respond to a comment and a question in your original email below. (1) Regarding your comment that "per-instance RAM -- as long as it's reasonable -- is probably a bit less important than complexity", I think this may or may not be true depending on what is defined as "reasonable", and it also depends on the VoIP gateway under consideration. However, I think one thing is clear, though: per-instance RAM is definitely not unimportant. I have worked in a team that designed high-density VoIP gateways, and I know people did all kinds of tricks to reduce the RAM usage as much as possible because of the high cost of the external high-speed SRAM used by high-speed DSPs in such gateways. Currently, high-density VoIP gateways can have several tens of thousands of voice channels per box or per equipment rack. If codec A uses X kbytes more per-instance RAM than codec B, than implementing codec A rather than codec B in all channels will require X * (number of channels) more kbytes of high-speed SRAM, which can be a substantial additional cost. Similarly, if codec A requires a substantially higher DSP MHz than codec B, then implementing codec A in all channels will mean that more high-speed DSP chips need to be used to maintain the same number of channels. That's additional cost. Actually, the more likely scenario is that the number of DSP chips has already maxed out due to board space or heat dissipation constraint, then the gateway can only support a substantially smaller number of voice channels when compared with using codec B. Consequently, the channel density per box or per rack goes down substantially, and the per-channel deployment cost goes up substantially. Thus, even if implementing codec A or codec B makes no practical difference in a PC, it can make a very real and substantial cost difference in VoIP gateways. An important application for the IETF codec is identified as "IPend-to-transcoding_gateway-to-PSTNend". If the deployment cost of the IETF codec in the VoIP gateway is too high, that will limit the degree of such deployment, thus reducing the availability of such IP-to-PSTN calls and the usefulness of the IETF codec in this application scenario. (2) Regarding your question about the complexity requirement for the Bluetooth headset use case to be possible, for the current generation of low-end to mid-end Bluetooth mono headsets where most of the volume is, the 64 kb/s narrowband CVSD codec is universally used but is implemented in chip hardware and consumes no DSP or host processor cycles. (Many of them don't even have a DSP on chip and just have a host processor such as ARM7.) All the processor cycles are being used by other tasks such as Bluetooth stack, echo control, noise suppression, packet loss concealment, etc. Therefore, there actually aren't meaningful available processor cycles for a non-hardware-based codec unless we remove some other DSP functions or reduce their MHz consumption to make room for a firmware-implemented codec. For the low- to mid-end Bluetooth headsets currently under development, the situation is not that much better. Again we have to remove other functions or reduce their MHz usage to make room for a firmware-based codec. Given such tight resources constraints, I would say ideally the full-duplex complexity of such a firmware-based codec should be no more than about 5 MHz on a typical 16-bit fixed-point DSP. In a few years time, the acceptable MHz number may go up to 10 MHz, or at most 15 MHz. Best Regards, Raymond -----Original Message----- From: Jean-Marc Valin [mailto:jean-marc.valin@usherbrooke.ca] Sent: Thursday, April 22, 2010 9:05 PM To: Raymond (Juin-Hwey) Chen Cc: Christian Hoene; 'stephen botzko'; codec@ietf.org Subject: Re: [codec] #16: Multicast? Hi, See me comments below. > [Raymond]: High quality is a given, but I would like to emphasize the > importance of low latency. > > (1) It is well-known that the longer the latency, the lower the > perceived quality of the communication link. The E-model in the ITU-T > Recommendation G.107 models such communication quality in MOS_cqe, > which among other things depends on the so-called "delay impairment > factor" /Id/. Basically, MOS_cqe is a monotonically decreasing > function of increasing latency, and beyond about 150 ms one-way delay, > the perceived quality of the communication link drops rapidly with > further delay increase. > As the author of CELT, I obviously agree that latency is an important aspect for this codec :-) That being said, I tend to say that 20 ms is still the most widely used frame size, so we might as well optimise for that. This is not really a problem because as the frame size goes down, the overhead of the IP/UDP/RTP headers go up, so the codec bit-rate becomes a bit less of an issue. For example, with 5 ms frames, we would already be sending 64 kb/s worth of headers (excluding the link layer), so we might as well spend about as many bits on the actual payload as we spend on the headers. And with 64 kb/s of payload, we can actually have high-quality full-band audio. > 1) If a conference bridge has to decode a large number of voice > channels, mix, and re-encode, and if compressed-domain mixing cannot > be done (which is usually the case), then it is important to keep the > decoder complexity low. Definitely agree here. The decoder complexity is very important. Not only because of mixing issue, but also because the decoder is generally not allowed to take shortcuts to save on complexity (unlike the encoder). As for compressed-domain mixing, as you say it is not always available, but *if* we can do it (even if only partially), then that can result in a "free" reduction in decoder complexity for mixing. > 2) In topology b) of your other email > (IPend-to-transcoding_gateway-to-PSTNend), the transcoding gateway, or > VoIP gateway, often has to encode and decode thousands of voice > channels in a single box, so not only the computational complexity, > but also the per-instance RAM size requirement of the codec become > very important for achieving high channel density in the gateway. > Agreed here, although I would say that per-instance RAM -- as long as it's reasonable -- is probably a bit less important than complexity. > 3) Many telephone terminal devices at the edge of the Internet use > embedded processors with limited processing power, and the processors > also have to handle many tasks other than speech coding. If the IETF > codec complexity is too high, some of such devices may not have > sufficient processing power to run it. Even if the codec can fit, some > battery-powered mobile devices may prefer to run a lower-complexity > codec to reduce power consumption and battery drain. For example, even > if you make a Internet phone call from a computer, you may like the > convenience of using a Bluetooth headset that allows you to walk > around a bit and have hands-free operation. Currently most Bluetooth > headsets have small form factors with a tiny battery. This puts a > severe constraint on power consumption. Bluetooth headset chips > typically have very limited processing capability, and it has to > handle many other tasks such as echo cancellation and noise reduction. > There is just not enough processing power to handle a relatively > high-complexity codec. Most BT headsets today relies on the extremely > low-complexity, hardware-based CVSD codec at 64 kb/s to transmit > narrowband voice, but CVSD has audible coding noise, so it degrades > the overall audio quality. If the IETF codec has low enough > complexity, it would be possible to directly encode and decode the > IETF codec bit-stream at the BT headset, thus avoiding the quality > degradation of CVSD transcoding. > Any idea what the complexity requirements would be for this use-case to be possible? Cheers, Jean-Marc
- [codec] #16: Multicast? codec issue tracker
- Re: [codec] #16: Multicast? Colin Perkins
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Marshall Eubanks
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Colin Perkins
- Re: [codec] #16: Multicast? Colin Perkins
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Marshall Eubanks
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Jean-Marc Valin
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Mikael Abrahamsson
- Re: [codec] #16: Multicast? Jean-Marc Valin
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Mikael Abrahamsson
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Mikael Abrahamsson
- Re: [codec] #16: Multicast? (Bluetooth) Koen Vos
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? (Bluetooth) Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? (Bluetooth) stephen botzko
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? (USB) Roni Even
- Re: [codec] #16: Multicast? codec issue tracker
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Cullen Jennings
- Re: [codec] #16: Multicast? Mikael Abrahamsson
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? (Bluetooth) Koen Vos
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #19: How large is the frame size depe… Christian Hoene
- Re: [codec] #19: How large is the frame size depe… stephen botzko
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #19: How large is the frame size depe… Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? (Bluetooth) Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? stephen botzko
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Gregory Maxwell
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Benjamin M. Schwartz
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] Thresholds and delay. stephen botzko
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Kevin P. Fleming
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Jean-Marc Valin
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Jean-Marc Valin
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Ben Schwartz
- Re: [codec] #16: Multicast? Marshall Eubanks
- Re: [codec] #16: Multicast? Brian Rosen
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Jean-Marc Valin
- Re: [codec] Thresholds and delay. Ben Schwartz
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] Thresholds and delay. stephen botzko
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] Thresholds and delay. Ben Schwartz
- Re: [codec] #20: Computational complexity? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] Thresholds and delay. jari.hagqvist
- Re: [codec] Thresholds and delay. stephen botzko
- Re: [codec] Thresholds and delay. Ben Schwartz
- Re: [codec] Thresholds and delay. Marshall Eubanks
- Re: [codec] #16: Multicast? Cullen Jennings
- Re: [codec] Thresholds and delay. Michael Knappe
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Delay factor: algorithmic delay … Christian Hoene
- Re: [codec] #16: Delay factor: algorithmic delay … Mikael Abrahamsson
- Re: [codec] #16: Delay factor: algorithmic delay … Roman Shpount
- Re: [codec] #16: Delay factor: algorithmic delay … stephen botzko
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Cullen Jennings
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Koen Vos
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Jean-Marc Valin
- Re: [codec] #16: Multicast? Herve Taddei
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Jean-Marc Valin
- Re: [codec] #16: Multicast? Sandy (Alexander) MacInnis
- Re: [codec] #16: Multicast? Christian Hoene
- Re: [codec] #16: Multicast? Raymond (Juin-Hwey) Chen
- Re: [codec] #16: Multicast? Roman Shpount
- Re: [codec] Suggested summary... Herve Taddei
- Re: [codec] #16: Multicast? Herve Taddei
- Re: [codec] #16: Multicast? Cullen Jennings
- [codec] Suggested summary... Christian Hoene
- Re: [codec] Suggested summary... stephen botzko
- Re: [codec] Suggested summary... Herve Taddei
- Re: [codec] Suggested summary... Christian Hoene
- Re: [codec] Suggested summary... Michael Knappe
- Re: [codec] Suggested summary... stephen botzko
- Re: [codec] Suggested summary... Christian Hoene
- Re: [codec] Suggested summary... Christian Hoene
- Re: [codec] Suggested summary... stephen botzko
- Re: [codec] Suggested summary... Raymond (Juin-Hwey) Chen
- Re: [codec] Suggested summary... Christian Hoene
- Re: [codec] Suggested summary... Herve Taddei
- Re: [codec] Suggested summary... Raymond (Juin-Hwey) Chen