
**************************************************
* RTSP messages during WFD session establishment *
**************************************************


There are five different states:
   1. capability negotiation A
   2. capability negotiation B
   3. RTSP session establishment
   4. WFD session establishment
   5. WFD session

I'm listing the possible exchanges below, per state (except for the
last state: that's a lot more work and mostly not required for POC).
  *   = message
  ***  = message, valid start point for a message exchange in this state


SOURCE                                   SINK
MESSAGES                                 MESSAGES
-------------------------------------------------------------


STATE 1 capability negotiation A
-------------------------------------------------------------
*** M1 OPTIONS           -------->
                                        if M1 response == 200
                                        send M2


                         <--------      * M2 OPTIONS
if M2 response = 200
send M3


* M3 GET_PARAMETER       -------->
if M3 response == 200
move to state 2, send M4


STATE 2 capability negotiation B
-------------------------------------------------------------

*** M3 GET_PARAMETER     -------->

* M4 SET_PARAMETER     -------->
(mandatory and optional parameters below)
if M4 response == 200
send M5


STATE 3 RTSP session establishment
-------------------------------------------------------------

*** M3 GET_PARAMETER     -------->


*** M4 SET_PARAMETER     -------->


* M5 SET_PARAMETER       -------->
(trigger SETUP)                         if M5 response == 200 
                                        send M6


                         <--------      * M6 SETUP
                                        if M6 response == 200
                                        move to state 4, send M7


STATE 4 WFD session establishment
-------------------------------------------------------------

*** M3 GET_PARAMETER     -------->


*** M5 SET_PARAMETER     -------->
(trigger TEARDOWN)                      if M5 response = 200
                                        send M8


*** M5 SET_PARAMETER     -------->
(trigger PLAY)                          if M5 response == 200
                                        send M7


                         <--------      * M7 PLAY
if M7 response == 200
move to state 5, start streaming


                                        *** M8 TEARDOWN
if M8 response == 200
move to state 1




STATE 5 WFD Session
---------------------------------------------------------------
TODO ...





*****************************
* GET/SET Method parameters *
*****************************


    M = mandatory
    O = optional

These rules apply _before_ the WFD sessions is established
(in other words states 1-4): 

                    request                reply
* M3 GET_PARAMETER 
-----------------------------------------------------------------
audio-codecs        M                      M
video-formats       M                      M
3d-video-formats    O                      M (if in request)
content-protection  O                      M (if in request)
display-edid        O                      M (if in request)
coupled-sink        O                      M (if in request)
client-rtp-ports    M                      M
I2C                 O                      M (if in request)
uibc-capability     O                      M (if in request)
connector-type      O                      M (if in request)
standby-resume--    O                      M (if in request)


* M4 SET_PARAMETER
audio-codecs        M (if stream contains audio) 
video-formats       M (if no preferred-display and stream contains video)
3d-video-formats    M (if no preferred-display and stream includes 3d)
presentation-url    M 
client-rtp-ports    M
preferred-display-- O                        (spec error on p 111?)
uibc-capability     O
uibc-setting        O


* M5 SET_PARAMETER 
trigger-method      M

