summaryrefslogtreecommitdiff
path: root/tests/fate/ac3.mak
Commit message (Collapse)AuthorAge
* ac3enc_fixed: convert to 32-bit sample formatLynne2021-01-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The AC3 encoder used to be a separate library called "Aften", which got merged into libavcodec (literally, SVN commits and all). The merge preserved as much features from the library as possible. The code had two versions - a fixed point version and a floating point version. FFmpeg had floating point DSP code used by other codecs, the AC3 decoder including, so the floating-point DSP was simply replaced with FFmpeg's own functions. However, FFmpeg had no fixed-point audio code at that point. So the encoder brought along its own fixed-point DSP functions, including a fixed-point MDCT. The fixed-point MDCT itself is trivially just a float MDCT with a different type and each multiply being a fixed-point multiply. So over time, it got refactored, and the FFT used for all other codecs was templated. Due to design decisions at the time, the fixed-point version of the encoder operates at 16-bits of precision. Although convenient, this, even at the time, was inadequate and inefficient. The encoder is noisy, does not produce output comparable to the float encoder, and even rings at higher frequencies due to the badly approximated winow function. Enter MIPS (owned by Imagination Technologies at the time). They wanted quick fixed-point decoding on their FPUless cores. So they contributed patches to template the AC3 decoder so it had both a fixed-point and a floating-point version. They also did the same for the AAC decoder. They however, used 32-bit samples. Not 16-bits. And we did not have 32-bit fixed-point DSP functions, including an MDCT. But instead of templating our MDCT to output 3 versions (float, 32-bit fixed and 16-bit fixed), they simply copy-pasted their own MDCT into ours, and completely ifdeffed our own MDCT code out if a 32-bit fixed point MDCT was selected. This is also the status quo nowadays - 2 separate MDCTs, one which produces floating point and 16-bit fixed point versions, and one sort-of integrated which produces 32-bit MDCT. MIPS weren't all that interested in encoding, so they left the encoder as-is, and they didn't care much about the ifdeffery, mess or quality - it's not their problem. So the MDCT/FFT code has always been a thorn in anyone looking to clean up code's eye. Backstory over. Internally AC3 operates on 25-bit fixed-point coefficients. So for the floating point version, the encoder simply runs the float MDCT, and converts the resulting coefficients to 25-bit fixed-point, as AC3 is inherently a fixed-point codec. For the fixed-point version, the input is 16-bit samples, so to maximize precision the frame samples are analyzed and the highest set bit is detected via ac3_max_msb_abs_int16(), and the coefficients are then scaled up via ac3_lshift_int16(), so the input for the FFT is always at least 14 bits, computed in normalize_samples(). After FFT, the coefficients are scaled up to 25 bits. This patch simply changes the encoder to accept 32-bit samples, reusing the already well-optimized 32-bit MDCT code, allowing us to clean up and drop a large part of a very messy code of ours, as well as prepare for the future lavu/tx conversion. The coefficients are simply scaled down to 25 bits during windowing, skipping 2 separate scalings, as the hacks to extend precision are simply no longer necessary. There's no point in running the MDCT always at 32 bits when you're going to drop 6 bits off anyway, the headroom is plenty, and the MDCT rounds properly. This also makes the encoder even slightly more accurate over the float version, as there's no coefficient conversion step necessary. SIZE SAVINGS: ARM32: HARDCODED TABLES: BASE - 10709590 DROP DSP - 10702872 - diff: -6.56KiB DROP MDCT - 10667932 - diff: -34.12KiB - both: -40.68KiB DROP FFT - 10336652 - diff: -323.52KiB - all: -364.20KiB SOFTCODED TABLES: BASE - 9685096 DROP DSP - 9678378 - diff: -6.56KiB DROP MDCT - 9643466 - diff: -34.09KiB - both: -40.65KiB DROP FFT - 9573918 - diff: -67.92KiB - all: -108.57KiB ARM64: HARDCODED TABLES: BASE - 14641112 DROP DSP - 14633806 - diff: -7.13KiB DROP MDCT - 14604812 - diff: -28.31KiB - both: -35.45KiB DROP FFT - 14286826 - diff: -310.53KiB - all: -345.98KiB SOFTCODED TABLES: BASE - 13636238 DROP DSP - 13628932 - diff: -7.13KiB DROP MDCT - 13599866 - diff: -28.38KiB - both: -35.52KiB DROP FFT - 13542080 - diff: -56.43KiB - all: -91.95KiB x86: HARDCODED TABLES: BASE - 12367336 DROP DSP - 12354698 - diff: -12.34KiB DROP MDCT - 12331024 - diff: -23.12KiB - both: -35.46KiB DROP FFT - 12029788 - diff: -294.18KiB - all: -329.64KiB SOFTCODED TABLES: BASE - 11358094 DROP DSP - 11345456 - diff: -12.34KiB DROP MDCT - 11321742 - diff: -23.16KiB - both: -35.50KiB DROP FFT - 11276946 - diff: -43.75KiB - all: -79.25KiB PERFORMANCE (10min random s32le): ARM32 - before - 39.9x - 0m15.046s ARM32 - after - 28.2x - 0m21.525s Speed: -30% ARM64 - before - 36.1x - 0m16.637s ARM64 - after - 36.0x - 0m16.727s Speed: -0.5% x86 - before - 184x - 0m3.277s x86 - after - 190x - 0m3.187s Speed: +3%
* fate: disable automatic conversions on many tests.Nicolas George2020-09-08
| | | | | | | | | | Explicitly insert the scale or aresample filter where it would have been inserted by the negotiation. Re-enable conversions if it cannot be done easily. If a conversion is needed in a test, we want to know about it. If the negotiation changes and makes new conversion necessary, we want to know about it even more.
* fate: add test for eac3 dependant streamJames Almer2018-03-30
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate: add eac3_core bitstream filter testPaul B Mahol2018-03-30
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* fate: add tests for ac3_fixed 5.1 downmixJames Almer2017-03-28
| | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* fate: replace deprecated request_channels with request_channel_layoutAndreas Cadhalpun2015-08-22
| | | | | | | This fixes fate with FF_API_REQUEST_CHANNELS disabled. Reviewed-by: wm4 <nfxjfg@googlemail.com> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
* Merge commit '3ad678a85b96fc5fecd60e3d3a31ca5ffc89d67f'Michael Niedermayer2015-06-30
|\ | | | | | | | | | | | | * commit '3ad678a85b96fc5fecd60e3d3a31ca5ffc89d67f': fate: Update ac3 test to the new request_channel_layout option Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: Update ac3 test to the new request_channel_layout optionVittorio Giovara2015-06-30
| |
* | tests: Add ac3_fixed decoder testTimothy Gu2014-06-05
| | | | | | | | | | Signed-off-by: Timothy Gu <timothygu99@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'ba13606ca6adbc74b4db4a72b0769397d6408791'Michael Niedermayer2013-05-29
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'ba13606ca6adbc74b4db4a72b0769397d6408791': fate: Add a --target-samples path parameter Conflicts: configure tests/fate/audio.mak tests/fate/cover-art.mak tests/fate/demux.mak tests/fate/ea.mak tests/fate/filter-video.mak tests/fate/h264.mak tests/fate/image.mak tests/fate/lossless-audio.mak tests/fate/lossless-video.mak tests/fate/microsoft.mak tests/fate/pcm.mak tests/fate/prores.mak tests/fate/qt.mak tests/fate/real.mak tests/fate/screen.mak tests/fate/video.mak tests/fate/voice.mak tests/fate/vpx.mak tests/fate/vqf.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: Add a --target-samples path parameterMartin Storsjö2013-05-28
| | | | | | | | | | | | | | This allows having the samples accessible via different paths on the target and on the host. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2013-04-27
|\| | | | | | | | | | | | | | | | | | | * qatar/master: x86: ac3dsp: Remove 3dnow version of ff_ac3_extract_exponents Conflicts: tests/fate/ac3.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * x86: ac3dsp: Remove 3dnow version of ff_ac3_extract_exponentsDiego Biurrun2013-04-26
| | | | | | | | | | | | | | The function requires increasing the fuzz factor for the ac3/eac3 encode tests and even so makes fate fail. It only provides a slight encoding speedup for legacy CPUs that do not support SS2. Thus its benefit is not worth the trouble it creates and fixing it would be a waste of time.
| * ac3dec: fix non-optimal dithering of zero bit mantissasMathias Rauen2013-01-20
| | | | | | | | | | | | Use a noise range of -0.707 to 0.707 instead of -0.5 to 0.5 Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
| * fate: add ac3/eac3 tests to FATE_SAMPLES_AVCONVJanne Grunau2012-10-31
| | | | | | | | Fixes typo in 2cbdd7c92958cb8226491d8eb23ed2d57d4b841e.
* | ac3dec: fix non-optimal dithering of zero bit mantissasMichael Niedermayer2013-01-21
| | | | | | | | | | | | | | Use a noise range of -0.707 to 0.707 instead of -0.5 to 0.5 Based on patch by: Mathias Rauen <madshi@gmail.com> and commit by Justin Ruggles (04ea5491) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | fate: remove typo, reenable AC3 testsMichael Niedermayer2012-10-30
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '14f031d7ecfabba0ef02776d4516aa3dcb7c40d8'Michael Niedermayer2012-10-30
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '14f031d7ecfabba0ef02776d4516aa3dcb7c40d8': dv: use AVStream.index instead of abusing AVStream.id lavfi: add ashowinfo filter avcodec: Add a RFC 3389 comfort noise codec lpc: Add a function for calculating reflection coefficients from samples lpc: Add a function for calculating reflection coefficients from autocorrelation coefficients lavr: document upper bound on number of output samples. lavr: add general API usage doxy indeo3: remove duplicate capabilities line. fate: ac3: Add dependencies Conflicts: Changelog doc/filters.texi libavcodec/Makefile libavcodec/allcodecs.c libavcodec/avcodec.h libavcodec/codec_desc.c libavcodec/version.h libavfilter/Makefile libavfilter/af_ashowinfo.c libavfilter/allfilters.c libavfilter/version.h libavutil/avutil.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: ac3: Add dependenciesDiego Biurrun2012-10-29
| |
* | Merge commit '381dc1a5ec0925b281c573457c413ae643567086'Michael Niedermayer2012-10-30
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '381dc1a5ec0925b281c573457c413ae643567086': fate: ac3: Place E-AC-3 tests and AC-3 tests in different groups fate: Add shorthands for acodec PCM and ADPCM tests avconv: Drop unused function argument from do_video_stats() cmdutils: Conditionally compile libswscale-related bits aacenc: Drop some unused function arguments rtsp: Avoid a cast when calling strtol nut: support textual data nutenc: verbosely report unsupported negative pts Conflicts: cmdutils.c ffmpeg.c libavformat/nut.c libavformat/nutenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: ac3: Place E-AC-3 tests and AC-3 tests in different groupsDiego Biurrun2012-10-29
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-10-10
|\| | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: build: sanitize linking of tools and test programs fate: Refactor setting of environment variables for groups of tests Conflicts: tests/fate/audio.mak tests/fate/real.mak tests/fate/voice.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: Refactor setting of environment variables for groups of testsDiego Biurrun2012-10-10
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-09-15
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: riff: Add SVQ3 fourcc fate: ac3: add 4.0 and downmix tests configure: x86: improve ebp availability check vorbisdec: ensure FASTDIV denominator is never 1 avformat: refactor avformat_close_input avformat: simplify avformat_close_input Conflicts: configure libavcodec/vorbisdec.c libavformat/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: ac3: add 4.0 and downmix testsMans Rullgard2012-09-14
| | | | | | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
| * fate: Fix fate-ac3-fixed-encode for pre-ssse3 x86 machinesMichael Niedermayer2012-05-31
| | | | | | | | | | | | | | The default mmxext and sse implementations of apply_window_int16 aren't bitexact. Signed-off-by: Martin Storsjö <martin@martin.st>
* | fate: increase fuzzyness for ac3 encode for 3dnowMichael Niedermayer2012-07-06
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-05-30
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: pcm-mpeg: improve log message wording fate: add missing $(TARGET_PATH) to ac3-fixed-encode fate: fix md5sum replacement on some systems avprobe: correctly set the default formatter lavr: add x86-optimized function for mixing 2 to 1 s16p with q8 coeffs lavr: add x86-optimized functions for mixing 2 to 1 s16p with float coeffs lavr: add C functions for mixing 2 to 1 channels with s16p format avprobe: move formatter functions in the context Conflicts: ffprobe.c libavcodec/pcm-mpeg.c tests/fate/ac3.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: add missing $(TARGET_PATH) to ac3-fixed-encodeMans Rullgard2012-05-30
| | | | | | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* | fate: add bitexact flag to ac3-fixedMichael Niedermayer2012-05-30
| | | | | | | | | | | | cant hurt, and should be there for all tests Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'f919cc7df6ab844bc12f89fe7bef4fb915a47725'Michael Niedermayer2012-05-30
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'f919cc7df6ab844bc12f89fe7bef4fb915a47725': fate: fix acodec/vsynth tests for make 3.81 pcm_mpeg: fix number of consumed bytes to include the header. avfilter: include required header file avfilter.h in video.h x86: Avoid movs on BUTTERFLYPS when in AVX mode x86: use new schema for ASM macros fate: convert codec-regression.sh to makefile rules fate: allow tests to specify unit size for psnr comparison fate: teach videogen/rotozoom to output a single raw video stream http: Add support for reusing the http socket for subsequent requests http: Add support for using persistent connections Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * fate: convert codec-regression.sh to makefile rulesMans Rullgard2012-05-29
|/ | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* fate: fix dependencies on SAMPLES being setMans Rullgard2012-05-19
| | | | | | | This allows fate to run without errors with or without SAMPLES being set. Signed-off-by: Mans Rullgard <mans@mansr.com>
* fate: Set FUZZ factor of (e)ac3-encode test to 3.Diego Biurrun2012-05-18
| | | | | This is necessary to account for different rounding done in the 3DNow! Assembly optimizations.
* fate: improve dependenciesMans Rullgard2012-05-09
| | | | | | | This makes only tests actually using avconv depend on it. The remaining tests already depend on what they need. Signed-off-by: Mans Rullgard <mans@mansr.com>
* FATE: pass the decoded output format and audio source file to enc_dec_pcmJustin Ruggles2012-04-18
| | | | | | | This will allow decoding to md5 and doing a diff comparison to a reference checksum instead of a fuzzy stddev or oneoff comparison. Signed-off-by: Mans Rullgard <mans@mansr.com>
* FATE: add AC-3 and E-AC-3 encode/decode tests with fuzzy comparisonJustin Ruggles2012-03-17
|
* fate: add some shorthands to run groups of testsDiego Biurrun2012-01-19
|
* fate: split off AC-3 codec FATE tests into their own fileDiego Biurrun2011-12-14