3.3.5.2 Data Transfer Sequence
The data transfer sequence messages are used to send audio data from the server to the client.
As specified in section 1.3.2.2, there are three distinct sequences for the exchange of audio data:
The first involves sending a WaveInfo PDU and a Wave PDU, and receiving a Wave Confirm PDU over virtual channels.
The second involves sending a Wave Encrypt PDU and receiving a Wave Confirm PDU over UDP.
The third involves sending several UDP Wave PDUs and a UDP Wave Last PDU, and receiving a Wave Confirm PDU over UDP.
If the client does not advertise a valid port for UDP during version exchange, the first sequence MUST be used.
If the client does advertise a valid port for UDP and the version of either the client or server is below 5, the first or second sequence SHOULD<23> be used.
If the client does advertise a valid port for UDP and the version of both the client and the server are at least 5, any of the three sequences SHOULD<24> be used.
For the data transfer sequence to take place, the client MUST have set the TSSNDCAPS_ALIVE (0x0000001) flag in the Client Audio Formats and Version PDU.
After a particular sequence is selected for use by the server, that sequence SHOULD be used throughout the protocol. Any malformed packets MUST be ignored.