This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "AMR-WB decoder".
The branch, master has been updated via 23fbd7867da103378f7c3fd435551c8bc06ce029 (commit) from e9202459e44d5760dd5fadd8a7fa6ded9af6a398 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 23fbd7867da103378f7c3fd435551c8bc06ce029 Author: Marcelo Povoa <marspeoples...@gmail.com> Date: Thu Jul 15 12:17:41 2010 -0300 Write pitch enhancer filter, remove const qualifier from synth_fixed_vector due to multiple processing diff --git a/libavcodec/amrwbdec.c b/libavcodec/amrwbdec.c index 7b02188..57965d3 100644 --- a/libavcodec/amrwbdec.c +++ b/libavcodec/amrwbdec.c @@ -714,8 +714,8 @@ static float voice_factor(float *p_vector, float p_gain, * @param fixed_vector [in] unfiltered fixed vector * @param out [in] space for modified vector if necessary */ -static const float *anti_sparseness(AMRWBContext *ctx, - const float *fixed_vector, float *out) +static float *anti_sparseness(AMRWBContext *ctx, + float *fixed_vector, float *out) { int ir_filter_nr; @@ -833,6 +833,30 @@ static float noise_enhancer(float fixed_gain, float *prev_tr_gain, } /** + * Filter the fixed_vector to emphasize the higher frequencies + * + * @param fixed_vector [in/out] fixed codebook vector + * @param voice_fac [in] frame voicing factor + */ +static void pitch_enhancer(float *fixed_vector, float voice_fac) +{ + int i; + float cpe = 0.125 * (1 + voice_fac); + float last = fixed_vector[0]; // holds c(i - 1) + + fixed_vector[0] -= cpe * fixed_vector[1]; + + for (i = 1; i < AMRWB_SUBFRAME_SIZE - 1; i++) { + float cur = fixed_vector[i]; + + fixed_vector[i] -= cpe * (last + fixed_vector[i + 1]); + last = cur; + } + + fixed_vector[AMRWB_SUBFRAME_SIZE - 1] -= cpe * last; +} + +/** * Update context state before the next subframe */ static void update_sub_state(AMRWBContext *ctx) @@ -851,7 +875,7 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data, int *data_size, AMRFixed fixed_sparse = {0}; // fixed vector up to anti-sparseness processing float spare_vector[AMRWB_SUBFRAME_SIZE]; // extra stack space to hold result from anti-sparseness processing float fixed_gain_factor; // fixed gain correction factor (gamma) - const float *synth_fixed_vector; // pointer to the fixed vector that synthesis should use + float *synth_fixed_vector; // pointer to the fixed vector that synthesis should use float synth_fixed_gain; // the fixed gain that synthesis should use float voice_fac, stab_fac; // parameters used for gain smoothing int sub, i; @@ -922,12 +946,17 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data, int *data_size, // I did not found a reference of this in the ref decoder } + /* Post-processing of excitation elements */ synth_fixed_gain = noise_enhancer(ctx->fixed_gain[4], &ctx->prev_tr_gain, voice_fac, stab_fac); synth_fixed_vector = anti_sparseness(ctx, ctx->fixed_vector, spare_vector); + pitch_enhancer(synth_fixed_vector, voice_fac); + + + /* Update buffers and history */ ff_clear_fixed_vector(ctx->fixed_vector, &fixed_sparse, AMRWB_SUBFRAME_SIZE); update_sub_state(ctx); ----------------------------------------------------------------------- Summary of changes: libavcodec/amrwbdec.c | 35 ++++++++++++++++++++++++++++++++--- 1 files changed, 32 insertions(+), 3 deletions(-) hooks/post-receive -- AMR-WB decoder _______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc