diff --git a/spa/plugins/bluez5/backend-native.c b/spa/plugins/bluez5/backend-native.c index 33deda7c7..ff946d159 100644 --- a/spa/plugins/bluez5/backend-native.c +++ b/spa/plugins/bluez5/backend-native.c @@ -2538,6 +2538,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha /* We announce wideband speech support anyway */ features = SPA_BT_HFP_SDP_AG_FEATURE_WIDEBAND_SPEECH; +#ifdef HAVE_LC3 + features |= SPA_BT_HFP_SDP_AG_FEATURE_SUPER_WIDEBAND_SPEECH; +#endif dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); @@ -2545,9 +2548,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha dbus_message_iter_close_container(&it[2], &it[3]); dbus_message_iter_close_container(&it[1], &it[2]); - /* HFP version 1.7 */ + /* HFP version 1.9 */ str = "Version"; - version = 0x0107; + version = 0x0109; dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); @@ -2559,6 +2562,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha /* We announce wideband speech support anyway */ features = SPA_BT_HFP_SDP_HF_FEATURE_WIDEBAND_SPEECH; +#ifdef HAVE_LC3 + features |= SPA_BT_HFP_SDP_HF_FEATURE_SUPER_WIDEBAND_SPEECH; +#endif dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); @@ -2566,9 +2572,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha dbus_message_iter_close_container(&it[2], &it[3]); dbus_message_iter_close_container(&it[1], &it[2]); - /* HFP version 1.7 */ + /* HFP version 1.9 */ str = "Version"; - version = 0x0107; + version = 0x0109; dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); diff --git a/spa/plugins/bluez5/defs.h b/spa/plugins/bluez5/defs.h index ba9e54aca..107575ea6 100644 --- a/spa/plugins/bluez5/defs.h +++ b/spa/plugins/bluez5/defs.h @@ -252,13 +252,16 @@ enum spa_bt_hfp_ag_feature { }; enum spa_bt_hfp_sdp_ag_features { - SPA_BT_HFP_SDP_AG_FEATURE_NONE = (0), - SPA_BT_HFP_SDP_AG_FEATURE_3WAY = (1 << 0), - SPA_BT_HFP_SDP_AG_FEATURE_ECNR = (1 << 1), - SPA_BT_HFP_SDP_AG_FEATURE_VOICE_RECOG = (1 << 2), - SPA_BT_HFP_SDP_AG_FEATURE_IN_BAND_RING_TONE = (1 << 3), - SPA_BT_HFP_SDP_AG_FEATURE_ATTACH_VOICE_TAG = (1 << 4), - SPA_BT_HFP_SDP_AG_FEATURE_WIDEBAND_SPEECH = (1 << 5), + SPA_BT_HFP_SDP_AG_FEATURE_NONE = (0), + SPA_BT_HFP_SDP_AG_FEATURE_3WAY = (1 << 0), + SPA_BT_HFP_SDP_AG_FEATURE_ECNR = (1 << 1), + SPA_BT_HFP_SDP_AG_FEATURE_VOICE_RECOG = (1 << 2), + SPA_BT_HFP_SDP_AG_FEATURE_IN_BAND_RING_TONE = (1 << 3), + SPA_BT_HFP_SDP_AG_FEATURE_ATTACH_VOICE_TAG = (1 << 4), + SPA_BT_HFP_SDP_AG_FEATURE_WIDEBAND_SPEECH = (1 << 5), + SPA_BT_HFP_SDP_AG_FEATURE_ENH_VOICE_RECOG_STATUS = (1 << 6), + SPA_BT_HFP_SDP_AG_FEATURE_VOICE_RECOG_TEXT = (1 << 7), + SPA_BT_HFP_SDP_AG_FEATURE_SUPER_WIDEBAND_SPEECH = (1 << 8), }; enum spa_bt_hfp_hf_feature { @@ -299,13 +302,16 @@ enum spa_bt_hfp_hf_xapl_features { }; enum spa_bt_hfp_sdp_hf_features { - SPA_BT_HFP_SDP_HF_FEATURE_NONE = (0), - SPA_BT_HFP_SDP_HF_FEATURE_ECNR = (1 << 0), - SPA_BT_HFP_SDP_HF_FEATURE_3WAY = (1 << 1), - SPA_BT_HFP_SDP_HF_FEATURE_CLIP = (1 << 2), - SPA_BT_HFP_SDP_HF_FEATURE_VOICE_RECOGNITION = (1 << 3), + SPA_BT_HFP_SDP_HF_FEATURE_NONE = (0), + SPA_BT_HFP_SDP_HF_FEATURE_ECNR = (1 << 0), + SPA_BT_HFP_SDP_HF_FEATURE_3WAY = (1 << 1), + SPA_BT_HFP_SDP_HF_FEATURE_CLIP = (1 << 2), + SPA_BT_HFP_SDP_HF_FEATURE_VOICE_RECOGNITION = (1 << 3), SPA_BT_HFP_SDP_HF_FEATURE_REMOTE_VOLUME_CONTROL = (1 << 4), - SPA_BT_HFP_SDP_HF_FEATURE_WIDEBAND_SPEECH = (1 << 5), + SPA_BT_HFP_SDP_HF_FEATURE_WIDEBAND_SPEECH = (1 << 5), + SPA_BT_HFP_SDP_HF_FEATURE_ENH_VOICE_RECOG_STATUS = (1 << 6), + SPA_BT_HFP_SDP_HF_FEATURE_VOICE_RECOG_TEXT = (1 << 7), + SPA_BT_HFP_SDP_HF_FEATURE_SUPER_WIDEBAND_SPEECH = (1 << 8), }; static inline const char *spa_bt_profile_name (enum spa_bt_profile profile) {