1f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/* ------------------------------------------------------------------ 2f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Copyright (C) 1998-2009 PacketVideo 3f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * 4f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * you may not use this file except in compliance with the License. 6f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * You may obtain a copy of the License at 7f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * 8f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * 10f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Unless required by applicable law or agreed to in writing, software 11f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * express or implied. 14f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * See the License for the specific language governing permissions 15f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * and limitations under the License. 16f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * ------------------------------------------------------------------- 17f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber */ 18f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/* 19f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 20f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Filename: get_sbr_startfreq.c 21f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 22f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------ 23f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REVISION HISTORY 24f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 25f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 26f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Who: Date: MM/DD/YYYY 27f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Description: 28f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 29f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------ 30f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber INPUT AND OUTPUT DEFINITIONS 31f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 32f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 33f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 34f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------ 35f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber FUNCTION DESCRIPTION 36f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 37f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 38f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------ 39f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REQUIREMENTS 40f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 41f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 42f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------ 43f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REFERENCES 44f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 45f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberSC 29 Software Copyright Licencing Disclaimer: 46f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 47f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThis software module was originally developed by 48f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Coding Technologies 49f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 50f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberand edited by 51f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber - 52f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 53f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberin the course of development of the ISO/IEC 13818-7 and ISO/IEC 14496-3 54f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberstandards for reference purposes and its performance may not have been 55f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberoptimized. This software module is an implementation of one or more tools as 56f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberspecified by the ISO/IEC 13818-7 and ISO/IEC 14496-3 standards. 57f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberISO/IEC gives users free license to this software module or modifications 58f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberthereof for use in products claiming conformance to audiovisual and 59f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberimage-coding related ITU Recommendations and/or ISO/IEC International 60f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberStandards. ISO/IEC gives users the same free license to this software module or 61f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Hubermodifications thereof for research purposes and further ISO/IEC standardisation. 62f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThose intending to use this software module in products are advised that its 63f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberuse may infringe existing patents. ISO/IEC have no liability for use of this 64f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Hubersoftware module or modifications thereof. Copyright is not released for 65f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberproducts that do not conform to audiovisual and image-coding related ITU 66f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberRecommendations and/or ISO/IEC International Standards. 67f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThe original developer retains full right to modify and use the code for its 68f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberown purpose, assign or donate the code to a third party and to inhibit third 69f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberparties from using the code for products that do not conform to audiovisual and 70f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberimage-coding related ITU Recommendations and/or ISO/IEC International Standards. 71f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThis copyright notice must be included in all copies or derivative works. 72f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberCopyright (c) ISO/IEC 2002. 73f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 74f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------ 75f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber PSEUDO-CODE 76f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 77f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------ 78f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber*/ 79f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 80f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 81f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 82f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; INCLUDES 83f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 84f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber#include "get_sbr_startfreq.h" 85f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 86f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 87f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; MACROS 88f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Define module specific macros here 89f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 90f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 91f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 92f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 93f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; DEFINES 94f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Include all pre-processor statements here. Include conditional 95f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; compile variables also. 96f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 97f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 98f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 99f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; LOCAL FUNCTION DEFINITIONS 100f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Function Prototype declaration 101f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 102f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 103f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 104f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; LOCAL STORE/BUFFER/POINTER DEFINITIONS 105f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Variable declaration - defined here and used outside this module 106f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 107f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberconst Int v_offset[7][16] = 108f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber{ 109f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7}, 110f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13}, 111f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { -5, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16}, 112f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { -6, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16}, 113f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20}, 114f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 24}, 115f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 24, 28, 33} 116f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber}; 117f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 118f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 119f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; EXTERNAL FUNCTION REFERENCES 120f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Declare functions defined elsewhere and referenced in this module 121f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 122f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 123f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 124f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES 125f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Declare variables used in this module but defined elsewhere 126f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 127f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 128f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*---------------------------------------------------------------------------- 129f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; FUNCTION CODE 130f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/ 131f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 132f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberInt get_sbr_startfreq(const Int32 fs, 133f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber const Int32 start_freq) 134f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber{ 135f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Int k0_min = 0; 136f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Int32 index; 137f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 138f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 139f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber switch (fs) 140f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber { 141f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 16000: 142f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 0; 143f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 24; 144f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 145f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 22050: 146f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 1; 147f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 17; 148f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 149f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 24000: 150f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 2; 151f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 16; 152f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 153f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 32000: 154f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 3; 155f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 16; 156f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 157f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 44100: 158f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 4; 159f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 12; 160f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 161f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 48000: 162f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 4; 163f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 11; 164f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 165f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 64000: 166f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 4; 167f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 10; 168f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 169f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 88200: 170f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber case 96000: 171f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 5; 172f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber k0_min = 7; 173f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber break; 174f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 175f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber default: 176f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber index = 6; 177f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber } 178f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber return (k0_min + v_offset[index][start_freq]); 179f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 180f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber} 181f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 182f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 183f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber 184