d_plsf.cpp revision 4f1efc098cb5791c3e9f483f2af84aef70d2d0a0
165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/* ------------------------------------------------------------------
265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * Copyright (C) 1998-2009 PacketVideo
365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian *
465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * Licensed under the Apache License, Version 2.0 (the "License");
565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * you may not use this file except in compliance with the License.
665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * You may obtain a copy of the License at
765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian *
865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian *      http://www.apache.org/licenses/LICENSE-2.0
965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian *
1065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * Unless required by applicable law or agreed to in writing, software
1165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * distributed under the License is distributed on an "AS IS" BASIS,
1265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
1365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * express or implied.
1465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * See the License for the specific language governing permissions
1565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * and limitations under the License.
1665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian * -------------------------------------------------------------------
1765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian */
1865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/****************************************************************************************
1965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias AgopianPortions of this file are derived from the following 3GPP standard:
2065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
2165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    3GPP TS 26.073
2265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
2365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    Available from http://www.3gpp.org
2465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
2565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian(C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
2665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias AgopianPermission to distribute, modify and use this file under the standard license
2765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopianterms listed above has been obtained from the copyright holder.
2865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian****************************************************************************************/
290d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi/*
300d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi------------------------------------------------------------------------------
310d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi
320d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi
3365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
3465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Pathname: ./audio/gsm-amr/c/src/d_plsf.c
3565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Functions:
3665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
3765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
3865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian     Date: 04/14/2000
3965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
4065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
4165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian REVISION HISTORY
4265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
4365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Description: Removed the functions d_plsf_init and d_plsf_exit.
4465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian The d_plsf related structure is no longer dynamically allocated.
4565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
4665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Description: Removed q_plsf_5.tab from Include section and added
4765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian              q_plsf_5_tbl.h to Include section. Changed "mean_lsf"
4865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian              to "mean_lsf_5" in D_plsf_reset().
4965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
5065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Description:  Replaced OSCL mem type functions and eliminated include
5165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian               files that now are chosen by OSCL definitions
5265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
5365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Description:  Replaced "int" and/or "char" with OSCL defined types.
5465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
5565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Description:
5665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
5765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
5865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian MODULE DESCRIPTION
5965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
6065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian common part (reset) of LSF decoder
610cfd8231e4c489392809bf44c174315df2690145Glenn Kasten module (rest in d_plsf_3.c and d_plsf_5.c)
620cfd8231e4c489392809bf44c174315df2690145Glenn Kasten------------------------------------------------------------------------------
630cfd8231e4c489392809bf44c174315df2690145Glenn Kasten*/
6465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
6565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*----------------------------------------------------------------------------
6665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; INCLUDES
6765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian----------------------------------------------------------------------------*/
680cfd8231e4c489392809bf44c174315df2690145Glenn Kasten#include "typedef.h"
690cfd8231e4c489392809bf44c174315df2690145Glenn Kasten#include "basic_op.h"
700cfd8231e4c489392809bf44c174315df2690145Glenn Kasten#include "cnst.h"
7165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian#include "copy.h"
7265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian#include "d_plsf.h"
7365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian#include "q_plsf_5_tbl.h"
740d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi
7565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
7665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*----------------------------------------------------------------------------
7765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; MACROS
7865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; Define module specific macros here
7965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian----------------------------------------------------------------------------*/
8065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
8165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*----------------------------------------------------------------------------
8265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; DEFINES
8365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; Include all pre-processor statements here. Include conditional
8465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; compile variables also.
8565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian----------------------------------------------------------------------------*/
8665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
8765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*----------------------------------------------------------------------------
8865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; LOCAL FUNCTION DEFINITIONS
8965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; Function Prototype declaration
9065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian----------------------------------------------------------------------------*/
9165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
9265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*----------------------------------------------------------------------------
9365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; LOCAL VARIABLE DEFINITIONS
9465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; Variable declaration - defined here and used outside this module
9565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian----------------------------------------------------------------------------*/
9665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
9765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*----------------------------------------------------------------------------
9865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; EXTERNAL FUNCTION REFERENCES
9965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; Declare functions defined elsewhere and referenced in this module
10065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian----------------------------------------------------------------------------*/
10165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
10265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*----------------------------------------------------------------------------
10365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; EXTERNAL VARIABLES REFERENCES
10465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian; Declare variables used in this module but defined elsewhere
10565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian----------------------------------------------------------------------------*/
10665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
10765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian/*
1083856b090cd04ba5dd4a59a12430ed724d5995909Steve Block------------------------------------------------------------------------------
10965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian FUNCTION NAME: D_plsf_reset
11065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
11165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian INPUT AND OUTPUT DEFINITIONS
11265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
11365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Inputs:
11465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    state = pointer to structure of type D_plsf_reset
11565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
11665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Outputs:
11765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    fields of the structure pointed to by state is initialized to zero
11865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
11965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Returns:
12065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    return_value = 0, if reset was successful; -1, otherwise (int)
12165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
12265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Global Variables Used:
12365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    None
12465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
12565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Local Variables Needed:
12665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    None
1273856b090cd04ba5dd4a59a12430ed724d5995909Steve Block
12865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
12965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian FUNCTION DESCRIPTION
13065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
13165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian Resets state memory
13265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
13365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
13465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian REQUIREMENTS
13565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
13665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian None
13765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
13865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
13965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian REFERENCES
14065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
14165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian d_plsf.c, UMTS GSM AMR speech codec, R99 - Version 3.2.0, March 2, 2001
14265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
14365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
14465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian PSEUDO-CODE
14565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
14665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopianint D_plsf_reset (D_plsfState *state)
14765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian{
14865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  Word16 i;
14965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
15065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  if (state == (D_plsfState *) NULL){
15165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian      // fprintf(stderr, "D_plsf_reset: invalid parameter\n");
1523856b090cd04ba5dd4a59a12430ed724d5995909Steve Block      return -1;
15365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  }
15465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
15565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  for (i = 0; i < M; i++){
15665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian      state->past_r_q[i] = 0;             // Past quantized prediction error
15765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  }
15865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
15965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  // Past dequantized lsfs
16065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  Copy(mean_lsf, &state->past_lsf_q[0], M);
16165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
16265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian  return 0;
16365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian}
16465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
16565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian RESOURCES USED [optional]
16665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
16765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian When the code is written for a specific target processor the
1683856b090cd04ba5dd4a59a12430ed724d5995909Steve Block the resources used should be documented below.
16965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
17065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian HEAP MEMORY USED: x bytes
17165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
17265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian STACK MEMORY USED: x bytes
17365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
17465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian CLOCK CYCLES: (cycle count equation for this function) + (variable
17565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian                used to represent cycle count for each subroutine
17665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian                called)
17765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian     where: (cycle count variable) = cycle count for [subroutine
17865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian                                     name]
17965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
18065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
18165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian CAUTION [optional]
18265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian [State any special notes, constraints or cautions for users of this function]
18365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
18465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian------------------------------------------------------------------------------
18565ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian*/
18665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
18765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias AgopianWord16 D_plsf_reset(D_plsfState *state)
18865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian{
18965ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    Word16 i;
19065ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
19165ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    if (state == (D_plsfState *) NULL)
19265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    {
19365ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian        /* fprintf(stderr, "D_plsf_reset: invalid parameter\n"); */
1940d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi        return -1;
1950d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi    }
1960d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi
1970d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi    for (i = 0; i < M; i++)
1980d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi    {
1990d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi        state->past_r_q[i] = 0;             /* Past quantized prediction error */
2000d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi    }
2013856b090cd04ba5dd4a59a12430ed724d5995909Steve Block
20265ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian    /* Past dequantized lsfs */
2030d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi    Copy(mean_lsf_5, &state->past_lsf_q[0], M);
20465ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
2050d255b2d9061ba31f13ada3fc0f7e51916407176Jean-Michel Trivi    return 0;
20665ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian
20765ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian}
20865ab47156e1c7dfcd8cc4266253a5ff30219e7f0Mathias Agopian