Author: cmcq
Date: Fri Jul 31 15:22:25 2009
New Revision: 4864
Log:
Shrink the integer types in the context.
This is a bit cumbersome because pitch lag can be 143 so must be a uint8_t,
but its calculation currently uses negative numbers.
Modified:
amr/amrnbdec.c
Modified: amr/amrnbdec.c
==============================================================================
--- amr/amrnbdec.c Fri Jul 31 15:08:22 2009 (r4863)
+++ amr/amrnbdec.c Fri Jul 31 15:22:25 2009 (r4864)
@@ -46,7 +46,7 @@ typedef struct AMRContext {
GetBitContext gb;
AMRNBFrame frame; ///< decoded AMR parameters (lsf
coefficients, codebook indexes, etc)
- int bad_frame_indicator; ///< bad frame ? 1 : 0
+ uint8_t bad_frame_indicator; ///< bad frame ? 1 : 0
enum Mode cur_frame_mode; ///< current frame mode
enum RXFrameType cur_frame_type; ///< current frame type
@@ -59,7 +59,7 @@ typedef struct AMRContext {
float lpc[4][LP_FILTER_ORDER]; ///< lpc coefficient vectors for
4 subframes
- int pitch_lag_int; ///< integer part of pitch lag
from current subframe
+ uint8_t pitch_lag_int; ///< integer part of pitch lag
from current subframe
float excitation_buf[PITCH_LAG_MAX + LP_FILTER_ORDER + 1 +
AMR_SUBFRAME_SIZE]; ///< excitation buffer
float *excitation; ///< pointer to the current
excitation vector in excitation_buf
@@ -71,8 +71,8 @@ typedef struct AMRContext {
float fixed_gain[5]; ///< quantified fixed gains for
the current and previous four subframes
float beta; ///< beta = previous pitch_gain,
bounded by [0.0,SHARP_MAX]
- int diff_count; ///< the number of subframes for
which diff has been above 0.65
- int hang_count; ///< the number of subframes
since a hangover period started
+ uint8_t diff_count; ///< the number of subframes for
which diff has been above 0.65
+ uint8_t hang_count; ///< the number of subframes
since a hangover period started
float prev_sparse_fixed_gain; ///< previous fixed gain; used by
anti-sparseness processing to determine "onset"
uint8_t prev_ir_filter_strength; ///< previous impulse response
filter strength; 0 - strong, 1 - medium, 2 - none
@@ -486,17 +486,18 @@ static void decode_pitch_vector(AMRConte
const AMRNBSubframe *amr_subframe,
const int subframe)
{
- int pitch_lag_frac;
+ int pitch_lag_int, pitch_lag_frac;
// decode integer and fractional parts of pitch lag from parsed pitch
// index
- decode_pitch_lag(&p->pitch_lag_int, &pitch_lag_frac, amr_subframe->p_lag,
+ decode_pitch_lag(&pitch_lag_int, &pitch_lag_frac, amr_subframe->p_lag,
p->pitch_lag_int, subframe, p->cur_frame_mode);
// interpolate the past excitation at the pitch lag to obtain the pitch
// vector
- interp_pitch_vector(p->excitation, p->pitch_lag_int, pitch_lag_frac,
+ interp_pitch_vector(p->excitation, pitch_lag_int, pitch_lag_frac,
p->cur_frame_mode);
+ p->pitch_lag_int = pitch_lag_int; // store previous lag in a uint8_t
memcpy(p->pitch_vector, p->excitation, AMR_SUBFRAME_SIZE * sizeof(float));
}
/// @}
_______________________________________________
FFmpeg-soc mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc