diff options
author | Max Kellermann <max@duempel.org> | 2012-10-01 23:17:13 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-10-02 00:18:18 +0200 |
commit | 43d82520502bc0c76fbd11d6e949739235166021 (patch) | |
tree | 3157bfc6f63a293509d2f3ca581f11bb6af02267 | |
parent | 674b4ab64735dac3b8113e09db4cdb9072ddacb7 (diff) | |
download | mpd-43d82520502bc0c76fbd11d6e949739235166021.tar.gz mpd-43d82520502bc0c76fbd11d6e949739235166021.tar.xz mpd-43d82520502bc0c76fbd11d6e949739235166021.zip |
output/recorder, test/*: invoke encoder_read() after _open()
Make sure the file header gets written at the beginning, before
_write() gets called.
-rw-r--r-- | src/encoder_plugin.h | 4 | ||||
-rw-r--r-- | src/output/recorder_output_plugin.c | 7 | ||||
-rw-r--r-- | test/run_encoder.c | 2 | ||||
-rw-r--r-- | test/test_vorbis_encoder.c | 2 |
4 files changed, 15 insertions, 0 deletions
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; } diff --git a/test/run_encoder.c b/test/run_encoder.c index 397dd8572..db4d3af9b 100644 --- a/test/run_encoder.c +++ b/test/run_encoder.c @@ -106,6 +106,8 @@ int main(int argc, char **argv) return 1; } + encoder_to_stdout(encoder); + /* do it */ while ((nbytes = read(0, buffer, sizeof(buffer))) > 0) { diff --git a/test/test_vorbis_encoder.c b/test/test_vorbis_encoder.c index 048d26f0a..619399159 100644 --- a/test/test_vorbis_encoder.c +++ b/test/test_vorbis_encoder.c @@ -67,6 +67,8 @@ main(G_GNUC_UNUSED int argc, G_GNUC_UNUSED char **argv) success = encoder_open(encoder, &audio_format, NULL); assert(success); + encoder_to_stdout(encoder); + /* write a block of data */ success = encoder_write(encoder, zero, sizeof(zero), NULL); |