Skip to content

Instantly share code, notes, and snippets.

@Tuxdude
Last active October 14, 2015 00:54
Show Gist options
  • Save Tuxdude/3bdc8a178fc95d6953e1 to your computer and use it in GitHub Desktop.
Save Tuxdude/3bdc8a178fc95d6953e1 to your computer and use it in GitHub Desktop.
**************************************************
* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment