dec_lag6.c

来自「Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3」· C语言 代码 · 共 120 行

C
120
字号
/***********************************************************************************      GSM AMR-NB speech codec   R98   Version 7.6.0   December 12, 2001*                                R99   Version 3.3.0                *                                REL-4 Version 4.1.0                ***********************************************************************************      File             : dec_lag6.c*      Purpose          : Decoding of fractional pitch lag with 1/6 resolution.**********************************************************************************/  /**********************************************************************************                         MODULE INCLUDE FILE AND VERSION ID*********************************************************************************/#include "dec_lag6.h"const char dec_lag6_id[] = "@(#)$Id $" dec_lag6_h; /**********************************************************************************                         INCLUDE FILES*********************************************************************************/#include <stdlib.h>#include <stdio.h>#include "typedef.h"#include "basic_op.h"#include "count.h" /**********************************************************************************                         PUBLIC PROGRAM CODE*********************************************************************************//**************************************************************************   FUNCTION:   Dec_lag6**   PURPOSE:  Decoding of fractional pitch lag with 1/6 resolution.*             Extract the integer and fraction parts of the pitch lag from*             the received adaptive codebook index.**    See "Enc_lag6.c" for more details about the encoding procedure.**    The fractional lag in 1st and 3rd subframes is encoded with 9 bits*    while that in 2nd and 4th subframes is relatively encoded with 6 bits.*    Note that in relative encoding only 61 values are used. If the*    decoder receives 61, 62, or 63 as the relative pitch index, it means*    that a transmission error occurred. In this case, the pitch lag from*    previous subframe (actually from previous frame) is used.**************************************************************************/void Dec_lag6 (    Word16 index,      /* input : received pitch index           */    Word16 pit_min,    /* input : minimum pitch lag              */    Word16 pit_max,    /* input : maximum pitch lag              */    Word16 i_subfr,    /* input : subframe flag                  */    Word16 *T0,        /* in/out: integer part of pitch lag      */    Word16 *T0_frac    /* output: fractional part of pitch lag   */){    Word16 i;    Word16 T0_min, T0_max;    test ();    if (i_subfr == 0)          /* if 1st or 3rd subframe */    {       test ();        if (sub (index, 463) < 0)       {          /* T0 = (index+5)/6 + 17 */          *T0 = add (mult (add (index, 5), 5462), 17);          i = add (add (*T0, *T0), *T0);          /* *T0_frac = index - T0*6 + 105 */          *T0_frac = add (sub (index, add (i, i)), 105);                                            move16 ();        }       else       {          *T0 = sub (index, 368);          *T0_frac = 0;                     move16 ();        }    }    else       /* second or fourth subframe */    {       /* find T0_min and T0_max for 2nd (or 4th) subframe */               T0_min = sub (*T0, 5);       test ();        if (sub (T0_min, pit_min) < 0)       {          T0_min = pit_min;                 move16 ();        }       T0_max = add (T0_min, 9);       test ();        if (sub (T0_max, pit_max) > 0)       {          T0_max = pit_max;                 move16 ();           T0_min = sub (T0_max, 9);       }              /* i = (index+5)/6 - 1 */       i = sub (mult (add (index, 5), 5462), 1);       *T0 = add (i, T0_min);       i = add (add (i, i), i);       *T0_frac = sub (sub (index, 3), add (i, i));                                            move16 ();     }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?