Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Mark Harris
Opus
Commits
2dd3d325
Commit
2dd3d325
authored
Jun 05, 2009
by
Gregory Maxwell
Browse files
For celt_encoder_ctl CELT_SET_LTP is replaced with CELT_SET_PREDICTION
which allows the caller to request that frames be independent.
parent
f43488cd
Changes
2
Hide whitespace changes
Inline
Side-by-side
libcelt/celt.c
View file @
2dd3d325
...
...
@@ -79,8 +79,10 @@ struct CELTEncoder {
int
overlap
;
int
channels
;
int
pitch_enabled
;
int
pitch_available
;
int
pitch_enabled
;
/* Complexity level is allowed to use pitch */
int
pitch_permitted
;
/* Use of the LTP is permitted by the user */
int
pitch_available
;
/* Amount of pitch buffer available */
int
force_intra
;
int
delayedIntra
;
celt_word16_t
tonal_average
;
int
fold_decision
;
...
...
@@ -137,7 +139,9 @@ CELTEncoder *celt_encoder_create(const CELTMode *mode)
st
->
VBR_rate
=
0
;
st
->
pitch_enabled
=
1
;
st
->
pitch_permitted
=
1
;
st
->
pitch_available
=
1
;
st
->
force_intra
=
0
;
st
->
delayedIntra
=
1
;
st
->
tonal_average
=
QCONST16
(
1
.,
8
);
st
->
fold_decision
=
1
;
...
...
@@ -669,14 +673,14 @@ int celt_encode_float(CELTEncoder * restrict st, const celt_sig_t * pcm, celt_si
compute_band_energies
(
st
->
mode
,
freq
,
bandE
);
intra_ener
=
st
->
delayedIntra
;
if
(
intra_decision
(
bandE
,
st
->
oldBandE
,
st
->
mode
->
nbEBands
)
||
shortBlocks
)
intra_ener
=
(
st
->
force_intra
||
st
->
delayedIntra
)
;
if
(
shortBlocks
||
intra_decision
(
bandE
,
st
->
oldBandE
,
st
->
mode
->
nbEBands
))
st
->
delayedIntra
=
1
;
else
st
->
delayedIntra
=
0
;
/* Pitch analysis: we do it early to save on the peak stack space */
/* Don't use pitch if there isn't enough data available yet, or if we're using shortBlocks */
has_pitch
=
st
->
pitch_enabled
&&
(
st
->
pitch_available
>=
MAX_PERIOD
)
&&
(
!
shortBlocks
)
&&
!
intra_ener
;
has_pitch
=
st
->
pitch_enabled
&&
st
->
pitch_permitted
&&
(
st
->
pitch_available
>=
MAX_PERIOD
)
&&
(
!
shortBlocks
)
&&
!
intra_ener
;
#ifdef EXP_PSY
ALLOC
(
tonality
,
MAX_PERIOD
/
4
,
celt_word16_t
);
{
...
...
@@ -1013,15 +1017,22 @@ int celt_encoder_ctl(CELTEncoder * restrict st, int request, ...)
}
}
break
;
case
CELT_SET_
LTP
_REQUEST
:
case
CELT_SET_
PREDICTION
_REQUEST
:
{
int
value
=
va_arg
(
ap
,
celt_int32_t
);
if
(
value
<
0
||
value
>
1
||
(
value
==
1
&&
st
->
pitch_available
==
0
)
)
if
(
value
<
0
||
value
>
2
)
goto
bad_arg
;
if
(
value
==
0
)
st
->
pitch_enabled
=
0
;
else
st
->
pitch_enabled
=
1
;
{
st
->
force_intra
=
1
;
st
->
pitch_permitted
=
0
;
}
else
if
(
value
=
1
)
{
st
->
force_intra
=
0
;
st
->
pitch_permitted
=
0
;
}
else
{
st
->
force_intra
=
0
;
st
->
pitch_permitted
=
1
;
}
}
break
;
case
CELT_SET_VBR_RATE_REQUEST
:
...
...
libcelt/celt.h
View file @
2dd3d325
...
...
@@ -77,9 +77,13 @@ extern "C" {
#define CELT_SET_COMPLEXITY_REQUEST 2
/** Controls the complexity from 0-10 (int) */
#define CELT_SET_COMPLEXITY(x) CELT_SET_COMPLEXITY_REQUEST, _celt_check_int(x)
#define CELT_SET_LTP_REQUEST 4
/** Activate or deactivate the use of the long term predictor (PITCH) from 0 or 1 (int) */
#define CELT_SET_LTP(x) CELT_SET_LTP_REQUEST, _celt_check_int(x)
#define CELT_SET_PREDICTION_REQUEST 4
/** Controls the use of interframe prediction.
0=Independent frames
1=Short term interframe prediction allowed
2=Long term prediction allowed
*/
#define CELT_SET_PREDICTION(x) CELT_SET_PREDICTION_REQUEST, _celt_check_int(x)
#define CELT_SET_VBR_RATE_REQUEST 6
/** Set the target VBR rate in bits per second (int); 0=CBR (default) */
#define CELT_SET_VBR_RATE(x) CELT_SET_VBR_RATE_REQUEST, _celt_check_int(x)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment