3.2.5.11.1 Sending Data Packets Containing ASF Data Packets

When the server sends ASF data packets, each ASF data packet MUST be encapsulated in a Data (section 2.2.2) packet. The ASF payloads in the ASF data packets MUST be filtered so that only ASF payloads that belong to streams (2) that are selected by the client are included in the ASF data packets. If all payloads are filtered away from an ASF data packet, that ASF data packet MUST NOT be transmitted.

The LocationId field of the Data packet MUST be set to the ASF data packet's number in the ASF file. ASF data packet numbers start with 0 for the first ASF data packet. If the server does not have access to the ASF file (for example, in the case of live content), the server MUST assume a virtual ASF file, incrementing LocationId (or decrementing it when rewinding the content) exactly as if a real ASF file existed.

The AFFlags field in the Data packet MUST be set to the least significant 8 bits of the Sequence variable in the abstract data model. After this, the value of the Sequence variable MUST be incremented.

The value of the playIncarnation field in the Data packet MUST be set to the 8 least-significant bits of the value of the Incarnation variable.

If the value of the Client-Port variable is not 0x0000, the Data packets MUST be sent to the client, using UDP, to the UDP port specified by the Client-Port variable. Otherwise, the Data packets MUST be sent to the client over the existing TCP connection.

While sending Data packets, the server MUST be prepared to receive a LinkViewerToMacStreamSwitch message or a LinkViewerToMacStopPlaying message from the client. How to process a LinkViewerToMacStreamSwitch message is specified in section 3.2.5.10. How to process a LinkViewerToMacStopPlaying message is specified in section 3.2.5.14.

If the value of the Client-Port variable is not 0x0000, the server MUST also be prepared to receive a RequestPacketListResend packet on the UDP port with the same number as the TCP port on which the server received the TCP connection from the client. For example, if the client connected to the server on TCP port 1755, it means that the server must be prepared to receive RequestPacketListResend packets on UDP port 1755. How to process a RequestPacketListResend packet is specified in section 3.2.5.13.