6 Appendix A: Product Behavior
The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.
Windows 7 operating system
Windows Server 2008 R2 operating system
Windows 8 operating system
Windows Server 2012 operating system
Windows 8.1 operating system
Windows Server 2012 R2 operating system
Windows 10 operating system
Windows Server 2016 operating system
Windows Server 2019 operating system
Windows Server 2022 operating system
Windows 11 operating system
Windows Server 2025 operating system
Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.
Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.
<1> Section 2.2.2.2: The following codecs are supported by default on Windows, which includes support for audio input redirection. Unless otherwise specified, information about these codecs can be found in [RFC2361].
Codec name |
Format tag |
---|---|
Microsoft PCM |
WAVE_FORMAT_PCM 0x0001 |
Microsoft Adaptive PCM |
WAVE_FORMAT_ADPCM 0x0002 |
Microsoft ALAW |
WAVE_FORMAT_ALAW 0x0006 |
Microsoft G.723 |
WAVE_FORMAT_MSG723 0x0042 |
Microsoft GSM |
WAVE_FORMAT_GSM610 0x0031 |
Microsoft MULAW |
WAVE_FORMAT_MULAW 0x0007 |
Microsoft AAC Not supported on Windows 7 and Windows Server 2008 R2 |
WAVE_FORMAT_AAC 0xa106 |
Microsoft Implementations deviate from the GSM standard [ETSI-GSM] while bitpacking coefficients, as described by the following example:
-
ITU-T Standard Implementation of GSM 610 if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1; LARc[1] = (*c++ & 0xF) << 2; /* 1 */ LARc[1] |= (*c >> 6) & 0x3; LARc[2] = *c++ & 0x3F; LARc[3] = (*c >> 3) & 0x1F; LARc[4] = (*c++ & 0x7) << 2; LARc[4] |= (*c >> 6) & 0x3; LARc[5] = (*c >> 2) & 0xF; LARc[6] = (*c++ & 0x3) << 2; LARc[6] |= (*c >> 6) & 0x3; LARc[7] = (*c >> 3) & 0x7; LARc[8] = *c++ & 0x7; Microsoft Implementaion of GSM 610 LAR[1] = (ab[0] & 0x3F); LAR[2] = ((ab[0] & 0xC0) >> 6) | ((ab[1] & 0x0F) << 2); LAR[3] = ((ab[1] & 0xF0) >> 4) | ((ab[2] & 0x01) << 4); LAR[4] = ((ab[2] & 0x3E) >> 1); LAR[5] = ((ab[2] & 0xC0) >> 6) | ((ab[3] & 0x03) << 2); LAR[6] = ((ab[3] & 0x3C) >> 2); LAR[7] = ((ab[3] & 0xC0) >> 6) | ((ab[4] & 0x01) << 2); LAR[8] = ((ab[4] & 0x0E) >> 1);
The ITU implementation is Most Significant Bit (MSB) to Least Significant Bit (LSB). The Microsoft Implementation is LSB to MSB. The following coefficients are represented as MSB to LSB. The first line is the bit position in the actual byte, the second line is the coefficient index, and the third line is the bit position of the coefficients.
-
ITU: BYTE 0 BYTE 1 BYTE 2 BYTE 3 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 ... 5 4 3 2 1 0 5 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 ... MS: BYTE 3 BYTE 2 BYTE 1 BYTE 0 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 ... 4 4 4 4 4 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 ... 4 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 5 4 3 2 1 0
<2> Section 3.3.2: Servers implemented for Windows will wait 5 seconds after sending a Version PDU. If the Version PDU from the client is not received within this time, the server terminates the protocol.
<3> Section 3.3.2: Servers implemented for Windows will wait 5 seconds after sending a Sound Formats PDU. If the Sound Formats PDU from the client is not received within this time, the server terminates the protocol.
<4> Section 3.3.2: Servers implemented for Windows will wait 5 seconds after sending an Open PDU. If the Open Reply PDU from the client is not received within this time, the server terminates the protocol.