1.1 Glossary

This document uses the following terms:

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

client/server mode: A mode that consists of one server with many client connections (one-to-many). From the perspective of each client, there is only one connection: the connection to the server.

codec: An algorithm that is used to convert media between digital formats, especially between raw media data and a format that is more suitable for a specific purpose. Encoding converts the raw data to a digital format. Decoding reverses the process.

compression ID: A GUID that indicates which codec is to be used for encoding and decoding speech data.

DirectPlay: A network communication library included with the Microsoft DirectX application programming interfaces. DirectPlay is a high-level software interface between applications and communication services that makes it easy to connect games over the Internet, a modem link, or a network.

DirectPlay 4: A programming library that implements the IDirectPlay4 programming interface. DirectPlay 4 provides peer-to-peer session-layer services to applications, including session lifetime management, data management, and media abstraction. DirectPlay 4 first shipped with the DirectX 6 multimedia toolkit. Later versions continued to ship up to, and including, DirectX 9. DirectPlay 4 was subsequently deprecated. The DirectPlay 4 DLL continues to ship in current versions of Windows operating systems, but the development library is no longer shipping in Microsoft development tools and software development kits (SDKs).

DirectPlay 4 protocol: The DirectPlay 4 protocol is used by multiplayer games to perform low-latency communication between two or more computers.

DirectPlay 8: A programming library that implements the IDirectPlay8 programming interface. DirectPlay 8 provides peer-to-peer session-layer services to applications, including session lifetime management, data management, and media abstraction. DirectPlay 8 first shipped with the DirectX 8 software development toolkit. Later versions continued to ship up to, and including, DirectX 9. DirectPlay 8 was subsequently deprecated. The DirectPlay 8 DLL continues to ship in current versions of Windows operating systems, but the development library is no longer shipping in Microsoft development tools and Software Development Kits (SDKs).

DirectPlay 8 protocol: The DirectPlay 8 protocol is used by multiplayer games to perform low-latency communication between two or more computers.

DirectPlay client: A player in a DirectPlay client/server game session that has a single established connection with a DirectPlay server and is not performing game session management duties. It also refers to a potential player that is enumerating available DirectPlay servers to join.

DirectPlay client/server session: When the underlying transport is DirectPlay 4, this is a game session with the DPSESSION_CLIENTSERVER flag set in the Flags field of the DPSESSIONDESC2 field as specified in [MC-DPL4CS]. When the underlying transport is DirectPlay 8, this is equivalent to a client/server game session as specified in [MC-DPL8CS].

DirectPlay host: The player in a DirectPlay peer-to-peer game session that is responsible for performing game session management duties, such as responding to game session enumeration requests and maintaining the master copy of all the player and group lists for the game. It has connections to all DirectPlay peers in the game session.

DirectPlay peer-to-peer session: When the underlying transport is DirectPlay 4, this is a game session without the DPSESSION_CLIENTSERVER flag set in the Flags field of the DPSESSIONDESC2 field as specified in [MC-DPL4CS]. When the underlying transport is DirectPlay 8, this is equivalent to a peer-to-peer game session as specified in [MC-DPL8CS].

DirectPlay protocol: Refers to either the DirectPlay 4 or the DirectPlay 8 protocol.

DirectPlay protocol voice message type: In DirectPlay 4, this is a DPSP_MSG_VOICE message as specified in [MC-DPL4CS]. In DirectPlay 8, this is a packet whose DFRAME has the PACKET_COMMAND_USER_2 flag set in the bCommand field as specified in [MC-DPL8R].

DPNID: A 32-bit identification value assigned to a DirectPlay player as part of its participation in a DirectPlay game session.

DVID: A unique 32-bit identifier for an individual client instance or a group of client instances in the protocol. The unique identifier is equivalent to the player ID of the client or group if the underlying transport is DirectPlay 4. If the underlying transport is DirectPlay 8, the identifier is equivalent to the DPNID of the client or group. The value of 0x00000000 is reserved to indicate all voice clients in the game session.

encoded voice stream: A stream of binary data representing speech encoded by a codec.

game session: The metadata associated with the collection of computers participating in a single instance of a computer game.

globally unique identifier (GUID): A term used interchangeably with universally unique identifier (UUID) in Microsoft protocol technical documents (TDs). Interchanging the usage of these terms does not imply or require a specific algorithm or mechanism to generate the value. Specifically, the use of this term does not imply or require that the algorithms described in [RFC4122] or [C706] must be used for generating the GUID. See also universally unique identifier (UUID).

group: A collection of players within a game session. Typically, players are placed in a group when they serve a common purpose.

host: A general-purpose computer that is networking capable.

host migration: The protocol-specific procedure that occurs when the DirectPlay peer that is designated as the host or voice server leaves the DirectPlay game or voice session and another peer assumes that role.

host order ID: A monotonically increasing 32-bit identifier representing the priority of a voice client in a host migration election. The voice server assigns these to voice clients as they connect.

HRESULT: An integer value that indicates the result or status of an operation. A particular HRESULT can have different meanings depending on the protocol using it. See [MS-ERREF] section 2.1 and specific protocol documents for further details.

jitter buffer: A buffer that is used to reorder speech message voice data to reconstruct an encoded voice stream in time for playback. All speech messages are sent unordered and nonguaranteed in order to provide the lowest possible latency. As a result, speech messages are not guaranteed to arrive, can be duplicated, and are not guaranteed to arrive in order. When two packets are received out of order and there are three packets of jitter buffer, the packets can easily be correctly reordered before they are required for playback. If the packets are not correctly reordered in time, the audio is skipped.  The size of a jitter buffer is implementation-specific. The minimum size is 0 frames and the initial size in the default implementation is 2 frames. Depending on the quality of the connection, the jitter buffer could be a passthrough.

little-endian: Multiple-byte values that are byte-ordered with the least significant byte stored in the memory location with the lowest address.

message number: An 8-bit identifier that identifies which voice burst a speech frame belongs to. This number starts at 0 and can wrap.

payload: The data that is transported to and from the application that is using either the DirectPlay 4 protocol or DirectPlay 8 protocol.

peer: The entity being authenticated by the authenticator.

peer-to-peer: A server-less networking technology that allows several participating network devices to share resources and communicate directly with each other.

player: A person who is playing a computer game. There can be multiple players on a computer participating in any given game session. See also name table.

player ID: A 32-bit integer that uniquely represents a player.

sequence number: An 8-bit identifier that specifies the location order of a speech frame within a voice burst, and which is used to reorder speech frames upon their receipt. The value of the number starts at 0, increases by one for each speech frame within the voice burst, and may wrap through reuse of older low values that are no longer in the computing system. Sequence number wrapping occurs when the transmitting client reuses a sequence number that was previously used. For example, after using sequence numbers 0x00 through 0xFF, the client transmits a speech frame that reuses the sequence number 0x00. It is the responsibility of the receiver to be aware that the sequence numbers of received speech frames may wrap. In order to allow for guaranteed reordering, the receiver must appropriately handle the situation where more than one received speech frame uses the same sequence number.

server: A DirectPlay system application that is hosting a DirectPlay game session. In the context of DirectPlay 8, the term is reserved for hosts using client/server mode.

server-controlled targeting: Server-controlled targeting occurs when a voice server controls the voice target list for the voice clients. This is enabled when the SessionFlags field of the Connect Accept Message (section 2.2.3.2) contains the DVSESSION_SERVERCONTROLTARGET (0x00000002) value.

speech frame: Encoded voice streams are broken into pieces; each piece is called a speech frame. For the DirectPlay Voice Protocol, the size of each speech frame depends on the codec selected. This list of codecs and their frame sizes is specified in section 1.3.7.

speech message: A protocol message that contains at least a single speech frame, a message number, and a sequence number.

voice burst: Individual speech frames are grouped together into voice bursts. A voice burst contains a set of speech frames during which the timing is preserved by receiving clients. Gaps in the voice burst will be filled with silence to preserve the timing of the received packets. Timing is not guaranteed to be preserved between voice bursts. For more information about voice bursts, see section 1.3.1.

voice client: A DirectPlay client or DirectPlay host that understands the DirectPlay Voice Protocol and acts in a voice client role as specified in section 3.1.

voice message: A Message object that contains audio content recorded by a calling party.

voice server: The DirectPlay client that is responsible for coordinating the voice session. This DirectPlay client understands the DirectPlay Voice Protocol and acts in a voice server role as specified in section 3.2.

voice session: The collection of DirectPlay clients and the DirectPlay host that are running either a voice client and/or a voice server.

voice session subprotocol: The type of subprotocol used by the voice server once the connection subprotocol has completed. See section 1.3 for a complete list of voice session subprotocols.

voice session type: The DirectPlay Voice Protocol supports four different voice session types. Each voice session type corresponds to a voice session subprotocol as specified in section 1.3.

voice target list: An array of DVID values, each representing a user or group of users for which the speech messages from a voice client are intended.

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.