diff --git a/spa/plugins/bluez5/bluez5-dbus.c b/spa/plugins/bluez5/bluez5-dbus.c index c4a9df067..a7655cfd2 100644 --- a/spa/plugins/bluez5/bluez5-dbus.c +++ b/spa/plugins/bluez5/bluez5-dbus.c @@ -1331,14 +1331,20 @@ static DBusHandlerResult object_manager_handler(DBusConnection *c, DBusMessage * if (caps_size < 0) continue; - spa_log_info(monitor->log, "register A2DP codec %s", a2dp_codecs[i]->name); - endpoint = spa_aprintf("%s/%s", A2DP_SINK_ENDPOINT, codec->name); - append_a2dp_object(&array, endpoint, SPA_BT_UUID_A2DP_SINK, codec_id, caps, caps_size); - free(endpoint); + if (codec->decode != NULL) { + spa_log_info(monitor->log, "register A2DP codec %s", a2dp_codecs[i]->name); + endpoint = spa_aprintf("%s/%s", A2DP_SINK_ENDPOINT, codec->name); + append_a2dp_object(&array, endpoint, SPA_BT_UUID_A2DP_SINK, + codec_id, caps, caps_size); + free(endpoint); + } - endpoint = spa_aprintf("%s/%s", A2DP_SOURCE_ENDPOINT, codec->name); - append_a2dp_object(&array, endpoint, SPA_BT_UUID_A2DP_SOURCE, codec_id, caps, caps_size); - free(endpoint); + if (codec->encode != NULL) { + endpoint = spa_aprintf("%s/%s", A2DP_SOURCE_ENDPOINT, codec->name); + append_a2dp_object(&array, endpoint, SPA_BT_UUID_A2DP_SOURCE, + codec_id, caps, caps_size); + free(endpoint); + } } dbus_message_iter_close_container(&iter, &array);