Jan Ekström
1c7e55dd50
swresample/rematrix: handle 22.2 as a 9 channel layout
...
This is as far as 22.2 follows the same channel order as
WaveFormatExtensible's channel mask (and the AV_CH_* defines).
After LFE2 the side channels would follow, but that offset of
one stops us from utilizing them without further tweaks.
This change was verified by using swresample to downmix to 5.1,
and then feeding that to WASAPI.
4 years ago
Jan Ekström
f5390a9f86
swresample/rematrix: treat 22.2 as 5.1 (back) when mixing
...
Only this sub-set of channels actually follows the bit mask order
in the official 22.2 channel mapping. Additionally, the 5.1 channels
are there for backwards compatibility with the previous system.
This enables the utilization of 22.2 content until a proper down/up
matrix is added into swresample.
4 years ago
Jan Ekström
2fd8add1ba
swresample/matrix: switch internal clean_layout function to not drop high bits
...
These bits are utilized by channel layouts such as 22.2. If those
are dropped, the returned channel layout is no longer a match
against the AV_CH_LAYOUT define when returned from this function.
4 years ago
Marcin Gorzel
8b710ea5e7
swresample: Use channel count in rematrix initialization
...
Rematrixing supports up to 64 channels. However, there is only a limited number of channel layouts defined. Since the in/out channel count is currently obtained from the channel layout, for undefined layouts (e.g. for 9, 10, 11 channels etc.) the rematrixing fails.
This patch changes rematrix init methods to use in (used) and out channel count directly instead of computing it from channel layout.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
7 years ago
Tobias Rapp
6325bd3717
swresample/rematrix: fix update of channel matrix if input or output layout is undefined
...
Prefer direct in/out channel count values over channel layout, when
available. Fixes a pan filter bug (ticket #6790 ).
Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
7 years ago
Carl Eugen Hoyos
ff994c2aaa
lswr/rematrix: Support s32p.
...
Fixes ticket #6785 .
7 years ago
Diego Biurrun
fd502f4f5f
build: Generalize yasm/nasm-related variable names
...
None of them are specific to the YASM assembler.
(Cherry-picked from libav commit 39e208f4d4
)
Signed-off-by: James Almer <jamrial@gmail.com>
8 years ago
Carl Eugen Hoyos
353f509ee3
lswr/rematrix: Remove an aggressive loop optimization.
...
Fixes undefined behaviour and a gcc warning:
libswresample/rematrix.c:376:47: warning: iteration 64 invokes undefined behavior
8 years ago
Vodyannikov Aleksandr
9445e7e6d5
swresample/rematrix: Fix float part of swr_set_matrix()
...
Fixes Ticket #5897 .
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
8 years ago
Michael Niedermayer
23c0779cda
swresample: Add swr_build_matrix()
...
API and Doxy documentation is taken from avresample_build_matrix()
Fixes: Ticket5780
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
8 years ago
Michael Niedermayer
740f5105d5
swresample: Use double and float for matrixes for best quality and speed
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
8 years ago
Michael Niedermayer
2f76157eb0
swresample/rematrix: Use clipping s16 rematrixing if overflows are possible
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9 years ago
Michael Niedermayer
7fe81bc4f8
swresample/rematrix: Use error diffusion to avoid error in the DC component of the matrix
...
This fixes the sum of the integer coefficients ending up summing to a value
larger than the value representing unity.
This issue occurs with qN0.dts when converting to stereo
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9 years ago
wm4
cdf4a13f86
swresample: slightly nicer debug output for auto matrix
...
This is the matrix that will be used for up/downmixing.
9 years ago
Michael Niedermayer
52acd22a7d
libswresample/rematrix: Check for malloc errors
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
10 years ago
Michael Niedermayer
80a28c7509
swresample: Allow reinitialization without ever setting channel layouts
10 years ago
Michael Niedermayer
b74ecb82fa
swresample/x86/rematrix_init: Check av_malloc* return codes, forward errors
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
10 years ago
Reimar Döffinger
2c5c37ade1
libswresample: move condition to start of loop.
...
This avoids several issue like calculating sum/maxcoef
incorrectly due to adding up matrix entries that will
be overwritten, as well as out-of-range writes to
s->matrix if the maximum allowed number of channels is used.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
10 years ago
Reimar Döffinger
284123d7fd
Remove pointless if.
...
A branch to avoid some calculation seems unlikely to have any benefits.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
10 years ago
Reimar Döffinger
2231d5b671
libswresample: Avoid needlessly large on-stack array.
...
We only actually need to use a tiny part of it.
Unfortunately we seem to have no real test coverage on
the code, so this is a bit risky.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
10 years ago
Michael Niedermayer
291d464161
swresample: fix AV_CH_LAYOUT_STEREO_DOWNMIX input
...
Fixes Ticket 3542
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Nicolas George
4a640a6ac8
lswr: fix assert failure on unknown layouts.
11 years ago
Michael Niedermayer
c56d4dab03
swr/rematrix: Fix handling of AV_CH_LAYOUT_STEREO_DOWNMIX output
...
Fixes Ticket2859
Note, testcases related to the downmix channels are welcome.
(id like to make sure this is working correctly now, as obviously it didnt
work before ...)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
6dfffe9200
swr: clean layouts before checking sanity
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
7ac12599fe
swresample: fix negative rematrix volumns
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
e2b718464e
swresample: Make rematrix maxvalue user settable
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
4cfc92081d
swr: add native_simd_one
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
b84de51f54
swresample/rematrix: add S32 mixing code
...
Needed for dithering S32
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
6e29f39252
swr/rematrix: use av_calloc()
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Clément Bœsch
5e68bf9b92
swr/rematrix: move templating parameters to template itself.
12 years ago
Paul B Mahol
1acd2f6ba7
Replace rest of libavutil/audioconvert.h with libavutil/channel_layout.h
...
Also remove it in once case when it is not needed.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 years ago
Michael Niedermayer
555f352f99
swr/rematrix: fix C99 left shift overflow
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
31a797eb28
swr: add av_cold to init/free functions
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
0e78e575ed
swr/auto_matrix: treat a single channel as mono instead of failing
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
f8d74cbdc3
swr/auto_matrix: treat stereo downmix like stereo.
...
Based on code by John Stebbins
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
c8ffab06f4
swr/auto_matrix: add clean layout function
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
ebc854e4e9
swr/auto_matrix: move layouts to local variables
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
c5278cb84f
Add Dolby/DPLII downmix support to libswresample
...
Based on code by John Stebbins <jstebbins.hb@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
2dd2e42951
swr: update rematrix coeffs to match AC-3
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
7309451d73
swr: fix warning: passing argument 2 of s->mix_any_f from incompatible pointer type
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
04b5eb47a6
swr: fix mix* related function pointer warnings
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Stefano Sabatini
065851ffac
lswr/rematrix: specify explicitly the name of the unsupported channel layouts
...
Help debugging.
13 years ago
Michael Niedermayer
728f86edfc
swr: mix_2_1_int16_mmx/sse
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
cbeeaf2593
swr: mix_1_1 int16 MMX
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
beb0cd6acf
swr: SIMD rematrixing and SSE/AVX mix_1_1 float
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
48a45f819f
swr: add native matrix for SIMD
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
a5c6349358
swr: skip memset(0) in rematrix when the array is known to be already 0
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
b0348158a0
swr: 5.1->stereo double, float and s16
...
2.5 times faster than the generic code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
ca30ae12c5
swr: add all in one rematrixing function ptr
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
dfde3d497e
swr: add inrermediate sample type for rematrixing
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago