[MS-RDPEA]:

Remote Desktop Protocol: Audio Output Virtual Channel Extension

Intellectual Property Rights Notice for Open Specifications Documentation

§  Technical Documentation. Microsoft publishes Open Specifications documentation (“this documentation”) for protocols, file formats, data portability, computer languages, and standards support. Additionally, overview documents cover inter-protocol relationships and interactions.

§  Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you can make copies of it in order to develop implementations of the technologies that are described in this documentation and can distribute portions of it in your implementations that use these technologies or in your documentation as necessary to properly document the implementation. You can also distribute in your implementation, with or without modification, any schemas, IDLs, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the Open Specifications documentation.

§  No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.

§  Patents. Microsoft has patents that might cover your implementations of the technologies described in the Open Specifications documentation. Neither this notice nor Microsoft's delivery of this documentation grants any licenses under those patents or any other Microsoft patents. However, a given Open Specifications document might be covered by the Microsoft Open Specifications Promise or the Microsoft Community Promise. If you would prefer a written license, or if the technologies described in this documentation are not covered by the Open Specifications Promise or Community Promise, as applicable, patent licenses are available by contacting .

§  License Programs. To see all of the protocols in scope under a specific license program and the associated patents, visit the Patent Map.

§  Trademarks. The names of companies and products contained in this documentation might be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights. For a list of Microsoft trademarks, visit www.microsoft.com/trademarks.

§  Fictitious Names. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events that are depicted in this documentation are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.

Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than as specifically described above, whether by implication, estoppel, or otherwise.

Tools. The Open Specifications documentation does not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments, you are free to take advantage of them. Certain Open Specifications documents are intended for use in conjunction with publicly available standards specifications and network programming art and, as such, assume that the reader either is familiar with the aforementioned material or has immediate access to it.

Support. For questions and support, please contact .

Revision Summary

