pw-cat: small cleaups

Set endianness correctly
Move setup of output file format outside of sample format function.
This commit is contained in:
Wim Taymans 2020-02-13 09:51:25 +01:00
parent 192fee98a4
commit 0a26c478f7

View file

@ -145,17 +145,17 @@ sf_str_to_fmt(const char *str)
return -1; return -1;
if (!strcmp(str, "s8")) if (!strcmp(str, "s8"))
return SF_FORMAT_PCM_S8 | SF_FORMAT_WAV; return SF_FORMAT_PCM_S8;
if (!strcmp(str, "s16")) if (!strcmp(str, "s16"))
return SF_FORMAT_PCM_16 | SF_FORMAT_WAV; return SF_FORMAT_PCM_16;
if (!strcmp(str, "s24")) if (!strcmp(str, "s24"))
return SF_FORMAT_PCM_24 | SF_FORMAT_WAV; return SF_FORMAT_PCM_24;
if (!strcmp(str, "s32")) if (!strcmp(str, "s32"))
return SF_FORMAT_PCM_32 | SF_FORMAT_WAV; return SF_FORMAT_PCM_32;
if (!strcmp(str, "f32")) if (!strcmp(str, "f32"))
return SF_FORMAT_FLOAT | SF_FORMAT_WAV; return SF_FORMAT_FLOAT;
if (!strcmp(str, "f64")) if (!strcmp(str, "f64"))
return SF_FORMAT_DOUBLE | SF_FORMAT_WAV; return SF_FORMAT_DOUBLE;
return -1; return -1;
} }
@ -938,6 +938,12 @@ static int setup_sndfile(struct data *data)
fprintf(stderr, "error: unknown format \"%s\"\n", data->format); fprintf(stderr, "error: unknown format \"%s\"\n", data->format);
return -EINVAL; return -EINVAL;
} }
info.format |= SF_FORMAT_WAV;
#if __BYTE_ORDER == __BIG_ENDIAN
info.format |= SF_ENDIAN_BIG;
#else
info.format |= SF_ENDIAN_LITTLE;
#endif
} }
data->file = sf_open(data->filename, data->file = sf_open(data->filename,
@ -949,15 +955,16 @@ 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 channels:%d rate:%d\n",
data->filename, info.format, info.channels, info.samplerate);
if (data->channels > 0 && info.channels != data->channels) { if (data->channels > 0 && info.channels != data->channels) {
printf("given channels (%u) don't match file channels (%d)\n", printf("given channels (%u) don't match file channels (%d)\n",
data->channels, info.channels); data->channels, info.channels);
return -EINVAL; return -EINVAL;
} }
data->rate = info.samplerate;
data->channels = info.channels; data->channels = info.channels;
if (data->mode == mode_playback) { if (data->mode == mode_playback) {