2.2.3.5 Wave Encrypt PDU (SNDWAVCRYPT)

The Wave Encrypt PDU is a PDU used to send audio data from the server to the client. This PDU MUST be sent over UDP.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Header

wTimeStamp

wFormatNo

cBlockNo

bPad

signature (optional)

...

data (variable)

...

Header (4 bytes): An RDPSND PDU Header (section 2.2.1). The msgType field of the RDPSND PDU header MUST be set to SNDC_WAVEENCRYPT (0x09).

wTimeStamp (2 bytes): A 16-bit unsigned integer representing the time stamp of the audio data. It SHOULD be set to a time that represents when this PDU is built<9>.

wFormatNo (2 bytes): A 16-bit unsigned integer that represents an index into the list of formats exchanged between the client and server during the initialization phase, as described in section 3.1.1.2.

cBlockNo (1 byte): An 8-bit unsigned integer specifying the block ID of the audio data. When the client notifies the server that it has consumed the audio data, it sends a Wave Confirm PDU containing this field in its cConfirmedBlockNo field.

bPad (3 bytes): A 24-bit unsigned integer. This field is unused. The value is arbitrary and MUST be ignored on receipt.

signature (8 bytes): An 8-byte digital signature. If the protocol version of either the server or the client is less than 5, then this field MUST NOT exist. If the version of the server and the client are at least 5, then this field MUST exist. An explanation of how this field is created is specified in section 3.3.5.2.1.3.

data (variable): Encrypted audio data. The audio data MUST be in the format specified by the wFormatNo and MUST be encrypted. For an explanation of how the data is encrypted, see section 3.3.5.2.1.3.