Giter Site home page Giter Site logo

fdkaac's People

Contributors

dmitryyudin avatar nu774 avatar tico-tico avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fdkaac's Issues

bogus audio + spike when encoding gaples WAVs

Hey.

I have some WAV files from tracks from a CD which would play gapless, which does work perfectly when playing them back via mpv.
It also works when playing lame encoded MP3s from them, at least in mpv and on the ipod (many other players, e.g. mplayer or totem seem to not support gapless playback at all).

Since AAC is more advanced I tried to use that with fdkaac using version 0.6.2 and from libfdk-aac 0.1.4 with those commands:
fdkaac -p 2 -G 2 -m 5 1.wav -o fdkaac-lc-gap2-vbr5_1.m4a
fdkaac -p 2 -G 2 -m 5 2.wav -o fdkaac-lc-gap2-vbr5_2.m4a
(I also tried -p 5 and 29, and then everything with -G 0, but the problem looks just the same there).

When comparing the ends 1.wav with fdkaac-lc-gap2-vbr5_1.m4a it looks like this:
screenshot from 2015-09-02 23-38-33
(and the beginning of the to tracks is perfectly aligned)
As you can see, the AAC has some audio and a nasty spike added (the spike looks different for LC, HE and HE2).

Comparing the begins of 2.wav and the corresponding fdkaac-lc-gap2-vbr5_2.m4a doesn't show such problems.
The fdkaac-lc-gap2-vbr5_2.m4a is again a bit longer than 2.wav (which is of course explainable) but no bugs data seems to have been added at the end,... maybe because there was digital silence.

Long story short... that bogus audio+spike is quite a showstopper for anything not having digital silence in the end, especially gapless files.

Any ideas whether/how this could be fixed?

Cheers,
Chris.

Building broken with latest libfdk-aac

../src/aacenc.c: In function 'aacenc_is_sbr_active':
../src/aacenc.c:37:37: error: 'AOT_MP2_SBR' undeclared (first use in this function)
     case AOT_SBR: case AOT_PS: case AOT_MP2_SBR: case AOT_MP2_PS:
                                     ^~~~~~~~~~~
../src/aacenc.c:37:37: note: each undeclared identifier is reported only once for each function it appears in
../src/aacenc.c:37:55: error: 'AOT_MP2_PS' undeclared (first use in this function)
     case AOT_SBR: case AOT_PS: case AOT_MP2_SBR: case AOT_MP2_PS:
                                                       ^~~~~~~~~~
../src/aacenc.c:38:10: error: 'AOT_DABPLUS_SBR' undeclared (first use in this function)
     case AOT_DABPLUS_SBR: case AOT_DABPLUS_PS:
          ^~~~~~~~~~~~~~~
../src/aacenc.c:38:32: error: 'AOT_DABPLUS_PS' undeclared (first use in this function)
     case AOT_DABPLUS_SBR: case AOT_DABPLUS_PS:
                                ^~~~~~~~~~~~~~
../src/aacenc.c: In function 'aacenc_is_dual_rate_sbr':
../src/aacenc.c:49:57: error: 'AOT_MP2_PS' undeclared (first use in this function)
     if (params->profile == AOT_PS || params->profile == AOT_MP2_PS)
                                                         ^~~~~~~~~~
../src/aacenc.c:51:63: error: 'AOT_MP2_SBR' undeclared (first use in this function)
     else if (params->profile == AOT_SBR || params->profile == AOT_MP2_SBR)
                                                               ^~~~~~~~~~~

These macros seem to be gone from FDK_audio.h in 0.1.5.

Just removing them allows compilation to finish.

