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>
>