From: Martin Wilck Date: Mon, 15 Mar 2021 12:01:28 +0000 (+0100) Subject: parecord: fix "Failed to open audio file" for FLAC and OGG X-Git-Tag: v14.99.1~31 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=432a91ed439e3d5d6771e8c097df5ff8943b1ad2;p=platform%2Fupstream%2Fpulseaudio.git parecord: fix "Failed to open audio file" for FLAC and OGG This patch fixes the following error: $ pacat --file-format=ogg -r test.ogg Failed to open audio file. $ parecord sep.flac Failed to open audio file. libsndfile errors out if a WAV or OGG file is set to have anything but SF_ENDIAN_FILE: https://github.com/libsndfile/libsndfile/commit/f4d1646e5cd96444a75c6327a9d49739f81d251e Part-of: --- diff --git a/src/utils/pacat.c b/src/utils/pacat.c index 4d2ecf7..31da073 100644 --- a/src/utils/pacat.c +++ b/src/utils/pacat.c @@ -1062,6 +1062,15 @@ int main(int argc, char *argv[]) { } sfi.format |= file_format; + + /* + * Endianness has been set in pa_sndfile_write_sample_spec(), but + * libsndfile errors out if endianness is set to anything other than + * SF_ENDIAN_FILE for OGG or FLAC. Clear it. + */ + if (file_format == SF_FORMAT_OGG || file_format == SF_FORMAT_FLAC) + sfi.format = (sfi.format & ~SF_FORMAT_ENDMASK) | SF_ENDIAN_FILE; + } if (!(sndfile = sf_open_fd(mode == RECORD ? STDOUT_FILENO : STDIN_FILENO,