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: sbr_open.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 
     81 /*----------------------------------------------------------------------------
     82 ; INCLUDES
     83 ----------------------------------------------------------------------------*/
     84 
     85 #ifdef AAC_PLUS
     86 
     87 
     88 #include    "sbr_open.h"
     89 #include    "s_sbr_header_data.h"
     90 #include    "init_sbr_dec.h"
     91 #include    "e_sbr_error.h"
     92 #include    "aac_mem_funcs.h"
     93 
     94 
     95 /*----------------------------------------------------------------------------
     96 ; MACROS
     97 ; Define module specific macros here
     98 ----------------------------------------------------------------------------*/
     99 
    100 
    101 /*----------------------------------------------------------------------------
    102 ; DEFINES
    103 ; Include all pre-processor statements here. Include conditional
    104 ; compile variables also.
    105 ----------------------------------------------------------------------------*/
    106 
    107 /*----------------------------------------------------------------------------
    108 ; LOCAL FUNCTION DEFINITIONS
    109 ; Function Prototype declaration
    110 ----------------------------------------------------------------------------*/
    111 
    112 /*----------------------------------------------------------------------------
    113 ; LOCAL STORE/BUFFER/POINTER DEFINITIONS
    114 ; Variable declaration - defined here and used outside this module
    115 ----------------------------------------------------------------------------*/
    116 const SBR_HEADER_DATA defaultHeader =
    117 {
    118     HEADER_NOT_INITIALIZED,   /* status */
    119     MASTER_RESET,             /* masterStatus */
    120     0,                        /* crcEnable */
    121     UP_BY_2,                  /* sampleRateMode */
    122     SBR_AMP_RES_3_0,          /* ampResolution */
    123     5,                        /* startFreq */
    124     0,                        /* stopFreq */
    125     0,                        /* xover_band */
    126     SBR_FREQ_SCALE_DEFAULT,   /* freqScale */
    127     SBR_ALTER_SCALE_DEFAULT,  /* alterScale */
    128     SBR_NOISE_BANDS_DEFAULT,  /* noise_bands */
    129     0,                        /* noNoiseBands */
    130     SBR_LIMITER_BANDS_DEFAULT,
    131     SBR_LIMITER_GAINS_DEFAULT,
    132     SBR_INTERPOL_FREQ_DEFAULT,
    133     SBR_SMOOTHING_LENGTH_DEFAULT
    134 };
    135 
    136 /*----------------------------------------------------------------------------
    137 ; EXTERNAL FUNCTION REFERENCES
    138 ; Declare functions defined elsewhere and referenced in this module
    139 ----------------------------------------------------------------------------*/
    140 
    141 /*----------------------------------------------------------------------------
    142 ; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
    143 ; Declare variables used in this module but defined elsewhere
    144 ----------------------------------------------------------------------------*/
    145 
    146 /*----------------------------------------------------------------------------
    147 ; FUNCTION CODE
    148 ----------------------------------------------------------------------------*/
    149 
    150 void sbr_open(Int32 sampleRate,
    151               SBR_DEC *sbrDec,
    152               SBRDECODER_DATA * self,
    153               bool bDownSampledSbr)
    154 
    155 {
    156     Int16 i ;
    157 
    158     SBR_CHANNEL *SbrChannel;
    159 
    160 
    161     SbrChannel = self->SbrChannel;
    162 
    163     for (i = 0; i < MAX_NUM_CHANNELS; i++)
    164     {
    165         pv_memset((void *)&(SbrChannel[i]),
    166                   0,
    167                   sizeof(SBR_CHANNEL));
    168 
    169         /* init a default header such that we can at least do upsampling later */
    170 
    171         pv_memcpy(&(SbrChannel[i].frameData.sbr_header),
    172                   &defaultHeader,
    173                   sizeof(SBR_HEADER_DATA));
    174 
    175         /* should be handled by sample rate mode bit */
    176         if (sampleRate > 24000 || bDownSampledSbr)
    177         {
    178             SbrChannel[i].frameData.sbr_header.sampleRateMode = SINGLE_RATE;
    179         }
    180 
    181 
    182         SbrChannel[i].outFrameSize =
    183             init_sbr_dec(sampleRate,
    184                          self->SbrChannel[0].frameData.sbr_header.sampleRateMode,
    185                          sbrDec,
    186                          &(SbrChannel[i].frameData));
    187 
    188         SbrChannel[i].syncState     = UPSAMPLING;
    189 
    190         SbrChannel[i].frameData.sUp = 1;        /* reset mode */
    191     }
    192 }
    193 
    194 #endif
    195 
    196