The encoder, for content having a bitdepth higher than 16, stores the
LSBs uncompressed. To do so, it performs first channel rematrixing then
extract these MSBs.

However, these 2 steps are inverted, as can be seen in the decoder, or
in the official encoder:
http://alac.macosforge.org/trac/browser/trunk/codec/matrix_enc.c#L170

This patch set fixes that by:
1) Increasing the predictor buffer to hold 2 channels worth of data
2) Storing the extracted MSBs temporary in this buffer before performing
   rematrixing, as the rematrixing generates information that needs to
   be written before the raw MSBs.
   
It would possible to detect bitstreams before this change and achieve
correct decoding if need be.

Christophe Gisquet (2):
  alacenc: increase predictor buffer
  alacenc: fix extra bits extraction

 libavcodec/alacenc.c | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

-- 
1.9.2.msysgit.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to