3.2.3 Initialization

Initialization of the protocol occurs when a Describe (section 2.2.2.1) or Play (section 2.2.2.6) request is received and the request did not specify a client-id (section 2.2.1.4.5) token on the Pragma header or the value of the token did not match the value of the Client-ID variable.

The variables defined by the abstract data model MUST initially assume their default values. For variables that do not have a default defined, the following rules MUST be followed:

  • The higher layer SHOULD provide an identifier that allows it to identify this instance of the server role from other instances of the server role that can also be maintained by the higher layer. The server role MUST store this identifier in the Higher-Layer-ID variable.

  • The value of the Client-ID token SHOULD be assigned to a random number. If the server allows multiple simultaneous streaming sessions, each instance of the protocol state MUST use a different value for the Client-ID token.

  • The Session-State variable MUST be set to INIT.

  • The KeepAlive-Mode variable MUST be set to non-pipelined mode.

  • The Client-features variable MUST be set to specify support for com.microsoft.wm.predstrm (see section 2.2.1.7.2) and for com.microsoft.wm.sswitch (see section 2.2.1.7.4).

  • The Client-Version variable remains uninitialized.

  • The Client-Token-Version variable is set to the client major and minor version number provided by the higher layer according to the table specified in 2.2.1.8.