Commit Graph

347 Commits

Author SHA1 Message Date
Martin Storsjo bf0d9ddc43 Add an encoder example 2012-09-13 23:27:27 +03:00
John Grossman ed8b5a747e Merge "Don't zero out spec coeffs before doing the final IMDCT." into jb-mr1-dev 2012-09-12 15:11:17 -07:00
John Grossman 34ce250e90 Don't zero out spec coeffs before doing the final IMDCT.
Addresses bug 7140347.

When flushing the decoder, you need to make sure to zero out any
lingering spectral coefficients as well as zero out the overlap buffer
state after decoding the final access unit.  Zeroing out the spec
coefficients *before* you decode the last block, however, seems like a
mistake.  If the final block contains any useful information for the
stream, then you end up outputting the overlap portion of the second
to last decoded block combined with zeros.  Because of the shape of
the second to last block's windows, this results in what appears to be
a fade out, but actually is a zero'ed out final block.

Signed-off-by: John Grossman <johngro@google.com>
Change-Id: I0fab9ee1a5899811d5519a91dc05631e9bf4963c
2012-09-12 14:20:05 -07:00
Keun young Park 1043598349 fix mips build by reverting files back
- MIPS still needs the work-around

Change-Id: If68b2028bd2779ada79020bb333ec8817abe9429
2012-09-11 17:28:46 -07:00
Jakub Stachowski 923f3e95f3 Do schur_div with a direct 64 bit division instead of a loop on x86
This speeds up HE-AACv2 encoding from 3.85 s to 3.42 s on a Core i7.
2012-09-09 22:18:09 +03:00
Jean-Michel Trivi 381d69840a Bug fixes in AAC decoder, AAC encoder, FDK library
Latest code drop from Fraunhofer:

* AAC-Decoder

   - Expanded AAC-LD/ELD decoder TNS max band tables to avoid wrong data
     access for sampling rates <22kHz and >48kHz.
     Modified file(s):
        libAACdec\src\aacdec_tns.cpp
        libAACdec\src\aac_rom.h
        libAACdec\src\aac_rom.cpp

  - Fixed ELD synthesis QMF filterbank scaling for downsampled SBR.
    Modified file(s):
        libFDK\src\qmf.cpp

* AAC-Encoder

  - Fixed bit rate limiting for lower limit as introduced in the Delivery 2012-05-11.
    Modified file(s):
        libAACenc\include\aacenc_lib.h
        libAACenc\src\aacenc.h
        libAACenc\src\aacenc.cpp
        libSBRenc\src\sbr_rom.h
        libSBRenc\src\sbr_rom.cpp

  - Allow negative prediction gain as meaning that there is no coding gain.
    Make use of scaleValueSaturate in gauss window calculation.
    Modified file(s):
        libAACenc\src\aacenc_tns.cpp

  - Added energy saturation to prevent overflow in short blocks.
    Modified file(s):
        libAACenc\src\grp_data.cpp

  - Perform scalefactor adaption in case quantized lines are out of valid range.
    Modified file(s):
        libAACenc\src\quantize.cpp

  - Interrupt quantization loop when no spectral data is available.
    Adjustments in bitreservoir adaption.
    Modified file(s):
        libAACenc\src\qc_main.cpp

  - Indroduced dynamic scaling in none missing harmonic energy lowering compensation.
    Modified file(s):
        libSBRenc\src\env_est.cpp

* FDK-Library

  - Fixed saturation for negative values in scaleValueSaturate.
    Modified file(s):
        libFDK\include\scale.h

Change-Id: If830ea65caef6b5554281e4b7a77a8b2e08825ce
2012-09-09 11:52:09 -07:00
Martin Storsjo 50b1de17ac Merge remote-tracking branch 'aosp/master' 2012-09-05 11:32:25 +03:00
Jean-Baptiste Queru fef220869b Merge "Remove workaround in aac for broken toolchain" 2012-09-04 13:13:44 -07:00
Irina Tirdea ad749575b4 Remove workaround in aac for broken toolchain
aac project forces the system not to include sys/types.h by defining
_SYS_TYPES_H_. This is a workaround for broken android toolchain.

