Subject: [rtcweb] Fuller proposal for early ICE/DTLS warmup

From: Justin Uberti <[email-masked]>
Date: Fri, 24 Jul 2015 00:41:49 +0200

*Graphical overview:*
*Caller                     Callee*
  |--- offer 1 (sendrecv) --->|
  |<-- answer 1 (sendonly) ---|
  |<-----ICE/DTLS start------>|

  .time passes, caller accepts.

  |<-- offer 2 (sendrecv) ----|
  |<---- callee media!!! -----|
  |--- answer 2 (sendrecv) -->|
  |----- caller media!!! ---->|

*New APIs needed:*
- create dummy sender using addTrack(null)
- RTCRtpReceiver.active property, which controls whether a receiver
indicates that it actually wants to receive media (by setting a=sendonly
instead of a=sendrecv)

*Annotated code sample:*
*- caller places call -*

*- caller creates audio track and offers it -*
track = gUM(audio)
sender = addTrack(track)
createOffer.then().setLD(offer).then().signal(offer)
*// offer is a=sendrecv*

*- callee gets offer, sets receiver as not active, adds dummy send track,
answers -*
offer = receive()
setRD(offer)
receiver = getReceivers()[0]
receiver.active = false
sender = addTrack(null)
createAnswer.then().setLD(answer).then().signal(answer)

*- answer is a=sendonly. Ensures caller doesn't send media during ring -*

*- caller gets answer, o/a 1 complete -*
answer = receive()
setRD(answer)

*- ICE and DTLS start -*

*- time passes - *

*- callee accepts call -*

*- callee creates audio track, replaces dummy track, toggles receiver,
offers -*
track = gUM(audio)
sender.setTrack(track)
receiver.active = true
createOffer.then().setLD(offer).then().signal(offer) // offer is a=sendrecv

*- callee -> caller media flows -*

*- callee gets offer, replies with normal answer - *
offer = receive();
setRD(offer)
createAnswer.then().setLD(answer).then().signal(answer) // answer is
a=sendrecv

*- caller -> callee media flows -*

*- callee gets answer, o/a 2 complete -*
answer = receive();
setRD(answer);

---

From: Eric Rescorla <[email-masked]>
Date: Fri, 24 Jul 2015 09:32:36 +0200

This seems generally reasonable, but share Cullen's concern about how the
answerer PC knows the characteristics of the dummy track
(this is something that would be addressed by Jesup's more explicit dummy
track example).

-Ekr

On Fri, Jul 24, 2015 at 12:41 AM, Justin Uberti <[email-masked]> wrote:

> _______________________________________________
> rtcweb mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/rtcweb
>
>