Don't allow transients for 2.5 ms frames.

It never made sense anyway.
This commit is contained in:
Jean-Marc Valin 2010-09-05 21:02:38 -04:00
parent 9e72ae2128
commit f9fdbffb72
3 changed files with 11 additions and 7 deletions

View file

@ -5,8 +5,8 @@ AC_INIT(libcelt/arch.h)
AM_CONFIG_HEADER([config.h]) AM_CONFIG_HEADER([config.h])
CELT_MAJOR_VERSION=0 CELT_MAJOR_VERSION=0
CELT_MINOR_VERSION=8 CELT_MINOR_VERSION=9
CELT_MICRO_VERSION=1 CELT_MICRO_VERSION=0
CELT_EXTRA_VERSION= CELT_EXTRA_VERSION=
CELT_VERSION=$CELT_MAJOR_VERSION.$CELT_MINOR_VERSION.$CELT_MICRO_VERSION$CELT_EXTRA_VERSION CELT_VERSION=$CELT_MAJOR_VERSION.$CELT_MINOR_VERSION.$CELT_MICRO_VERSION$CELT_EXTRA_VERSION
LIBCELT_SUFFIX=0 LIBCELT_SUFFIX=0
@ -118,7 +118,7 @@ AC_ARG_ENABLE(fixed-point-debug, [ --enable-fixed-point-debug debug fixed-poin
fi]) fi])
float_approx=$has_float_approx float_approx=$has_float_approx
AC_ARG_ENABLE(float-approx, [ --disable-float-approx do not use fast approximations for floating point], AC_ARG_ENABLE(float-approx, [ --enable-float-approx enable fast approximations for floating point],
[ if test "$enableval" = yes; then [ if test "$enableval" = yes; then
AC_WARN([Floating point approximations are not supported on all platforms.]) AC_WARN([Floating point approximations are not supported on all platforms.])
float_approx=yes float_approx=yes

View file

@ -629,7 +629,7 @@ int celt_encode_with_ec_float(CELTEncoder * restrict st, const celt_sig * pcm, c
resynth = optional_resynthesis!=NULL; resynth = optional_resynthesis!=NULL;
if (st->complexity > 1) if (st->complexity > 1 && LM>0)
{ {
isTransient = M > 1 && isTransient = M > 1 &&
transient_analysis(in, N+st->overlap, C, &transient_time, transient_analysis(in, N+st->overlap, C, &transient_time,
@ -746,7 +746,8 @@ int celt_encode_with_ec_float(CELTEncoder * restrict st, const celt_sig * pcm, c
error, enc, C, LM, nbAvailableBytes, st->force_intra, error, enc, C, LM, nbAvailableBytes, st->force_intra,
&st->delayedIntra, st->complexity >= 4); &st->delayedIntra, st->complexity >= 4);
ec_enc_bit_prob(enc, shortBlocks!=0, 8192); if (LM > 0)
ec_enc_bit_prob(enc, shortBlocks!=0, 8192);
if (shortBlocks) if (shortBlocks)
{ {
@ -1488,7 +1489,10 @@ int celt_decode_with_ec_float(CELTDecoder * restrict st, const unsigned char *da
unquant_coarse_energy(st->mode, st->start, st->end, bandE, oldBandE, unquant_coarse_energy(st->mode, st->start, st->end, bandE, oldBandE,
intra_ener, st->mode->prob, dec, C, LM); intra_ener, st->mode->prob, dec, C, LM);
isTransient = ec_dec_bit_prob(dec, 8192); if (LM > 0)
isTransient = ec_dec_bit_prob(dec, 8192);
else
isTransient = 0;
if (isTransient) if (isTransient)
shortBlocks = M; shortBlocks = M;

View file

@ -43,7 +43,7 @@
#define MAX_CONFIG_SIZES 5 #define MAX_CONFIG_SIZES 5
#define CELT_BITSTREAM_VERSION 0x8000000d #define CELT_BITSTREAM_VERSION 0x8000000e
#ifdef STATIC_MODES #ifdef STATIC_MODES
#include "static_modes.h" #include "static_modes.h"