This is no longer needed in latest android version and can be safely
removed. This will also lead to more errors if changes in bionic
headers are needed.

Change-Id: Icb76c207d6b47e811eacff9f9403177629bfb451
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
2012-09-03 02:48:01 +03:00
Martin Storsjo 8e4d5d9d2f Use a saturating shift to avoid overflow
When the shift overflowed, asserts were triggered later, where
the values were assumed to be non-negative.
2012-09-02 22:27:52 +02:00
Jean-Baptiste Queru ee36153b8c Merge "GCC 4.4 and later cannot handle h constructs. Fix to replace the assembly constructs." 2012-08-15 13:47:14 -07:00
Jakub Stachowski e036dbc8eb Use __builtin_clz instead of default implementation of fixnormz on GCC
The library contains architecture specific versions of the clz functions
for arm and mips, but the fallback C version for other architectures is
pretty slow.

By using __builtin_clz on GCC (available since GCC 3.4), we get a
significant (20-40 %) speedup of the total running time on x86.

Speed difference: 5.1 s instead of 8.6 s for AAC-LC 128 kbit/s and
3.8 s instead of 4.9 s for HE-AACv2 32 kbit/s, on an i7.
2012-08-14 23:48:55 +03:00
Jean-Baptiste Queru a00bd4cf64 Merge "Don't try to shift more bits than the variable length" 2012-08-13 10:03:01 -07:00
Martin Storsjo 6999980d67 Use saturating adds to avoid overflow
When the addition overflowed, asserts were triggered later, where
the values were assumed to be non-negative.
2012-08-11 22:28:54 +03:00
Martin Storsjo 010c75901e Use saturating adds in all other similar loops in groupShortData as well 2012-08-10 11:21:10 +03:00
Martin Storsjo 6574569496 Don't try to shift more bits than the variable length
Shifting by more than (or equal to) the variable length is
undefined in C.

This caused the quantized spectrum values to go out of range,
triggering asserts later.

Change-Id: If81b6c8caa7b9c75941ad9d280b686d2069c968c
2012-08-10 11:05:56 +03:00
Martin Storsjo 24021f1909 Don't try to shift more bits than the variable length
Shifting by more than (or equal to) the variable length is
undefined in C.
2012-08-10 11:01:37 +03:00
Martin Storsjo 839ae290c1 Use saturating adds to avoid overflow
These additions can overflow, triggering assertions later.
2012-08-10 11:01:36 +03:00
Raghu Gandham 50d9a4cb1e GCC 4.4 and later cannot handle h constructs. Fix to replace the assembly constructs.
Change-Id: I47509c20ee32f04ce42105563d2d4013910da531
2012-08-09 18:57:46 -07:00
Martin Storsjo d8e8f1ac46 Merge remote-tracking branch 'aosp/master' 2012-08-08 22:19:49 +03:00
Jean-Baptiste Queru d2854e2ac7 Merge "Only use __int64 on MSVC, not on all win32 compilers" 2012-08-08 12:07:04 -07:00
Martin Storsjo c44084453d Check whether we need to link to -lm for math functions 2012-07-14 01:58:51 +03:00
Martin Storsjo 52396724f8 Only use __int64 on MSVC, not on all win32 compilers
Mingw32 doesn't define the __int64 types.

Change-Id: Ia45add37be1bf85abde664fd6e382334a6bb4498
2012-07-12 17:06:45 +03:00
Diego Elio Pettenò bb34df82cf build: update libtool reference to version 2. 2012-07-11 22:13:08 +03:00
Diego Elio Pettenò b9c682b9d3 build: declare the project foreign to automake
By default automake thinks the project is part of GNU and enforces the
presence of some files. By declaring the project foreign, we can
remove the 0-sized files.
2012-07-11 22:13:08 +03:00
Diego Elio Pettenò be5ecc95c4 build: ignore autotools support files, and remove them from the repository.
Change-Id: Icc9c9ded1142232b5030183f2a653ee7cef632b5
2012-07-11 22:13:08 +03:00
The Android Open Source Project 2228e36059 Snapshot 2bda038c16
Change-Id: If584e579464f28b97d50e51fc76ba654a5536c54
2012-07-11 10:15:24 -07:00
Diego Elio Pettenò a0b3294e55 build: do not use config.h 2012-07-11 07:48:52 -07:00
Diego Elio Pettenò 40f4e738e4 build: use dnl for comments in configure.ac
This simply means the comments are not copied into the executed
configure script.
2012-07-11 07:45:09 -07:00
Diego Elio Pettenò df77638da1 build: do not call AC_CANONICAL_HOST.
Unless configure uses $host there is no reason to call it directly.
2012-07-11 07:44:13 -07:00
Martin Storsjo 78443185d4 Export the external symbols via the libtool -export-symbols option
Change-Id: If139d0d1cf6f9fdfb0ebc477d2152b9f5f49f566
2012-07-11 14:37:36 +03:00
Martin Storsjo 7ed64e79d4 Only use __int64 on MSVC, not on all win32 compilers
Mingw32 doesn't define the __int64 types.
2012-07-11 14:28:03 +03:00
Martin Storsjo c8776d228b Update the changelog 2012-07-11 14:28:03 +03:00
Martin Storsjo 4f7355002c Don't link to libstdc++
While the source is C++, it doesn't use anything from the C++
runtime, so by building with -fno-exceptions -fno-rtti, the
dynamic library doesn't have to be linked to libstdc++. This
also simplifies things for users of the static library.
2012-07-11 14:28:03 +03:00
Martin Storsjo b431d100a3 Allow setting bitrate modes 1-5 too
These correspond to different VBR modes.
2012-07-11 14:28:03 +03:00
Martin Storsjo 7e5a3465a8 Ignore generated files 2012-07-11 14:28:03 +03:00
Martin Storsjo 27360036f6 Add files added by "automake --add-missing -c" 2012-07-11 14:28:03 +03:00
Martin Storsjo 28ca63087f Add an _enc suffix to the sbr_ram/rom files in libSBRenc
This avoids name clashes with the similarly named files in
libSBRdec, when building all libraries with one single
automake file.
2012-07-11 14:28:03 +03:00
Martin Storsjo ce9492073b Add COPYING as a symlink to NOTICE 2012-07-11 14:28:03 +03:00
Martin Storsjo 6cae68113f Add stub documents required by autotools 2012-07-11 14:28:02 +03:00
Martin Storsjo f4fc1a43e4 Run "libtoolize -c" 2012-07-11 14:28:02 +03:00
Martin Storsjo cd1c375de0 Add automake/autoconf source files
Change-Id: If97c7482bffaab4a21cd2fb8341f2939f19d3bbd
2012-07-11 14:28:02 +03:00
Dave Burke 2bda038c16 Add NOTICE file. Rework make file so it appears in settings.
Change-Id: I9d9ab17121e2db58f8a4ba4b40e14cab629b1a7e
2012-06-12 10:34:26 -07:00
Dave Burke 18a4af02f9 Added license boilerplate to all source files.
Change-Id: I42a702487e6db4953dca0027710ea4fe266052fd
Also:
 - Removed dead code in several source files.
 - Minor changes in comments.
 - No functional changes. No changes in executed code.
 - Added documentation PDFs.
2012-06-11 20:07:04 -07:00
Dave Burke 698b536f3b Update to 2012_05_11 version.
Fixes:
- Don't throw error for invalid bitrate but limit to functional value
- More robust ASC parsing
- More robust handling of corrupt bitstreams
- Handle multiple raw access units

Change-Id: Ib49fe2545ff4185fe924126da702fe84ac5c2d87
2012-05-12 13:47:46 -07:00
Dave Burke 9bf37cc971 Fraunhofer AAC codec.
License boilerplate update to follow.

Change-Id: I2810460c11a58b6d148d84673cc031f3685e79b5
2012-04-17 23:04:43 -07:00
Anatol Pomazau a37315fe10 Initial empty repository 2012-04-06 11:04:36 -07:00