diff --git a/src/aacenc.c b/src/aacenc.c
index 8df8afd..0dd47bb 100644
--- a/src/aacenc.c
+++ b/src/aacenc.c
@@ -34,8 +34,7 @@ int aacenc_is_sbr_ratio_available()
 int aacenc_is_sbr_active(const aacenc_param_t *params)
 {
     switch (params->profile) {
-    case AOT_SBR: case AOT_PS: case AOT_MP2_SBR: case AOT_MP2_PS:
-    case AOT_DABPLUS_SBR: case AOT_DABPLUS_PS:
+    case AOT_SBR: case AOT_PS:
     case AOT_DRM_SBR: case AOT_DRM_MPEG_PS:
         return 1;
     }
@@ -46,9 +45,9 @@ int aacenc_is_sbr_active(const aacenc_param_t *params)

 int aacenc_is_dual_rate_sbr(const aacenc_param_t *params)
 {
-    if (params->profile == AOT_PS || params->profile == AOT_MP2_PS)
+    if (params->profile == AOT_PS)
         return 1;
-    else if (params->profile == AOT_SBR || params->profile == AOT_MP2_SBR)
+    else if (params->profile == AOT_SBR)
         return params->sbr_ratio == 0 || params->sbr_ratio == 2;
     else if (params->profile == AOT_ER_AAC_ELD && params->lowdelay_sbr)
         return params->sbr_ratio == 2;

libFDKAAC SBR signaling mode 1 does not work in iTunes (HE AAC)

Hallo!

When I encode HE-AAC files with fdkaac > 0.5.0, the encoded files do not play in iTunes (tested with version 12.4.3.1 on Windows).
It seems that the explicit, backward compatible SBR signaling in libfdkaac does not work - see this commit:
71e4764

If I use fdkaac 0.5.0, HE-AAC files also play in iTunes as they should.

So I guess it would be great if you use your own implementation of explicit, backward compatible SBR signaling again?
It was introduced in the following commit:
9b8f991

Thanks for fdkaac,
LG
Georg

Add nodelay command to fdkaac

Hi, can you add nodelay to fdkaac? I'm always use karaoke subtitles so delay is important but fdkaac always delay compare to original audio although i'm not set delay

Sample rates and channels.

Hi
With this encoder...
How is sample rate set to
8000,11250,12000,16000,22500,24000,32000,44100,48000,64000,88200,96000 Khz?

How is number of channels set to 1,2,3,4,5,6?

No options are shown for these with "-h"

Multithreaded encoding

Hi!

Sometime back I worked on making fdkaac multi-threaded and I lost the code! I'll doing this again (for shits and giggles this time). Last I worked on to solve some latency issues of parallel jobs (I can't get into much detail).

Was wondering if such a PR would be welcomed.

Strange block of data with --ignorelength

I tested fdkaac and found funny thing. When --ignorelength option are present I'm getting strange block of date in the end of the file. Duration changed from 00:24:29.696 (70545407 samples) to 00:25:04.491 (72215551 samples), none of original data was modified.

with_ignorelength

Why this happening? Seems like this is libfdk-aac related.

Without --ignorelength I'm not getting this block. Length is same as source wav (00:24:29.696).

without_ignorelength

Output of fdkaac with --ignorelength:

[100%] 25:04.447/25:04.447 (33x), ETA 00:00.000   
72213470/72213470 samples processed in 00:45.700

Output of fdkaac without --ignorelength:

[100%] 24:29.636/24:29.636 (30x), ETA 00:00.000   
70542543/70542543 samples processed in 00:48.459

fdkaac 0.6.3, libfdk-aac 3.4.22, MacOS 10.10.5
Encoding parameters: fdkaac (-I) -f 2 -m 5 -o "${1%.*}.aac" "$1"

Core dump with -p 2 -m 5 from 24-bit/96kHz PCM

fdkaac -m 5 or fdk -p 2 -m 5 encoding from 24-bit/96kHz PCM will cause this:

fdkaac: ./libFDK/include/fixpoint_math.h:459: FIXP_DBL GetInvInt(int): Assertion `(intValue > 0) && (intValue < 50)' failed.
Aborted (core dumped)

Using a value for -m that is 1-4 does not do the same.

aacenc_lib.h not in the requested location (MSVC)

MSVC 2010, Windows 7 64-bit.

an error with fdkaac\src\aacenc.h:

changing line 8 from:

#include <fdk-aac/aacenc_lib.h>

to:

#include <fdk-aac/libAACenc/include/aacenc_lib.h>

allows the program to build. MSVC was complaining that it couldn't find aacenc_lib.h at all. I don't remember the exact error.

Install on Mac OS - runtime not found in /usr/local/bin/

Hi there!

Thanks for the effort put into this tool.

I am currently facing an issue. I installed fdkaac from the source. All went well except that no runtime looks created. /usr/local/bin/ does not contain any fdkaac

Do you have any hint?

Cheers!

static library for linux

Hi
I want to use fdk-aac as a static library.
how i can make .a library from the source code.

Chapter support

Hi there - I just wanted to suggest that getting chapter support into fdkaac would be amazing.

My current process for dealing with chapters is:

  1. Encode WAV to m4a w/ fdkaac
  2. Import chapters with MP4Box
  3. Convert chapters to QuickTime with mp4chaps

Having everything in a single tool would be really convenient.

Thanks in advance for reading this! fdkaac is awesome :)

order of atoms

Some players can't handle m4a files with 'mdat' before 'moov'
Would it be complicated to add an option to reverse the order, similar to what qt-faststart does?

fdkaac-0.6.3 build error

OS - Slackware 14.2 (Linux 4.4.38 (x86_64))
Desktop environment - XFCE 4
libfdk-aac - 0.1.5

The part where the errors occurred when compiling:

autoreconf: Entering directory .' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force -I m4 autoreconf: configure.ac: tracing autoreconf: configure.ac: not using Libtool autoreconf: running: /usr/bin/autoconf --force autoreconf: running: /usr/bin/autoheader --force autoreconf: running: automake --add-missing --copy --force-missing configure.ac:12: installing './compile' configure.ac:41: installing './config.guess' configure.ac:41: installing './config.sub' configure.ac:10: installing './install-sh' configure.ac:10: installing './missing' Makefile.am: installing './depcomp' autoreconf: Leaving directory .'
checking for a BSD-compatible install... /usr/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking localcharset.h usability... yes
checking localcharset.h presence... yes
checking for localcharset.h... yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking endian.h usability... yes
checking endian.h presence... yes
checking for endian.h... yes
checking byteswap.h usability... yes
checking byteswap.h presence... yes
checking for byteswap.h... yes
checking fdk-aac/aacenc_lib.h usability... yes
checking fdk-aac/aacenc_lib.h presence... yes
checking for fdk-aac/aacenc_lib.h... yes
checking for inline... inline
checking whether byte ordering is bigendian... no
checking for int16_t... yes
checking for int32_t... yes
checking for int64_t... yes
checking for int8_t... yes
checking for size_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for ptrdiff_t... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for struct __timeb64... no
checking for _LARGEFILE_SOURCE value needed for large files... no
checking for sigaction... yes
checking for gettimeofday... yes
checking for nl_langinfo... yes
checking for _vscprintf... no
checking for fseeko64... yes
checking for getopt_long... yes
checking for library containing aacEncOpen... -lfdk-aac
checking build system type... x86_64-slackware-linux-gnu
checking host system type... x86_64-slackware-linux-gnu
checking for ld used by gcc... /usr/x86_64-slackware-linux/bin/ld
checking if the linker (/usr/x86_64-slackware-linux/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking for working iconv... yes
checking for iconv declaration...
extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure: WARNING: unrecognized options: --enable-unicode
make all-am
make[1]: вход в каталог «/tmp/build/multimedia/fdkaac/fdkaac-0.6.3»
depbase=echo src/aacenc.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/aacenc.o -MD -MP -MF $depbase.Tpo -c -o src/aacenc.o src/aacenc.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/caf_reader.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/caf_reader.o -MD -MP -MF $depbase.Tpo -c -o src/caf_reader.o src/caf_reader.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/extrapolater.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/extrapolater.o -MD -MP -MF $depbase.Tpo -c -o src/extrapolater.o src/extrapolater.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/limiter.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/limiter.o -MD -MP -MF $depbase.Tpo -c -o src/limiter.o src/limiter.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/lpc.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/lpc.o -MD -MP -MF $depbase.Tpo -c -o src/lpc.o src/lpc.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/m4af.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/m4af.o -MD -MP -MF $depbase.Tpo -c -o src/m4af.o src/m4af.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/main.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/main.o -MD -MP -MF $depbase.Tpo -c -o src/main.o src/main.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/metadata.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/metadata.o -MD -MP -MF $depbase.Tpo -c -o src/metadata.o src/metadata.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/parson.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/parson.o -MD -MP -MF $depbase.Tpo -c -o src/parson.o src/parson.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/pcm_float_converter.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/pcm_float_converter.o -MD -MP -MF $depbase.Tpo -c -o src/pcm_float_converter.o src/pcm_float_converter.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/pcm_native_converter.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/pcm_native_converter.o -MD -MP -MF $depbase.Tpo -c -o src/pcm_native_converter.o src/pcm_native_converter.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/pcm_readhelper.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/pcm_readhelper.o -MD -MP -MF $depbase.Tpo -c -o src/pcm_readhelper.o src/pcm_readhelper.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/pcm_sint16_converter.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/pcm_sint16_converter.o -MD -MP -MF $depbase.Tpo -c -o src/pcm_sint16_converter.o src/pcm_sint16_converter.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/progress.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/progress.o -MD -MP -MF $depbase.Tpo -c -o src/progress.o src/progress.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/wav_reader.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/wav_reader.o -MD -MP -MF $depbase.Tpo -c -o src/wav_reader.o src/wav_reader.c &&
mv -f $depbase.Tpo $depbase.Po
depbase=echo src/compat_posix.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
gcc -DHAVE_CONFIG_H -I. -O2 -fPIC -MT src/compat_posix.o -MD -MP -MF $depbase.Tpo -c -o src/compat_posix.o src/compat_posix.c &&
mv -f $depbase.Tpo $depbase.Po
gcc -O2 -fPIC -o fdkaac src/aacenc.o src/caf_reader.o src/extrapolater.o src/limiter.o src/lpc.o src/m4af.o src/main.o src/metadata.o src/parson.o src/pcm_float_converter.o src/pcm_native_converter.o src/pcm_readhelper.o src/pcm_sint16_converter.o src/progress.o src/wav_reader.o src/compat_posix.o -lfdk-aac -lm -lfdk-aac
src/compat_posix.o: In function aacenc_to_utf8': compat_posix.c:(.text+0xe7): undefined reference to locale_charset'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make[1]: *** [Makefile:511: fdkaac] Ошибка 1
make[1]: выход из каталога «/tmp/build/multimedia/fdkaac/fdkaac-0.6.3»
make: *** [Makefile:369: all] Ошибка 2

Upload binaries to Github Releases?

Would you mind uploading compiled binaries to Github Releases?

It seems like this project is pretty much complete, so it's probably not worth worrying about setting up any sort of automated build process since just one upload every few years would seem to suffice.

Build Instructions

I have some instructions for how to build on Mac and Linux, and I'd be happy to supply binaries for those two (including Apple Silicon M1).
(my process is documented here: https://github.com/coolaj86/fdkaac/releases/tag/v1.0.1-pre-1)

Trustable 1st Party Builds

I realize that I could host these on my own Github page (which I'm doing for a client currently), but I'd like to get this up on Webi (webinstall.dev) as well, and we try to avoid 3rd party builds whenever possible since people generally trust 1st party builds more (and they generally work as documented).

Heap-buffer-overflow found in fdkaac

Hi, developers of fdkaac:
In the test of the binary fdkaac instrumented with ASAN. There is a Heap-buffer-overflow vulnerability in fdkaac, commit is 03c3c60 which is also the master branch.

Here is the ASAN mode output:

=================================================================
==1664==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x7efdfca69f00 at pc 0x00000047bf2c bp 0x7ffd4096cfe0 sp 0x7ffd4096c790
READ of size 27 at 0x7efdfca69f00 thread T0
    #0 0x47bf2b in __interceptor_strlen.part.34 /home/ferry/Documents/llvm-project/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:375
    #1 0x4f9d94 in caf_info /home/ferry/hwz/zeroday/fdkaac/src/caf_reader.c:116:19
    #2 0x4f88f2 in caf_parse /home/ferry/hwz/zeroday/fdkaac/src/caf_reader.c:191:13
    #3 0x4f88f2 in caf_open /home/ferry/hwz/zeroday/fdkaac/src/caf_reader.c:234:9
    #4 0x541f4f in open_input /home/ferry/hwz/zeroday/fdkaac/src/main.c:754:27
    #5 0x541f4f in main /home/ferry/hwz/zeroday/fdkaac/src/main.c:802:19
    #6 0x7efdfb80883f in __libc_start_main /build/glibc-S7Ft5T/glibc-2.23/csu/../csu/libc-start.c:291
    #7 0x41b8a8 in _start (/home/ferry/hwz/zeroday/bin/fdkaac-asan/fdkaac+0x41b8a8)

0x7efdfca69f00 is located 0 bytes to the right of 132864-byte region [0x7efdfca49800,0x7efdfca69f00)
allocated by thread T0 here:
    #0 0x4aeca2 in malloc /home/ferry/Documents/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:145
    #1 0x4f9cb1 in caf_info /home/ferry/hwz/zeroday/fdkaac/src/caf_reader.c:109:34
    #2 0x4f88f2 in caf_parse /home/ferry/hwz/zeroday/fdkaac/src/caf_reader.c:191:13
    #3 0x4f88f2 in caf_open /home/ferry/hwz/zeroday/fdkaac/src/caf_reader.c:234:9
    #4 0x541f4f in open_input /home/ferry/hwz/zeroday/fdkaac/src/main.c:754:27
    #5 0x541f4f in main /home/ferry/hwz/zeroday/fdkaac/src/main.c:802:19
    #6 0x7efdfb80883f in __libc_start_main /build/glibc-S7Ft5T/glibc-2.23/csu/../csu/libc-start.c:291

SUMMARY: AddressSanitizer: heap-buffer-overflow /home/ferry/Documents/llvm-project/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:375 in __interceptor_strlen.part.34
Shadow bytes around the buggy address:
  0x0fe03f945390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0fe03f9453a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0fe03f9453b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0fe03f9453c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0fe03f9453d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0fe03f9453e0:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0fe03f9453f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0fe03f945400: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0fe03f945410: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0fe03f945420: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0fe03f945430: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==1664==ABORTING

I also found a stack-buffer-overflow in fdkaac, src/main.c:81, read_callback(). Here is the ASAN output.

=================================================================
==30393==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffc7d3cc380 at pc 0x0000004372a8 bp 0x7ffc7d3ca330 sp 0x7ffc7d3c9ae0
WRITE of size 19584 at 0x7ffc7d3cc380 thread T0
==30393==WARNING: Can't read from symbolizer at fd 4
==30393==WARNING: Can't read from symbolizer at fd 4
==30393==WARNING: Can't read from symbolizer at fd 4
==30393==WARNING: Can't read from symbolizer at fd 4
==30393==WARNING: Failed to use and restart external symbolizer!
    #0 0x4372a7  (/home/ferry/hwz/zeroday/bin/fdkaac-asan/fdkaac+0x4372a7)
    #1 0x547356  (/home/ferry/hwz/zeroday/bin/fdkaac-asan/fdkaac+0x547356)
    #2 0x568879  (/home/ferry/hwz/zeroday/bin/fdkaac-asan/fdkaac+0x568879)

Address 0x7ffc7d3cc380 is located in stack of thread T0 at offset 8224 in frame
    #0 0x5685bf  (/home/ferry/hwz/zeroday/bin/fdkaac-asan/fdkaac+0x5685bf)

  This frame has 1 object(s):
    [32, 8224) 'buff' (line 57) <== Memory access at offset 8224 overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
      (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow (/home/ferry/hwz/zeroday/bin/fdkaac-asan/fdkaac+0x4372a7) 
Shadow bytes around the buggy address:
  0x10000fa71820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10000fa71830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10000fa71840: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10000fa71850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10000fa71860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x10000fa71870:[f3]f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3
  0x10000fa71880: f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3 f3
  0x10000fa71890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x10000fa718a0: 00 00 00 00 f1 f1 f1 f1 f8 f2 f2 f2 f8 f2 f8 f2
  0x10000fa718b0: f8 f2 f8 f2 f8 f2 f8 f2 f8 f2 04 f2 00 f3 f3 f3
  0x10000fa718c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==30393==ABORTING

Crash input

https://github.com/17ssDP/fuzzer_crashes/blob/main/fdkaac

Validation steps

git clone https://github.com/nu774/fdkaac
cd fdkaac/
autoreconf -i
CC=clang CXX=clang++ CFLAGS="$CFLAGS -fsanitize=address -fno-omit-frame-pointer" CXXFLAGS="$CXXFLAGS -fsanitize=address -fno-omit-frame-pointer" ./configure
make
./fdkaac -p5 -b64 fdkaac-hbo -o /dev/null

Environment

Ubuntu 16.04
Clang 10.0.1
gcc 5.5

Please add into README - how to deal with ' in title

For example now I have this Python code:

title_escaped = title.replace("'", r"'\''")

cmd = fr'''cd /tmp;
        curl {urls} |
        /var/task/oggdec - -o - |
        /var/task/fdkaac -m5 - -o "{episode_filename}"
     --title='{title_escaped}'
     --artist='Intelligent Speaker'
     --album-artist='Intelligent Speaker'
     --album='Intelligent Speaker'
     --genre='Podcast'
     --date='{pubDate}'
     --comment='Voiced text from {source}'
    '''.replace('\n', '')
output_from_shell = subprocess.getoutput(cmd)

But if title with single quote - I get error

/bin/sh: -c: line 0: unexpected EOF while looking for matching `''

WAV metadata

It would be nice to translate WAV metadata in the input stream, e.g. INAM (title), IART (artist), IPRD (album), ICRD (date), IPRT (track), etc. to corresponding MP4 fields, as otherwise it is lost.

Windows build_fdkaac.bat fails

wget --no-check-certificate https://github.com/nu774/fdkaac/archive/master.zip -O fdkaac-master.zip

doesn't always run but it's easy to download the file directly.

make install && popd && rd /s /q fdkaac-master

fails with this messgage

make: *** no rule to make target 'install'. Stop.

OK, how to fix this line?

When will xhe-aac be supported?

In 2018, the new version FDK2 was launched, and brings several new technologies to Android OEMs, service providers and developers, including xHE-AAC, MPEG-D DRC dynamic range control and AAC-ELDv2. Android users benefit from the high audio quality of the Fraunhofer FDK.
xHE-AAC extends the usable stereo bitrate range of AAC: from as low as 12 kbit/s up to 500 kbit/s

Question about "ignorelength"

Hi
These encoders:-
neroAacEnc
oggenc
opusenc
qaac

have option "ignorelength".

But fdkaac has option "ignore-length".
Is this deliberate, or is it a typo?

libfdk-aac.so.1 in /usr/local/lib not found

A minor annoyance when installing on fedoa 21.
ligbdk-aac.so is installed in /usr/local/lib by default. After compiling and installing fdkaac I got the message "error while loading shared libraries: libfdk-aac.so.1: cannot open shared object file: No such file or directory".
Symlinking the libraries in /usr/lib64/ solved the problem.
I don't remember having this problem before. Shouldn't the config script figure this out?

Build binaries with OS X Maverick and Ubuntu 14.x

Hello,

I can't build fdkaac binary for OS X Maverick or Linux Ubuntu v.14.x, I think I have to merge your branch with http://downloads.sourceforge.net/opencore-amr/fdk-aac-0.1.3.tar.gz or https://github.com/mstorsjo/fdk-aac.git, but I don't know how (I'm not very experienced) : any help plase?

On the other hand, I tried the automake process for Win32 (‘fdkaac_autobuild-master’ project) , but it doesn't work at all (when typing “build-libfdk-aac.bat” at the prompt --> cp -p libfdk-aac.a /mingw/lib | cp: cannot create regular file ‘/mingw/lib’ : No such file or firectory | make: *** [install] Error 1

Can't compile under cygwin64

It errors with:

gcc -DHAVE_CONFIG_H -I. -I.. -Wall -O2 -D_FILE_OFFSET_BITS=64 -s -MT src/aacenc.o -MD -MP -MF $depbase.Tpo -c -o src/aacenc.o ../src/aacenc.c &&
mv -f $depbase.Tpo $depbase.Po
In file included from ../src/aacenc.c:11:0:
/usr/include/stdio.h:55:9: error: unknown type name ‘_fpos64_t’
typedef _fpos64_t fpos_t;
^

edit: I can compile fine with MinGW-w64 so I think the issue is with the configure script.

bugs found

Hi, in the lastest version of this repo [PS: commit ID -> 1a1ee29], I found something insterest.

POC

1id0-heap-buffer-overflow.zip

command to reproduce

./fdkaac -p5 -b64 POC -o /dev/null

output

==122363==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x625000018900 at pc 0x00000043b985 bp 0x7ffe69d827d0 sp 0x7ffe69d81f80
READ of size 4 at 0x625000018900 thread T0
    #0 0x43b984 in __interceptor_memcpy.part.46 /home/bupt/Desktop/tools/llvm-12.0.1/llvm/projects/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:810
    #1 0x7fe7e606c24a in aacEncEncode (/usr/lib/x86_64-linux-gnu/libfdk-aac.so.1+0x2424a)
    #2 0x4f7154 in aac_encode_frame /home/bupt/Desktop/fdkaac/src/aacenc.c:291:11
    #3 0x51fd71 in encode /home/bupt/Desktop/fdkaac/src/main.c:554:24
    #4 0x51fd71 in main /home/bupt/Desktop/fdkaac/src/main.c:862:19
    #5 0x7fe7e5097c86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:310
    #6 0x41c9d9 in _start (/home/bupt/Desktop/fdkaac/fdkaac+0x41c9d9)

0x625000018900 is located 0 bytes to the right of 8192-byte region [0x625000016900,0x625000018900)
allocated by thread T0 here:
    #0 0x4aefa0 in malloc /home/bupt/Desktop/tools/llvm-12.0.1/llvm/projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:145
    #1 0x51fb60 in encode /home/bupt/Desktop/fdkaac/src/main.c:535:12
    #2 0x51fb60 in main /home/bupt/Desktop/fdkaac/src/main.c:862:19
    #3 0x7fe7e5097c86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:310

SUMMARY: AddressSanitizer: heap-buffer-overflow /home/bupt/Desktop/tools/llvm-12.0.1/llvm/projects/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:810 in __interceptor_memcpy.part.46
Shadow bytes around the buggy address:
  0x0c4a7fffb0d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a7fffb0e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a7fffb0f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a7fffb100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a7fffb110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c4a7fffb120:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a7fffb130: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a7fffb140: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a7fffb150: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a7fffb160: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a7fffb170: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==122363==ABORTING

POC

3id0-FPE.zip

command to reproduce

./fdkaac -p5 -b64 POC -o /dev/null

output

AddressSanitizer:DEADLYSIGNAL
=================================================================
==122379==ERROR: AddressSanitizer: FPE on unknown address 0x00000053ade9 (pc 0x00000053ade9 bp 0x7ffe2be4ff90 sp 0x7ffe2be4fc60 T0)
    #0 0x53ade9 in wav_open /home/bupt/Desktop/fdkaac/src/wav_reader.c:212:54
    #1 0x51e35b in open_input /home/bupt/Desktop/fdkaac/src/main.c:746:27
    #2 0x51e35b in main /home/bupt/Desktop/fdkaac/src/main.c:802:19
    #3 0x7f17fe499c86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:310
    #4 0x41c9d9 in _start (/home/bupt/Desktop/fdkaac/fdkaac+0x41c9d9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: FPE /home/bupt/Desktop/fdkaac/src/wav_reader.c:212:54 in wav_open
==122379==ABORTING

A typo

Hi
fdkaac -h shows a typo.
"--afterurner" should be "--afterburner"

Reading from stdin on Windows 10 seems to be broken

Hey!

I attempted to run the following command in Powershell:

.\flac.exe 'in.flac' -s -d -c | .\fdkaac.exe - --ignorelength --bitrate 192 -w 20000 -o test.m4a

Which resulted in the following error message:

ERROR: unsupported input file

What's strange is that the same exact command worked fine in Ubuntu 20.04.

Do you have any idea on where we can begin debugging this?

Edit: Actually, running the command in Command Prompt works just fine - it's just very slow.

New issue about FPE_in_wav_open

sample file

id0_FPE_in_wav_open.zip

command to reproduce

./fdkaac -m3 [sample file] -o /dev/null

crash detail

AddressSanitizer:DEADLYSIGNAL
=================================================================
==78507==ERROR: AddressSanitizer: FPE on unknown address 0x00000053ad51 (pc 0x00000053ad51 bp 0x7ffea0d7ea30 sp 0x7ffea0d7e720 T0)
    #0 0x53ad51 in wav_open /home/bupt/Desktop/fdkaac/src/wav_reader.c:210:54
    #1 0x51e33b in open_input /home/bupt/Desktop/fdkaac/src/main.c:746:27
    #2 0x51e33b in main /home/bupt/Desktop/fdkaac/src/main.c:802:19
    #3 0x7f728a35ec86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:310
    #4 0x41c9d9 in _start (/home/bupt/Desktop/fdkaac/fdkaac+0x41c9d9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: FPE /home/bupt/Desktop/fdkaac/src/wav_reader.c:210:54 in wav_open
==78507==ABORTING

Can we stop license rumors?

There is a bunch of weird sjw guys spreading misinformation about FDK-AAC license, so I have a proposal to stop the rumors and just include the FDK-AAC license directly in the executable. It is required to distribute the license with the binary anyway. The license said "or other materials", so I think that binary guts are quite an "other material".

Redistribution and use in source and binary forms, with or without modification,
are permitted without payment of copyright license fees provided that you
satisfy the following conditions:

You must retain the complete text of this software license in redistributions of
the FDK AAC Codec or your modifications thereto in source code form.

You must retain the complete text of this software license in the documentation
and/or other materials provided with redistributions of the FDK AAC Codec or
your modifications thereto in binary form. You must make available free of
charge copies of the complete source code of the FDK AAC Codec and your
modifications thereto to recipients of copies in binary form.

Therefore I propose to do something like this master...tico-tico:fdk_license . I'll do the pull request if you like the idea.

Debian packaging wanted?

Hi there.

As I mentioned briefly some time ago in hydrogenaudio, I was/am working on the Debian packaging of fdkaac, so that the executable can be produced in an automated way.

Do you want me to send a pull request with what I have so far? My idea would be to merge it in a, perhaps, separate branch, unless you don't mind it being in the master branch.

Thanks,

Rogério.

Mp4 atoms are missing

Hello,

I am trying to write tags to a certain file in my TAudioConverter but said file causes issues if fdkaac.exe is used as encoder.

File is ripped from CD and encoded to aac (.m4a) using fdkaac.exe. Used command line is "-m 0 -b 128 -p 2 -G 0". File plays fine without tags written. But when I write the tags, foobar2000 states that it is invalid and refuses to play it. However I can play the file with MPlayer.

This problem doesn't occur with other encoders I tried (qaac, neroaac, ffmpeg). So, I've run encoded files (still without tags) through atomicparsley to see atom trees.
Here are the results:
fdkaac: https://dl.dropboxusercontent.com/u/9617171/1.txt
neroaac: https://dl.dropboxusercontent.com/u/9617171/2.txt
qaac: https://dl.dropboxusercontent.com/u/9617171/3.txt

I've used the fdkaac.exe that I've compiled using sources from your repo and tagging library from http://www.3delite.hu/.

I can provide you with the sample file if need be.

TIA and regards.

Meta: image

Hi, it would be nice if fdkaac can add an image to the m4a, with syntax like --image <path to file>

Can't compile under visual studio 2015

Two errors:
Item severity code file line
Error LNK2019 unresolved external symbol ___wgetmainargs, the symbol is referenced in function _aacenc_getmainargs in fdkaac C : \ Users \ Shen Shu super \ Download \ compression \ fdkaac \ MSVC \ compat_win32.obj 1

Item severity code file line
Error LNK1120 1 which could not resolve the external command fdkaac C: \ Users \ Shen Shu super \ Downloads \ Compressed \ fdkaac \ MSVC \ Debug \ fdkaac.exe 1

Decode Functionality

Would it be possible to incorporate FDK-AAC's decoding functionality or is there some reason that it hasn't been implemented?

There are certain instances where I'd love to be able to decode to .WAV or, if we're ambitious, decode/encode into .FLAC. Currently, I have to rely on non-open source options when I'm on a Windows box. Not my favorite thing to do.

A Wstringop-overflow Warning in GCC

There is a warning when compiling fdkaac 1.0.2 using the latest MinGW with MYSYS2:

The compile script is basically as follows:
cd fdkaac-1.0.2
autoreconf -i
#warning happens in next command
CC="gcc -pipe -static-libgcc" CXX="g++ -pipe -static-libgcc" ./configure --prefix=$MINGW_PREFIX/$MINGW_CHOST/ CFLAGS="-O3 -flto -march=native"
make -j8
make install
gcc -pipe -static-libgcc  -O3 -flto -march=native   -o fdkaac.exe src/aacenc.o src/caf_reader.o src/extrapolater.o src/limiter.o src/lpc.o src/m4af.o src/main.o src/metadata.o src/parson.o src/pcm_float_converter.o src/pcm_native_converter.o src/pcm_readhelper.o src/pcm_sint16_converter.o src/progress.o src/wav_reader.o  src/compat_win32.o fdkaac.o  -liconv -lfdk-aac -lm -lfdk-aac
In function 'apple_chan_chunk',
    inlined from 'caf_parse' at src/caf_reader.c:190:17,
    inlined from 'caf_open' at src/caf_reader.c:230:9,
    inlined from 'open_input' at src/main.c:754:27,
    inlined from 'main' at src/main.c:802:19:
src/pcm_readhelper.c:231:24: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
  231 |             mapping[i] = i;
      |                        ^
src/main.c: In function 'main':
src/caf_reader.c:29:13: note: at offset 0 to object 'chanmap' with size 8 declared here
   29 |     uint8_t chanmap[8];
      |             ^

(full logs in kekyo/fdk-aac-win32-builder#9 (comment))

Code related to the problem

fdkaac/src/pcm_readhelper.c

Lines 207 to 208 in 347e995

int apple_chan_chunk(pcm_io_context_t *io, uint32_t chunk_size,
pcm_sample_description_t *fmt, uint8_t *mapping)

fdkaac/src/pcm_readhelper.c

Lines 230 to 231 in 347e995

for (i = 0; i < nchannels; ++i)
mapping[i] = i;


According to a similar problem in another project (tarantool/tarantool#5564), this warning is due to a zero-lenght array, and happened when using GCC version >= 10.

I don't know how to fix this, but this info might be helpful tarantool/tarantool@8915ae2.

Zero-lenght arrays are GNU C extension. There's ISO C99 flexible array member, which is preffered mechanism to declare variable-length types.

Flexible array member allows us to avoid applying sizeof operator cause it's incomplete type, so it will be an error at compile time. There're any moments else why it's better way to implement such structures via FAM:
https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html

In this issue it fixed gcc 10 warning:
"warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]"


Version info of GCC
$ gcc -v
Using built-in specs.
COLLECT_GCC=E:\Etc\HUGE\msys64\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=E:/Etc/HUGE/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-10.3.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --enable-checking=release --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-lto --enable-libgomp --disable-multilib --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --with-boot-ldflags='-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -Wl,--disable-dynamicbase -static-libstdc++ -static-libgcc' 'LDFLAGS_FOR_TARGET=-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high' --enable-linker-plugin-flags='LDFLAGS=-static-libstdc++\ -static-libgcc\ -pipe\ -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high\ -Wl,--stack,12582912'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.3.0 (Rev2, Built by MSYS2 project)

faststart

looking for some guidance for making the necessary changes to enable faststart

When will xhe-aac be supported?

In 2018, the new version FDK2 was launched, and brings several new technologies to Android OEMs, service providers and developers, including xHE-AAC, MPEG-D DRC dynamic range control and AAC-ELDv2. Android users benefit from the high audio quality of the Fraunhofer FDK.
xHE-AAC extends the usable stereo bitrate range of AAC: from as low as 12 kbit/s up to 500 kbit/s

Build failure on OS X Mavericks with Homebrew

Hi,

I got the following error message when I tried to build fdkaac v0.6.0 on OS X Mavericks with Homebrew.

$ autoreconf -i
configure.ac:49: warning: macro 'AM_ICONV' not found in library

You can see the entire log message on Gist.

This issue is similar to #11 Build binaries with OS X Maverick and Ubuntu 14.x.
However, I got the same error message even if gettext and libiconv were installed using Homebrew.

Do you have any good idea to avoid this error?

bitrate-mode seems broken.

Hi
This shows "unrecognized option '--bitrate-mode'"
$ fdkaac --bitrate-mode 3 foo.wav

But this is OK:-
$ fdkaac -m 3 foo.wav

ERROR: unsupported profile

Hi nu774,
I'm running a Kubuntu 23.10 and I having issue trying to encode HEv1 and HEv2 files, it also return the same error for ELDv2 profile.

I replaced the fdkaac v1.0.0 of repos to a 1.0.5 and a master compiled from sources, but nothing changes.

fdkaac version

:~$ fdkaac
fdkaac 1.0.5
Usage: fdkaac [options] input_file
Options:
 -h, --help                    Print this help message
 -p, --profile <n>             Profile (audio object type)
                                 2: MPEG-4 AAC LC (default)
                                 5: MPEG-4 HE-AAC (SBR)
                                29: MPEG-4 HE-AAC v2 (SBR+PS)
                                23: MPEG-4 AAC LD
                                39: MPEG-4 AAC ELD
[...]

libfdk_aac version

libfdk-aac-dev/mantic,now 2.0.2-3~ubuntu1 amd64

libfdk-aac2/mantic,now 2.0.2-3~ubuntu1 amd64

good runs

:~$ fdkaac -m 3 -p 2 -o test.m4a test.wav
[100%] 02:23.931/02:23.931 (77x), ETA 00:00.000   
6347358/6347358 samples processed in 00:01.878

:~$ fdkaac -m 2 -p 2 -o test.m4a test.wav
[100%] 02:23.931/02:23.931 (87x), ETA 00:00.000   
6347358/6347358 samples processed in 00:01.645

:~$ fdkaac -m 3 -p 23 -o test.m4a test.wav
[100%] 02:23.931/02:23.931 (63x), ETA 00:00.000   
6347358/6347358 samples processed in 00:02.283

:~$ fdkaac -m 3 -p 39 -o test.m4a test.wav
[100%] 02:23.931/02:23.931 (64x), ETA 00:00.000   
6347358/6347358 samples processed in 00:02.254

bad runs

:~$ fdkaac -m 3 -p 5 -o test.m4a test.wav
ERROR: unsupported profile

:~$ fdkaac -m 2 -p 5 -o test.m4a test.wav
ERROR: unsupported profile

:~$ fdkaac -b 50 -p 5 -o test.m4a test.wav
ERROR: unsupported profile

:~$ fdkaac -m 2 -p 29 -o test.m4a test.wav
ERROR: unsupported profile

:~$ fdkaac -m 1 -p 29 -o test.m4a test.wav
ERROR: unsupported profile

:~$ fdkaac -b 32 -p 29 -o test.m4a test.wav
ERROR: unsupported profile

:~$ fdkaac -m 3 -p 44 -o test.m4a test.wav
ERROR: unsupported profile

test.wav info

General
Complete name                            : /home/***/test.wav
Format                                   : Wave
Format settings                          : PcmWaveformat
File size                                : 24.2 MiB
Duration                                 : 2 min 23 s
Overall bit rate mode                    : Constant
Overall bit rate                         : 1 411 kb/s

Audio
Format                                   : PCM
Format settings                          : Little / Signed
Codec ID                                 : 1
Duration                                 : 2 min 23 s
Bit rate mode                            : Constant
Bit rate                                 : 1 411.2 kb/s
Channel(s)                               : 2 channels
Sampling rate                            : 44.1 kHz
Bit depth                                : 16 bits
Stream size                              : 24.2 MiB (100%)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.