Re: [rtcweb] RTP Usage: Is RTP Retransmission REQUIRED or RECOMMENDED
Stefan Holmer <holmer@google.com> Sun, 01 July 2012 12:17 UTC
Return-Path: <holmer@google.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 51B3621F84D2 for <rtcweb@ietfa.amsl.com>; Sun, 1 Jul 2012 05:17:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.043
X-Spam-Level:
X-Spam-Status: No, score=-101.043 tagged_above=-999 required=5 tests=[AWL=-1.933, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_BACKHAIR_56=1, J_CHICKENPOX_36=0.6, J_CHICKENPOX_38=0.6, RCVD_IN_DNSWL_LOW=-1, SARE_HTML_USL_OBFU=1.666, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DWr1mgw8c12Z for <rtcweb@ietfa.amsl.com>; Sun, 1 Jul 2012 05:17:46 -0700 (PDT)
Received: from mail-yw0-f42.google.com (mail-yw0-f42.google.com [209.85.213.42]) by ietfa.amsl.com (Postfix) with ESMTP id 31D7121F84D6 for <rtcweb@ietf.org>; Sun, 1 Jul 2012 05:17:46 -0700 (PDT)
Received: by yhfq11 with SMTP id q11so4340933yhf.15 for <rtcweb@ietf.org>; Sun, 01 Jul 2012 05:17:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record; bh=aV7XjC/dpNJlDgVqG7+GHT8AwPCdaVxqq0KsopIvQ4k=; b=mQ+PutY0daNCEwuJK7xECOFixuoNXFOmVKoWsH5zAAPphJCzTdoTkuraiG5QVUwqh3 c490tctf719TPtTPJr4DzpuEsvjAmTFWvMYkjU6Vl9YQ0EG60qcJbB11CKOBpdrRPkH7 EKo+/dpC7AMb9pXKpuW5KE/ApnLE4feUC7cdfM0p6XnGvn1G7kQT2I2rjoJkZNCfO9c6 8UOcKy3ADuarY1m2gMu2p18sQ7PpQ7Sis0Ogy6qkIsIIS8A4g/J2sT4zr5tBBMEm550t D/zhFTx1TXlmP/q4VTfBcytFM9NHn3gglzyMobLj/I5R17d7f4h7gHzo6cf/EFYiZZUs U+LA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=aV7XjC/dpNJlDgVqG7+GHT8AwPCdaVxqq0KsopIvQ4k=; b=MGYhIN8CpvyG72TJL/mFzmt+OaNz6Rkznx9oaiHRBEnCLVqQX9PZMY0CmzinaNBJpS E6ozfUYuyeiWbGJCWvUpfriNJu6lHms+6z79hilGB+Ra5eiKc5DRX4Qje3bEiZ9zrH2i 9MLsKtthYJC3m0TIsiDFf4gGuFeB2VZdOFyF4RmI1Fd31IKFU3MxZYP3u0PNiAgvL1cy pcJDaI4T+mbMmvl2lX7QIDses6R90iNnaRoMvhMHzmZCXbx3fDHUHqjFX5bVpWN5Jxiv 599WVD5CfxfgRpqLzhcVWjevxldnm5vvHLDJxCmJj+iweCUgeA4wdxrvFrf4g5b9dgfF DFSA==
Received: by 10.50.168.1 with SMTP id zs1mr5162397igb.45.1341145067445; Sun, 01 Jul 2012 05:17:47 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.50.168.1 with SMTP id zs1mr5162390igb.45.1341145067216; Sun, 01 Jul 2012 05:17:47 -0700 (PDT)
Received: by 10.50.108.103 with HTTP; Sun, 1 Jul 2012 05:17:47 -0700 (PDT)
In-Reply-To: <4FEFF1B6.6050504@jesup.org>
References: <4FEAB80A.7040207@ericsson.com> <4E5389B4-F54C-4060-952E-8319A801FDC3@iii.ca> <4FED4E81.7000607@ericsson.com> <CAEdus3KnqLHyBRtCUfE03C4rdTJfyEDoZReEo60cnz_30GuBnw@mail.gmail.com> <4FEFF1B6.6050504@jesup.org>
Date: Sun, 01 Jul 2012 14:17:47 +0200
Message-ID: <CAEdus3JSzOORFj4ihiYQ8XcbbQ+KYjbi-0KsPNJn-wT0Vn7K9A@mail.gmail.com>
From: Stefan Holmer <holmer@google.com>
To: Randell Jesup <randell-ietf@jesup.org>
Content-Type: multipart/alternative; boundary="e89a8f83a61352de3d04c3c3ab75"
X-System-Of-Record: true
X-Gm-Message-State: ALoCoQk4YpSTU9WSWhZ0dE5NBiBsYmUX06kF9G/lC9z0IggdmoDXQPcVYel9bmHukb0mYoeBQ5fpui3JhOPeUXURP+bsoI/NFDH8BGVZ9pIdIQAPn3Kag0+wKNn0Xi8wZU/knQndbj8UvCTY9Qt7QwQ6H8y2acX0fbev9DvCmlS5+kODsUFwzxw=
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] RTP Usage: Is RTP Retransmission REQUIRED or RECOMMENDED
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
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: Sun, 01 Jul 2012 12:17:48 -0000
On Sun, Jul 1, 2012 at 8:44 AM, Randell Jesup <randell-ietf@jesup.org>wrote: > On 6/29/2012 3:30 AM, Stefan Holmer wrote: > >> Doesn't this in the end boil down to what tools we have for baseline >> resilience? Retransmissions are fairly easy to implement and will in >> most cases give a much better experience than for example relying on >> periodic key frames or doing key frame requests. Also it isn't necessary >> for the decoder to support decoding streams with lost packets. >> > > "Better experience" incorporates a bunch of assumptions. > > Assuming we're talking video only: > > If you want it to be seamless, you have to be running a jitter buffer > depth of at least 1 RTT plus time-to-decide-packet-may-be-**lost plus > random-constant. The second part of that can be tricky and network-state > dependent. On corporate networks, I'd see sudden 100ms changes in base > delay over 1-3 packets; a short time-to-decide would flag each of those as > missing. This is ok (the re-xmit will get ignored as a dup), but adds > packets at an apparent bad point for the network. > > That said, small RTTs certainly happen within LANs and corporations, and > between neighbors in a single provider often. > > Note that often/normally with small RTTs you also get reasonably small > jitter, and thus the adaptive jitter buffer might run very small numbers, > so one might need to put a lower limit on the jitter buffer in these cases. > > The alternatives: > > 1) request re-xmit and freeze video queue when the jitter buffer runs dry. > If the packet comes in ASAP, freeze <= RTT+constant (modulo application > scheduling delay at the sender side). Then you can repair the broken > frame, decode it, and then decode any following frames. Typically after a > freeze you drop a frame or more; you might end up showing some of them > depending on decode speed and how long the freeze lasted. If the re-xmit > (or the request) is lost, then delays can stretch much longer, since you > need to wait RTT+bigger constant before requesting again. > Yes, this is what I would consider the simplest approach, which leads to a system which can guarantee a complete stream thus not requiring the decoder to be able to decode with errors, and at the same time having a good chance of recovering within slightly longer than one RTT. > > In some conference apps even if the mixer just forwards video packets, the > RTT is receiver<->mixer, not receiver<->mixer<->sender (this requires the > mixer to buffer packets for possible retransmission). > Yes, this is definitely an upside. > > 2) request IDR (or refresh of corrupted slice). Downside here is that you > need to wait for the next frame encode at the sender side (so 0-33ms > normally, or perhaps 0-100ms), and then the frame typically takes many > packets to send (which also may be lost, and take time to receive > especially on low-BW links), and IDR initial quality may be noticeably > lower. The receiver may freeze the video until the IDR is received or keep > decoding with errors. If there's a significant chance of the IDR losing a > packet, a freeze could be substantial time. > If the losses are related to congestion, sending an IDR is usually a bad idea. And as you are saying, if the losses are due to corruption, the chance of having a loss in an IDR is much bigger than for a P-frame. I don't think this approach is nearly as good as retransmissions, but it is a possible baseline option. > > 3) request repair. Note that #2 and #3 may be the same at the receiver > side, with the sender deciding the best available repair. In this case, > the sender would instead of an IDR use a some other set of (smaller) > packets to create an error-free up-to-date state at the receiver, such as > encoding using a long-term-reference-frame, or using some other > known-error-free frame in the receiver. Note that repair is basically just > a normal p-frame, albeit with somewhat lower quality and/or somewhat higher > bandwidth used. A big plus is that the end state is close to the same as > re-transmit, but you don't have to speed through decoding any skipped > frames. Repair also allows the receiver to use alternate recovery > mechanisms than simply freezing, including simply continuing to decode > p-frames ignoring the lost frame. This induces artifacts, but keeps motion > loss to a minimum, especially in longer-RTT links. > Yes, I agree that this is also a good approach. It may be more expensive than #1 if the long-term reference is old, but in general this would be a good baseline as well. It is possible to continue decoding p-frames, ignoring the loss, with retransmissions as well. However it's a bit more complicated and you will have to speed through some frames at the decoder when the rtx arrives, although you can skip rendering them. > > Note that #3 in particular should result in similar freeze length as #1, > perhaps 1 frame longer, if it freezes. If it plays with errors instead, > the freeze is typically 1 frame (the lost one). > > (Others?) > > My normal preference is #3. But, as discussed above, in low-RTT networks > it may be a good option and might give 0-frames of freeze. But, you still > have all the complexities about how to decide when and how to use re-xmit; > I think the 1 frame freeze is a reasonable option and a reasonable fallback > if the source doesn't re-transmit. > > Also, if retransmit is REQUIRED, and the media is gatewayed to other > sources (non-webrtc), and they don't support retransmit (likely), then the > gateway would need to buffer and act as a retransmit agent (complicating > the gateway). If it's RECOMMENDED, this is not a big deal and the gateway > can stay simpler. Sure, that's a downside, and that may be a good enough reason for RECOMMENDED. The same goes for #3, right? Non-webrtc sources may not support long-term references and therefore have to rely on IDRs. Just saying that it would be nice to have a baseline which is something better than requesting IDRs. > > -- > Randell Jesup > randell-ietf@jesup.org > > > ______________________________**_________________ > rtcweb mailing list > rtcweb@ietf.org > https://www.ietf.org/mailman/**listinfo/rtcweb<https://www.ietf.org/mailman/listinfo/rtcweb> >
- [rtcweb] RTP Usage: Is RTP Retransmission REQUIRE… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Bernard Aboba
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Michael Welzl
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cullen Jennings
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Holmer
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… John Leslie
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cullen Jennings
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cullen Jennings
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Holmer
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Holmer
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Justin Uberti
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Hakansson LK
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roman Shpount
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roman Shpount
- [rtcweb] 答复: RTP Usage: Is RTP Retransmission REQ… Lishitao
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Martin Thomson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Martin Thomson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Hakansson LK
- [rtcweb] LTE using AM_RLC or UM_RLC mode for UDP? Harald Alvestrand
- Re: [rtcweb] LTE using AM_RLC or UM_RLC mode for … Göran Eriksson AP
- Re: [rtcweb] LTE using AM_RLC or UM_RLC mode for … Cameron Byrne