Home | History | Annotate | Download | only in aacdec
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 /*
     19 
     20  Filename: decode_noise_floorlevels.c
     21 
     22 ------------------------------------------------------------------------------
     23  REVISION HISTORY
     24 
     25 
     26  Who:                                   Date: MM/DD/YYYY
     27  Description:
     28 
     29 ------------------------------------------------------------------------------
     30  INPUT AND OUTPUT DEFINITIONS
     31 
     32 
     33 
     34 ------------------------------------------------------------------------------
     35  FUNCTION DESCRIPTION
     36 
     37 
     38 ------------------------------------------------------------------------------
     39  REQUIREMENTS
     40 
     41 
     42 ------------------------------------------------------------------------------
     43  REFERENCES
     44 
     45 SC 29 Software Copyright Licencing Disclaimer:
     46 
     47 This software module was originally developed by
     48   Coding Technologies
     49 
     50 and edited by
     51   -
     52 
     53 in the course of development of the ISO/IEC 13818-7 and ISO/IEC 14496-3
     54 standards for reference purposes and its performance may not have been
     55 optimized. This software module is an implementation of one or more tools as
     56 specified by the ISO/IEC 13818-7 and ISO/IEC 14496-3 standards.
     57 ISO/IEC gives users free license to this software module or modifications
     58 thereof for use in products claiming conformance to audiovisual and
     59 image-coding related ITU Recommendations and/or ISO/IEC International
     60 Standards. ISO/IEC gives users the same free license to this software module or
     61 modifications thereof for research purposes and further ISO/IEC standardisation.
     62 Those intending to use this software module in products are advised that its
     63 use may infringe existing patents. ISO/IEC have no liability for use of this
     64 software module or modifications thereof. Copyright is not released for
     65 products that do not conform to audiovisual and image-coding related ITU
     66 Recommendations and/or ISO/IEC International Standards.
     67 The original developer retains full right to modify and use the code for its
     68 own purpose, assign or donate the code to a third party and to inhibit third
     69 parties from using the code for products that do not conform to audiovisual and
     70 image-coding related ITU Recommendations and/or ISO/IEC International Standards.
     71 This copyright notice must be included in all copies or derivative works.
     72 Copyright (c) ISO/IEC 2002.
     73 
     74 ------------------------------------------------------------------------------
     75  PSEUDO-CODE
     76 
     77 ------------------------------------------------------------------------------
     78 */
     79 
     80 #ifdef AAC_PLUS
     81 
     82 /*----------------------------------------------------------------------------
     83 ; INCLUDES
     84 ----------------------------------------------------------------------------*/
     85 #include    "decode_noise_floorlevels.h"
     86 #include    "sbr_constants.h"
     87 
     88 /*----------------------------------------------------------------------------
     89 ; MACROS
     90 ; Define module specific macros here
     91 ----------------------------------------------------------------------------*/
     92 
     93 
     94 /*----------------------------------------------------------------------------
     95 ; DEFINES
     96 ; Include all pre-processor statements here. Include conditional
     97 ; compile variables also.
     98 ----------------------------------------------------------------------------*/
     99 
    100 /*----------------------------------------------------------------------------
    101 ; LOCAL FUNCTION DEFINITIONS
    102 ; Function Prototype declaration
    103 ----------------------------------------------------------------------------*/
    104 
    105 /*----------------------------------------------------------------------------
    106 ; LOCAL STORE/BUFFER/POINTER DEFINITIONS
    107 ; Variable declaration - defined here and used outside this module
    108 ----------------------------------------------------------------------------*/
    109 
    110 /*----------------------------------------------------------------------------
    111 ; EXTERNAL FUNCTION REFERENCES
    112 ; Declare functions defined elsewhere and referenced in this module
    113 ----------------------------------------------------------------------------*/
    114 
    115 /*----------------------------------------------------------------------------
    116 ; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
    117 ; Declare variables used in this module but defined elsewhere
    118 ----------------------------------------------------------------------------*/
    119 
    120 /*----------------------------------------------------------------------------
    121 ; FUNCTION CODE
    122 ----------------------------------------------------------------------------*/
    123 
    124 void decode_noise_floorlevels(SBR_FRAME_DATA * hFrameData)
    125 
    126 {
    127     Int32 env;
    128     Int32 i;
    129 
    130     Int32 * frameInfo           = hFrameData->frameInfo;
    131     Int32   nNfb                = hFrameData->nNfb;
    132     Int32 * domain_vec          = hFrameData->domain_vec2;
    133 
    134     Int32 * sbrNoiseFloorLevel_man = hFrameData->sbrNoiseFloorLevel_man;
    135     Int32 * prevNoiseLevel_man     = hFrameData->prevNoiseLevel_man;
    136 
    137     Int32 nEnv = frameInfo[(frameInfo[0] << 1) + 3];
    138 
    139     for (env = 0; env < nEnv; env++)
    140     {
    141         if (domain_vec[env] == 0)
    142         {
    143             prevNoiseLevel_man[0] = *(sbrNoiseFloorLevel_man++);
    144 
    145             for (i = 1; i < nNfb; i++)
    146             {
    147                 *sbrNoiseFloorLevel_man += *(sbrNoiseFloorLevel_man - 1);
    148                 prevNoiseLevel_man[i] = *(sbrNoiseFloorLevel_man++);
    149             }
    150         }
    151         else
    152         {
    153             for (i = 0; i < nNfb; i++)
    154             {
    155                 *sbrNoiseFloorLevel_man += prevNoiseLevel_man[i];
    156                 prevNoiseLevel_man[i] = *(sbrNoiseFloorLevel_man++);
    157             }
    158         }
    159 
    160     }
    161 }
    162 
    163 #endif
    164