Christophe Gisquet
5fdbfcb5b7
dcadsp: split lfe_dir cases
...
The x86 runs short on registers because numerous elements are not static.
In addition, splitting them allows more optimized code, at least for x86.
Arm asm changes by Janne Grunau.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
11 years ago
Christophe Gisquet
5b59a9fc61
x86: dcadsp: implement int8x8_fmul_int32
...
For the callable function (as opposed to the inline one):
C SSE SSE2 SSE4
Win32: 47 42 29 26
Win64: 30 33 25 23
The SSE version is neither compiled nor set for ARCH_X86_64, as the
inlinable function takes over.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
11 years ago
Christophe Gisquet
2bd44cb705
dcadsp: add int8x8_fmul_int32 to dsp context
...
It is currently declared as a macro who is set to inlinable functions,
among which a Neon and a default C implementations.
Add a DSP parameter to each inline function, unused except by the
default C implementation which calls a function from the DSP context.
On an Arrandale CPU, gain for an inlined SSE2 function vs. a call:
- Win32: 29 to 26 cycles
- Win64: 25 to 23 cycles
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
11 years ago
Tim Walker
30d70e79a6
dcadec: set AV_FRAME_DATA_MATRIXENCODING side data.
11 years ago
Tim Walker
6bfdb2de88
dcadec: set the output channel mode more accurately.
...
When downmixing 2.1 to 2-channel, if the 2.0 portion is Lt/Rt, sum-difference or dual mono, the actual output will be the same (with the LFE either mixed-in or discarded).
Also, when downmixing an arbitrary layout to 2-channel, if the bitstream contains custom downmix coefficients targeting Lt/Rt, then the output will be Lt/Rt rather than regular Stereo.
11 years ago
Michael Niedermayer
b6a9719941
dcadec: Decode LFE to avoid adding random data when downmixing with LFE
...
Signed-off-by: Tim Walker <tdskywalker@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
11 years ago
Tim Walker
7dc827b709
dcadec: Add some logging before returning on error
...
Based on a patch by Michael Niedermayer.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
11 years ago
Michael Niedermayer
6e7de11444
avcodec/dcadec: decode LFE so we dont just add random data when downmixing with LFE
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Michael Niedermayer
d2e46b11e4
avcodec/dcadec: set AV_CLASS_CATEGORY
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Michael Niedermayer
55bd20a841
avcodec/dcadec: AVClass is const
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Michael Niedermayer
12235a3ed2
avcodec/dcadec: print more details about errors
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Tim Walker
3c8507a845
dcadec: add disable_xch private option.
...
This supplements the deprecated request_channels-based control of XCh decoding.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
220494ad0b
dcadec: treat all 2-channel modes as Stereo in dca_downmix.
...
The check for (prim_channels > 2) before calling dca_downmix made these
cases unreachable, but now 2.1 layouts will go through the downmix code.
Having dual mono, Lt/Rt and sum-difference layouts print errors when
regular Stereo doesn't seems pointless.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
aaa44d0299
dca: support mixing LFE in dca_downmix.
...
Embedded downmix coefficients can use this.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
44b17d794a
dca: extract core substream's embedded downmix coeffcient codes, if present.
...
As per ETSI TS 102 114 V1.4.1 specification.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
27245b4e1b
dca: remove embedded downmix coefficient extraction.
...
It was based on an old, seemingly incorrect specification, so default
coefficients were always used anyway.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
b6d5e6aa10
dca: convert dca_default_coeffs to float.
...
Easier to read, modify, and avoids relying on an outdated table.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
25609b63d2
dcadec: store the stereo downmix coefficients as float in the DCAContext.
...
The 7-bit codes previously used are absent from the ETSI 102 114 V1.4.1 spec.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
89de5157b1
dcadec: implement request_channel_layout.
...
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Tim Walker
37a3cac78c
dcadec: simplify an expression
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
11 years ago
Diego Biurrun
b2bed9325d
cosmetics: Group .name and .long_name together in codec/format declarations
11 years ago
Martin Storsjö
a9d50bb578
dcadec: Validate the lfe parameter
...
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
12 years ago
Ben Avison
800ffab48a
dcadsp: Add a new method, qmf_32_subbands
...
This does most of the work formerly carried out by
the static function qmf_32_subbands() in dcadec.c.
Signed-off-by: Martin Storsjö <martin@martin.st>
12 years ago
Ben Avison
26ffcc7de1
dcadec: Use int32_to_float_fmul_array8
...
Signed-off-by: Martin Storsjö <martin@martin.st>
12 years ago
Christophe Gisquet
b6293e2798
fmtconvert: Explicitly use int32_t instead of int
...
Signed-off-by: Martin Storsjö <martin@martin.st>
12 years ago
Luca Barbato
3802833bc1
dca: Respect the current limits in the downmixing capabilities
...
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
12 years ago
Luca Barbato
f261e50845
dca: Error out on missing DSYNC
...
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
12 years ago
Christophe Gisquet
f49564c607
fmtconvert: int32_t input to int32_to_float_fmul_scalar
...
It was previously declared as int.
Does not change fate results for x86.
Conflicts:
libavcodec/ppc/fmtconvert_altivec.c
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Paul B Mahol
aa96439fae
lavc: remove unused put_bits.h headers
...
Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 years ago
Diego Biurrun
1db6a080bd
dca: Move ff_dca_convert_bitstream() to the DCA common code
...
This makes the DCA parser and decoder independent.
12 years ago
Paul B Mahol
a9b424879f
lavc & lavf: replace deprecated av_log* functions
...
Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 years ago
Diego Biurrun
6d97484d72
avcodec: av_log_ask_for_sample() ---> avpriv_request_sample()
12 years ago
Clément Bœsch
1ec94b0f06
lavc: factorize ff_{thread_,re,}get_buffer error messages.
...
Coccinelle profile used:
@@
expression r, ctx, f, loglevel, str, flags;
@@
-if ((r = ff_get_buffer(ctx, f, flags)) < 0) {
- av_log(ctx, loglevel, str);
- return r;
-}
+if ((r = ff_get_buffer(ctx, f, flags)) < 0)
+ return r;
@@
expression r, ctx, f, loglevel, str;
@@
-if ((r = ff_reget_buffer(ctx, f)) < 0) {
- av_log(ctx, loglevel, str);
- return r;
-}
+if ((r = ff_reget_buffer(ctx, f)) < 0)
+ return r;
@@
expression r, ctx, f, loglevel, str, flags;
@@
-if ((r = ff_thread_get_buffer(ctx, f, flags)) < 0) {
- av_log(ctx, loglevel, str);
- return r;
-}
+if ((r = ff_thread_get_buffer(ctx, f, flags)) < 0)
+ return r;
...along with some manual patches for the remaining ones.
12 years ago
Anton Khirnov
759001c534
lavc decoders: work with refcounted frames.
12 years ago
Diego Biurrun
76b19a3984
Fix a number of incorrect intmath.h #includes.
12 years ago
Justin Ruggles
182821cff4
dca: decode directly to the user-provided AVFrame
12 years ago
Diego Biurrun
218aefce44
dsputil: Move LOCAL_ALIGNED macros to libavutil
12 years ago
Michael Niedermayer
02d6d05339
dcadec: check xch_base_channel against channel_order_tab.
...
Fix null pointer dereference
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Anton Khirnov
594d4d5df3
lavc: add a wrapper for AVCodecContext.get_buffer().
...
It will be useful in the upcoming transition to refcounted AVFrames.
12 years ago
Michael Niedermayer
ff7e2342bb
dcadec: fix reading from prior to an array
...
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
3b2cd83a82
dcadec: check lfe field
...
Fix out of array accesses
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
5d47850bbd
dcadec: skip QMF on unused channels
...
When the extra rear channel is present but unused, the
s->channel_order_tab[] value for that channel is -1. The QMF can be
skipped for the extra channel, and doing so avoids an out-of-array read
on s->samples_chanptr[].
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
12 years ago
Michael Niedermayer
42dde253ec
dcadec: fix av_log level
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
a0212ecf84
dcadec: check layout & channel count for consistency.
...
Fixes out of array accesses
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Justin Ruggles
a903f8f087
Include libavutil/channel_layout.h instead of libavutil/audioconvert.h
...
Also reorder some other #include when applicable.
12 years ago
Justin Ruggles
8ac0f6767b
dcadec: allow the decoder to change the channel layout mid-stream
12 years ago
Nick Brereton
09ea482d5d
Fix #1827 , segfault with XXCH samples when downsampling.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
b4e6265136
dcadec: skip QMF on unused channels
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Justin Ruggles
61d5313d94
dca: allocate a secondary buffer for extra channels when downmixing
...
The output AVFrame buffer only has data for the downmix channels.
Fixes a segfault when decoding dca with request_channels == 2.
12 years ago
Justin Ruggles
64c312aa29
dcadec: use float planar sample format
12 years ago