Age | Commit message (Collapse) | Author |
|
Stereo now gets twice the "marginal allocation" compared to mono, but has
a 20 kb/s offset. This should be more realistic across a wide range of
bitrates.
|
|
This avoids a single low-energy band from changing the masking results.
|
|
The idea is that the rate of each stream is adjusted based on its
contribution to the total energy of a stereo downmix.
|
|
|
|
|
|
Forces CELT-only mode for LFE (despite the rate) and "locks" most of the
CELT analysis:
- No transient or TF
- Band boost on first band
- Only first two bands get PVQ bits
- Forced energy decay after the first two bands
|
|
Conflicts:
src/opus_multistream_encoder.c
|
|
Problem found using valgrind.
|
|
This left FEC disabled on the decoder side for all cases except concatenated
packets. Also fixes a FEC bug in opus_demo (wrong output buffer size
calculation).
|
|
Also fixes uninitialized value in previous commit.
|
|
- Properly apply the transient boost by counting all the bits in the cost
- Disable the post-filter for non-20-ms frames that follow a transient (applies
only to variable framesize)
|
|
|
|
The energy calculation from the packed FFTs ended up reading out-of-bound
memory for frequency zero. The bug was exposed by c5e04e4.
|
|
|
|
With 120 ms frames and 6 or more channels, the total number of
samples in the buffer could overflow.
|
|
|
|
This causes warnings with the ALLOC() macro.
|
|
The original code was causing parts of a sine sweep to be completely dropped
due to the 300 Hz margin and the hysteresis. Also, fixes scaling for the
analysis downmix when the input is 16-bit PCM.
|
|
We weren't doing the prefilling for SILK->SILK transitions.
|
|
We keep accidentally adding these which break the -pedantic build,
so complain about it in the normal build.
Also de-duplicate the warning list.
|
|
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
|
|
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
Using this to change the encoder based on mono/stereo rather than looking
at the number of input channels.
|
|
Conflicts:
celt/celt_encoder.c
|
|
This not only avoids sudden changes in audio quality, but also increases
quality when we don't have enough bits to code a wide stereo image.
|
|
Improved version of:
https://github.com/berkus/mettanode/commit/f44b28ab56ce8afa4b9d8c7460b184197519281c
|
|
Quiets:
warning: this decimal constant is unsigned only in ISO C90
when building with e.g., gcc -m32 -std=gnu90
|
|
|
|
opus_decode() and opus_multistream_decode() now apply soft clipping
before converting to 16-bit int. This should produce better a higher
quality result than hard clipping like we were doing before. The _float()
API isn't affected, but the clipping function is exported so users can
manually apply the soft clipping.
|
|
This is done using an adaptive beta and an estimate of the speech
and music detection confidence
|
|
Avoids biasing the decision when it's all silence/noise.
|
|
|
|
Variable duration option renamed to OPUS_SET_EXPERT_FRAME_DURATION,
with new API.
Also moves up the analysis to avoid having to do int->float conversion
on large buffers.
|
|
|
|
1) In cases where the SILK desired bandwidth went down, then quickly up, we
count get stuck in a mode with the LP variation going the wrong way.
2) Bandwidth detection can no longer force SILK to go below wideband to
avoid switches that require redundancy.
|
|
|
|
Detects a transient when the average band energy jumps by more than 6 dB
between two consecutive frames. This fixes some undetected transients on
Gainless' Muse_Breaks_Rmx sample.
|
|
|
|
|
|
Now supports OPUS_AUTO and OPUS_BITRATE_MAX
|
|
Also fixes a bug with stereo streams where the initial memory was only
using the left channel.
|
|
|
|
|
|
The search is based on minimizing the bitrate increase due to transients
by considering we can reduce the "transient boost" by reducing the frame
size, at the cost of increasing the normal overhead.
|
|
Also, the encode+decode mode now produces an output of the same size
as the original.
|
|
This means 2.5 ms frames can now use a higher bitrate for transients.
|
|
|
|
|