3.2.5.2.1.6 Sending a Wave Confirm PDU

The structure and fields of the Wave Confirm PDU are specified in section 2.2.3.8.

Unless an unreliable UDP transport is used, as specified in [MS-RDPEUDP], the client MUST send a Wave Confirm PDU in response to any audio sample sent by the server. The client MUST send the PDU over the same channel used to receive the audio sample. That is, if the client received a WaveInfo PDU and Wave PDU, then the client MUST send the Wave Confirm PDU over virtual channels. If the client received a Wave Encrypt PDU, or several UDP Wave PDUs and a UDP Wave Last PDU, then the client MUST send the Wave Confirm PDU over UDP.

The client MUST send the Wave Confirm PDU immediately after consuming the audio data. The cConfirmedBlockNo field of the Wave Confirm PDU MUST be identical to the cBlockNo field of the PDU that sent the audio data, whether it is a WaveInfo PDU, a Wave Encrypt PDU, or a UDP Wave Last PDU. The wTimeStamp field MUST be set to the same field of the originating WaveInfo PDU, Wave Encrypt PDU, or UDP Wave Last PDU, plus the time, in milliseconds, between receiving the complete wave PDU from the network and sending this PDU. This enables the server to calculate the amount of time it takes for the client to receive the audio data PDU and send the confirmation.