Date / Revision History / Revision Class / Comments /
7/20/2007 / 0.1 / Major / MCPP Milestone 5 Initial Availability
9/28/2007 / 0.2 / Minor / Made technical and editorial changes based on feedback.
10/23/2007 / 0.3 / Minor / Made technical and editorial changes based on feedback.
11/30/2007 / 0.4 / Minor / Made technical and editorial changes based on feedback.
1/25/2008 / 0.4.1 / Editorial / Changed language and formatting in the technical content.
3/14/2008 / 0.4.2 / Editorial / Changed language and formatting in the technical content.
5/16/2008 / 0.4.3 / Editorial / Changed language and formatting in the technical content.
6/20/2008 / 0.5 / Minor / Clarified the meaning of the technical content.
7/25/2008 / 0.6 / Minor / Clarified the meaning of the technical content.
8/29/2008 / 0.7 / Minor / Clarified the meaning of the technical content.
10/24/2008 / 0.8 / Minor / Clarified the meaning of the technical content.
12/5/2008 / 1.0 / Major / Updated and revised the technical content.
1/16/2009 / 2.0 / Major / Updated and revised the technical content.
2/27/2009 / 2.0.1 / Editorial / Changed language and formatting in the technical content.
4/10/2009 / 3.0 / Major / Updated and revised the technical content.
5/22/2009 / 3.1 / Minor / Clarified the meaning of the technical content.
7/2/2009 / 4.0 / Major / Updated and revised the technical content.
8/14/2009 / 4.0.1 / Editorial / Changed language and formatting in the technical content.
9/25/2009 / 4.1 / Minor / Clarified the meaning of the technical content.
11/6/2009 / 5.0 / Major / Updated and revised the technical content.
12/18/2009 / 6.0 / Major / Updated and revised the technical content.
1/29/2010 / 7.0 / Major / Updated and revised the technical content.
3/12/2010 / 8.0 / Major / Updated and revised the technical content.
4/23/2010 / 9.0 / Major / Updated and revised the technical content.
6/4/2010 / 9.0.1 / Editorial / Changed language and formatting in the technical content.
7/16/2010 / 9.0.1 / None / No changes to the meaning, language, or formatting of the technical content.
8/27/2010 / 9.0.1 / None / No changes to the meaning, language, or formatting of the technical content.
10/8/2010 / 9.0.1 / None / No changes to the meaning, language, or formatting of the technical content.
11/19/2010 / 9.0.1 / None / No changes to the meaning, language, or formatting of the technical content.
1/7/2011 / 9.0.1 / None / No changes to the meaning, language, or formatting of the technical content.
2/11/2011 / 10.0 / Major / Updated and revised the technical content.
3/25/2011 / 10.0 / None / No changes to the meaning, language, or formatting of the technical content.
5/6/2011 / 10.0 / None / No changes to the meaning, language, or formatting of the technical content.
6/17/2011 / 10.1 / Minor / Clarified the meaning of the technical content.
9/23/2011 / 10.1 / None / No changes to the meaning, language, or formatting of the technical content.
12/16/2011 / 11.0 / Major / Updated and revised the technical content.
3/30/2012 / 12.0 / Major / Updated and revised the technical content.
7/12/2012 / 13.0 / Major / Updated and revised the technical content.
10/25/2012 / 13.0 / None / No changes to the meaning, language, or formatting of the technical content.
1/31/2013 / 13.0 / None / No changes to the meaning, language, or formatting of the technical content.
8/8/2013 / 14.0 / Major / Updated and revised the technical content.
11/14/2013 / 14.0 / None / No changes to the meaning, language, or formatting of the technical content.
2/13/2014 / 14.0 / None / No changes to the meaning, language, or formatting of the technical content.
5/15/2014 / 14.0 / None / No changes to the meaning, language, or formatting of the technical content.
6/30/2015 / 15.0 / Major / Significantly changed the technical content.
10/16/2015 / 15.0 / None / No changes to the meaning, language, or formatting of the technical content.
7/14/2016 / 15.0 / None / No changes to the meaning, language, or formatting of the technical content.
6/1/2017 / 15.0 / None / No changes to the meaning, language, or formatting of the technical content.

Table of Contents

1 Introduction 7

1.1 Glossary 7

1.2 References 7

1.2.1 Normative References 7

1.2.2 Informative References 8

1.3 Overview 8

1.3.1 Audio Redirection Protocol Transport Options 8

1.3.2 Audio Redirection Protocol 9

1.3.2.1 Initialization Sequence 9

1.3.2.2 Data Transfer Sequences 11

1.3.2.3 Audio Setting Transfer Sequences 12

1.4 Relationship to Other Protocols 13

1.5 Prerequisites/Preconditions 13

1.6 Applicability Statement 13

1.7 Versioning and Capability Negotiation 13

1.8 Vendor-Extensible Fields 13

1.9 Standards Assignments 13

2 Messages 14

2.1 Transport 14

2.2 Message Syntax 14

2.2.1 RDPSND PDU Header (SNDPROLOG) 14

2.2.2 Initialization Sequence 15

2.2.2.1 Server Audio Formats and Version PDU (SERVER_AUDIO_VERSION_AND_FORMATS) 15

2.2.2.1.1 Audio Format (AUDIO_FORMAT) 16

2.2.2.2 Client Audio Formats and Version PDU (CLIENT_AUDIO_VERSION_AND_FORMATS) 17

2.2.2.3 Quality Mode PDU 19

2.2.2.4 Crypt Key PDU (SNDCRYPT) 20

2.2.3 Data Sequence 20

2.2.3.1 Training PDU (SNDTRAINING) 20

2.2.3.2 Training Confirm PDU (SNDTRAININGCONFIRM) 21

2.2.3.3 WaveInfo PDU (SNDWAVINFO) 21

2.2.3.4 Wave PDU (SNDWAV) 22

