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