跳转至

AudioManagerA2dpSink

AudioManagerA2dpSink模块提供A2DP(Advanced Audio Distribution Profile)Sink角色的音频管理功能,包括A2DP Sink音频流的创建与销毁、音效算法参数配置与开关控制、语音增强算法参数的设置与获取、音频格式配置以及A2DP蓝牙回调注册。

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

接口清单

接口名称 功能简述
AudioManagerA2dpSinkSetAefParam 设置A2DP sink通道音效算法参数
AudioManagerA2dpSinkSetAefEnable 设置A2DP sink通道音效算法开关
AudioManagerSetSeaParam 设置语音增强算法参数
AudioManagerGetSeaParam 获取语音增强算法参数
AudioManagerA2dpSinkSetParam 设置A2DP sink通道音频格式配置
AudioManagerA2dpSinkCreate 创建A2DP sink音频流
AudioManagerA2dpSinkDestroy 销毁A2DP sink音频流
AudioManagerA2dpSinkRegistCallback 注册A2DP蓝牙回调

Functions

AudioManagerA2dpSinkSetAefParam

int32_t AudioManagerA2dpSinkSetAefParam(int32_t effectType, const char *param, uint32_t length)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 设置A2DP sink通道音效算法参数
  • 通过音效算法类型索引,将参数数据写入音频输出流
  • 参数通过前缀拼接后传递至AudioStreamOut进行配置

前置条件

  • A2DP sink音频流已通过AudioManagerA2dpSinkCreate()创建完成,且内部AudioStreamOut句柄已初始化
  • 入参param不为NULL,且指向的内存空间已申请成功,长度不小于入参length规定值

入参

名称 参数类型 详细说明 约束取值范围
effectType int32_t 音效算法类型 参见uapi_aef_type枚举值
param const char * 音效算法参数指针 不为NULL
length uint32_t 音效算法参数长度 大于0

返回值

返回值 文字含义 触发场景
0 设置成功 音效算法参数设置成功
-1 设置失败 param为NULL、AudioStreamOut句柄为NULL、内存分配失败或参数写入失败

参考案例

AudioManagerA2dpSinkSetAefEnable

int32_t AudioManagerA2dpSinkSetAefEnable(int32_t effectType, bool enable)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 设置A2DP sink通道音效算法开关
  • 通过音效算法类型索引和使能标志,控制音效算法的启停
  • 在播放音频前,应用通过此接口控制音效算法的开启与关闭

前置条件

  • A2DP sink音频流已通过AudioManagerA2dpSinkCreate()创建完成,且内部AudioStreamOut句柄已初始化

入参

名称 参数类型 详细说明 约束取值范围
effectType int32_t 音效算法类型 参见uapi_aef_type枚举值
enable bool 音效算法使能开关 true:启用;false:禁用

返回值

返回值 文字含义 触发场景
0 设置成功 音效开关设置成功
-1 设置失败 AudioStreamOut句柄为NULL或参数写入失败

参考案例

AudioManagerSetSeaParam

int32_t AudioManagerSetSeaParam(const uint8_t *seaParam, uint16_t len)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 设置语音增强算法(SEA)参数
  • 将SEA参数数据写入音频管理器进行配置
  • 用于配置语音增强算法的相关参数

前置条件

  • 音频管理器已初始化完成

入参

名称 参数类型 详细说明 约束取值范围
seaParam const uint8_t * SEA算法参数指针 不为NULL
len uint16_t SEA算法参数长度 大于0

返回值

返回值 文字含义 触发场景
0 设置成功 SEA参数设置成功
-1 设置失败 参数设置失败

AudioManagerGetSeaParam

int32_t AudioManagerGetSeaParam(uint8_t *seaParam, uint16_t len)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 获取语音增强算法(SEA)参数
  • 从音频管理器读取当前SEA算法参数数据
  • 用于读取当前语音增强算法的配置参数

前置条件

  • 音频管理器已初始化完成

入参

名称 参数类型 详细说明 约束取值范围
seaParam uint8_t * SEA算法参数输出缓冲区 不为NULL,缓冲区长度不小于len
len uint16_t SEA算法参数长度 大于0

出参

名称 数据类型 输出说明
seaParam uint8_t * 当前SEA算法参数数据

返回值

返回值 文字含义 触发场景
0 获取成功 SEA参数获取成功
-1 获取失败 参数获取失败

AudioManagerA2dpSinkSetParam

int32_t AudioManagerA2dpSinkSetParam(AudioFormatConfig config)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 设置A2DP sink通道音频格式配置参数
  • 配置音频编解码格式、采样率、通道数等音频流参数
  • 配置完成后,内部自动设置流类型为AUDIO_STREAM_A2DP_MUSIC、链路方向为AUDIO_DOWN_LINK、位宽为BIT_WIDTH_16

前置条件

  • A2DP sink音频流尚未创建或已销毁,在AudioManagerA2dpSinkCreate()之前调用

入参

名称 参数类型 详细说明 约束取值范围
config AudioFormatConfig 音频格式配置 -

返回值

返回值 文字含义 触发场景
0 设置成功 音频格式配置设置成功

参考案例

AudioManagerA2dpSinkCreate

int32_t AudioManagerA2dpSinkCreate(void)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 创建A2DP sink音频流,初始化A2DP sink上下文并启动音频处理线程
  • 内部完成音频焦点申请、AudioStreamOut初始化及音频播放启动
  • 重复调用时返回成功,不重复创建