2.2.3.5 Wave Encrypt PDU (SNDWAVCRYPT) 22

2.2.3.6 UDP Wave PDU (SNDUDPWAVE) 23

2.2.3.6.1 Audio FragData (AUDIO_FRAGDATA) 24

2.2.3.7 UDP Wave Last PDU (SNDUDPWAVELAST) 24

2.2.3.8 Wave Confirm PDU (SNDWAV_CONFIRM) 25

2.2.3.9 Close PDU (SNDCLOSE) 26

2.2.3.10 Wave2 PDU (SNDWAVE2) 26

2.2.4 Audio Setting Transfer Sequences 27

2.2.4.1 Volume PDU (SNDVOL) 27

2.2.4.2 Pitch PDU (SNDPITCH) 27

3 Protocol Details 29

3.1 Common Details 29

3.1.1 Abstract Data Model 29

3.1.1.1 Protocol Version 29

3.1.1.2 Audio Format List and Current Audio Format 29

3.1.1.3 Crypt Key 29

3.1.1.4 Quality Mode Setting 29

3.1.1.5 UDP Support 29

3.1.2 Timers 30

3.1.3 Initialization 30

3.1.4 Higher-Layer Triggered Events 30

3.1.4.1 Playing Audio 30

3.1.5 Message Processing Events and Sequencing Rules 31

3.1.6 Timer Events 33

3.1.7 Other Local Events 33

3.2 Client Details 33

3.2.1 Abstract Data Model 33

3.2.2 Timers 33

3.2.3 Initialization 33

3.2.4 Higher-Layer Triggered Events 33

3.2.5 Message Processing Events and Sequencing Rules 33

3.2.5.1 Initialization Sequence 33

3.2.5.1.1 Messages 34

3.2.5.1.1.1 Processing a Server Audio Formats and Version PDU 34

3.2.5.1.1.2 Sending a Client Audio Formats and Version PDU 34

3.2.5.1.1.3 Sending a Quality Mode PDU 34

3.2.5.1.1.4 Processing a Training PDU 34

3.2.5.1.1.5 Sending a Training Confirm PDU 34

3.2.5.1.1.6 Processing a Crypt Key PDU 35

3.2.5.2 Data Transfer Sequence 35

3.2.5.2.1 Messages 35

3.2.5.2.1.1 Processing a WaveInfo PDU 35

3.2.5.2.1.2 Processing a Wave PDU 35

3.2.5.2.1.3 Processing a Wave Encrypt PDU 36

3.2.5.2.1.4 Processing a UDP Wave PDU 36

3.2.5.2.1.5 Processing a UDP Wave Last PDU 36

3.2.5.2.1.6 Sending a Wave Confirm PDU 36

3.2.5.2.1.7 Processing a Close PDU 37

3.2.5.3 Settings Transfer Sequence 37

3.2.5.3.1 Messages 37

3.2.5.3.1.1 Processing a Volume PDU 37

3.2.5.3.1.2 Processing a Pitch PDU 37

3.2.6 Timer Events 37

3.2.7 Other Local Events 38

3.3 Server Details 38

3.3.1 Abstract Data Model 38

3.3.2 Timers 38

3.3.3 Initialization 38

3.3.4 Higher-Layer Triggered Events 38

3.3.5 Message Processing Events and Sequencing Rules 38

3.3.5.1 Initialization Sequence 38

3.3.5.1.1 Messages 38

3.3.5.1.1.1 Sending a Server Audio Formats and Version PDU 38

3.3.5.1.1.2 Processing a Client Audio Formats and Version PDU 38

3.3.5.1.1.3 Processing a Quality Mode PDU 39

3.3.5.1.1.4 Sending a Training PDU 39

3.3.5.1.1.5 Processing a Training Confirm PDU 39

3.3.5.1.1.6 Sending a Crypt Key PDU 39

3.3.5.2 Data Transfer Sequence 39

