From 43d82520502bc0c76fbd11d6e949739235166021 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 1 Oct 2012 23:17:13 +0200 Subject: output/recorder, test/*: invoke encoder_read() after _open() Make sure the file header gets written at the beginning, before _write() gets called. --- src/encoder_plugin.h | 4 ++++ src/output/recorder_output_plugin.c | 7 +++++++ 2 files changed, 11 insertions(+) (limited to 'src') diff --git a/src/encoder_plugin.h b/src/encoder_plugin.h index 33a379115..cae0c8048 100644 --- a/src/encoder_plugin.h +++ b/src/encoder_plugin.h @@ -119,6 +119,10 @@ encoder_finish(struct encoder *encoder) * Before you free it, you must call encoder_close(). You may open * and close (reuse) one encoder any number of times. * + * After this function returns successfully and before the first + * encoder_write() call, you should invoke encoder_read() to obtain + * the file header. + * * @param encoder the encoder * @param audio_format the encoder's input audio format; the plugin * may modify the struct to adapt it to its abilities diff --git a/src/output/recorder_output_plugin.c b/src/output/recorder_output_plugin.c index ea299468b..ad2d961d3 100644 --- a/src/output/recorder_output_plugin.c +++ b/src/output/recorder_output_plugin.c @@ -192,6 +192,13 @@ recorder_output_open(struct audio_output *ao, return false; } + if (!recorder_output_encoder_to_file(recorder, error_r)) { + encoder_close(recorder->encoder); + close(recorder->fd); + unlink(recorder->path); + return false; + } + return true; } -- cgit v1.2.3