#10870: libfdk_aac and aac_at encoders inflate small samples, native aac encoder
doesn't
--------------------------------+----------------------------------------
Reporter: mrapp | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: undetermined
Version: 6.1 | Resolution:
Keywords: AAC | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
--------------------------------+----------------------------------------
Description changed by mrapp:
Old description:
> Summary of the bug:
>
> Re-encoding a 192 kb/s AAC-LC stream to 128 kb/s with either the
> libfdk_aac or aac_at encoders results in a stream that is 256 kb/s. The
> status shows ~128 kb/s until the last few seconds, then jumps up and the
> time index progresses slower. A trace confirms what is happening is in
> the last couple of seconds, there are a lot more samples of smaller size.
> This is probably a pathological case, but I have run across several
> different videos exhibiting this issue (the audio stream originates from
> mp4 videos). Performing a trace on a copy command from the output of each
> encoder shows that libfdk_aac and aac_at are inflating the size of these
> small samples by 100 times, whereas the native aac is preserving the
> original small size.
>
> How to reproduce:
> {{{
> % ffmpeg -i audio.mp4 -c:a libfdk_aac -ac 2 -b:a 128k out.mp4
>
> ffmpeg version 4.4.4 and 6.1
> built on macOS 11.7.10 using MacPorts:
>
> $ ffmpeg6 -version
> ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
> built with Apple clang version 13.0.0 (clang-1300.0.29.30)
> configuration: --cc=/usr/bin/clang
> --datadir=/opt/local/libexec/ffmpeg6/share/data
> --docdir=/opt/local/libexec/ffmpeg6/share/doc --progs-suffix=6
> --prefix=/opt/local/libexec/ffmpeg6 --enable-audiotoolbox --disable-
> indev=jack --disable-libjack --disable-libopencore-amrnb --disable-
> libopencore-amrwb --disable-libxcb --disable-libxcb-shm --disable-libxcb-
> xfixes --disable-metal --disable-outdev=xv --enable-opencl --enable-sdl2
> --disable-securetransport --enable-videotoolbox --disable-xlib --enable-
> avfilter --enable-fontconfig --enable-gnutls --enable-libass --enable-
> libbluray --enable-libdav1d --enable-libfreetype --enable-libfribidi
> --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-
> libopus --enable-librsvg --enable-libsoxr --enable-libspeex --enable-
> libtheora --enable-libvorbis --enable-libvpx --enable-libzimg --enable-
> libzvbi --enable-lzma --enable-shared --enable-pthreads --enable-swscale
> --enable-zlib --enable-libaom --enable-libsvtav1 --arch=arm64 --enable-
> librtmp --enable-gpl --enable-libvidstab --enable-libx264 --enable-
> libx265 --enable-libxvid --enable-postproc --enable-libfdk-aac --enable-
> nonfree
> libavutil 58. 29.100 / 58. 29.100
> libavcodec 60. 31.102 / 60. 31.102
> libavformat 60. 16.100 / 60. 16.100
> libavdevice 60. 3.100 / 60. 3.100
> libavfilter 9. 12.100 / 9. 12.100
> libswscale 7. 5.100 / 7. 5.100
> libswresample 4. 12.100 / 4. 12.100
> libpostproc 57. 3.100 / 57. 3.100
>
> ffmpeg version 4.4.4 Copyright (c) 2000-2023 the FFmpeg developers
> built with Apple clang version 13.0.0 (clang-1300.0.29.30)
> configuration: --prefix=/opt/local --cc=/usr/bin/clang
> --mandir=/opt/local/share/man --enable-audiotoolbox --disable-indev=jack
> --disable-libjack --disable-libopencore-amrnb --disable-libopencore-amrwb
> --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --enable-
> opencl --disable-outdev=xv --enable-sdl2 --disable-securetransport
> --enable-videotoolbox --enable-avfilter --enable-avresample --enable-
> fontconfig --enable-gnutls --enable-libass --enable-libbluray --enable-
> libdav1d --enable-libfreetype --enable-libfribidi --enable-libmodplug
> --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-
> librsvg --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
> libvorbis --enable-libvpx --enable-libzimg --enable-libzvbi --enable-lzma
> --enable-pthreads --enable-shared --enable-swscale --enable-zlib
> --enable-libaom --enable-libsvtav1 --arch=arm64 --enable-librtmp
> --enable-gpl --enable-libvidstab --enable-libx264 --enable-libx265
> --enable-libxvid --enable-postproc --enable-libfdk-aac --enable-nonfree
> libavutil 56. 70.100 / 56. 70.100
> libavcodec 58.134.100 / 58.134.100
> libavformat 58. 76.100 / 58. 76.100
> libavdevice 58. 13.100 / 58. 13.100
> libavfilter 7.110.100 / 7.110.100
> libavresample 4. 0. 0 / 4. 0. 0
> libswscale 5. 9.100 / 5. 9.100
> libswresample 3. 9.100 / 3. 9.100
> libpostproc 55. 9.100 / 55. 9.100
> }}}
New description:
Summary of the bug:
Re-encoding a 192 kb/s AAC-LC stream to 128 kb/s with either the
libfdk_aac or aac_at encoders results in a stream that is 256 kb/s. The
status shows ~128 kb/s until the last few seconds, then jumps up and the
time index progresses slower. A trace confirms what is happening is in the
last couple of seconds, there are a lot more samples of smaller size. This
is probably a pathological case, but I have run across several different
videos exhibiting this issue (the audio stream originates from mp4
videos). Performing a trace on a copy command from the output of each
encoder shows that libfdk_aac and aac_at are inflating the size of these
small samples by 100 times, whereas the native aac is preserving the
original small size.
So instead of decreasing the filesize by decreasing the bitrate, the
filesize was increased by 30%.
How to reproduce:
{{{
% ffmpeg -i audio.mp4 -c:a libfdk_aac -ac 2 -b:a 128k out.mp4
ffmpeg version 4.4.4 and 6.1
built on macOS 11.7.10 using MacPorts:
$ ffmpeg6 -version
ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.30)
configuration: --cc=/usr/bin/clang
--datadir=/opt/local/libexec/ffmpeg6/share/data
--docdir=/opt/local/libexec/ffmpeg6/share/doc --progs-suffix=6
--prefix=/opt/local/libexec/ffmpeg6 --enable-audiotoolbox --disable-
indev=jack --disable-libjack --disable-libopencore-amrnb --disable-
libopencore-amrwb --disable-libxcb --disable-libxcb-shm --disable-libxcb-
xfixes --disable-metal --disable-outdev=xv --enable-opencl --enable-sdl2
--disable-securetransport --enable-videotoolbox --disable-xlib --enable-
avfilter --enable-fontconfig --enable-gnutls --enable-libass --enable-
libbluray --enable-libdav1d --enable-libfreetype --enable-libfribidi
--enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-
libopus --enable-librsvg --enable-libsoxr --enable-libspeex --enable-
libtheora --enable-libvorbis --enable-libvpx --enable-libzimg --enable-
libzvbi --enable-lzma --enable-shared --enable-pthreads --enable-swscale
--enable-zlib --enable-libaom --enable-libsvtav1 --arch=arm64 --enable-
librtmp --enable-gpl --enable-libvidstab --enable-libx264 --enable-libx265
--enable-libxvid --enable-postproc --enable-libfdk-aac --enable-nonfree
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
ffmpeg version 4.4.4 Copyright (c) 2000-2023 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.30)
configuration: --prefix=/opt/local --cc=/usr/bin/clang
--mandir=/opt/local/share/man --enable-audiotoolbox --disable-indev=jack
--disable-libjack --disable-libopencore-amrnb --disable-libopencore-amrwb
--disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --enable-
opencl --disable-outdev=xv --enable-sdl2 --disable-securetransport
--enable-videotoolbox --enable-avfilter --enable-avresample --enable-
fontconfig --enable-gnutls --enable-libass --enable-libbluray --enable-
libdav1d --enable-libfreetype --enable-libfribidi --enable-libmodplug
--enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-librsvg
--enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis
--enable-libvpx --enable-libzimg --enable-libzvbi --enable-lzma --enable-
pthreads --enable-shared --enable-swscale --enable-zlib --enable-libaom
--enable-libsvtav1 --arch=arm64 --enable-librtmp --enable-gpl --enable-
libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-
postproc --enable-libfdk-aac --enable-nonfree
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
}}}
--
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10870#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac
To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".