3.3.5.2.1 Messages 40

3.3.5.2.1.1 Sending a WaveInfo PDU 40

3.3.5.2.1.2 Sending a Wave PDU 40

3.3.5.2.1.3 Sending a Wave Encrypt PDU 40

3.3.5.2.1.4 Sending a UDP Wave PDU 41

3.3.5.2.1.5 Sending a UDP Wave Last PDU 41

3.3.5.2.1.6 Processing a Wave Confirm PDU 42

3.3.5.2.1.7 Sending a Close PDU 42

3.3.5.2.1.8 Sending a Wave2 PDU 42

3.3.5.3 Audio Settings Transfer Sequence 42

3.3.5.3.1 Messages 42

3.3.5.3.1.1 Sending a Volume PDU 42

3.3.5.3.1.2 Sending a Pitch PDU 43

3.3.6 Timer Events 43

3.3.7 Other Local Events 43

4 Protocol Examples 44

4.1 Annotated Initialization Sequence 44

4.1.1 Server Audio Formats and Version PDU 44

4.1.2 Client Audio Formats and Version PDU 45

4.1.3 Training PDU 46

4.1.4 Training Confirm PDU 46

4.2 Annotated Virtual Channel Data Transfer Sequence 46

4.2.1 WaveInfo PDU 47

4.2.2 Wave PDU 47

4.2.3 Wave Confirm PDU 47

4.2.4 Wave2 PDU 47

4.3 Annotated UDP Data Transfer Sequence Using Wave Encrypt PDU 48

4.3.1 Wave Encrypt PDU 48

4.3.2 Wave Confirm PDU 48

4.4 Annotated UDP Data Transfer Sequence Using UPD Wave PDU 48

4.4.1 UDP Wave PDU 48

4.4.2 UDP Wave Last PDU 49

4.4.3 Wave Confirm PDU 49

5 Security 50

5.1 Security Considerations for Implementers 50

5.2 Index of Security Parameters 50

6 Appendix A: Product Behavior 51

7 Change Tracking 58

8 Index 59

1  Introduction

The Remote Desktop Protocol: Audio Output Virtual Channel Extension [MS-RDPEA], an extension to the Remote Desktop Protocol, seamlessly transfers audio data from a server to a client.

Sections 1.5, 1.8, 1.9, 2, and 3 of this specification are normative. All other sections and examples in this specification are informative.

1.1  Glossary

This document uses the following terms:

audio format: A data structure that is used to define waveform-audio data. The actual structure of individual formats is opaque to the underlying transport protocol. For more information, see [MSDN-AUDIOFORMAT].

client: A computer on which the remote procedure call (RPC) client is executing.

dynamic virtual channel: A transport used for lossless communication between an RDP client and a server component over a main data connection, as specified in [MS-RDPEDYC].

protocol data unit (PDU): Information that is delivered as a unit among peer entities of a network and that may contain control information, address information, or data. For more information on remote procedure call (RPC)-specific PDUs, see [C706] section 12.

RC4: A variable key-length symmetric encryption algorithm. For more information, see [SCHNEIER] section 17.1.

server: A computer on which the remote procedure call (RPC) server is executing.

SHA-1 hash: A hashing algorithm as specified in [FIPS180-2] that was developed by the National Institute of Standards and Technology (NIST) and the National Security Agency (NSA).

User Datagram Protocol (UDP): The connectionless protocol within TCP/IP that corresponds to the transport layer in the ISO/OSI reference model.

virtual channel: A transport used for communication between a client and a server component over a main data connection, in 1600-byte chunks, as specified in Static Virtual Channels in [MS-RDPBCGR].

MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as defined in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.

1.2  References

Links to a document in the Microsoft Open Specifications library point to the correct section in the most recently published version of the referenced document. However, because individual documents in the library are not updated at the same time, the section numbers in the documents may not match. You can confirm the correct section numbering by checking the Errata.