mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-01-26 06:07:53 +00:00
stream: Change PW_CAPABILITY_DEVICE_ID_NEGOTIATION to a version number
This allows easier evolvement of the negotiation protocol.
This commit is contained in:
parent
04793138b5
commit
8600721de0
@ -313,12 +313,13 @@ performed.
|
|||||||
Device ID negotiation needs explicit support by both end points of a stream, thus, the
|
Device ID negotiation needs explicit support by both end points of a stream, thus, the
|
||||||
first step of negotiation is discovering whether other peer has support for it. This is
|
first step of negotiation is discovering whether other peer has support for it. This is
|
||||||
done by advertising a \ref SPA_PARAM_Capability with the key \ref
|
done by advertising a \ref SPA_PARAM_Capability with the key \ref
|
||||||
PW_CAPABILITY_DEVICE_ID_NEGOTIATION and value `true`
|
PW_CAPABILITY_DEVICE_ID_NEGOTIATION and value `1` which corresponds to the
|
||||||
|
current negotiation API version.
|
||||||
|
|
||||||
```
|
```
|
||||||
spa_param_dict_build_dict(&b, SPA_PARAM_Capability,
|
spa_param_dict_build_dict(&b, SPA_PARAM_Capability,
|
||||||
&SPA_DICT_ITEMS(
|
&SPA_DICT_ITEMS(
|
||||||
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "true")));
|
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "1")));
|
||||||
```
|
```
|
||||||
|
|
||||||
To do this, when connecting to the stream, the \ref PW_STREAM_FLAG_INACTIVE flag must be
|
To do this, when connecting to the stream, the \ref PW_STREAM_FLAG_INACTIVE flag must be
|
||||||
@ -369,7 +370,7 @@ To achieve this, the consumer adds another \ref SPA_PARAM_PeerCapability item wi
|
|||||||
```
|
```
|
||||||
char *device_ids = ...; /* Base 64 encoding of a dev_t. */.
|
char *device_ids = ...; /* Base 64 encoding of a dev_t. */.
|
||||||
&SPA_DICT_ITEMS(
|
&SPA_DICT_ITEMS(
|
||||||
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "true"),
|
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "1"),
|
||||||
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_IDS, device_ids)));
|
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_IDS, device_ids)));
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -438,8 +438,9 @@ discover_capabilities(struct data *data, const struct spa_pod *param)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
spa_dict_for_each(it, &dict) {
|
spa_dict_for_each(it, &dict) {
|
||||||
if (spa_streq(it->key, PW_CAPABILITY_DEVICE_ID_NEGOTIATION) &&
|
if (spa_streq(it->key, PW_CAPABILITY_DEVICE_ID_NEGOTIATION)) {
|
||||||
spa_streq(it->value, "true")) {
|
int version = atoi(it->value);
|
||||||
|
if (version >= 1)
|
||||||
data->device_negotiation_supported = true;
|
data->device_negotiation_supported = true;
|
||||||
} else if (spa_streq(it->key, PW_CAPABILITY_DEVICE_IDS)) {
|
} else if (spa_streq(it->key, PW_CAPABILITY_DEVICE_IDS)) {
|
||||||
collect_device_ids(data, it->value);
|
collect_device_ids(data, it->value);
|
||||||
@ -787,7 +788,7 @@ int main(int argc, char *argv[])
|
|||||||
params[n_params++] =
|
params[n_params++] =
|
||||||
spa_param_dict_build_dict(&b, SPA_PARAM_Capability,
|
spa_param_dict_build_dict(&b, SPA_PARAM_Capability,
|
||||||
&SPA_DICT_ITEMS(
|
&SPA_DICT_ITEMS(
|
||||||
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "true")));
|
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "1")));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* now connect the stream, we need a direction (input/output),
|
/* now connect the stream, we need a direction (input/output),
|
||||||
|
|||||||
@ -450,8 +450,9 @@ discover_capabilities(struct data *data, const struct spa_pod *param)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
spa_dict_for_each(it, &dict) {
|
spa_dict_for_each(it, &dict) {
|
||||||
if (spa_streq(it->key, PW_CAPABILITY_DEVICE_ID_NEGOTIATION) &&
|
if (spa_streq(it->key, PW_CAPABILITY_DEVICE_ID_NEGOTIATION)) {
|
||||||
spa_streq(it->value, "true")) {
|
int version = atoi(it->value);
|
||||||
|
if (version >= 1)
|
||||||
data->device_negotiation_supported = true;
|
data->device_negotiation_supported = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -799,7 +800,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
params[n_params++] =
|
params[n_params++] =
|
||||||
spa_param_dict_build_dict(&b, SPA_PARAM_Capability,
|
spa_param_dict_build_dict(&b, SPA_PARAM_Capability,
|
||||||
&SPA_DICT_ITEMS(SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "true"),
|
&SPA_DICT_ITEMS(SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_ID_NEGOTIATION, "1"),
|
||||||
#ifdef SUPPORT_DEVICE_IDS_LIST
|
#ifdef SUPPORT_DEVICE_IDS_LIST
|
||||||
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_IDS, device_ids)
|
SPA_DICT_ITEM(PW_CAPABILITY_DEVICE_IDS, device_ids)
|
||||||
#endif /* SUPPORT_DEVICE_IDS_LIST */
|
#endif /* SUPPORT_DEVICE_IDS_LIST */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user