3.2.5.13 Processing an RDPGFX_FRAME_ACKNOWLEDGE_PDU message

The structure and fields of the RDPGFX_FRAME_ACKNOWLEDGE_PDU message are specified in section 2.2.2.13. The header field MUST be processed as specified in section 3.2.5.1. Once the RDPGFX_FRAME_ACKNOWLEDGE_PDU message has been successfully processed, the frame ID specified in the frameId field MUST be removed from the Unacknowledged Frames (section 3.2.1.2) ADM element.

If the queueDepth field is less than 0xFFFFFFFF, the server MUST expect that RDPGFX_FRAME_ACKNOWLEDGE_PDU messages will continue to be sent by the client. Furthermore, if the queueDepth field is in the range 0x00000001 to 0xFFFFFFFE the server SHOULD use this value to determine how far the client is lagging in terms of graphics decoding and then attempt to throttle the graphics frame rate accordingly.

If the queueDepth field is set to SUSPEND_FRAME_ACKNOWLEDGEMENT (0xFFFFFFFF), the server MUST clear the Unacknowledged Frames (section 3.2.1.2) ADM element and MUST NOT expect any further RDPGFX_FRAME_ACKNOWLEDGE_PDU messages from the client. In this mode, the server MUST NOT wait or block on unacknowledged frames (as the RDPGFX_FRAME_ACKNOWLEDGE_PDU message is not sent by the client) and MUST assume that the client is able to decode graphics data at a rate faster than it is receiving frames.