mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pw-cat: fix setup of defaults
In record mode, setup the parameters before we open.
This commit is contained in:
parent
dfdbec1303
commit
5e71a01e8d
1 changed files with 22 additions and 23 deletions
|
|
@ -923,6 +923,13 @@ static int setup_sndfile(struct data *data)
|
||||||
|
|
||||||
/* for record, you fill in the info first */
|
/* for record, you fill in the info first */
|
||||||
if (data->mode == mode_record) {
|
if (data->mode == mode_record) {
|
||||||
|
if (data->format == NULL)
|
||||||
|
data->format = DEFAULT_FORMAT;
|
||||||
|
if (data->channels == 0)
|
||||||
|
data->channels = DEFAULT_CHANNELS;
|
||||||
|
if (data->rate == 0)
|
||||||
|
data->rate = DEFAULT_RATE;
|
||||||
|
|
||||||
memset(&info, 0, sizeof(info));
|
memset(&info, 0, sizeof(info));
|
||||||
info.samplerate = data->rate;
|
info.samplerate = data->rate;
|
||||||
info.channels = data->channels;
|
info.channels = data->channels;
|
||||||
|
|
@ -942,20 +949,18 @@ static int setup_sndfile(struct data *data)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data->rate = info.samplerate;
|
||||||
|
|
||||||
if (data->verbose)
|
if (data->verbose)
|
||||||
printf("opened file \"%s\" format %08x\n", data->filename, info.format);
|
printf("opened file \"%s\" format %08x\n", data->filename, info.format);
|
||||||
|
if (data->channels > 0 && info.channels != data->channels) {
|
||||||
|
printf("given channels (%u) don't match file channels (%d)\n",
|
||||||
|
data->channels, info.channels);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
data->channels = info.channels;
|
||||||
|
|
||||||
if (data->mode == mode_playback) {
|
if (data->mode == mode_playback) {
|
||||||
data->rate = info.samplerate;
|
|
||||||
|
|
||||||
if (data->channels > 0 && info.channels != data->channels) {
|
|
||||||
printf("given channels (%u) don't match file channels (%d)\n",
|
|
||||||
data->channels, info.channels);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
data->channels = info.channels;
|
|
||||||
|
|
||||||
if (data->channelmap.n_channels == 0) {
|
if (data->channelmap.n_channels == 0) {
|
||||||
bool def = false;
|
bool def = false;
|
||||||
|
|
||||||
|
|
@ -1205,8 +1210,6 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
if (!data.latency)
|
if (!data.latency)
|
||||||
data.latency = DEFAULT_LATENCY;
|
data.latency = DEFAULT_LATENCY;
|
||||||
if (!data.rate)
|
|
||||||
data.rate = DEFAULT_RATE;
|
|
||||||
if (data.channel_map != NULL) {
|
if (data.channel_map != NULL) {
|
||||||
if (parse_channelmap(data.channel_map, &data.channelmap) < 0) {
|
if (parse_channelmap(data.channel_map, &data.channelmap) < 0) {
|
||||||
fprintf(stderr, "error: can parse channel-map \"%s\"\n", data.channel_map);
|
fprintf(stderr, "error: can parse channel-map \"%s\"\n", data.channel_map);
|
||||||
|
|
@ -1220,12 +1223,8 @@ int main(int argc, char *argv[])
|
||||||
data.channels = data.channelmap.n_channels;
|
data.channels = data.channelmap.n_channels;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data.channels == 0)
|
|
||||||
data.channels = DEFAULT_CHANNELS;
|
|
||||||
if (data.volume < 0)
|
if (data.volume < 0)
|
||||||
data.volume = DEFAULT_VOLUME;
|
data.volume = DEFAULT_VOLUME;
|
||||||
if (data.mode == mode_record && data.format == NULL)
|
|
||||||
data.format = DEFAULT_FORMAT;
|
|
||||||
|
|
||||||
if (!data.list_targets && optind >= argc) {
|
if (!data.list_targets && optind >= argc) {
|
||||||
fprintf(stderr, "error: filename argument missing\n");
|
fprintf(stderr, "error: filename argument missing\n");
|
||||||
|
|
@ -1289,15 +1288,15 @@ int main(int argc, char *argv[])
|
||||||
struct spa_audio_info_raw info;
|
struct spa_audio_info_raw info;
|
||||||
|
|
||||||
ret = setup_sndfile(&data);
|
ret = setup_sndfile(&data);
|
||||||
switch (ret) {
|
if (ret < 0) {
|
||||||
case -EINVAL:
|
|
||||||
goto error_usage;
|
|
||||||
case -EIO:
|
|
||||||
goto error_bad_file;
|
|
||||||
default:
|
|
||||||
fprintf(stderr, "error: open failed: %s\n", spa_strerror(ret));
|
fprintf(stderr, "error: open failed: %s\n", spa_strerror(ret));
|
||||||
if (ret < 0)
|
switch (ret) {
|
||||||
|
case -EIO:
|
||||||
|
goto error_bad_file;
|
||||||
|
case -EINVAL:
|
||||||
|
default:
|
||||||
goto error_usage;
|
goto error_usage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
info = SPA_AUDIO_INFO_RAW_INIT(
|
info = SPA_AUDIO_INFO_RAW_INIT(
|
||||||
.flags = data.channelmap.n_channels ? 0 : SPA_AUDIO_FLAG_UNPOSITIONED,
|
.flags = data.channelmap.n_channels ? 0 : SPA_AUDIO_FLAG_UNPOSITIONED,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue