Bluetooth GAVDP Overview

Bluetooth GAVDP enables audio or video streaming and allows device manufacturers to add their own interface to GAVDP to create their own GAVDP-based profiles.

Purpose

Generic Audio Video Distribution Profile (GAVDP) defines a mechanism for handling streaming of audio and video over an AVDTP channel.

Architecture

The CGavdp class provides an implementation of the GAVDP profile.

The MGavdpUser mixin class maps onto the AVDTP Indication and Confirm services.

APIs

The key classes of Symbian's implementation of GAVDP are as follows:

API Description

CGavdp

This class provides an implementation of the GAVDP profile. It is the only supported means by which to use the AVDTP protocol.

An RGavdp instance represents a signalling session with a remote device supporting GAVDP. The RGavdp handle can manage local and remote stream endpoints (SEPs), using primitives similar to those described in the GAVDP specification.

The implementer can choose to use an RGavdp instance for each local stream endpoint, enabling the RGavdp client to support more than one stream simultaneously. RGavdp can be used to manage many stream endpoints. A client must register a stream endpoint to be able to use GAVDP. An attempt to connect will result in an error if a stream endpoint is not registered locally. No listening will take place until a stream endpoint is registered.

At most one request on RGavdp may be outstanding at any time.

MGavdpUser

This mixin class provides call backs for AVDTP in the form of Indications (unsolicited) and Confirms (solicited).

Note: Unsolicited callbacks are present because A2DP allows for the remote end (whether it is a source or a sink) to initiate GAVDP procedures (and thus AVDTP transactions). Implementations of MGavdpUser must expect that some callbacks can therefore occur without having made a request on RGavdp.

Where the semantics of the unsolicited callback in acceptor role (ACP) require no involvement from the GAVDP client, GAVDP calls back on the Confirm path.

Where the callback requires a response (for example, an accept) from the GAVDP client Indication callbacks are used. For example, when listening, although the client may not have requested a connection, the remote end may connect. Since no involvement from the GAVDP client is required to fulfil this connection, the MGavdpUser::GAVDP_ConnectConfirm callback is issued once the connection has been successfully completed, actively or passively.

GAVDP library details

The DLL that provides the functionality and the library to which your code must link is identified below.

DLL LIB Short description

gavdp.dll

gavdp.lib

Static DLL that supports invocation of the Audio Video Distribution Transport Profile (AVDTP) protocol.

Typical uses

There are two roles defined for GAVDP, they are:

  • Initiator (INT), and

  • Acceptor (ACP).

INT begins a signalling procedure and ACP responds. The roles are not linked to the master / slave relationship between devices and can switch when a new procedure is initiated.

GAVDP has been implemented in the Symbian platform Bluetooth subsystem specifically to support the Bluetooth stereo headset usecase. The Audio Video Distribution Transport Protocol (AVDTP) manages the transmission of audio packets over an L2CAP channel. The GAVDP component of the Bluetooth subsystem provides an API to configure, send and receive data over the AVDTP within an ESock plugin.