bluez: on metadata, parse remove the length field, and deduce the length from the value plus type

This commit is contained in:
Silviu Florian Barbulescu 2024-05-10 17:09:41 +03:00 committed by Wim Taymans
parent be3e87f485
commit 44d96ed4b9
2 changed files with 4 additions and 7 deletions

View file

@ -436,7 +436,6 @@ example JSON
"audio_channel_allocation": 1, // audio channel allocation configuration for the BIS
"metadata": [ // metadata configurations for the BIS
{
"length": 3,
"type": 1,
"value": [
1, 1

View file

@ -6127,24 +6127,22 @@ static void parse_broadcast_source_config(struct spa_bt_monitor *monitor, const
while (spa_json_enter_object(&it_array[2], &it[3]) > 0) {
metadata_entry = calloc(1, sizeof(struct spa_bt_metadata));
while (spa_json_get_string(&it[3], qos_key, sizeof(qos_key)) > 0) {
if (spa_streq(qos_key, "length")) {
if (spa_json_get_int(&it[3], &metadata_entry->length) <= 0)
goto parse_failed;
spa_log_debug(monitor->log, "metadata_entry->length %d", metadata_entry->length);
} else if (spa_streq(qos_key, "type")) {
if (spa_streq(qos_key, "type")) {
if (spa_json_get_int(&it[3], &metadata_entry->type) <= 0)
goto parse_failed;
spa_log_debug(monitor->log, "metadata_entry->type %d", metadata_entry->type);
} else if (spa_streq(qos_key, "value")) {
if (spa_json_enter_array(&it[3], &it_array[3]) <= 0)
goto parse_failed;
cursor = 0;
for (cursor = 0; cursor < METADATA_MAX_LEN; cursor++) {
if (spa_json_get_int(&it_array[3], &temp_val) <= 0)
break;
metadata_entry->value[cursor] = (uint8_t)temp_val;
spa_log_debug(monitor->log, "metadata_entry->value[cursor] %d", metadata_entry->value[cursor]);
}
/* length is size of value plus 1 octet for type */
metadata_entry->length = cursor + 1;
spa_log_debug(monitor->log, "metadata_entry->length %d", metadata_entry->length);
spa_log_debug(monitor->log, "metadata_entry->value_size %d", cursor);
spa_list_append(&bis_entry->metadata_list, &metadata_entry->link);
metadata_entry = NULL;