[FFmpeg-devel] [PATCH] AAC: Fix M/S stereo encoding

Claudio Freire klaussfreire at gmail.com
Tue Mar 3 07:51:48 CET 2015


This patch fixes a pointer arithmetic bug in adjust_frame_information
that resulted in heavily corrupted audio when using M/S encoding.
Also, a backup copy of untransformed coefficients has to be kept
around or attempts at re-processing the frame (which happens when
hevavily overspending bits during transients) will result in
re-encoding of the coefficients and subsequent corruption of the
resulting stream.

A/B testing shows the bug as corrected, but still cannot prove that
M/S coding is a win at least in numbers. Limited listening tests do
show improvement on M/S encoded samples in lower bitrates, but they're
hidden among the other artifacts that remain to be corrected in the
encoder.

Some of the regressions flagged in the report do show poor stereo
image (but not buggy), so M/S encoding is clearly not good enough yet
to be defaulted to auto.

In numbers, Patched against Unpatched, stereo_mode auto:

  Files: 114
  Bitrates: 6
  Tests: 683

  Serious Regressions: 0 (0%)
  Regressions: 0 (0%)
  Improvements: 227 (33%)
  Big improvements: 92 (13%)
  Worst regression - mybloodrusts.wv - 256k
    - StdDev: 28.61       pSNR: -0.43     maxdiff: 1372.00
  Best improvement - 60.wv - 384k
    - StdDev: -369.57     pSNR: 45.02     maxdiff: -13322.00
  Average          - StdDev: -80.56       pSNR: 2.49      maxdiff: -8858.00

Patched against Unpatched stereo_mode ms_off shows no difference.

Patched stereo_mode auto vs Unpatched stereo_mode ms_off shows a small
average improvement, just not too significant:

  Serious Regressions: 0 (0%)
  Regressions: 10 (1%)
  Improvements: 45 (6%)
  Big improvements: 2 (0%)
  Worst regression - Illinois.wv - 256k
    - StdDev: 33.20       pSNR: -2.03     maxdiff: 477.00
  Best improvement - song_of_circomstances.flac - 384k
    - StdDev: -3.97       pSNR: 7.61      maxdiff: -826.00
  Average          - StdDev: -10.25       pSNR: 0.20      maxdiff: -281.00

Attached are the patch and the full reports.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aac-bugfixes-2b.abtest
Type: application/octet-stream
Size: 120459 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150303/14db6e82/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aac-bugfixes-2.abtest
Type: application/octet-stream
Size: 120459 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150303/14db6e82/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aac-bugfixes-2.patch
Type: text/x-patch
Size: 8147 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150303/14db6e82/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aac-bugfixes-2b.abreport
Type: application/octet-stream
Size: 40915 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150303/14db6e82/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aac-bugfixes-2.abreport
Type: application/octet-stream
Size: 48560 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150303/14db6e82/attachment-0003.obj>


More information about the ffmpeg-devel mailing list