audio
audio 提供蓝牙基础速率媒体音频流与媒体控制服务,支持 A2DP (Advanced Audio Distribution Profile) 音频流启停与编解码信息上报,以及 AVRCP (Audio/Video Remote Control Profile) 媒体操作、信息更新和音量控制功能。
头文件清单
#include "protocol/bt/host/include/bs_service/bs_br_media_stream.h"
#include "protocol/bt/host/include/bs_service/bs_br_media_control.h"
接口清单
| 接口名称 | 功能简述 |
|---|---|
| bs_br_media_a2dp_register | 注册蓝牙A2DP服务 |
| bs_br_media_a2dp_unregister | 去注册蓝牙A2DP服务 |
| bs_br_media_a2dp_connect | 建立蓝牙A2DP连接 |
| bs_br_media_a2dp_disconnect | 断开蓝牙A2DP连接 |
| bs_br_start_media_stream | 蓝牙媒体音频流启播请求 |
| bs_br_stop_media_stream | 蓝牙媒体音频流停止请求 |
| bs_br_media_stream_operate_result_reply | 蓝牙媒体音频流操作响应 |
| bs_br_media_stream_register_callbacks | 注册A2DP媒体流回调函数 |
| bs_br_media_stream_unregister_callbacks | 去注册A2DP媒体流回调函数 |
| bs_br_media_avrcp_register | 注册蓝牙AVRCP服务 |
| bs_br_media_avrcp_unregister | 去注册蓝牙AVRCP服务 |
| bs_br_media_avrcp_connect | 建立蓝牙AVRCP连接 |
| bs_br_media_avrcp_disconnect | 断开蓝牙AVRCP连接 |
| bs_br_media_operate_request | 蓝牙媒体操作请求 |
| bs_br_media_update_info | 蓝牙媒体信息更新 |
| bs_br_media_volume_operate | 蓝牙媒体音量操作 |
| bs_br_media_volume_notify | 蓝牙媒体音量通知 |
| bs_br_media_register_callbacks | 注册AVRCP媒体回调函数 |
| bs_br_media_unregister_callbacks | 去注册AVRCP媒体回调函数 |
Functions
bs_br_media_a2dp_register
头文件清单
功能说明
- 注册蓝牙A2DP服务
- 指定本地A2DP服务角色(SNK或SRC)
- 注册后本端A2DP服务可被对端设备发现和连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| a2dp_role | uint8_t | 本地A2DP服务角色 | - BR_MEDIA_A2DP_SNK (0x01) - BR_MEDIA_A2DP_SRC (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | A2DP服务注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_a2dp_unregister
头文件清单
功能说明
- 去注册蓝牙A2DP服务
- 指定需去注册的A2DP服务角色
- 去注册后该角色的A2DP服务不再可用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| a2dp_role | uint8_t | 本地A2DP服务角色 | - BR_MEDIA_A2DP_SNK (0x01) - BR_MEDIA_A2DP_SRC (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | A2DP服务去注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_a2dp_connect
头文件清单
功能说明
- 建立蓝牙A2DP连接
- 指定对端设备编号和本端A2DP服务角色
- 发起A2DP连接请求至对端设备
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| a2dp_role | uint8_t | 本端A2DP服务角色 | - BR_MEDIA_A2DP_SNK (0x01) - BR_MEDIA_A2DP_SRC (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | A2DP连接请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_a2dp_disconnect
头文件清单
功能说明
- 断开蓝牙A2DP连接
- 指定对端设备编号和本端A2DP服务角色
- 释放与对端设备的A2DP连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| a2dp_role | uint8_t | 本端A2DP服务角色 | - BR_MEDIA_A2DP_SNK (0x01) - BR_MEDIA_A2DP_SRC (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | A2DP断连请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_start_media_stream
头文件清单
功能说明
- 蓝牙媒体音频流启播请求
- 向指定对端设备发起音频流启播请求
- 启播请求被接受后进入播放状态
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 音频流启播请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_stop_media_stream
头文件清单
功能说明
- 蓝牙媒体音频流停止请求
- 向指定对端设备发起音频流停止请求
- 停止请求被接受后音频流进入停止状态
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 音频流停止请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_stream_operate_result_reply
errcode_t bs_br_media_stream_operate_result_reply(uint16_t dev_id, uint8_t opt_type, bool is_accept)
头文件清单
功能说明
- 蓝牙媒体音频流操作响应
- 对对端设备发起的音频流操作请求进行接受或拒绝应答
- 根据操作类型和响应结果决定后续流状态
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| opt_type | uint8_t | 操作类型 | - BR_MEDIA_STREAM_OPT_START (0x01) |
| is_accept | bool | 是否接受操作请求 | true:接受;false:拒绝 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 操作响应发送成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_stream_register_callbacks
errcode_t bs_br_media_stream_register_callbacks(uint8_t app_id, bs_br_media_stream_callbacks_t *func)
头文件清单
功能说明
- 注册A2DP媒体流回调函数
- 应用通过注册回调接收A2DP连接状态、流状态和编解码信息上报
- 支持多个应用注册各自的回调
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| app_id | uint8_t | 应用ID | 默认为0 |
| func | bs_br_media_stream_callbacks_t * | 回调函数指针 | 非空指针 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 回调注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_stream_unregister_callbacks
头文件清单
功能说明
- 去注册A2DP媒体流回调函数
- 取消指定应用ID的回调注册
- 去注册后该应用不再接收A2DP媒体流相关上报
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| app_id | uint8_t | 应用ID | 默认为0 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 回调去注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_avrcp_register
头文件清单
功能说明
- 注册蓝牙AVRCP服务
- 指定本地AVRCP服务角色(CT或TG)
- 注册后本端AVRCP服务可被对端设备发现和连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| avrcp_role | uint8_t | 本地AVRCP服务角色 | - BR_MEDIA_AVRCP_CT (0x01) - BR_MEDIA_AVRCP_TG (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | AVRCP服务注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_avrcp_unregister
头文件清单
功能说明
- 去注册蓝牙AVRCP服务
- 指定需去注册的AVRCP服务角色
- 去注册后该角色的AVRCP服务不再可用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| avrcp_role | uint8_t | 本地AVRCP服务角色 | - BR_MEDIA_AVRCP_CT (0x01) - BR_MEDIA_AVRCP_TG (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | AVRCP服务去注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_avrcp_connect
头文件清单
功能说明
- 建立蓝牙AVRCP连接
- 指定对端设备编号和本端AVRCP服务角色
- 发起AVRCP连接请求至对端设备
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| avrcp_role | uint8_t | 本端AVRCP服务角色 | - BR_MEDIA_AVRCP_CT (0x01) - BR_MEDIA_AVRCP_TG (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | AVRCP连接请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_avrcp_disconnect
头文件清单
功能说明
- 断开蓝牙AVRCP连接
- 指定对端设备编号和本端AVRCP服务角色
- 释放与对端设备的AVRCP连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| avrcp_role | uint8_t | 本端AVRCP服务角色 | - BR_MEDIA_AVRCP_CT (0x01) - BR_MEDIA_AVRCP_TG (0x02) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | AVRCP断连请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_operate_request
errcode_t bs_br_media_operate_request(uint16_t dev_id, uint8_t opt_type, uint8_t *param, uint16_t param_len)
头文件清单
功能说明
- 蓝牙媒体操作请求
- 向指定对端设备发送媒体控制操作请求(如播放、暂停、上下曲等)
- 操作类型和参数由opt_type和param指定
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| opt_type | uint8_t | 媒体操作类型 | - BR_MEDIA_OPT_PLAY (0x01) - BR_MEDIA_OPT_STOP (0x02) - BR_MEDIA_OPT_PAUSE (0x03) - BR_MEDIA_OPT_FORWARD (0x04) - BR_MEDIA_OPT_BACKWARD (0x05) - BR_MEDIA_OPT_REWIND (0x06) - BR_MEDIA_OPT_FAST_FORWARD (0x07) - BR_MEDIA_OPT_REGISTER_ATTRIBUTE_NOTIFICATION (0x08) - BR_MEDIA_OPT_UNREGISTER_ATTRIBUTE_NOTIFICATION (0x09) - BR_MEDIA_OPT_REGISTER_POSITION_NOTIFICATION (0x0A) - BR_MEDIA_OPT_UNREGISTER_POSITION_NOTIFICATION (0x0B) |
| param | uint8_t * | 媒体操作参数指针 | 依opt_type而定,部分操作param为NULL |
| param_len | uint16_t | 媒体操作参数长度 | 依opt_type而定,部分操作param_len为0 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 媒体操作请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_update_info
errcode_t bs_br_media_update_info(uint16_t dev_id, uint8_t type, uint8_t *param, uint16_t param_len)
头文件清单
功能说明
- 蓝牙媒体信息更新
- 向指定对端设备更新媒体信息(如播放状态、媒体元素属性、播放位置等)
- 信息类型和参数由type和param指定
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| type | uint8_t | 媒体信息类型 | - BR_MEDIA_INFO_PLAY_STATUS (0x01) - BR_MEDIA_INFO_ELEMENT_ATTR (0x02) - BR_MEDIA_INFO_PLAYBACK_POSITION (0x03) |
| param | uint8_t * | 媒体信息参数指针 | 依type而定 |
| param_len | uint16_t | 媒体信息参数长度 | 依type而定 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 媒体信息更新成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_volume_operate
头文件清单
功能说明
- 蓝牙媒体音量操作
- 向指定对端设备发起音量控制操作(如调高、调低、静音、设置绝对音量)
- 操作类型为设置绝对音量时需指定音量值
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| type | uint8_t | 音量操作类型 | - BR_MEDIA_VOLUME_OPT_UP (0x01) - BR_MEDIA_VOLUME_OPT_DOWN (0x02) - BR_MEDIA_VOLUME_OPT_MUTE (0x03) - BR_MEDIA_VOLUME_OPT_SET_ABSOLUTE (0x04) |
| volume | uint8_t | 绝对音量值 | 0x00 ~ 0x7F,操作类型为BR_MEDIA_VOLUME_OPT_SET_ABSOLUTE时必须设置 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 音量操作成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_volume_notify
头文件清单
功能说明
- 蓝牙媒体音量通知
- 向指定对端设备通知绝对音量值
- 用于同步本端音量状态至对端设备
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 对端设备编号 | 有效设备编号 |
| volume | uint8_t | 音量值 | 0x00 ~ 0x7F |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 音量通知成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_register_callbacks
头文件清单
功能说明
- 注册AVRCP媒体回调函数
- 应用通过注册回调接收AVRCP连接状态、媒体操作请求、信息更新、音量操作和音量通知上报
- 支持多个应用注册各自的回调
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| app_id | uint8_t | 应用ID | 默认为0 |
| func | bs_br_media_callbacks_t * | 回调函数指针 | 非空指针 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 回调注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_media_unregister_callbacks
头文件清单
功能说明
- 去注册AVRCP媒体回调函数
- 取消指定应用ID的回调注册
- 去注册后该应用不再接收AVRCP媒体相关上报
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| app_id | uint8_t | 应用ID | 默认为0 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 回调去注册成功 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
Type definitions
bs_br_media_a2dp_conn_state_cbk
typedef void (*bs_br_media_a2dp_conn_state_cbk)(uint16_t dev_id, uint8_t a2dp_role, uint8_t conn_state);
使用说明
- 调用时机:A2DP连接状态变化时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 a2dp_role:本端A2DP服务角色
- 参数 conn_state:服务连接状态
bs_br_media_stream_state_changed_cbk
typedef void (*bs_br_media_stream_state_changed_cbk)(uint16_t dev_id, uint8_t a2dp_role, uint8_t stream_state);
使用说明
- 调用时机:媒体流状态变化时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 a2dp_role:本端A2DP服务角色
- 参数 stream_state:流状态
bs_br_media_stream_codec_report_cbk
typedef void (*bs_br_media_stream_codec_report_cbk)(uint16_t dev_id, uint8_t a2dp_role, bs_br_media_codec_info_t *codec);
使用说明
- 调用时机:媒体流编解码信息上报时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 a2dp_role:本端A2DP服务角色
- 参数 codec:流编解码参数指针
bs_br_media_avrcp_conn_state_cbk
typedef void (*bs_br_media_avrcp_conn_state_cbk)(uint16_t dev_id, uint8_t avrcp_role, uint8_t conn_state);
使用说明
- 调用时机:AVRCP连接状态变化时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 avrcp_role:本端AVRCP服务角色
- 参数 conn_state:服务连接状态
bs_br_media_operate_request_cbk
typedef void (*bs_br_media_operate_request_cbk)(uint16_t dev_id, uint8_t opt_type, uint8_t *param, uint16_t param_len);
使用说明
- 调用时机:对端设备发起媒体操作请求时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 opt_type:媒体操作类型
- 参数 param:媒体操作参数指针
- 参数 param_len:媒体操作参数长度
bs_br_media_info_update_cbk
typedef void (*bs_br_media_info_update_cbk)(uint16_t dev_id, uint8_t type, uint8_t *param, uint16_t param_len);
使用说明
- 调用时机:媒体信息更新时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 type:媒体信息类型
- 参数 param:媒体信息参数指针
- 参数 param_len:媒体信息参数长度
bs_br_media_volume_operate_cbk
使用说明
- 调用时机:对端设备发起音量操作时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 type:音量操作类型
- 参数 volume:绝对音量值
bs_br_media_volume_info_report_cbk
使用说明
- 调用时机:对端设备通知绝对音量时由协议栈调用
- 参数 dev_id:对端设备编号
- 参数 volume:音量值
Associations
bs_br_media_codec_info_t.info
| 成员名称 | 类型 | 描述 | 接口使用逻辑 |
|---|---|---|---|
| sbc | bs_br_media_sbc_codec_t | SBC编解码信息 | 编解码信息上报中SBC格式载体 |
| aac | bs_br_media_aac_codec_t | AAC编解码信息 | 编解码信息上报中AAC格式载体 |
Enumerations
bs_br_media_a2dp_role_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_A2DP_SNK | 0x01 | A2DP Sink角色 |
| BR_MEDIA_A2DP_SRC | 0x02 | A2DP Source角色 |
bs_br_media_stream_opt_type_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_STREAM_OPT_START | 0x01 | 音频流启播操作 |
bs_br_media_stream_state_t
typedef enum {
BR_MEDIA_STREAM_STARTING = 1,
BR_MEDIA_STREAM_STREAMING,
BR_MEDIA_STREAM_STOPED,
BR_MEDIA_STREAM_CLOSED,
} bs_br_media_stream_state_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_STREAM_STARTING | 1 | 启播请求状态 |
| BR_MEDIA_STREAM_STREAMING | 2 | 播放状态 |
| BR_MEDIA_STREAM_STOPED | 3 | 停止状态 |
| BR_MEDIA_STREAM_CLOSED | 4 | 关闭状态 |
bs_br_media_sbc_sf_t
typedef enum {
BR_MEDIA_SBC_SF_16000 = 0x80,
BR_MEDIA_SBC_SF_32000 = 0x40,
BR_MEDIA_SBC_SF_44100 = 0x20,
BR_MEDIA_SBC_SF_48000 = 0x10,
BR_MEDIA_SBC_SF_ALL = 0xF0,
} bs_br_media_sbc_sf_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_SBC_SF_16000 | 0x80 | 16KHz采样率 |
| BR_MEDIA_SBC_SF_32000 | 0x40 | 32KHz采样率 |
| BR_MEDIA_SBC_SF_44100 | 0x20 | 44.1KHz采样率 |
| BR_MEDIA_SBC_SF_48000 | 0x10 | 48KHz采样率 |
| BR_MEDIA_SBC_SF_ALL | 0xF0 | 全部采样率 |
bs_br_media_sbc_chmode_t
typedef enum {
BR_MEDIA_SBC_CHMODE_MONO = 0x08,
BR_MEDIA_SBC_CHMODE_DUAL_CHANNEL = 0x04,
BR_MEDIA_SBC_CHMODE_STEREO = 0x02,
BR_MEDIA_SBC_CHMODE_JOINT_STEREO = 0x01,
BR_MEDIA_SBC_CHMODE_ALL = 0x0F,
} bs_br_media_sbc_chmode_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_SBC_CHMODE_MONO | 0x08 | 单声道 |
| BR_MEDIA_SBC_CHMODE_DUAL_CHANNEL | 0x04 | 双通道 |
| BR_MEDIA_SBC_CHMODE_STEREO | 0x02 | 立体声 |
| BR_MEDIA_SBC_CHMODE_JOINT_STEREO | 0x01 | 联合立体声 |
| BR_MEDIA_SBC_CHMODE_ALL | 0x0F | 全部通道模式 |
bs_br_media_sbc_block_t
typedef enum {
BR_MEDIA_SBC_BLOCK_4 = 0x80,
BR_MEDIA_SBC_BLOCK_8 = 0x40,
BR_MEDIA_SBC_BLOCK_12 = 0x20,
BR_MEDIA_SBC_BLOCK_16 = 0x10,
BR_MEDIA_SBC_BLOCK_ALL = 0xF0,
} bs_br_media_sbc_block_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_SBC_BLOCK_4 | 0x80 | 块长度为4 |
| BR_MEDIA_SBC_BLOCK_8 | 0x40 | 块长度为8 |
| BR_MEDIA_SBC_BLOCK_12 | 0x20 | 块长度为12 |
| BR_MEDIA_SBC_BLOCK_16 | 0x10 | 块长度为16 |
| BR_MEDIA_SBC_BLOCK_ALL | 0xF0 | 全部块长度 |
bs_br_media_sbc_subband_t
typedef enum {
BR_MEDIA_SBC_SUBBAND_4 = 0x08,
BR_MEDIA_SBC_SUBBAND_8 = 0x04,
BR_MEDIA_SBC_SUBBAND_ALL = 0x0C,
} bs_br_media_sbc_subband_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_SBC_SUBBAND_4 | 0x08 | 子带个数为4 |
| BR_MEDIA_SBC_SUBBAND_8 | 0x04 | 子带个数为8 |
| BR_MEDIA_SBC_SUBBAND_ALL | 0x0C | 全部子带个数 |
bs_br_media_sbc_allocation_t
typedef enum {
BR_MEDIA_SBC_SNR = 0x02,
BR_MEDIA_SBC_LOUDNESS = 0x01,
BR_MEDIA_SBC_ALLOC_ALL = 0x03,
} bs_br_media_sbc_allocation_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_SBC_SNR | 0x02 | 信噪比优化 |
| BR_MEDIA_SBC_LOUDNESS | 0x01 | 响度优化 |
| BR_MEDIA_SBC_ALLOC_ALL | 0x03 | 全部分配方式 |
bs_br_media_aac_object_type_t
typedef enum {
BR_MEDIA_AAC_OBJECT_TYPE_2_LC = 0x80,
BR_MEDIA_AAC_OBJECT_TYPE_4_LC = 0x40,
BR_MEDIA_AAC_OBJECT_TYPE_4_LTP = 0x20,
BR_MEDIA_AAC_OBJECT_TYPE_4_SCALABLE = 0x10,
BR_MEDIA_AAC_OBJECT_TYPE_ALL = 0xF0,
} bs_br_media_aac_object_type_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_AAC_OBJECT_TYPE_2_LC | 0x80 | MPEG-2 AAC LC对象类型 |
| BR_MEDIA_AAC_OBJECT_TYPE_4_LC | 0x40 | MPEG-4 AAC LC对象类型 |
| BR_MEDIA_AAC_OBJECT_TYPE_4_LTP | 0x20 | MPEG-4 AAC LTP对象类型 |
| BR_MEDIA_AAC_OBJECT_TYPE_4_SCALABLE | 0x10 | MPEG-4 AAC Scalable对象类型 |
| BR_MEDIA_AAC_OBJECT_TYPE_ALL | 0xF0 | 全部对象类型 |
bs_br_media_aac_sf_t
typedef enum {
BR_MEDIA_AAC_SF_8000 = 0x0800,
BR_MEDIA_AAC_SF_11025 = 0x0400,
BR_MEDIA_AAC_SF_12000 = 0x0200,
BR_MEDIA_AAC_SF_16000 = 0x0100,
BR_MEDIA_AAC_SF_22050 = 0x0080,
BR_MEDIA_AAC_SF_24000 = 0x0040,
BR_MEDIA_AAC_SF_32000 = 0x0020,
BR_MEDIA_AAC_SF_44100 = 0x0010,
BR_MEDIA_AAC_SF_48000 = 0x0008,
BR_MEDIA_AAC_SF_64000 = 0x0004,
BR_MEDIA_AAC_SF_88200 = 0x0002,
BR_MEDIA_AAC_SF_96000 = 0x0001,
} bs_br_media_aac_sf_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_AAC_SF_8000 | 0x0800 | 8KHz采样率 |
| BR_MEDIA_AAC_SF_11025 | 0x0400 | 11.025KHz采样率 |
| BR_MEDIA_AAC_SF_12000 | 0x0200 | 12KHz采样率 |
| BR_MEDIA_AAC_SF_16000 | 0x0100 | 16KHz采样率 |
| BR_MEDIA_AAC_SF_22050 | 0x0080 | 22.05KHz采样率 |
| BR_MEDIA_AAC_SF_24000 | 0x0040 | 24KHz采样率 |
| BR_MEDIA_AAC_SF_32000 | 0x0020 | 32KHz采样率 |
| BR_MEDIA_AAC_SF_44100 | 0x0010 | 44.1KHz采样率 |
| BR_MEDIA_AAC_SF_48000 | 0x0008 | 48KHz采样率 |
| BR_MEDIA_AAC_SF_64000 | 0x0004 | 64KHz采样率 |
| BR_MEDIA_AAC_SF_88200 | 0x0002 | 88.2KHz采样率 |
| BR_MEDIA_AAC_SF_96000 | 0x0001 | 96KHz采样率 |
bs_br_media_aac_channel_t
typedef enum {
BR_MEDIA_AAC_CHANNEL_1 = 0x08,
BR_MEDIA_AAC_CHANNEL_2 = 0x04,
BR_MEDIA_AAC_CHANNEL_ALL = 0x0C,
} bs_br_media_aac_channel_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_AAC_CHANNEL_1 | 0x08 | 1通道 |
| BR_MEDIA_AAC_CHANNEL_2 | 0x04 | 2通道 |
| BR_MEDIA_AAC_CHANNEL_ALL | 0x0C | 全部通道 |
bs_br_media_aac_vbr_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_AAC_VBR_SUPPORTED | 0x80 | 支持可变比特率 |
bs_br_media_codec_type_t
typedef enum {
BR_MEDIA_STREAM_CODEC_SBC = 0x00,
BR_MEDIA_STREAM_CODEC_AAC = 0x01,
} bs_br_media_codec_type_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_STREAM_CODEC_SBC | 0x00 | SBC编码格式 |
| BR_MEDIA_STREAM_CODEC_AAC | 0x01 | MPEG24/AAC编码格式 |
bs_br_media_avrcp_role_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_AVRCP_CT | 0x01 | AVRCP Controller角色 |
| BR_MEDIA_AVRCP_TG | 0x02 | AVRCP Target角色 |
bs_br_media_element_attr_id_t
typedef enum {
BR_MEDIA_ELEMENT_ATTR_TITLE = 0x01,
BR_MEDIA_ELEMENT_ATTR_ARTIST_NAME = 0x02,
BR_MEDIA_ELEMENT_ATTR_ALBUM_NAME = 0x03,
BR_MEDIA_ELEMENT_ATTR_TRACK_NUMBER = 0x04,
BR_MEDIA_ELEMENT_ATTR_TOTAL_NUMBER_OF_TRACKS = 0x05,
BR_MEDIA_ELEMENT_ATTR_TRACK_GENRE = 0x06,
BR_MEDIA_ELEMENT_ATTR_TRACK_PLAYING_TIME = 0x07,
} bs_br_media_element_attr_id_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_ELEMENT_ATTR_TITLE | 0x01 | 标题,歌曲名或内容描述 |
| BR_MEDIA_ELEMENT_ATTR_ARTIST_NAME | 0x02 | 艺人、表演者或团体 |
| BR_MEDIA_ELEMENT_ATTR_ALBUM_NAME | 0x03 | 唱片,专辑 |
| BR_MEDIA_ELEMENT_ATTR_TRACK_NUMBER | 0x04 | 音频文件的原始编号 |
| BR_MEDIA_ELEMENT_ATTR_TOTAL_NUMBER_OF_TRACKS | 0x05 | tracks/elements的总个数 |
| BR_MEDIA_ELEMENT_ATTR_TRACK_GENRE | 0x06 | 风格,流派 |
| BR_MEDIA_ELEMENT_ATTR_TRACK_PLAYING_TIME | 0x07 | 音频文件的播放时间 |
bs_br_media_operate_type_t
typedef enum {
BR_MEDIA_OPT_PLAY = 0x01,
BR_MEDIA_OPT_STOP = 0x02,
BR_MEDIA_OPT_PAUSE = 0x03,
BR_MEDIA_OPT_FORWARD = 0x04,
BR_MEDIA_OPT_BACKWARD = 0x05,
BR_MEDIA_OPT_REWIND = 0x06,
BR_MEDIA_OPT_FAST_FORWARD = 0x07,
BR_MEDIA_OPT_REGISTER_ATTRIBUTE_NOTIFICATION = 0x08,
BR_MEDIA_OPT_UNREGISTER_ATTRIBUTE_NOTIFICATION = 0x09,
BR_MEDIA_OPT_REGISTER_POSITION_NOTIFICATION = 0x0A,
BR_MEDIA_OPT_UNREGISTER_POSITION_NOTIFICATION = 0x0B,
} bs_br_media_operate_type_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_OPT_PLAY | 0x01 | 播放操作,param为NULL,param_len为0 |
| BR_MEDIA_OPT_STOP | 0x02 | 停止操作,param为NULL,param_len为0 |
| BR_MEDIA_OPT_PAUSE | 0x03 | 暂停操作,param为NULL,param_len为0 |
| BR_MEDIA_OPT_FORWARD | 0x04 | 下一首,param为NULL,param_len为0 |
| BR_MEDIA_OPT_BACKWARD | 0x05 | 上一首,param为NULL,param_len为0 |
| BR_MEDIA_OPT_REWIND | 0x06 | 从起始位置开始播放,param为NULL,param_len为0 |
| BR_MEDIA_OPT_FAST_FORWARD | 0x07 | 快进,param为NULL,param_len为0 |
| BR_MEDIA_OPT_REGISTER_ATTRIBUTE_NOTIFICATION | 0x08 | 注册歌词属性通知,param为NULL,param_len为0 |
| BR_MEDIA_OPT_UNREGISTER_ATTRIBUTE_NOTIFICATION | 0x09 | 去注册歌词属性通知,param为NULL,param_len为0 |
| BR_MEDIA_OPT_REGISTER_POSITION_NOTIFICATION | 0x0A | 注册已播放时长变化通知,param为通知间隔,param_len为4字节 |
| BR_MEDIA_OPT_UNREGISTER_POSITION_NOTIFICATION | 0x0B | 去注册已播放时长变化通知,param为NULL,param_len为0 |
br_media_play_status_t
typedef enum {
BR_MEDIA_PLAY_STATUS_STOPPED = 0x00,
BR_MEDIA_PLAY_STATUS_PLAYING = 0x01,
BR_MEDIA_PLAY_STATUS_PAUSED = 0x02,
BR_MEDIA_PLAY_STATUS_FWD_SEEK = 0x03,
BR_MEDIA_PLAY_STATUS_REV_SEEK = 0x04,
} br_media_play_status_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_PLAY_STATUS_STOPPED | 0x00 | 停止状态 |
| BR_MEDIA_PLAY_STATUS_PLAYING | 0x01 | 播放状态 |
| BR_MEDIA_PLAY_STATUS_PAUSED | 0x02 | 暂停状态 |
| BR_MEDIA_PLAY_STATUS_FWD_SEEK | 0x03 | 快进状态 |
| BR_MEDIA_PLAY_STATUS_REV_SEEK | 0x04 | 快退状态 |
br_media_info_type_t
typedef enum {
BR_MEDIA_INFO_PLAY_STATUS = 0x01,
BR_MEDIA_INFO_ELEMENT_ATTR = 0x02,
BR_MEDIA_INFO_PLAYBACK_POSITION = 0x03,
} br_media_info_type_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_INFO_PLAY_STATUS | 0x01 | 媒体信息-播放状态,param为br_media_play_status_t,param_len为1 |
| BR_MEDIA_INFO_ELEMENT_ATTR | 0x02 | 媒体信息-媒体元素属性,param为bs_br_media_element_attribute_t指针,param_len为结构体长度 |
| BR_MEDIA_INFO_PLAYBACK_POSITION | 0x03 | 媒体信息-当前播放时长(毫秒),param_len为4 |
bs_br_media_volume_opt_type_t
typedef enum {
BR_MEDIA_VOLUME_OPT_UP = 0x01,
BR_MEDIA_VOLUME_OPT_DOWN = 0x02,
BR_MEDIA_VOLUME_OPT_MUTE = 0x03,
BR_MEDIA_VOLUME_OPT_SET_ABSOLUTE = 0x04,
} bs_br_media_volume_opt_type_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_MEDIA_VOLUME_OPT_UP | 0x01 | 调高音量 |
| BR_MEDIA_VOLUME_OPT_DOWN | 0x02 | 调低音量 |
| BR_MEDIA_VOLUME_OPT_MUTE | 0x03 | 静音 |
| BR_MEDIA_VOLUME_OPT_SET_ABSOLUTE | 0x04 | 设置绝对音量,音量值范围0x00-0x7F |
Structures
bs_br_media_aac_codec_t
typedef struct {
uint16_t sample_rate;
uint32_t bit_rate;
uint8_t channel;
uint8_t object_type;
uint8_t rfa;
uint8_t vbr;
} bs_br_media_aac_codec_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| sample_rate | uint16_t | 采样频率,参考bs_br_media_aac_sf_t |
| bit_rate | uint32_t | 比特率 |
| channel | uint8_t | 通道,参考bs_br_media_aac_channel_t |
| object_type | uint8_t | 对象类型,参考bs_br_media_aac_object_type_t |
| rfa | uint8_t | 预留 |
| vbr | uint8_t | 支持动态比特率,参考bs_br_media_aac_vbr_t |
bs_br_media_sbc_codec_t
typedef struct {
uint8_t sample_rate;
uint8_t channel;
uint8_t block_length;
uint8_t subband;
uint8_t alloc_method;
uint8_t min_bitpool;
uint8_t max_bitpool;
} bs_br_media_sbc_codec_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| sample_rate | uint8_t | 采样频率,参考bs_br_media_sbc_sf_t |
| channel | uint8_t | 通道模式,参考bs_br_media_sbc_chmode_t |
| block_length | uint8_t | 块长度,参考bs_br_media_sbc_block_t |
| subband | uint8_t | 子带个数,参考bs_br_media_sbc_subband_t |
| alloc_method | uint8_t | 分配方式,参考bs_br_media_sbc_allocation_t |
| min_bitpool | uint8_t | 最小位池,取值2~250 |
| max_bitpool | uint8_t | 最大位池,取值2~250 |
bs_br_media_codec_info_t
typedef struct {
uint8_t codec_type;
union {
bs_br_media_sbc_codec_t sbc;
bs_br_media_aac_codec_t aac;
} info;
} bs_br_media_codec_info_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| codec_type | uint8_t | 音频流编解码类型,参考bs_br_media_codec_type_t |
| info | union | 编解码信息联合体,根据codec_type选择SBC或AAC |
bs_br_media_element_attr_value_t
typedef struct {
uint32_t attr_id;
uint16_t character_set_id;
uint16_t value_len;
uint8_t *value;
} bs_br_media_element_attr_value_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| attr_id | uint32_t | 属性ID,参考bs_br_media_element_attr_id_t |
| character_set_id | uint16_t | 字符集ID |
| value_len | uint16_t | 属性名称的长度,0~65535,缺省默认0 |
| value | uint8_t * | 属性名称 |
bs_br_media_element_attribute_t
typedef struct {
uint8_t attr_num;
bs_br_media_element_attr_value_t *attr_value;
} bs_br_media_element_attribute_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| attr_num | uint8_t | TG返回的attribute数量,1~255 |
| attr_value | bs_br_media_element_attr_value_t * | 属性信息,根据attr_num大小动态分配空间 |
bs_br_media_stream_callbacks_t
typedef struct {
bs_br_media_a2dp_conn_state_cbk connect_state_cbk;
bs_br_media_stream_state_changed_cbk stream_state_cbk;
bs_br_media_stream_codec_report_cbk stream_codec_cbk;
} bs_br_media_stream_callbacks_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| connect_state_cbk | bs_br_media_a2dp_conn_state_cbk | A2DP连接状态上报回调 |
| stream_state_cbk | bs_br_media_stream_state_changed_cbk | 媒体流状态上报回调 |
| stream_codec_cbk | bs_br_media_stream_codec_report_cbk | 媒体流编解码上报回调 |
bs_br_media_callbacks_t
typedef struct {
bs_br_media_avrcp_conn_state_cbk connect_state_cbk;
bs_br_media_operate_request_cbk media_opt_req_cbk;
bs_br_media_info_update_cbk media_update_cbk;
bs_br_media_volume_operate_cbk media_volume_operate_cbk;
bs_br_media_volume_info_report_cbk media_volume_report_cbk;
} bs_br_media_callbacks_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| connect_state_cbk | bs_br_media_avrcp_conn_state_cbk | AVRCP连接状态上报回调 |
| media_opt_req_cbk | bs_br_media_operate_request_cbk | 媒体操作请求上报回调 |
| media_update_cbk | bs_br_media_info_update_cbk | 媒体信息更新上报回调 |
| media_volume_operate_cbk | bs_br_media_volume_operate_cbk | 音量操作上报回调 |
| media_volume_report_cbk | bs_br_media_volume_info_report_cbk | 音量通知上报回调 |