mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pw-cat: add option to set resampler quality
This commit is contained in:
parent
75e14ecadc
commit
319df9fce9
1 changed files with 19 additions and 3 deletions
|
|
@ -57,6 +57,7 @@
|
||||||
#define DEFAULT_CHANNELS 2
|
#define DEFAULT_CHANNELS 2
|
||||||
#define DEFAULT_FORMAT "s16"
|
#define DEFAULT_FORMAT "s16"
|
||||||
#define DEFAULT_VOLUME 1.0
|
#define DEFAULT_VOLUME 1.0
|
||||||
|
#define DEFAULT_QUALITY 4
|
||||||
|
|
||||||
enum mode {
|
enum mode {
|
||||||
mode_none,
|
mode_none,
|
||||||
|
|
@ -122,6 +123,7 @@ struct data {
|
||||||
unsigned int stride;
|
unsigned int stride;
|
||||||
enum unit latency_unit;
|
enum unit latency_unit;
|
||||||
unsigned int latency_value;
|
unsigned int latency_value;
|
||||||
|
int quality;
|
||||||
|
|
||||||
enum spa_audio_format spa_format;
|
enum spa_audio_format spa_format;
|
||||||
|
|
||||||
|
|
@ -854,8 +856,9 @@ static const struct option long_options[] = {
|
||||||
{"channels", required_argument, NULL, OPT_CHANNELS },
|
{"channels", required_argument, NULL, OPT_CHANNELS },
|
||||||
{"channel-map", required_argument, NULL, OPT_CHANNELMAP },
|
{"channel-map", required_argument, NULL, OPT_CHANNELMAP },
|
||||||
{"format", required_argument, NULL, OPT_FORMAT },
|
{"format", required_argument, NULL, OPT_FORMAT },
|
||||||
|
|
||||||
{"volume", required_argument, NULL, OPT_VOLUME },
|
{"volume", required_argument, NULL, OPT_VOLUME },
|
||||||
|
{"quality", required_argument, NULL, 'q' },
|
||||||
|
|
||||||
{"list-targets", no_argument, NULL, OPT_LIST_TARGETS },
|
{"list-targets", no_argument, NULL, OPT_LIST_TARGETS },
|
||||||
|
|
||||||
{NULL, 0, NULL, 0 }
|
{NULL, 0, NULL, 0 }
|
||||||
|
|
@ -900,8 +903,13 @@ static void show_usage(const char *name, bool is_error)
|
||||||
" comma separated list of channel names: eg. \"FL,FR\"\n"
|
" comma separated list of channel names: eg. \"FL,FR\"\n"
|
||||||
" --format Sample format %s (req. for rec) (default %s)\n"
|
" --format Sample format %s (req. for rec) (default %s)\n"
|
||||||
" --volume Stream volume 0-1.0 (default %.3f)\n"
|
" --volume Stream volume 0-1.0 (default %.3f)\n"
|
||||||
|
" -q --quality Resampler quality (0 - 15) (default %d)\n"
|
||||||
"\n",
|
"\n",
|
||||||
DEFAULT_RATE, DEFAULT_CHANNELS, STR_FMTS, DEFAULT_FORMAT, DEFAULT_VOLUME);
|
DEFAULT_RATE,
|
||||||
|
DEFAULT_CHANNELS,
|
||||||
|
STR_FMTS, DEFAULT_FORMAT,
|
||||||
|
DEFAULT_VOLUME,
|
||||||
|
DEFAULT_QUALITY);
|
||||||
|
|
||||||
if (!strcmp(name, "pw-cat")) {
|
if (!strcmp(name, "pw-cat")) {
|
||||||
fprintf(fp,
|
fprintf(fp,
|
||||||
|
|
@ -1053,6 +1061,9 @@ static int setup_sndfile(struct data *data)
|
||||||
if (nom)
|
if (nom)
|
||||||
pw_properties_setf(data->props, PW_KEY_NODE_LATENCY, "%u/%u", nom, data->rate);
|
pw_properties_setf(data->props, PW_KEY_NODE_LATENCY, "%u/%u", nom, data->rate);
|
||||||
|
|
||||||
|
if (data->quality >= 0)
|
||||||
|
pw_properties_setf(data->props, "resample.quality", "%d", data->quality);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1088,11 +1099,12 @@ 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;
|
||||||
|
|
||||||
/* initialize list everytime */
|
/* initialize list everytime */
|
||||||
spa_list_init(&data.targets);
|
spa_list_init(&data.targets);
|
||||||
|
|
||||||
while ((c = getopt_long(argc, argv, "hvprR:", long_options, NULL)) != -1) {
|
while ((c = getopt_long(argc, argv, "hvprR:q:", long_options, NULL)) != -1) {
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|
||||||
|
|
@ -1125,6 +1137,10 @@ int main(int argc, char *argv[])
|
||||||
data.remote_name = optarg;
|
data.remote_name = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'q':
|
||||||
|
data.quality = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
case OPT_MEDIA_TYPE:
|
case OPT_MEDIA_TYPE:
|
||||||
data.media_type = optarg;
|
data.media_type = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue