3.2.7.7.3 ChosenRate Calculations
If the value of the Send Time field of the ASF packet that includes the ASF payload is greater than the value of the Profile_FirstSendTime variable, then the server MUST compute the sum of the value of the Profile_BytesNeeded variable and the size of the media object in the ASF payload, and multiply the sum by 1,000. The resulting value MUST then be divided by the value of the Send Time field of the ASF packet that includes the ASF payload with the value of the Profile_FirstSendTime variable subtracted from it. The value that results is referred to as the Current Average Playback Byte Rate.
If the value of the Send Time field of the ASF packet that includes the ASF payload is less than or equal to the value of the Profile_FirstSendTime variable, then the Current Average Playback Byte Rate is 0.
If the Current Average Playback Byte Rate is 0, or if the Current Average Playback Byte Rate is greater than the value of the Profile_PlaybackRate variable, then the Profile_ChosenRate variable MUST be set to the value of the Profile_PlaybackRate variable.
If the Current Average Playback Byte Rate is not 0, and if the Current Average Playback Byte Rate is less than or equal to the value of the Profile_PlaybackRate variable, then the Profile_ChosenRate variable MUST be set to the Current Average Playback Byte Rate.
If the value of the Presentation Time field of the ASF payload is greater than the value of the Profile_LastPresTime variable, then the server MUST perform the processing rules in section 3.2.7.7.4.
The server MUST now set the value of the Profile_LastPresTime variable to the value of the Presentation Time field of the ASF payload.