⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dec_lag6.c

📁 arm音频编解码库
💻 C
字号:
/***********************************************************************************      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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -