3.1.4.3.1 Sending a SelectStream Request
Because the ASF file header specifies multiple streams, the higher layer MUST select exactly what streams that are listed in the ASF file header are streamed from the server. The client MUST send one SelectStream request for each stream that the higher layer wants to select and that is not yet selected on the server.
The syntax for SelectStream requests is specified in section 2.2.7.10. the common processing steps specified in section 3.1.5.1 MUST be followed when sending a SelectStream request.
The higher layer MUST specify, for each stream, if the stream is supposed to be streamed over UDP or TCP. For streams that are to be streamed over UDP, the client MUST specify the same UDP port number, or pair of UDP port numbers, in the client_port parameter on the Transport header. For details, see section 2.2.7.10.1.
For each stream that is to be streamed over UDP, if the SDP media description for that stream indicates that the server can transmit RTP packets that contain FEC data, the client SHOULD send a SelectStream request to select RTP packets containing FEC data. (RTP packets containing FEC data have a separate stream URL that has to be explicitly selected by using SelectStream for the server to transmit the FEC RTP packets.) For information on how to determine if FEC RTP packets can be selected and for how to determine the URL to use in the SelectStream request, see section 2.2.5.4.
If the value of the State variable is READY or PLAYING, all of the SelectStream requests SHOULD be pipelined; that is, if there is more than one SelectStream request to send, the client SHOULD send all of them at once without waiting for the response to one request before sending the next one.
If the value of the State variable is INIT, the client MUST only send one SelectStream request. (Subsequent SelectStream requests will be sent after the response to the first one is received.)
The client MUST wait for the response to a SelectStream request. How to process the response is specified in section 3.1.5.9. If the value of the State variable is PLAYING, the client MUST continue to process incoming RTP packets while it is waiting for the response to a SelectStream request.