3.1.4.4 Selecting Streams to Play from New Playlist Entry

This event occurs after the higher layer has received the ASF file header for a new playlist entry, and the higher layer is ready to start processing the ASF data packets for the new playlist entry. This is the higher layer's opportunity to select the streams (2) that it wants to receive from the new playlist entry. Because the bit rate needed to stream each playlist entry depends on how the content is encoded and on the streams that are selected, the higher layer can also specify new values for the parameters that control how much faster than real time (if at all) the content is streamed.

The State variable in the abstract data model MUST have the value STREAMING for this higher-layer triggered event to be possible. If the value of the State variable is not STREAMING when this event occurs, the client MUST treat this as an error.

The value of the State variable MUST be set to READY.

The client SHOULD make the value of the Trick-Mode-Rate variable available to the higher layer and SHOULD allow the higher to change the value of the Trick-Mode-Rate variable.

The higher layer SHOULD specify which of the streams can be streamed from the server. The list of selected streams SHOULD be sent to the server using a LinkViewerToMacStreamSwitch (section 2.2.4.28) message.<33>

If the client chooses to send a LinkViewerToMacStreamSwitch message, it MUST fill in the fields of the message as specified in section 2.2.4.28.

The aStreamEntries field of the LinkViewerToMacStreamSwitch message MUST specify the complete selection state of all streams. That is, the aStreamEntries field MUST specify all available streams; each stream MUST either be marked as on (by specifying the wThinningLevel field as 0x0000) or marked as off (by specifying the wDstStreamNumber field as 0xFFFF), depending on the selection made by the higher layer.

When sending the LinkViewerToMacStreamSwitch message, it MUST be sent by following the rules specified in section 3.1.5.1.

Next, if the value of the Trick-Mode-Rate variable is 0, the client MUST send a LinkViewerToMacStartPlaying (section 2.2.4.25) message (as specified in section 3.1.4.2.1) to the server.  If the value of the Trick-Mode-Rate variable is 1, the client MUST send a LinkViewerToMacStartStriding (section 2.2.4.26) message (as specified in section 3.1.4.2.2).<34>