Re: [rtcweb] FEC for audio?
"Timothy B. Terriberry" <tterriberry@mozilla.com> Tue, 20 May 2014 01:17 UTC
Return-Path: <tterriberry@mozilla.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5AB521A0462 for <rtcweb@ietfa.amsl.com>; Mon, 19 May 2014 18:17:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.929
X-Spam-Level:
X-Spam-Status: No, score=-3.929 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_MISMATCH_ORG=0.611, HOST_MISMATCH_COM=0.311, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.651] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5nLiUT7XKBqb for <rtcweb@ietfa.amsl.com>; Mon, 19 May 2014 18:17:01 -0700 (PDT)
Received: from smtp.mozilla.org (mx2.corp.phx1.mozilla.com [63.245.216.70]) by ietfa.amsl.com (Postfix) with ESMTP id C4B2D1A045E for <rtcweb@ietf.org>; Mon, 19 May 2014 18:17:01 -0700 (PDT)
Received: from [10.252.26.16] (corp.mtv2.mozilla.com [63.245.221.32]) (Authenticated sender: tterriberry@mozilla.com) by mx2.mail.corp.phx1.mozilla.com (Postfix) with ESMTPSA id 2F77AF25E8 for <rtcweb@ietf.org>; Mon, 19 May 2014 18:17:01 -0700 (PDT)
Message-ID: <537AACDA.20603@mozilla.com>
Date: Mon, 19 May 2014 18:16:10 -0700
From: "Timothy B. Terriberry" <tterriberry@mozilla.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 SeaMonkey/2.16.2
MIME-Version: 1.0
To: "rtcweb@ietf.org" <rtcweb@ietf.org>
References: <CAOJ7v-1qEpkWShmw1SQKh4_BLKycF=egu42TS9o9+Smtof36pg@mail.gmail.com> <CAJrXDUESUa-xm9y22OAVKAw5z=WnkY4-X6XFZOoXwvkMoDnaoQ@mail.gmail.com> <537A6190.4060709@mozilla.com> <CAOJ7v-2mb6DkakaEWMxJwqqLSePb7NrOcF-DSycW-CftBGdmcA@mail.gmail.com> <CAOJ7v-1YxHhVm8NE4H3ZkCuOtN4CsUgQoiV1GN3w3NKRWhqWMw@mail.gmail.com>
In-Reply-To: <CAOJ7v-1YxHhVm8NE4H3ZkCuOtN4CsUgQoiV1GN3w3NKRWhqWMw@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/w2WS2EF9l0uNiks0Ez1kjrTHur8
Subject: Re: [rtcweb] FEC for audio?
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 20 May 2014 01:17:06 -0000
Justin Uberti wrote: > Advice on the exact value of XX welcomed. That is complicated, of course. I think if you're using SILK, you should probably always prefer the in-band FEC (if nothing else, it saves you a minimum of 54 bytes of header overhead over RFC5109), but that's a decision we make on a packet-by-packet basis. However, libopus will use CELT at rates as low as 12 kbps (and always uses CELT for CBR rates below 8 kbps), and will use SILK/Hybrid at rates as high as 76 kbps, depending on the application libopus was configured with, our estimate of whether or not the content contains voice or music, the stereo width (if the signal is stereo), and hysteresis from previous mode decisions. For a simple application, I'd probably enable 5109 for a mono voice stream encoded in VOIP mode at around 48-56 kbps (but I have not done any testing around these numbers). A more complex application could negotiate 5109 always, and then only transmit FEC for the packets that do not contain a SILK layer. If you are using 5109, be careful to pass in the post-FEC recovery packet loss percentage to libopus when encoding, instead of the raw packet loss percentage. Above a certain loss rate (8% if I'm reading the current code correctly), libopus will force SILK usage in order to be able to use the built-in FEC. When protecting CELT, you may also want to experiment with using ULP to protect only the beginning of the CELT payloads. We intentionally organized the packet so the most important information was at the front. The first 64-bits or so are enough to get the pitch filter and basic energy levels correct (though you'll probably want to send a little more to justify all the bitrate you spent on IP+UDP+RTP+FEC headers). As long as you get the energy levels correct, you cannot mess things up _too_ badly, even if the rest of the packet is random garbage. Make sure you pass the decoder a packet with the same size as the original, even if you only recover some of the data, as otherwise even the recovered data will not decode correctly.
- [rtcweb] FEC for audio? Justin Uberti
- Re: [rtcweb] FEC for audio? Peter Thatcher
- Re: [rtcweb] FEC for audio? Timothy B. Terriberry
- Re: [rtcweb] FEC for audio? Justin Uberti
- Re: [rtcweb] FEC for audio? Justin Uberti
- Re: [rtcweb] FEC for audio? Silvia Pfeiffer
- Re: [rtcweb] FEC for audio? Timothy B. Terriberry
- Re: [rtcweb] FEC for audio? Justin Uberti
- Re: [rtcweb] FEC for audio? Timothy B. Terriberry