Age | Commit message (Collapse) | Author |
|
Reviewed by Mark Harris
|
|
The underlying objects are all 8-bit integers.
Verified that the generated assembly still just uses MOVD.
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
|
|
Unlike OPUS_SET_INBAND_FEC(1), the encoder does not necessarily
switch to SILK if we have music.
|
|
Estimate the rounding error so that we can have a useful margin of
error when checking the asm against the C code even when the float
operations get reordered due to -ffast-math.
|
|
Makes ti possible to randomize (with --enable-fuzzing) the CPU flags
so we can better test all the intrinsics implementations.
|
|
Valgrind versions prior to 3.17.0 assume that an uninitialized value
in ECX causes the whole output of CPUID to be uninitialized, even
though ECX is only "read" by CPUID for certain values of EAX.
Work around that by guaranteeing that ECX is initialized.
|
|
This function can fail if CPUID is not supported or the maximum
supported value of EAX is less than the requested one.
Check the return value and explicitly disable all SIMD if it does
fail.
This was happening before implicitly because of the initialization
of info[] to zero, but being explicit about it makes it less likely
someone will break this behavior because they did not realize what
was going on.
|
|
The function copies NLSFs from the stack to the state which for
order 10 means we were copying uninitialized values. That in turn
breaks check-asm when comparing the state under valgrind.
Reviewed by Timothy B. Terriberry.
|
|
Make sure we don't try to use the rtcd table when rtcd is disabled.
That code still needs a lot more cleaning up.
|
|
Reviewed by Timothy B. Terriberry.
|
|
Thanks Tim
|
|
Even if the redundancy is ignored, the final range from the decoder is
needed for testing.
Reviewed by Timothy B. Terriberry.
|
|
We now update the background noise estimate even in frames classified
as transient. It shouldn't be a problem because we're using min
statistics. Also, it avoids problems when update frames get
missclassified as transient.
In addition, we now use the duration of losses rather than the
number of lost packets to make decisions. That should make
PLC/DTX behaviour more consistent across frame sizes.
|
|
In https://github.com/xiph/opus/issues/253, the encoder generates a
Hybrid frame with redundancy, to switch to CELT-only mode, and then
activates DTX immediately afterwards. The decoder ran Hybrid PLC,
which isn't right. Use CELT PLC instead if there was already a
transition to CELT via redundancy at the end of the previous frame.
Also do not use a stale CELT decoder to decode a second redundancy
frame when the first redundancy frame for a transition from SILK-only
mode was lost. Instead of mixing in old audio from the last time
that CELT was used, ignore the second redundancy frame in this case.
Alternatively the CELT decoder could be reset before decoding, but
it would not be ready until after the 2.5 ms of audio that is needed.
Reviewed by Jean-Marc Valin.
|
|
|
|
Prevents using lrint/lrintf when compiling with -std=c90 even though the
functions are in libm. This was causing tests to fail, likely due to
incorrect prototypes.
|
|
|
|
|
|
|
|
saturating sum. This matches behavior in NSQ_del_dec.c.
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
These could result in 16-byte-aligned loads on unaligned data, causing
a segfault.
|
|
Before, an overflow can occur in the last loop if `len` is not a
multiple of 4 as OP_CVTEPI16_EPI32_M64 tries to load 64 bits, but there
are insufficient bits allocated in `x`.
|
|
encoder
|
|
|
|
For git worktree directories .git is not a directory
but a file that points to the real .git dir.
The `update_version` script used by other builds
works correctly with git worktrees.
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
|
|
|
|
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
This was introduced in February, and fails the corresponding
check in gitlab ci runs.
Also indent the subsequent lines to match and correct typos.
Signed-off-by: Mark Harris <mark.hsj@gmail.com>
|
|
The LPCs are computed in 32-bit, so increase the allowed range from +/-8
to +/-64 to avoid overflows caught during fuzzing. Before downshifting
back down to the +/-8 range in the final 16-bit output, perform bandwidth
extension to avoid any additional overflow issues.
|
|
size.
Signed-off-by: Felicia Lim <flim@google.com>
|
|
Reported by toto.
|
|
This way CI pipeline runs for branches and tags
and makes it show up in merge requests where
a branch is used as source branch.
Makes all jobs show up in merge request CI
indicator (not just the whitespace job) and
only runs a single CI pipeline, without the
additional detached pipeline.
https://docs.gitlab.com/ce/ci/yaml/#workflowrules-templates
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
There is a small typo in celt/fixed_generic.h.
Should read `nearest` rather than `neareast`.
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
meson.source_root() and meson.build_root() have been deprecated in
latest Meson release because they are a trap. They point to the root of
parent project instead of root of current subproject. Meson 0.56.0 added
meson.project_source/build_root() but it is just as easy to use
meson.current_source/build_dir() in the root meson.build file and avoids
bumping required meson version.
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
This is required for Windows because it doesn't have RPATH,
thus it fails to find Opus if it's not in the same directory
as the executables or in PATH.
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
This is required in case the output path for tests is changed
by a project adding Opus as submodule.
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
Signed-off-by: Ralph Giles <giles@thaumas.net>
|
|
Tested on:
- Linux/x86* with gcc
- Android armv7 arm64 x86 x86_64 with clang
- Windows x86 x86_64 with Visual Studio 2017
- Windows x86 x86_64 with MinGW
- macOS x86_64 with clang
- iOS arm64 x86_64 with clang
Co-authored by: Nirbheek Chauhan <nirbheek@centricular.com>
https://gitlab.xiph.org/xiph/opus/-/merge_requests/13
|
|
Specify the precision as float to avoid truncating from double.
Signed-off-by: Mark Harris <mark.hsj@gmail.com>
|
|
Actually check for read errors instead of just storing the
return value in a variable that then never gets checked.
Also fixes "conversion from 'size_t' to 'int', possible loss
of data" compiler warnings on Windows with MSVC caused by
storing the size_t returned by fread() into an int variable.
Signed-off-by: Mark Harris <mark.hsj@gmail.com>
|
|
_WIN32 is defined on all Windows platforms by every compiler that
targets Windows. We do not need WIN32 at all.
Signed-off-by: Mark Harris <mark.hsj@gmail.com>
Resolves https://github.com/xiph/opus/pull/104
|
|
This broke 5 years ago in 43120f00758219a784f952754f33b9788a8d731b
Signed-off-by: Mark Harris <mark.hsj@gmail.com>
|