前置条件

  • 已通过AudioManagerA2dpSinkSetParam()设置音频格式配置
  • 已通过AudioManagerA2dpSinkRegistCallback()注册A2DP蓝牙回调

返回值

返回值 文字含义 触发场景
0 创建成功 A2DP sink音频流创建并启动成功
-1 创建失败 上下文初始化失败或线程创建失败

参考案例

AudioManagerA2dpSinkDestroy

int32_t AudioManagerA2dpSinkDestroy(void)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 销毁A2DP sink音频流,停止音频播放并释放相关资源
  • 内部发送停止信号,等待音频处理线程退出,释放互斥锁、条件变量及上下文内存
  • 若A2DP sink上下文不存在,直接返回成功

前置条件

  • A2DP sink音频流已通过AudioManagerA2dpSinkCreate()创建完成

返回值

返回值 文字含义 触发场景
0 销毁成功 A2DP sink音频流销毁成功

参考案例

AudioManagerA2dpSinkRegistCallback

void AudioManagerA2dpSinkRegistCallback(void)

头文件清单

#include "middleware/services/media/foundation/service/a2dp_sink_service/include/a2dp_sink_service.h"

功能说明

  • 注册A2DP蓝牙sink和source回调函数
  • 内部创建状态互斥锁,注册A2DP sink连接状态和流状态回调,注册A2DP source连接状态和流状态回调
  • 重复调用时直接返回,不重复注册

前置条件

  • A2DP蓝牙协议栈已初始化
  • 尚未调用过此接口(状态互斥锁未创建时才执行注册)

Structures

AudioFormatConfig

typedef struct {
    AudioCodecFormat audioFormat;
    uint32_t sampleRate;
    uint32_t channelCount;
} AudioFormatConfig;

成员说明

成员名称 数据类型 描述
audioFormat AudioCodecFormat 音频编解码格式
sampleRate uint32_t 采样率
channelCount uint32_t 通道数

Enumerations

AudioCodecFormat

typedef enum {
    AUDIO_DEFAULT    = 0,
    PCM              = 1,
    AAC_LC           = 2,
    AAC_HE_V1        = 3,
    AAC_HE_V2        = 4,
    AAC_LD           = 5,
    AAC_ELD          = 6,
    G711A            = 7,
    G711U            = 8,
    G726             = 9,
    OPUS             = 10,
    FLAC             = 11,
    VORBIS           = 12,
    APE              = 13,
    MP3              = 14,
    mSBC             = 15,
    SILK             = 16,
    SBC              = 17,
    L2HC             = 18,
    AMR_WB           = 19,
    LHDC             = 20,
    LDAC             = 21,
    L2HC_VOICE       = 22,
    AUDIO_FORMAT_MAX,
    FORMAT_INVALID = 0xFFFFFFFF,
} AudioCodecFormat;
枚举成员 取值 描述
AUDIO_DEFAULT 0 默认音频格式
PCM 1 PCM格式
AAC_LC 2 高级音频编码低复杂度(AAC-LC)
AAC_HE_V1 3 高效高级音频编码(AAC-HE)
AAC_HE_V2 4 AAC++或aacPlus v2
AAC_LD 5 高级音频编码低时延(AAC-LD)
AAC_ELD 6 高级音频编码增强型低延迟(AAC-ELD)
G711A 7 G711A格式
G711U 8 G711U格式
G726 9 G726格式
OPUS 10 OPUS格式
FLAC 11 FLAC格式
VORBIS 12 VORBIS格式
APE 13 APE格式
MP3 14 MP3格式
mSBC 15 mSBC格式
SILK 16 SILK格式
SBC 17 SBC格式
L2HC 18 L2HC格式
AMR_WB 19 AMR_WB格式
LHDC 20 LHDC格式
LDAC 21 LDAC格式
L2HC_VOICE 22 L2HC语音格式
AUDIO_FORMAT_MAX 23 格式最大值
FORMAT_INVALID 0xFFFFFFFF 无效格式

uapi_aef_type

typedef enum {
    UAPI_AEF_TYPE_NULL,
    UAPI_AEF_TYPE_SWS,
    UAPI_AEF_TYPE_SMARTPA,
    UAPI_AEF_TYPE_WDRC,
    UAPI_AEF_TYPE_AVC,
    UAPI_AEF_TYPE_GEQ,
    UAPI_AEF_TYPE_DRC,
    UAPI_AEF_TYPE_PEQ,
    UAPI_AEF_TYPE_AEF_PRE,
    UAPI_AEF_TYPE_HVS,
    UAPI_AEF_TYPE_CUSTOMER = 0x80,
    UAPI_AEF_TYPE_MAX
} uapi_aef_type;
枚举成员 取值 描述
UAPI_AEF_TYPE_NULL 0 无效音效
UAPI_AEF_TYPE_SWS 1 SWS音效
UAPI_AEF_TYPE_SMARTPA 2 Smart PA音效
UAPI_AEF_TYPE_WDRC 3 助听WDRC音效
UAPI_AEF_TYPE_AVC 4 自动音量控制
UAPI_AEF_TYPE_GEQ 5 GEQ音效
UAPI_AEF_TYPE_DRC 6 音频动态范围控制
UAPI_AEF_TYPE_PEQ 7 PEQ音效
UAPI_AEF_TYPE_AEF_PRE 8 AEF前处理音效
UAPI_AEF_TYPE_HVS 9 HVS lite音效
UAPI_AEF_TYPE_CUSTOMER 0x80 客户自研音效
UAPI_AEF_TYPE_MAX 0x81 音效类型最大值