Subject: [splices] Initiate an A/V Call Using Two Separate Devices proposal

From: "Shekh-Yusef, Rifaat (Rifaat)" <[email-masked]>
Date: Thu, 26 May 2011 20:20:02 -0400

Hi,

The following is a proposal for Initiating an A/V Call Using Two Separate Devices

Regards,
 Rifaat

   Alice                 Alice                Proxy                  Bob
    PC                 Desk Phone                                      
    |                     |                     |                     |
    |                     |                     |                     |
Both Alice's devices subscribe to the reg event package, which allows each device to 
discover the capabilities of the other device based on the feature tags provided by each device.
The Desk Phone knows that the PC supports Video, while the PC knows that the Desk Phone only supports audio.
    |                     |                     |                     |
    |                     | SUBSCRIBE reg       |                     |
    |                     |-------------------->|                     |
    |                     | 200 OK              |                     |
    |                     |<--------------------|                     |
    |                     |                     |                     |
    | SUBSCRIBE reg       |                     |                     |
    |------------------------------------------>|                     |
    | 200 OK              |                     |                     |
    |<------------------------------------------|                     |
    |                     |                     |                     |
    |                     |                     |                     |
The two devices also subscribe to the dialog of each other.
    |                     |                     |                     |
    |                     |                     |                     |
    | SUBSCRIBE dialog    |                     |                     |
    |-------------------->|                     |                     |
    | 200 OK              |                     |                     |
    |<--------------------|                     |                     |
    |                     |                     |                     |
    | SUBSCRIBE dialog    |                     |                     |
    |<--------------------|                     |                     |
    | 200 OK              |                     |                     |
    |-------------------->|                     |                     |
    |                     |                     |                     |
    |                     |                     |                     |

Alice wants to use her PC to initiate an A/V call to Bob.
The PC instructs the phone to initiate a *video* call to Bob. The phone knows it cannot handle video,
but it know that the PC can. The phone then sends a slow start INVITE to the PC to get the video offer,
and then sends an INVITE with A/V offer to Bob
    |                     |                     |                     |
    |                     |                     |                     |
    | INVOKE Action: urn:invoke:call:initiate;media=video;target=bob@whatever
    |-------------------->|                     |                     |
    | 200 OK              |                     |                     |
    |<--------------------|                     |                     |
    |                     |                     |                     |
    | INVITE []           |                     |                     |
    |<--------------------|                     |                     |
    | 200 OK [Video]      |                     |                     |
    |-------------------->|                     |                     |
    |                     | INVITE [A/V]        |                     |
    |                     |-------------------->|                     |
    |                     |                     | INVITE [A/V]        |
    |                     |                     |-------------------->|
    |                     |                     | 180                 |
    |                     | 180                 |<--------------------|
    |                     |<--------------------|                     |
    |                     |                     | 200 OK [A/V]        |
    |                     | 200 OK [A/V]        |<--------------------|
    |                     |<--------------------|                     |
    | ACK [Video]         |                     |                     |
    |<--------------------|                     |                     |
    |                     | ACK                 |                     |
    |                     |-------------------->|                     |
    |                     |                     | ACK                 |
    |                     |                     |-------------------->|
    |                     |                     |                     |
    |<----dialog2-------->|<---dialog1------------------------------->|
    |                     |                     |                     |
    |                     |<======audio==============================>|
    |<============================video==============================>|
    |                     |                     |                     |

Alice wants to use her phone to initiate an A/V call to Bob.
The phone knows it cannot handle video, but it know that the PC can. 
The phone sends an INVOKE request to instruct the PC to initiate a vidoe call. 
Because the Action does not have a target parameter, this indicates to the PC to send the INVITE to the phone.
    |                     |                     |                     |
    | INVOKE Action: urn:invoke:call:initiate;media=video
    |<--------------------|                     |                     |
    | 200 OK              |                     |                     |
    |-------------------->|                     |                     |
    |                     |                     |                     |
    | INVITE [Video]      |                     |                     |
    |-------------------->|                     |                     |
    | 100                 |                     |                     |
    |<--------------------|                     |                     |
    |                     | INVITE [A/V]        |                     |
    |                     |-------------------->|                     |
    |                     |                     | INVITE [A/V]        |
    |                     |                     |-------------------->|
    |                     |                     | 180                 |
    |                     | 180                 |<--------------------|
    |                     |<--------------------|                     |
    | 180                 |                     |                     |
    |<--------------------|                     | 200 OK [A/V]        |
    |                     | 200 OK [A/V]        |<--------------------|
    |                     |<--------------------|                     |
    | ACK [Video]         |                     |                     |
    |<--------------------|                     |                     |
    |                     | ACK                 |                     |
    |                     |-------------------->|                     |
    |                     |                     | ACK                 |
    |                     |                     |-------------------->|
    |                     |                     |                     |
    |<----dialog2-------->|<---dialog1------------------------------->|
    |                     |                     |                     |
    |                     |<======audio==============================>|
    |<============================video==============================>|
    |                     |                     |                     |