[soc]AMR-WB decoder branch, master, updated.
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 222bb38d248bd57851851fa54e41b749eb1081e0 (commit) from ae42363624c0c0379bd2dc754801bdec55eb216e (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 222bb38d248bd57851851fa54e41b749eb1081e0 Author: Marcelo Povoa <marspeoplester@gmail.com> Date: Fri Jul 2 21:58:51 2010 -0300 Finish decoding of the adaptive codebook diff --git a/libavcodec/amrwbdec.c b/libavcodec/amrwbdec.c index 827b0d5..8cd0925 100644 --- a/libavcodec/amrwbdec.c +++ b/libavcodec/amrwbdec.c @@ -52,6 +52,8 @@ static int amrwb_decode_init(AVCodecContext *avctx) { AMRWBContext *ctx = avctx->priv_data; int i; + + ctx->excitation = &ctx->excitation_buf[PITCH_MAX + LP_ORDER + 1]; for (i = 0; i < LP_ORDER; i++) { ctx->isf_q_past[i] = isf_init[i] / (float) (1 << 15); @@ -379,6 +381,8 @@ static void decode_pitch_vector(AMRWBContext *ctx, const int subframe) { int pitch_lag_int, pitch_lag_frac; + int i; + float *exc = ctx->excitation; enum Mode mode = ctx->fr_cur_mode; if (mode == MODE_6k60) { @@ -395,12 +399,18 @@ static void decode_pitch_vector(AMRWBContext *ctx, /* Calculate the pitch vector by interpolating the past excitation at the pitch lag using a hamming windowed sinc function. */ - ff_acelp_interpolatef(ctx->excitation, ctx->excitation + 1 - pitch_lag_int, + ff_acelp_interpolatef(exc, exc + 1 - pitch_lag_int, ac_inter, 4, pitch_lag_frac + 4 - 4*(pitch_lag_frac > 0), LP_ORDER, AMRWB_SUBFRAME_SIZE); - memcpy(ctx->pitch_vector, ctx->excitation, AMRWB_SUBFRAME_SIZE * sizeof(float)); + /* Check which pitch signal path should be used */ + if (amr_subframe->ltp) { + memcpy(ctx->pitch_vector, exc, AMRWB_SUBFRAME_SIZE * sizeof(float)); + } else { + for (i = 0; i < AMRWB_SUBFRAME_SIZE; i++) + ctx->pitch_vector[i] = 0.18 * exc[i - 1] + 0.64 * exc[i] + 0.18 * exc[i + 1]; + } } static int amrwb_decode_frame(AVCodecContext *avctx, void *data, int *data_size, @@ -452,11 +462,6 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data, int *data_size, return 0; } -static int amrwb_decode_close(AVCodecContext *avctx) -{ - return 0; -} - AVCodec amrwb_decoder = { .name = "amrwb", @@ -464,7 +469,6 @@ AVCodec amrwb_decoder = .id = CODEC_ID_AMR_WB, .priv_data_size = sizeof(AMRWBContext), .init = amrwb_decode_init, - .close = amrwb_decode_close, .decode = amrwb_decode_frame, .long_name = NULL_IF_CONFIG_SMALL("Adaptive Multi-Rate WideBand"), }; ----------------------------------------------------------------------- Summary of changes: libavcodec/amrwbdec.c | 20 ++++++++++++-------- 1 files changed, 12 insertions(+), 8 deletions(-) hooks/post-receive -- AMR-WB decoder
participants (1)
-
Marcelo Póvoa