mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pw-metadata: make it possible to select metdata by name
This commit is contained in:
parent
d5680a119f
commit
d822a0b1d0
1 changed files with 20 additions and 7 deletions
|
|
@ -38,6 +38,7 @@ struct data {
|
||||||
struct pw_main_loop *loop;
|
struct pw_main_loop *loop;
|
||||||
|
|
||||||
const char *opt_remote;
|
const char *opt_remote;
|
||||||
|
const char *opt_name;
|
||||||
bool opt_monitor;
|
bool opt_monitor;
|
||||||
bool opt_delete;
|
bool opt_delete;
|
||||||
uint32_t opt_id;
|
uint32_t opt_id;
|
||||||
|
|
@ -89,16 +90,21 @@ static void registry_event_global(void *data, uint32_t id, uint32_t permissions,
|
||||||
const struct spa_dict *props)
|
const struct spa_dict *props)
|
||||||
{
|
{
|
||||||
struct data *d = data;
|
struct data *d = data;
|
||||||
|
const char *str;
|
||||||
|
|
||||||
if (strcmp(type, PW_TYPE_INTERFACE_Metadata) != 0)
|
if (strcmp(type, PW_TYPE_INTERFACE_Metadata) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if ((str = spa_dict_lookup(props, PW_KEY_METADATA_NAME)) != NULL &&
|
||||||
|
strcmp(str, d->opt_name) != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (d->metadata != NULL) {
|
if (d->metadata != NULL) {
|
||||||
pw_log_warn("Multiple metadata: ignoring metadata %d", id);
|
pw_log_warn("Multiple metadata: ignoring metadata %d", id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fprintf(stdout, "Found \"%s\" metadata %d\n", d->opt_name, id);
|
||||||
d->metadata = pw_registry_bind(d->registry,
|
d->metadata = pw_registry_bind(d->registry,
|
||||||
id, type, PW_VERSION_METADATA, 0);
|
id, type, PW_VERSION_METADATA, 0);
|
||||||
|
|
||||||
|
|
@ -162,15 +168,16 @@ static void do_quit(void *userdata, int signal_number)
|
||||||
pw_main_loop_quit(data->loop);
|
pw_main_loop_quit(data->loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void show_help(const char *name)
|
static void show_help(struct data *data, const char *name)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "%s [options] [ id [ key [ value [ type ] ] ] ]\n"
|
fprintf(stdout, "%s [options] [ id [ key [ value [ type ] ] ] ]\n"
|
||||||
" -h, --help Show this help\n"
|
" -h, --help Show this help\n"
|
||||||
" --version Show version\n"
|
" --version Show version\n"
|
||||||
" -r, --remote Remote daemon name\n"
|
" -r, --remote Remote daemon name\n"
|
||||||
" -m, --monitor Monitor metadata\n"
|
" -m, --monitor Monitor metadata\n"
|
||||||
" -d, --delete Delete metadata\n",
|
" -d, --delete Delete metadata\n"
|
||||||
name);
|
" -n, --name Metadata name (default: \"%s\")\n",
|
||||||
|
name, data->opt_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
|
|
@ -183,15 +190,18 @@ int main(int argc, char *argv[])
|
||||||
{ "remote", required_argument, NULL, 'r' },
|
{ "remote", required_argument, NULL, 'r' },
|
||||||
{ "monitor", no_argument, NULL, 'm' },
|
{ "monitor", no_argument, NULL, 'm' },
|
||||||
{ "delete", no_argument, NULL, 'd' },
|
{ "delete", no_argument, NULL, 'd' },
|
||||||
|
{ "name", required_argument, NULL, 'n' },
|
||||||
{ NULL, 0, NULL, 0}
|
{ NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
pw_init(&argc, &argv);
|
pw_init(&argc, &argv);
|
||||||
|
|
||||||
while ((c = getopt_long(argc, argv, "hVr:md", long_options, NULL)) != -1) {
|
data.opt_name = "default";
|
||||||
|
|
||||||
|
while ((c = getopt_long(argc, argv, "hVr:mdn:", long_options, NULL)) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'h':
|
case 'h':
|
||||||
show_help(argv[0]);
|
show_help(&data, argv[0]);
|
||||||
return 0;
|
return 0;
|
||||||
case 'V':
|
case 'V':
|
||||||
fprintf(stdout, "%s\n"
|
fprintf(stdout, "%s\n"
|
||||||
|
|
@ -210,8 +220,11 @@ int main(int argc, char *argv[])
|
||||||
case 'd':
|
case 'd':
|
||||||
data.opt_delete = true;
|
data.opt_delete = true;
|
||||||
break;
|
break;
|
||||||
|
case 'n':
|
||||||
|
data.opt_name = optarg;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
show_help(argv[0]);
|
show_help(&data, argv[0]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue