mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
pw-cat: add -P option
Add -P option to pass custom properties to the stream.
This commit is contained in:
parent
e1a50a6c1a
commit
6ed91ae0d8
1 changed files with 22 additions and 16 deletions
|
|
@ -850,6 +850,7 @@ static const struct option long_options[] = {
|
||||||
{ "media-role", required_argument, NULL, OPT_MEDIA_ROLE },
|
{ "media-role", required_argument, NULL, OPT_MEDIA_ROLE },
|
||||||
{ "target", required_argument, NULL, OPT_TARGET },
|
{ "target", required_argument, NULL, OPT_TARGET },
|
||||||
{ "latency", required_argument, NULL, OPT_LATENCY },
|
{ "latency", required_argument, NULL, OPT_LATENCY },
|
||||||
|
{ "properties", required_argument, NULL, 'P' },
|
||||||
|
|
||||||
{ "rate", required_argument, NULL, OPT_RATE },
|
{ "rate", required_argument, NULL, OPT_RATE },
|
||||||
{ "channels", required_argument, NULL, OPT_CHANNELS },
|
{ "channels", required_argument, NULL, OPT_CHANNELS },
|
||||||
|
|
@ -885,6 +886,7 @@ static void show_usage(const char *name, bool is_error)
|
||||||
" Xunit (unit = s, ms, us, ns)\n"
|
" Xunit (unit = s, ms, us, ns)\n"
|
||||||
" or direct samples (256)\n"
|
" or direct samples (256)\n"
|
||||||
" the rate is the one of the source file\n"
|
" the rate is the one of the source file\n"
|
||||||
|
" -P --properties Set node properties\n"
|
||||||
"\n"),
|
"\n"),
|
||||||
DEFAULT_MEDIA_TYPE,
|
DEFAULT_MEDIA_TYPE,
|
||||||
DEFAULT_MEDIA_CATEGORY_PLAYBACK,
|
DEFAULT_MEDIA_CATEGORY_PLAYBACK,
|
||||||
|
|
@ -1351,8 +1353,17 @@ int main(int argc, char *argv[])
|
||||||
/* negative means no volume adjustment */
|
/* negative means no volume adjustment */
|
||||||
data.volume = -1.0;
|
data.volume = -1.0;
|
||||||
data.quality = -1;
|
data.quality = -1;
|
||||||
|
data.props = pw_properties_new(
|
||||||
|
PW_KEY_APP_NAME, prog,
|
||||||
|
PW_KEY_NODE_NAME, prog,
|
||||||
|
NULL);
|
||||||
|
|
||||||
while ((c = getopt_long(argc, argv, "hvprmdR:q:", long_options, NULL)) != -1) {
|
if (data.props == NULL) {
|
||||||
|
fprintf(stderr, "error: pw_properties_new() failed: %m\n");
|
||||||
|
goto error_no_props;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((c = getopt_long(argc, argv, "hvprmdR:q:P:", long_options, NULL)) != -1) {
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|
||||||
|
|
@ -1409,6 +1420,10 @@ int main(int argc, char *argv[])
|
||||||
data.media_role = optarg;
|
data.media_role = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'P':
|
||||||
|
pw_properties_update_string(data.props, optarg, strlen(optarg));
|
||||||
|
break;
|
||||||
|
|
||||||
case OPT_TARGET:
|
case OPT_TARGET:
|
||||||
data.target = optarg;
|
data.target = optarg;
|
||||||
if (spa_streq(data.target, "0")) {
|
if (spa_streq(data.target, "0")) {
|
||||||
|
|
@ -1505,21 +1520,12 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
data.filename = argv[optind++];
|
data.filename = argv[optind++];
|
||||||
|
|
||||||
data.props = pw_properties_new(
|
pw_properties_set(data.props, PW_KEY_MEDIA_TYPE, data.media_type);
|
||||||
PW_KEY_MEDIA_TYPE, data.media_type,
|
pw_properties_set(data.props, PW_KEY_MEDIA_CATEGORY, data.media_category);
|
||||||
PW_KEY_MEDIA_CATEGORY, data.media_category,
|
pw_properties_set(data.props, PW_KEY_MEDIA_ROLE, data.media_role);
|
||||||
PW_KEY_MEDIA_ROLE, data.media_role,
|
pw_properties_set(data.props, PW_KEY_MEDIA_FILENAME, data.filename);
|
||||||
PW_KEY_APP_NAME, prog,
|
pw_properties_set(data.props, PW_KEY_MEDIA_NAME, data.filename);
|
||||||
PW_KEY_MEDIA_FILENAME, data.filename,
|
pw_properties_set(data.props, PW_KEY_TARGET_OBJECT, data.target);
|
||||||
PW_KEY_MEDIA_NAME, data.filename,
|
|
||||||
PW_KEY_NODE_NAME, prog,
|
|
||||||
PW_KEY_TARGET_OBJECT, data.target,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
if (data.props == NULL) {
|
|
||||||
fprintf(stderr, "error: pw_properties_new() failed: %m\n");
|
|
||||||
goto error_no_props;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make a main loop. If you already have another main loop, you can add
|
/* make a main loop. If you already have another main loop, you can add
|
||||||
* the fd of this pipewire mainloop to it. */
|
* the fd of this pipewire mainloop to it. */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue