stream_encoder.c : Give the encoder a larger stdio buffer.
authorErik de Castro Lopo <erikd@mega-nerd.com>
Tue, 23 Sep 2014 20:35:14 +0000 (06:35 +1000)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Tue, 23 Sep 2014 20:35:17 +0000 (06:35 +1000)
Windows in particular can experience slow encoding speeds on highly
fragmented disks. Using setvbuf to increase the size of the buffer to
10Meg.

This is probably not needed on Linux/Unix, but is very unlikely to
to cause any negative effects.

Patch-from: Janne Hyv√§rinen <cse@sci.fi>

src/libFLAC/stream_encoder.c

index 6f46d78..bd95634 100644 (file)
@@ -1288,6 +1288,8 @@ static FLAC__StreamEncoderInitStatus init_FILE_internal_(
        if(file == stdout)
                file = get_binary_stdout_(); /* just to be safe */
 
+       setvbuf(file, NULL, _IOFBF, 10*1024*1024); /* 10MB output buffer to help reduce disk fragmentation */
+
        encoder->private_->file = file;
 
        encoder->private_->progress_callback = progress_callback;