release 1.18
Refactored channel layout processing again. Enabled channel layout printing for refalac.
Formerly, channel layout was converted to human readable form via QuickTime/CoreAudio API. I rewrote it on qaac side to be usable from refalac. As a side effect, it became locale-independent. Layout printed on --format is also affected.
release 1.17
Happy new year!
Print channel layout information to console output (qaac, and --verbose only). This feature was missing since 1.00.
release 1.16
Changed "qaac --check" to exit with errorlevel 2 when CoreAudioToolbox not found.
Fixed byteswapping bug of double floating point number, which was causing qaac -D to crash with 64bit big endian input.
Re-enabled ALAC in mov reading with refalac (refalac only).
release 1.15
Added --tmpdir by request. By default qaac uses TMP environment variable. You could override it by changing it, but now you can use this option instead.
Enabled --check on refalac.
release 1.15
Added --tmpdir by request. By default qaac uses TMP environment variable. You could override it by changing it, but now you can use this option instead.
Enabled --check on refalac.
release 1.14
Fixed incorrect definition of 3ch layout in Apple's ALAC implementation, which resulted in incorrect chan chunk on 3ch case.
Improved wave muxer: support sample format conversion on muxer, fixed condition to use WAVEFORMATEXTENSIBLE.
Add some missing input channel layouts defined in CoreAudio. They cannot be directly encoded into AAC or ALAC anyway, but matrix mixer and --chanmask are usable. Of course -D will work.
release 1.13
Fixed matrix mixer to work again (regression on 1.11). Was failing when number of channels changed.
Refined progress message display code.
release 1.12
Sorry, fixed a trivial mistake in release 1.11
release 1.11
Add decoding mode to qaac (qaac -D)
Generic channel remapping from non-Microsoft order input.
Add ExtAudioFile importer (qaac, and for ALAC codec only).
Add --subtitle. This is iTMF "©st3" tag and documented in iTMF spec. However, it seems even iTunes doesn't use it, and I don't know if anybody using this. I just added this since it is documented in the spec, and TIT3 of ID3 is rather popular.
Fixed refalac to support 3ch encoding
Fixed a bug on progress display: when --native-resampler is on and resampling is done, displayed time was incorrect.
qaac/refalac first reorder channels to Microsoft wave order before DSP chain, then reorder channels again to AAC order, when encoding to AAC/ALAC. This means that when you use --chanmap, --matrix-preset, --matrix-file options, you have to think in Microsoft order.
qaac accepts Apple AIFF/CAF files as well as ALAC in MP4 (for CAF, only LPCM and ALAC are supported). These files can have channel layouts other than Microsoft wave order, and is properly handled. Of course, if it isn't acceptable layout by AAC/ALAC, you can't encode it into AAC/ALAC. Transcoding to WAV will work.
release 1.10
--chanmask and --chanmap are now usable from refalac -D.
AAC and ALAC requires channel layout to be defined. Therefore, when input channel layout is not recognizable, qaac/reflac picks some default depending on the number of channels. Read usage page for more details about this.
On the other hand, refalac -D now preserves the original channel layout information (if it can). If channel mask is not present in the source, output channel mask stays zero.
Of course, when you remix with matrix mixer, layout information is lost. If you want them, you have to explicitly provide it with --chanmask.
Added ad-hoc anti-denormal processing in libsoxrate when down-converting double to float.
Since qaac currently doesn't use IIR filters, I think this would not be of much importance anyway, at least for usual cases.release 1.09
Merged modifications by Peter (author of foobar2000) into ALAC encoder/decoder.
Fixed usage message of refalac (--no-optimize, --gain, --normalize were usable, but missing from usage message).
Support for Wavpack correction file (*.wvc) of hybrid mode.
Make threading optional, and add --threading. Threading is disabled by default.
Even if --threading is specified, refalac -D doesn't use threads for encoding. Also, if your PC has only one core, threading is not enabled.
release 1.08
Add --gain option. You can specify gain adjustment in decibel. "--gain -3.5" decreases gain by 3.5dB.
Automatic sample format conversion to integer (and decreasing bit depth) on ALAC encoding.
Decoding(+ DSP) and encoding run in separated thread on multi-core machine.
--verbose now outputs some verbose message (mostly concerning DSP options)
Allow id3v1 genre number for --genre option
If you enable one of DSP options (--gain, --rate, --lowpass, --matrix-preset, --matrix-file), audio sample format will be automatically converted to 32bit float. On AAC encoding, it's just passed to the encoder, and it's transparent to users' point of view. However, if you encode into ALAC, now it will be down-converted to integer format (bit depth will be either 16 or 24, depending on the original input format). 16bit case will be dithered with TPDF. On the other hand, refalac -D will just output 32bit float WAV in this case.
Anyway, these DSP usually has a possibility of clipping. Since --normalize will adjust each track differently, --gain will be more preferable for music, when you want to prevent clipping.
Threading introduced on this version is rather simple. As said above, just decoding and encoding run in parallel... it might get 1.5x or so faster than before (when decoding is slow or some DSP is enabled), but no more.
release 1.07
Added configurable matrix mixer.
Now DSP options are usable on refalac (--rate, --lowpass, --normalize, --delay, --matrix-preset, --matrix-file). These are not usefull for ALAC encoding, but you might want to use with refalac -D. Please not that --rate, --lowpass, --normalize and remixing will all produce 32bit float PCM.
Fixed automatic wave ignorelength detection. It was not working as intended.
release 1.06
Fixed a vulnerability in Apple ALAC decoder, which might lead to heap exploitation.
Reinstated --rate auto|keep. Now --rate auto will work again. Default is --rate keep.
release 1.05
Fixed a bug: --rate without libsoxrate.dll was not working, and causing immediate crash (regression since 1.00).
Added --lowpass option. Use this when you want lower cutoff than Apple encoder default. This is based on SoX sinc filter, and processed before passing audio to the encoder. Works only when libsoxrate.dll is installed.
libsoxrate is updated to 0.08.
Other minor refactoring to code.