swr_init() failures were only printed and the test still exited with 0.
Return failure through the cleanup instead, also for the allocation
failures that returned without it.
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
The two contexts and the layouts were never released, which trips leak
checking once the test runs under FATE.
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Said #define ASSERT_LEVEL 2 was ineffective because it followed
the inclusion of avassert.h. It only leads to warnings when
ASSERT_LEVEL is defined to something other than 2 (it is not
defined by default).
Also avoid using av_assert2() in a test tool: These are supposed to
be picky, so using always-enabled av_assert0 is appropriate.
This was probably the intention of the ASSERT_LEVEL override
all along.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
custom layouts containing AV_CHAN_UNUSED were rejected by
swr_build_matrix2().
accept unused channels in input and output layouts. preserve their
physical positions, clear input columns, and leave output rows silent.
add fate coverage for both cases. this fixes#24094.
Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
top-back channels are currently left unaccounted and can be dropped during downmixing.
when the output retains top-front channels, follow IAMF 1.1.0 and fold top-back into top-front at 0.707. prefer this path over ear-level rear channels to preserve the height layer in x.1.4 to x.1.2 downmixes.
when no matching height output remains, map top-back to back or side channels, then fall back to front or mono outputs. handle top-back center separately and add direct tests for every matrix path.
Signed-off-by: Ayoub Nabil Boubagrat <237098474+ayoubnabil@users.noreply.github.com>
Add a regression test exercising the swr_convert(N) -> swr_convert(2N)
edge case: the second call reuses the internal preout buffer at full
capacity, with no trailing slack from swri_realloc_audio()'s amortized
doubling. internal_sample_fmt is forced to S16P to reach the int16 SIMD
resample path, where ff_resample_common_int16_sse2 overruns its
destination by 2 bytes on the last iteration.
Without a resampler fix this test fails under valgrind/ASAN with a
heap-buffer-overflow (Invalid write of size 4, 2 bytes past the end).
Signed-off-by: Ivan Grigorev <ivangrigoriev@meta.com>
Before commit e96d90eed6 lavu/internal.h
contained redefined various discouraged/forbidden functions to induce
compilation failures upon use, like e.g.
#define malloc please_use_av_malloc
In order to use these functions, some files had to undefine these
macros. This commit removes the remaining pointless undefs.
Reviewed-by: Rémi Denis-Courmont <remi@remlab.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>