LE Audio音频广播新功能Auracast介绍
/*!
\copyright Copyright (c) 2019-2022 Qualcomm Technologies International, Ltd.
All Rights Reserved.
Qualcomm Technologies International, Ltd. Confidential and Proprietary.
\file audio_sources.h
\defgroup audio_sources Audio Sources
\ingroup audio_domain
\brief The audio sources component provides generic API to control any audio source.
The audio sources component allows multiple components to register its implementation of one or more interfaces.
Then the component using audio sources can 'route' its call to the specific implementation using audio_source_t source parameter.
In effect component using audio sources and in fact audio sources itself doesn't depend on the code implementing paricular audio source.
Each of interfaces works independently from others.
As such any combination of interfaces can be implemented and registered by a component.
Typical example would be A2DP profile in BT domain implementing the audio and volume interfaces,
AVRCP profile implementing media control and observer (for absolute volume) interfaces,
and Media Player service using the audio sources component to control it.
The interfaces are:
- Audio - getting parameters required to use an audio source in the audio subsystem
- Media Control - controlling playback of audio, like pause, fast forward
- Volume - controlling volume of typical audio sources
- Volume Control - controlling volume of audio sources where the volume value is determined by a remote device
- Observer - currently notify on volume change only, and it is used to implement AVRCP absolute volume
*/
#ifndef AUDIO_SOURCES_H_
#define AUDIO_SOURCES_H_
#include "audio_sources_list.h"
#include "audio_sources_audio_interface.h"
#include "audio_sources_media_control_interface.h"
#include "audio_sources_volume_interface.h"
#include "audio_sources_volume_control_interface.h"
#include "audio_sources_observer_interface.h"
#include "source_param_types.h"
#include <device.h>
/*! @{ */
/*! \brief Audio Sources UI Provider contexts
Each Audio Source implemented in the CAA framework must provide an implementation of
the UI Provider interface. This interface allows modules such as the Media Player
service to determine the state of the Audio Source in a manner abstracted from the
implementation specifics of that particular source, be it USB, line-in, A2DP etc.
This abstracted state information can then be used in the CAA UI domain, services and
via the Focus interface to allow the Application high level control of Audio use cases.
\warning The values assigned to the symbolic identifiers of this enumerated type
must not be modified.
\note This enumeration is used by the Focus Select module to determine relative
priorities between Audio Sources and Voice Sources. This prioritisation is
then used to determince which source should be the focus of UI interactions
or a