3.2.4.3 Notification That an ASF Packet Is Ready to Be Sent

This event can occur when the value of the State variable is PLAYING. The higher layer provides an ASF packet that will be sent to the client by the server using RTP packets.

The RTP packets MUST use the RTP payload for ASF data packets, as specified in section 2.2.1.

The ASF payloads in the ASF packets MUST be filtered such that only ASF payloads that belong to streams specified in the variable Selected-Streams are included in the ASF packets.

If the ASF payload in an ASF packet belongs to a stream that is listed in the Selected-New-Streams variable and the ASF payload does not have the Key Frame Bit ([ASF] section 5.2.3) set to 1, the ASF payload MUST be removed from the ASF packet.

If the ASF payload in an ASF packet belongs to a stream that is listed in the Selected-New-Streams variable and the ASF payload has the Key Frame Bit ([ASF] section 5.2.3) set to 1, the stream that the ASF payload belongs to MUST be removed from the Selected-New-Streams variable.

If the ASF payload in an ASF packet belongs to a stream that is listed as the new stream in an entry in the Selected-Replacement-Streams variable, that entry MUST be removed from the Selected-Replacement-Streams variable and the old stream in that entry MUST be removed from the Selected-Streams variable.

If the Client-features variable indicates that the client supports the com.microsoft.wm.locid (section 2.2.6.10.3) feature, the LocationId field of the RTP payload format header MUST be present in all RTP payload format headers that are contained in an RTP packet in which the M field in the RTP header is set to 1. Otherwise, the LocationId field of the RTP payload format header SHOULD NOT be present.

The RTP packet SHOULD be added to the RTP-Resend-Queue variable in the Abstract Data Model. Any RTP packets in the RTP-Resend-Queue variable whose Timestamp fields are more than 10 seconds earlier than the Timestamp field of the current RTP packet SHOULD be removed from RTP-Resend-Queue

If the selected stream uses the RTP payload format for FEC, the server. MUST increment the value of the counter for the stream in the FEC-Span-Counters variable in the Abstract Data Model by 0x01.

If the selected stream uses the RTP payload format for FEC, the server MUST compute the result of multiplying the value of FecSpan with the value of FecBurstMargin. These two values are obtained from the fec-parameters token for the selected stream in the FEC-Parameter-State variable. The result of the multiplication is referred to as the Total Span.

After an RTP packet for a stream that uses the RTP payload format for FEC has been sent, if the value of the stream's counter in the FEC-Span-Counters variable is equal to the Total Span, then the following rules apply:

  • The stream's counter in the FEC-Span-Counters variable MUST be set to 0x00.

  • The server MUST transmit a total of FecPerSpan multiplied by FecBurstMargin FEC RTP packets, where FecPerSpan and FecBurstMargin are values obtained from the fec-parameters token for the selected stream in the FEC-Parameter-State variable. The FEC RTP packets MUST adhere to the RTP Payload Format for FEC, defined in section 2.2.2.

  • If FecPerSpan and FecBurstMargin are both greater than 1, then the FEC RTP packets from different spans SHOULD be transmitted in interleaved order. For example, the first FEC RTP packet from the first span, followed by the first FEC RTP packet from the second span, followed by the second FEC RTP packet from the first span, and so on.