12228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 22228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* ----------------------------------------------------------------------------------------------------------- 32228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectSoftware License for The Fraunhofer FDK AAC Codec Library for Android 42228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 54f0d97057c5c640b25518358886f8c47da9fc052Jean-Michel Trivi� Copyright 1995 - 2013 Fraunhofer-Gesellschaft zur F�rderung der angewandten Forschung e.V. 62228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project All rights reserved. 72228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 82228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1. INTRODUCTION 92228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectThe Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software that implements 102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectthe MPEG Advanced Audio Coding ("AAC") encoding and decoding scheme for digital audio. 112228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectThis FDK AAC Codec software is intended to be used on a wide variety of Android devices. 122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 132228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectAAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient general perceptual 142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectaudio codecs. AAC-ELD is considered the best-performing full-bandwidth communications codec by 152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectindependent studies and is widely deployed. AAC has been standardized by ISO and IEC as part 162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectof the MPEG specifications. 172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 182228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectPatent licenses for necessary patent claims for the FDK AAC Codec (including those of Fraunhofer) 192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectmay be obtained through Via Licensing (www.vialicensing.com) or through the respective patent owners 202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectindividually for the purpose of encoding or decoding bit streams in products that are compliant with 212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectthe ISO/IEC MPEG audio standards. Please note that most manufacturers of Android devices already license 222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectthese patent claims through Via Licensing or directly from the patent owners, and therefore FDK AAC Codec 232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectsoftware may already be covered under those patent licenses when it is used for those licensed purposes only. 242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 252228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectCommercially-licensed AAC software libraries, including floating-point versions with enhanced sound quality, 262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectare also available from Fraunhofer. Users are encouraged to check the Fraunhofer website for additional 272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectapplications information and documentation. 282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project2. COPYRIGHT LICENSE 302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 312228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectRedistribution and use in source and binary forms, with or without modification, are permitted without 322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectpayment of copyright license fees provided that you satisfy the following conditions: 332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 342228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectYou must retain the complete text of this software license in redistributions of the FDK AAC Codec or 352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectyour modifications thereto in source code form. 362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 372228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectYou must retain the complete text of this software license in the documentation and/or other materials 382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectprovided with redistributions of the FDK AAC Codec or your modifications thereto in binary form. 392228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectYou must make available free of charge copies of the complete source code of the FDK AAC Codec and your 402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectmodifications thereto to recipients of copies in binary form. 412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 422228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectThe name of Fraunhofer may not be used to endorse or promote products derived from this library without 432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectprior written permission. 442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 452228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectYou may not charge copyright license fees for anyone to use, copy or distribute the FDK AAC Codec 462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectsoftware or your modifications thereto. 472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 482228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectYour modified versions of the FDK AAC Codec must carry prominent notices stating that you changed the software 492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectand the date of any change. For modified versions of the FDK AAC Codec, the term 502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project"Fraunhofer FDK AAC Codec Library for Android" must be replaced by the term 512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project"Third-Party Modified Version of the Fraunhofer FDK AAC Codec Library for Android." 522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project3. NO PATENT LICENSE 542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 552228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectNO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without limitation the patents of Fraunhofer, 562228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectARE GRANTED BY THIS SOFTWARE LICENSE. Fraunhofer provides no warranty of patent non-infringement with 572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectrespect to this software. 582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 592228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectYou may use this FDK AAC Codec software or modifications thereto only for purposes that are authorized 602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectby appropriate patent licenses. 612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project4. DISCLAIMER 632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 642228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectThis FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright holders and contributors 652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project"AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, including but not limited to the implied warranties 662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectof merchantability and fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 672228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectCONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, or consequential damages, 682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectincluding but not limited to procurement of substitute goods or services; loss of use, data, or profits, 692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projector business interruption, however caused and on any theory of liability, whether in contract, strict 702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectliability, or tort (including negligence), arising in any way out of the use of this software, even if 712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectadvised of the possibility of such damage. 722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project5. CONTACT INFORMATION 742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 752228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectFraunhofer Institute for Integrated Circuits IIS 762228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectAttention: Audio and Multimedia Departments - FDK AAC LL 772228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectAm Wolfsmantel 33 782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project91058 Erlangen, Germany 792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectwww.iis.fraunhofer.de/amm 812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectamm-info@iis.fraunhofer.de 822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project----------------------------------------------------------------------------------------------------------- */ 832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "fram_gen.h" 852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "sbr_misc.h" 862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project#include "genericStds.h" 882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo1_2048 = { 902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 16}, 922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH}, 932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {0, 16} }; 962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo2_2048 = { 982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 8, 16}, 1002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH}, 1012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 8, 16} }; 1042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo4_2048 = { 1062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4, 1072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 4, 8, 12, 16}, 1082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH}, 1092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 8, 16} }; 1122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo1_2304 = { 1142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 18}, 1162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH}, 1172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 18} }; 1202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo2_2304 = { 1222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 9, 18}, 1242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH}, 1252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 9, 18} }; 1282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo4_2304 = { 1302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4, 1312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 5, 9, 14, 18}, 1322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH}, 1332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 9, 18} }; 1362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo1_1920 = { 1382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 15}, 1402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH}, 1412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 15} }; 1442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo2_1920 = { 1462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 8, 15}, 1482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH}, 1492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 8, 15} }; 1522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo4_1920 = { 1542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4, 1552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 4, 8, 12, 15}, 1562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH}, 1572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 8, 15} }; 1602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo1_1152 = { 1622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 9}, 1642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH}, 1652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 9} }; 1682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo2_1152 = { 1702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 5, 9}, 1722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH}, 1732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 5, 9} }; 1762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo4_1152 = { 1782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4, 1792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 2, 5, 1802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7, 9}, 1812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH}, 1822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 0, 5, 9} }; 1852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* AACLD frame info */ 1882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo1_512LD = { 1892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {0, 8}, 1912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH}, 1922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 1932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1, 1942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {0, 8}}; 1952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 1962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo2_512LD = { 1972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 1982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {0, 4, 8}, 1992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH}, 2002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 2012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 2022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {0, 4, 8}}; 2032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const SBR_FRAME_INFO frameInfo4_512LD = { 2052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4, 2062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {0, 2, 4, 6, 8}, 2072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH}, 2082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 0, 2092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2, 2102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project {0, 4, 8}}; 2112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic int 2132228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectcalcFillLengthMax (int tranPos, /*!< input : transient position (ref: tran det) */ 2142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int numberTimeSlots /*!< input : number of timeslots */ 2152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ); 2162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 2182228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectfillFrameTran (const int *v_tuningSegm, /*!< tuning: desired segment lengths */ 2192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project const int *v_tuningFreq, /*!< tuning: desired frequency resolutions */ 2202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int tran, /*!< input : position of transient */ 2212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *v_bord, /*!< memNew: borders */ 2222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *length_v_bord, /*!< memNew: # borders */ 2232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *v_freq, /*!< memNew: frequency resolutions */ 2242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *length_v_freq, /*!< memNew: # frequency resolutions */ 2252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *bmin, /*!< hlpNew: first mandatory border */ 2262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *bmax /*!< hlpNew: last mandatory border */ 2272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ); 2282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void fillFramePre (INT dmax, INT *v_bord, INT *length_v_bord, 2302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_freq, INT *length_v_freq, INT bmin, 2312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT rest); 2322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void fillFramePost (INT *parts, INT *d, INT dmax, INT *v_bord, 2342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bord, INT *v_freq, 2352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_freq, INT bmax, 2362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT bufferFrameStart, INT numberTimeSlots, INT fmax); 2372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void fillFrameInter (INT *nL, const int *v_tuningSegm, INT *v_bord, 2392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bord, INT bmin, INT *v_freq, 2402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_freq, INT *v_bordFollow, 2412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bordFollow, INT *v_freqFollow, 2422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_freqFollow, INT i_fillFollow, 2432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT dmin, INT dmax, INT numberTimeSlots); 2442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void calcFrameClass (FRAME_CLASS *frameClass, FRAME_CLASS *frameClassOld, INT tranFlag, 2462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *spreadFlag); 2472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void specialCase (INT *spreadFlag, INT allowSpread, INT *v_bord, 2492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bord, INT *v_freq, INT *length_v_freq, 2502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *parts, INT d); 2512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void calcCmonBorder (INT *i_cmon, INT *i_tran, INT *v_bord, 2532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bord, INT tran, 2542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT bufferFrameStart, INT numberTimeSlots); 2552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void keepForFollowUp (INT *v_bordFollow, INT *length_v_bordFollow, 2572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_freqFollow, INT *length_v_freqFollow, 2582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *i_tranFollow, INT *i_fillFollow, 2592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_bord, INT *length_v_bord, INT *v_freq, 2602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT i_cmon, INT i_tran, INT parts, INT numberTimeSlots); 2612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void calcCtrlSignal (HANDLE_SBR_GRID hSbrGrid, FRAME_CLASS frameClass, 2632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_bord, INT length_v_bord, INT *v_freq, 2642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT length_v_freq, INT i_cmon, INT i_tran, 2652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT spreadFlag, INT nL); 2662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void ctrlSignal2FrameInfo (HANDLE_SBR_GRID hSbrGrid, 2682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project HANDLE_SBR_FRAME_INFO hFrameInfo, 2692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT freq_res_fixfix); 2702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* table for 8 time slot index */ 2732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const int envelopeTable_8 [8][5] = { 2742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* transientIndex nEnv, tranIdx, shortEnv, border1, border2, ... */ 2752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* borders from left to right side; -1 = not in use */ 2762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|T-|------]*/ { 2, 0, 0, 1, -1 }, 2772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-T-|-----]*/ { 2, 0, 0, 2, -1 }, 2782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[--|T-|----]*/ { 3, 1, 1, 2, 4 }, 2792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[---|T-|---]*/ { 3, 1, 1, 3, 5 }, 2802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[----|T-|--]*/ { 3, 1, 1, 4, 6 }, 2812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[-----|T--|]*/ { 2, 1, 1, 5, -1 }, 2822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[------|T-|]*/ { 2, 1, 1, 6, -1 }, 2832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[-------|T|]*/ { 2, 1, 1, 7, -1 }, 2842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project}; 2852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* table for 16 time slot index */ 2872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const int envelopeTable_16 [16][6] = { 2882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* transientIndex nEnv, tranIdx, shortEnv, border1, border2, ... */ 2892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* length from left to right side; -1 = not in use */ 2902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|T---|------------|]*/ { 2, 0, 0, 4, -1, -1}, 2912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-T---|-----------|]*/ { 2, 0, 0, 5, -1, -1}, 2922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|--|T---|----------]*/ { 3, 1, 1, 2, 6, -1}, 2932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|---|T---|---------]*/ { 3, 1, 1, 3, 7, -1}, 2942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|----|T---|--------]*/ { 3, 1, 1, 4, 8, -1}, 2952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-----|T---|-------]*/ { 3, 1, 1, 5, 9, -1}, 2962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|------|T---|------]*/ { 3, 1, 1, 6, 10, -1}, 2972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-------|T---|-----]*/ { 3, 1, 1, 7, 11, -1}, 2982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|--------|T---|----]*/ { 3, 1, 1, 8, 12, -1}, 2992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|---------|T---|---]*/ { 3, 1, 1, 9, 13, -1}, 3002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|----------|T---|--]*/ { 3, 1, 1,10, 14, -1}, 3012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-----------|T----|]*/ { 2, 1, 1,11, -1, -1}, 3022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|------------|T---|]*/ { 2, 1, 1,12, -1, -1}, 3032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-------------|T--|]*/ { 2, 1, 1,13, -1, -1}, 3042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|--------------|T-|]*/ { 2, 1, 1,14, -1, -1}, 3052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|---------------|T|]*/ { 2, 1, 1,15, -1, -1}, 3062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project}; 3072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* table for 15 time slot index */ 3092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const int envelopeTable_15 [15][6] = { 3102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* transientIndex nEnv, tranIdx, shortEnv, border1, border2, ... */ 3112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* length from left to right side; -1 = not in use */ 3122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|T---|------------]*/ { 2, 0, 0, 4, -1, -1}, 3132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-T---|-----------]*/ { 2, 0, 0, 5, -1, -1}, 3142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|--|T---|---------]*/ { 3, 1, 1, 2, 6, -1}, 3152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|---|T---|--------]*/ { 3, 1, 1, 3, 7, -1}, 3162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|----|T---|-------]*/ { 3, 1, 1, 4, 8, -1}, 3172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-----|T---|------]*/ { 3, 1, 1, 5, 9, -1}, 3182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|------|T---|-----]*/ { 3, 1, 1, 6, 10, -1}, 3192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-------|T---|----]*/ { 3, 1, 1, 7, 11, -1}, 3202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|--------|T---|---]*/ { 3, 1, 1, 8, 12, -1}, 3212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|---------|T---|--]*/ { 3, 1, 1, 9, 13, -1}, 3222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|----------|T----|]*/ { 2, 1, 1,10, -1, -1}, 3232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-----------|T---|]*/ { 2, 1, 1,11, -1, -1}, 3242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|------------|T--|]*/ { 2, 1, 1,12, -1, -1}, 3252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|-------------|T-|]*/ { 2, 1, 1,13, -1, -1}, 3262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*[|--------------|T|]*/ { 2, 1, 1,14, -1, -1}, 3272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project}; 3282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const int minFrameTranDistance = 4; 3302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const FREQ_RES freqRes_table_8[] = {FREQ_RES_LOW, FREQ_RES_LOW, FREQ_RES_LOW, FREQ_RES_LOW, FREQ_RES_LOW, 3322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH}; 3332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic const FREQ_RES freqRes_table_16[16] = { 3352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* size of envelope */ 3362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* 0-4 */ FREQ_RES_LOW, FREQ_RES_LOW, FREQ_RES_LOW, FREQ_RES_LOW, FREQ_RES_LOW, 3372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* 5-9 */ FREQ_RES_LOW, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, 3382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/* 10-16 */ FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, FREQ_RES_HIGH, 3392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FREQ_RES_HIGH }; 3402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void generateFixFixOnly ( HANDLE_SBR_FRAME_INFO hSbrFrameInfo, 3422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project HANDLE_SBR_GRID hSbrGrid, 3432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int tranPosInternal, 3442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int numberTimeSlots 3452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ); 3462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/*! 3492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: FDKsbrEnc_frameInfoGenerator 3502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: produces the FRAME_INFO struct for the current frame 3522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: hSbrEnvFrame - pointer to sbr envelope handle 3542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_pre_transient_info - pointer to transient info vector 3552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_transient_info - pointer to previous transient info vector 3562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_tuning - pointer to tuning vector 3572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: frame_info - pointer to SBR_FRAME_INFO struct 3592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 3612228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectHANDLE_SBR_FRAME_INFO 3622228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectFDKsbrEnc_frameInfoGenerator (HANDLE_SBR_ENVELOPE_FRAME hSbrEnvFrame, 3632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project UCHAR *v_transient_info, 3642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project UCHAR *v_transient_info_pre, 3652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int ldGrid, 3662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project const int *v_tuning) 3672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 3682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT numEnv, tranPosInternal=0, bmin=0, bmax=0, parts, d, i_cmon=0, i_tran=0, nL; 3692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT fmax = 0; 3702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_bord = hSbrEnvFrame->v_bord; 3722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_freq = hSbrEnvFrame->v_freq; 3732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_bordFollow = hSbrEnvFrame->v_bordFollow; 3742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_freqFollow = hSbrEnvFrame->v_freqFollow; 3752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bordFollow = &hSbrEnvFrame->length_v_bordFollow; 3782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_freqFollow = &hSbrEnvFrame->length_v_freqFollow; 3792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bord = &hSbrEnvFrame->length_v_bord; 3802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_freq = &hSbrEnvFrame->length_v_freq; 3812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *spreadFlag = &hSbrEnvFrame->spreadFlag; 3822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *i_tranFollow = &hSbrEnvFrame->i_tranFollow; 3832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *i_fillFollow = &hSbrEnvFrame->i_fillFollow; 3842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FRAME_CLASS *frameClassOld = &hSbrEnvFrame->frameClassOld; 3852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FRAME_CLASS frameClass = FIXFIX; 3862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT allowSpread = hSbrEnvFrame->allowSpread; 3892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT numEnvStatic = hSbrEnvFrame->numEnvStatic; 3902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT staticFraming = hSbrEnvFrame->staticFraming; 3912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT dmin = hSbrEnvFrame->dmin; 3922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT dmax = hSbrEnvFrame->dmax; 3932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT bufferFrameStart = hSbrEnvFrame->SbrGrid.bufferFrameStart; 3952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT numberTimeSlots = hSbrEnvFrame->SbrGrid.numberTimeSlots; 3962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT frameMiddleSlot = hSbrEnvFrame->frameMiddleSlot; 3972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 3982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT tranPos = v_transient_info[0]; 3992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT tranFlag = v_transient_info[1]; 4002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project const int *v_tuningSegm = v_tuning; 4022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project const int *v_tuningFreq = v_tuning + 3; 4032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->v_tuningSegm = v_tuningSegm; 4052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT freq_res_fixfix = hSbrEnvFrame->freq_res_fixfix; 4062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (ldGrid) { 4082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* in case there was a transient at the very end of the previous frame, start with a transient envelope */ 4092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if(v_transient_info_pre[1] && (numberTimeSlots - v_transient_info_pre[0] < minFrameTranDistance)){ 4102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tranFlag = 1; 4112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tranPos = 0; 4122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 4132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 4142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 4162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * Synopsis: 4172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * The frame generator creates the time-/frequency-grid for one SBR frame. 4192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * Input signals are provided by the transient detector and the frame 4202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * splitter (transientDetectNew() & FrameSplitter() in tran_det.c). The 4212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * framing is controlled by adjusting tuning parameters stored in 4222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * FRAME_GEN_TUNING. The parameter values are dependent on frame lengths 4232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * and bitrates, and may in the future be signal dependent. 4242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * The envelope borders are stored for frame generator internal use in 4262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * aBorders. The contents of aBorders represent positions along the time 4272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * axis given in the figures in fram_gen.h (the "frame-generator" rows). 4282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * The unit is "time slot". The figures in fram_gen.h also define the 4292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * detection ranges for the transient detector. For every border in 4302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * aBorders, there is a corresponding entry in aFreqRes, which defines the 4312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * frequency resolution of the envelope following (delimited by) the 4322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * border. 4332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * When no transients are present, FIXFIX class frames are used. The 4352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * frame splitter decides whether to use one or two envelopes in the 4362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * FIXFIX frame. "Sparse transients" (separated by a few frames without 4372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * transients) are handeled by [FIXVAR, VARFIX] pairs or (depending on 4382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * tuning and transient position relative the nominal frame boundaries) 4392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * by [FIXVAR, VARVAR, VARFIX] triples. "Tight transients" (in 4402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * consecutive frames) are handeled by [..., VARVAR, VARVAR, ...] 4412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * sequences. 4422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * The generator assumes that transients are "sparse", and designs 4442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * borders for [FIXVAR, VARFIX] pairs right away, where the first frame 4452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * corresponds to the present frame. At the next call of the generator 4462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * it is known whether the transient actually is "sparse" or not. If 4472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 'yes', the already calculated VARFIX borders are used. If 'no', new 4482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * borders, meeting the requirements of the "tight" transient, are 4492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * calculated. 4502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * The generator produces two outputs: A "clear-text bitstream" stored in 4522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * SBR_GRID, and a straight-forward representation of the grid stored in 4532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * SBR_FRAME_INFO. The former is subsequently converted to the actual 4542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * bitstream sbr_grid() (encodeSbrGrid() in bit_sbr.c). The latter is 4552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * used by other encoder functions, such as the envelope estimator 4562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * (calculateSbrEnvelope() in env_est.c) and the noise floor and missing 4572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * harmonics detector (TonCorrParamExtr() in nf_est.c). 4582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 4592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (staticFraming) { 4612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 4622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Ignore transient detector 4632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 4642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project frameClass = FIXFIX; 4662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numEnv = numEnvStatic; /* {1,2,4,8} */ 4672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *frameClassOld = FIXFIX; /* for change to dyn */ 4682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.bs_num_env = numEnv; 4692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.frameClass = frameClass; 4702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 4712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 4722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 4732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Calculate frame class to use 4742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 4752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calcFrameClass (&frameClass, frameClassOld, tranFlag, spreadFlag); 4762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* patch for new frame class FIXFIXonly for AAC LD */ 4782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranFlag && ldGrid) { 4792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project frameClass = FIXFIXonly; 4802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *frameClassOld = FIXFIX; 4812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 4822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 4842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * every transient is processed below by inserting 4852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * - one border at the onset of the transient 4872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * - one or more "decay borders" (after the onset of the transient) 4882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * - optionally one "attack border" (before the onset of the transient) 4892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * those borders are referred to as "mandatory borders" and are 4912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * defined by the 'segmentLength' array in FRAME_GEN_TUNING 4922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * 4932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * the frequency resolutions of the corresponding envelopes are 4942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * defined by the 'segmentRes' array in FRAME_GEN_TUNING 4952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 4962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 4972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 4982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Design frame (or follow-up old design) 4992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranFlag) { /* Always for FixVar, often but not always for VarVar */ 5012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Design part of T/F-grid around the new transient 5032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tranPosInternal = frameMiddleSlot + tranPos + bufferFrameStart ; /* FH 00-06-26 */ 5062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 5072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project add mandatory borders around transient 5082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 5092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fillFrameTran ( v_tuningSegm, 5112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_tuningFreq, 5122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tranPosInternal, 5132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord, 5142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord, 5152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq, 5162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq, 5172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project &bmin, 5182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project &bmax ); 5192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* make sure we stay within the maximum SBR frame overlap */ 5212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = calcFillLengthMax(tranPos, numberTimeSlots); 5222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 5232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (frameClass) { 5252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXFIXonly: 5272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(ldGrid); 5282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tranPosInternal = tranPos; 5292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project generateFixFixOnly ( &(hSbrEnvFrame->SbrFrameInfo), 5302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project &(hSbrEnvFrame->SbrGrid), 5312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tranPosInternal, 5322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numberTimeSlots 5332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ); 5342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project return &(hSbrEnvFrame->SbrFrameInfo); 5362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXVAR: 5382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Design remaining parts of T/F-grid (assuming next frame is VarFix) 5412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Fill region before new transient: 5452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fillFramePre (dmax, v_bord, length_v_bord, v_freq, length_v_freq, 5472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bmin, bmin - bufferFrameStart); /* FH 00-06-26 */ 5482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Fill region after new transient: 5512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fillFramePost (&parts, &d, dmax, v_bord, length_v_bord, v_freq, 5532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq, bmax, bufferFrameStart, numberTimeSlots, fmax); 5542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Take care of special case: 5572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (parts == 1 && d < dmin) /* no fill, short last envelope */ 5592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project specialCase (spreadFlag, allowSpread, v_bord, length_v_bord, 5602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq, length_v_freq, &parts, d); 5612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Calculate common border (split-point) 5642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calcCmonBorder (&i_cmon, &i_tran, v_bord, length_v_bord, tranPosInternal, 5662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bufferFrameStart, numberTimeSlots); /* FH 00-06-26 */ 5672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Extract data for proper follow-up in next frame 5702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project keepForFollowUp (v_bordFollow, length_v_bordFollow, v_freqFollow, 5722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freqFollow, i_tranFollow, i_fillFollow, 5732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord, length_v_bord, v_freq, i_cmon, i_tran, parts, numberTimeSlots); /* FH 00-06-26 */ 5742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 5752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Calculate control signal 5772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calcCtrlSignal (&hSbrEnvFrame->SbrGrid, frameClass, 5792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord, *length_v_bord, v_freq, *length_v_freq, 5802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_cmon, i_tran, *spreadFlag, DC); 5812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 5822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARFIX: 5832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Follow-up old transient - calculate control signal 5852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calcCtrlSignal (&hSbrEnvFrame->SbrGrid, frameClass, 5872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bordFollow, *length_v_bordFollow, v_freqFollow, 5882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow, DC, *i_tranFollow, 5892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *spreadFlag, DC); 5902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 5912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARVAR: 5922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (*spreadFlag) { /* spread across three frames */ 5932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 5942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Follow-up old transient - calculate control signal 5952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 5962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calcCtrlSignal (&hSbrEnvFrame->SbrGrid, 5972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project frameClass, v_bordFollow, *length_v_bordFollow, 5982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freqFollow, *length_v_freqFollow, DC, 5992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_tranFollow, *spreadFlag, DC); 6002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *spreadFlag = 0; 6022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 6042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Extract data for proper follow-up in next frame 6052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bordFollow[0] = hSbrEnvFrame->SbrGrid.bs_abs_bord_1 - numberTimeSlots; /* FH 00-06-26 */ 6072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freqFollow[0] = 1; 6082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow = 1; 6092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow = 1; 6102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_tranFollow = -DC; 6122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_fillFollow = -DC; 6132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 6142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 6152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 6162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Design remaining parts of T/F-grid (assuming next frame is VarFix) 6172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project adapt or fill region before new transient: 6182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fillFrameInter (&nL, v_tuningSegm, v_bord, length_v_bord, bmin, 6202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq, length_v_freq, v_bordFollow, 6212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bordFollow, v_freqFollow, 6222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freqFollow, *i_fillFollow, dmin, dmax, 6232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numberTimeSlots); 6242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 6262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Fill after transient: 6272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fillFramePost (&parts, &d, dmax, v_bord, length_v_bord, v_freq, 6292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq, bmax, bufferFrameStart, numberTimeSlots, fmax); 6302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 6322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Take care of special case: 6332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (parts == 1 && d < dmin) /*% no fill, short last envelope */ 6352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project specialCase (spreadFlag, allowSpread, v_bord, length_v_bord, 6362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq, length_v_freq, &parts, d); 6372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 6392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Calculate common border (split-point) 6402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calcCmonBorder (&i_cmon, &i_tran, v_bord, length_v_bord, tranPosInternal, 6422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bufferFrameStart, numberTimeSlots); 6432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 6452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Extract data for proper follow-up in next frame 6462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project keepForFollowUp (v_bordFollow, length_v_bordFollow, 6482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freqFollow, length_v_freqFollow, 6492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_tranFollow, i_fillFollow, v_bord, 6502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord, v_freq, i_cmon, i_tran, parts, numberTimeSlots); 6512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*-------------------------------------------------------------------------- 6532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Calculate control signal 6542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calcCtrlSignal (&hSbrEnvFrame->SbrGrid, 6562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project frameClass, v_bord, *length_v_bord, v_freq, 6572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq, i_cmon, i_tran, 0, nL); 6582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 6592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 6602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXFIX: 6612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranPos == 0) 6622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numEnv = 1; 6632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else 6642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numEnv = 2; 6652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.bs_num_env = numEnv; 6672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.frameClass = frameClass; 6682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 6702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 6712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(0); 6722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 6732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 6742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*------------------------------------------------------------------------- 6762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Convert control signal to frame info struct 6772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ---------------------------------------------------------------------------*/ 6782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ctrlSignal2FrameInfo (&hSbrEnvFrame->SbrGrid, 6792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project &hSbrEnvFrame->SbrFrameInfo, 6802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project freq_res_fixfix); 6812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project return &hSbrEnvFrame->SbrFrameInfo; 6832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 6842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/***************************************************************************/ 6872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/*! 6882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project \brief Gnerates frame info for FIXFIXonly frame class used for low delay version 6892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 6902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project \return nothing 6912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ****************************************************************************/ 6922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void generateFixFixOnly ( HANDLE_SBR_FRAME_INFO hSbrFrameInfo, 6932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project HANDLE_SBR_GRID hSbrGrid, 6942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int tranPosInternal, 6952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int numberTimeSlots 6962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ) 6972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 6982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int nEnv, i, k=0, tranIdx; 6992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project const int *pTable = NULL; 7002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project const FREQ_RES *freqResTable = NULL; 7012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (numberTimeSlots) { 7032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 8: 7042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project pTable = envelopeTable_8[tranPosInternal]; 7052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project freqResTable = freqRes_table_8; 7062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 7072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 15: 7082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project pTable = envelopeTable_15[tranPosInternal]; 7092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project freqResTable = freqRes_table_16; 7102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 7112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 16: 7122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project pTable = envelopeTable_16[tranPosInternal]; 7132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project freqResTable = freqRes_table_16; 7142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 7152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 7162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* look number of envolpes in table */ 7182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nEnv = pTable[0]; 7192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* look up envolpe distribution in table */ 7202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i=1; i<nEnv; i++) 7212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[i] = pTable[i+2]; 7222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* open and close frame border */ 7242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[0] = 0; 7252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[nEnv] = numberTimeSlots; 7262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* adjust segment-frequency-resolution according to the segment-length */ 7282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i=0; i<nEnv; i++){ 7292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project k = hSbrFrameInfo->borders[i+1] - hSbrFrameInfo->borders[i]; 7302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->freqRes[i] = freqResTable[k]; 7312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->v_f[i] = freqResTable[k]; 7322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 7332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nEnvelopes = nEnv; 7352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->shortEnv = pTable[2]; 7362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* transient idx */ 7372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tranIdx = pTable[1]; 7382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* add noise floors */ 7402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[0] = 0; 7412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[tranIdx?tranIdx:1]; 7422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[2] = numberTimeSlots; 7432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nNoiseEnvelopes = 2; 7442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->frameClass = FIXFIXonly; 7462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_abs_bord = tranPosInternal; 7472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_num_env = nEnv; 7482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 7502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 7542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: FDKsbrEnc_initFrameInfoGenerator 7552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 7562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: 7582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: hSbrEnvFrame - pointer to sbr envelope handle 7602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project allowSpread - commandline parameter 7612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numEnvStatic - commandline parameter 7622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project staticFraming - commandline parameter 7632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 7652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 7672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectvoid 7682228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectFDKsbrEnc_initFrameInfoGenerator (HANDLE_SBR_ENVELOPE_FRAME hSbrEnvFrame, 7692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT allowSpread, 7702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT numEnvStatic, 7712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT staticFraming, 7722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT timeSlots, 7732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT freq_res_fixfix 7742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ,int ldGrid 7752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ) 7762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ /* FH 00-06-26 */ 7782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemclear(hSbrEnvFrame,sizeof(SBR_ENVELOPE_FRAME )); 7802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* Initialisation */ 7832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->frameClassOld = FIXFIX; 7842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->spreadFlag = 0; 7852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->allowSpread = allowSpread; 7872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->numEnvStatic = numEnvStatic; 7882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->staticFraming = staticFraming; 7892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->freq_res_fixfix = freq_res_fixfix; 7902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->length_v_bord = 0; 7922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->length_v_bordFollow = 0; 7932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->length_v_freq = 0; 7952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->length_v_freqFollow = 0; 7962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 7972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->i_tranFollow = 0; 7982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->i_fillFollow = 0; 7992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.numberTimeSlots = timeSlots; 8012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (ldGrid) { 8032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*case CODEC_AACLD:*/ 8042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmin = 2; 8052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmax = 16; 8062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->frameMiddleSlot = FRAME_MIDDLE_SLOT_512LD; 8072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else 8082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch(timeSlots){ 8092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1920: 8102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmin = 4; 8112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmax = 12; 8122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.bufferFrameStart = 0; 8132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->frameMiddleSlot = FRAME_MIDDLE_SLOT_1920; 8142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 8152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2048: 8162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmin = 4; 8172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmax = 12; 8182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.bufferFrameStart = 0; 8192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->frameMiddleSlot = FRAME_MIDDLE_SLOT_2048; 8202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 8212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1152: 8222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmin = 2; 8232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmax = 8; 8242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.bufferFrameStart = 0; 8252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->frameMiddleSlot = FRAME_MIDDLE_SLOT_1152; 8262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 8272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2304: 8282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmin = 4; 8292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->dmax = 15; 8302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->SbrGrid.bufferFrameStart = 0; 8312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrEnvFrame->frameMiddleSlot = FRAME_MIDDLE_SLOT_2304; 8322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 8332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 8342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(0); 8352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 8362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 8382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 8412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: fillFrameTran 8422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 8432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: Add mandatory borders, as described by the tuning vector 8452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project and the current transient position 8462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: 8482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project modified: 8492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord - int pointer to v_bord vector 8502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord - length of v_bord vector 8512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq - int pointer to v_freq vector 8522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq - length of v_freq vector 8532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bmin - int pointer to bmin (call by reference) 8542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bmax - int pointer to bmax (call by reference) 8552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project not modified: 8562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tran - position of transient 8572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_tuningSegm - int pointer to v_tuningSegm vector 8582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_tuningFreq - int pointer to v_tuningFreq vector 8592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 8612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 8632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 8642228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectfillFrameTran (const int *v_tuningSegm, /*!< tuning: desired segment lengths */ 8652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project const int *v_tuningFreq, /*!< tuning: desired frequency resolutions */ 8662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int tran, /*!< input : position of transient */ 8672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *v_bord, /*!< memNew: borders */ 8682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *length_v_bord, /*!< memNew: # borders */ 8692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *v_freq, /*!< memNew: frequency resolutions */ 8702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *length_v_freq, /*!< memNew: # frequency resolutions */ 8712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *bmin, /*!< hlpNew: first mandatory border */ 8722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int *bmax /*!< hlpNew: last mandatory border */ 8732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ) 8742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 8752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int bord, i; 8762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = 0; 8782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = 0; 8792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* add attack env leading border (optional) */ 8812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_tuningSegm[0]) { 8822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_bord = [(Ba)] start of attack env */ 8832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_bord, length_v_bord, (tran - v_tuningSegm[0])); 8842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_freq = [(Fa)] res of attack env */ 8862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_freq, length_v_freq, v_tuningFreq[0]); 8872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 8882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* add attack env trailing border/first decay env leading border */ 8902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bord = tran; 8912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_bord, length_v_bord, tran); /* v_bord = [(Ba),Bd1] */ 8922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* add first decay env trailing border/2:nd decay env leading border */ 8942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_tuningSegm[1]) { 8952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bord += v_tuningSegm[1]; 8962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 8972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_bord = [(Ba),Bd1,Bd2] */ 8982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_bord, length_v_bord, bord); 8992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_freq = [(Fa),Fd1] */ 9012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_freq, length_v_freq, v_tuningFreq[1]); 9022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 9032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* add 2:nd decay env trailing border (optional) */ 9052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_tuningSegm[2] != 0) { 9062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bord += v_tuningSegm[2]; 9072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_bord = [(Ba),Bd1, Bd2,(Bd3)] */ 9092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_bord, length_v_bord, bord); 9102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_freq = [(Fa),Fd1,(Fd2)] */ 9122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_freq, length_v_freq, v_tuningFreq[2]); 9132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 9142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_freq = [(Fa),Fd1,(Fd2),1] */ 9162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_freq, length_v_freq, 1); 9172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* calc min and max values of mandatory borders */ 9202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *bmin = v_bord[0]; 9212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_bord; i++) 9222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_bord[i] < *bmin) 9232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *bmin = v_bord[i]; 9242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *bmax = v_bord[0]; 9262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_bord; i++) 9272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_bord[i] > *bmax) 9282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *bmax = v_bord[i]; 9292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 9312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 9352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: fillFramePre 9362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 9372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: Add borders before mandatory borders, if needed 9392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: 9412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project modified: 9422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord - int pointer to v_bord vector 9432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord - length of v_bord vector 9442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq - int pointer to v_freq vector 9452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq - length of v_freq vector 9462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project not modified: 9472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project dmax - int value 9482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bmin - int value 9492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project rest - int value 9502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 9522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 9542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 9552228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectfillFramePre (INT dmax, 9562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_bord, INT *length_v_bord, 9572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_freq, INT *length_v_freq, 9582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT bmin, INT rest) 9592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 9602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 9612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project input state: 9622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord = [(Ba),Bd1, Bd2 ,(Bd3)] 9632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq = [(Fa),Fd1,(Fd2),1 ] 9642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 9652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT parts, d, j, S, s = 0, segm, bord; 9672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 9692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project start with one envelope 9702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 9712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project parts = 1; 9732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project d = rest; 9742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 9762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calc # of additional envelopes and corresponding lengths 9772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 9782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project while (d > dmax) { 9802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project parts++; 9812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project segm = rest / parts; 9832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project S = (segm - 2)>>1; 9842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project s = fixMin (8, 2 * S + 2); 9852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project d = rest - (parts - 1) * s; 9862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 9872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 9892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project add borders before mandatory borders 9902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 9912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bord = bmin; 9932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (j = 0; j <= parts - 2; j++) { 9952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bord = bord - s; 9962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 9972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_bord = [...,(Bf),(Ba),Bd1, Bd2 ,(Bd3)] */ 9982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddLeft (v_bord, length_v_bord, bord); 9992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_freq = [...,(1 ),(Fa),Fd1,(Fd2), 1 ] */ 10012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddLeft (v_freq, length_v_freq, 1); 10022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 10032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 10042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/***************************************************************************/ 10062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/*! 10072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project \brief Overlap control 10082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Calculate max length of trailing fill segments, such that we always get a 10102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project border within the frame overlap region 10112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project \return void 10132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project****************************************************************************/ 10152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic int 10162228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectcalcFillLengthMax (int tranPos, /*!< input : transient position (ref: tran det) */ 10172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int numberTimeSlots /*!< input : number of timeslots */ 10182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ) 10192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 10202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project int fmax; 10212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 10232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project calculate transient position within envelope buffer 10242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 10252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (numberTimeSlots) 10262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 10272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2048: 10282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranPos < 4) 10292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = 6; 10302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else if (tranPos == 4 || tranPos == 5) 10312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = 4; 10322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else 10332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = 8; 10342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 10352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1920: 10372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranPos < 4) 10382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = 5; 10392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else if (tranPos == 4 || tranPos == 5) 10402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = 3; 10412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else 10422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = 7; 10432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 10442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 10462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fmax = 8; 10472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 10482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 10492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project return fmax; 10512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 10522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 10542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: fillFramePost 10552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 10562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: -Add borders after mandatory borders, if needed 10582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Make a preliminary design of next frame, 10592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project assuming no transient is present there 10602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: 10622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project modified: 10632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project parts - int pointer to parts (call by reference) 10642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project d - int pointer to d (call by reference) 10652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord - int pointer to v_bord vector 10662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord - length of v_bord vector 10672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq - int pointer to v_freq vector 10682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq - length of v_freq vector 10692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project not modified: 10702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bmax - int value 10712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project dmax - int value 10722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 10742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 10762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 10772228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectfillFramePost (INT *parts, INT *d, INT dmax, INT *v_bord, INT *length_v_bord, 10782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_freq, INT *length_v_freq, INT bmax, 10792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT bufferFrameStart, INT numberTimeSlots, INT fmax) 10802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 10812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT j, rest, segm, S, s = 0, bord; 10822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* 10842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project input state: 10852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord = [...,(Bf),(Ba),Bd1, Bd2 ,(Bd3)] 10862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq = [...,(1 ),(Fa),Fd1,(Fd2),1 ] 10872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 10882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project rest = bufferFrameStart + 2 * numberTimeSlots - bmax; 10902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *d = rest; 10912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (*d > 0) { 10932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *parts = 1; /* start with one envelope */ 10942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* calc # of additional envelopes and corresponding lengths */ 10962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 10972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project while (*d > dmax) { 10982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *parts = *parts + 1; 10992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project segm = rest / (*parts); 11012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project S = (segm - 2)>>1; 11022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project s = fixMin (fmax, 2 * S + 2); 11032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *d = rest - (*parts - 1) * s; 11042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 11052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* add borders after mandatory borders */ 11072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bord = bmax; 11092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (j = 0; j <= *parts - 2; j++) { 11102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bord += s; 11112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_bord = [...,(Bf),(Ba),Bd1, Bd2 ,(Bd3),(Bf)] */ 11132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_bord, length_v_bord, bord); 11142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* v_freq = [...,(1 ),(Fa),Fd1,(Fd2), 1 , 1! ,1] */ 11162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_freq, length_v_freq, 1); 11172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 11182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 11192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 11202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *parts = 1; 11212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* remove last element from v_bord and v_freq */ 11232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = *length_v_bord - 1; 11252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = *length_v_freq - 1; 11262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 11282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 11292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 11332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: fillFrameInter 11342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 11352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: 11372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: nL - 11392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_tuningSegm - 11402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord - 11412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord - 11422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bmin - 11432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq - 11442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq - 11452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bordFollow - 11462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bordFollow - 11472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freqFollow - 11482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freqFollow - 11492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_fillFollow - 11502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project dmin - 11512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project dmax - 11522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 11542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 11562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 11572228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectfillFrameInter (INT *nL, const int *v_tuningSegm, INT *v_bord, INT *length_v_bord, 11582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT bmin, INT *v_freq, INT *length_v_freq, INT *v_bordFollow, 11592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bordFollow, INT *v_freqFollow, 11602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_freqFollow, INT i_fillFollow, INT dmin, 11612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT dmax, INT numberTimeSlots) 11622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 11632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT middle, b_new, numBordFollow, bordMaxFollow, i; 11642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (numberTimeSlots != NUMBER_TIME_SLOTS_1152) { 11662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* % remove fill borders: */ 11682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (i_fillFollow >= 1) { 11692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow = i_fillFollow; 11702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow = i_fillFollow; 11712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 11722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numBordFollow = *length_v_bordFollow; 11742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bordMaxFollow = v_bordFollow[numBordFollow - 1]; 11752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* remove even more borders if needed */ 11772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project middle = bmin - bordMaxFollow; 11782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project while (middle < 0) { 11792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numBordFollow--; 11802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bordMaxFollow = v_bordFollow[numBordFollow - 1]; 11812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project middle = bmin - bordMaxFollow; 11822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 11832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow = numBordFollow; 11852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow = numBordFollow; 11862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *nL = numBordFollow - 1; 11872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project b_new = *length_v_bord; 11892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (middle <= dmax) { 11922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (middle >= dmin) { /* concatenate */ 11932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, *length_v_bordFollow); 11942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, *length_v_freqFollow); 11952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 11962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 11972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 11982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_tuningSegm[0] != 0) { /* remove one new border and concatenate */ 11992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = b_new - 1; 12002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, 12012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow); 12022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = b_new - 1; 12042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq + 1, length_v_freq, v_freqFollow, 12052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow); 12062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 12082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (*length_v_bordFollow > 1) { /* remove one old border and concatenate */ 12092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, 12102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow - 1); 12112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, 12122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow - 1); 12132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *nL = *nL - 1; 12152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { /* remove new "transient" border and concatenate */ 12172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_bord - 1; i++) 12192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord[i] = v_bord[i + 1]; 12202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_freq - 1; i++) 12222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq[i] = v_freq[i + 1]; 12232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = b_new - 1; 12252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = b_new - 1; 12262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, 12282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow); 12292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, 12302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow); 12312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { /* middle > dmax */ 12362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fillFramePre (dmax, v_bord, length_v_bord, v_freq, length_v_freq, bmin, 12382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project middle); 12392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, *length_v_bordFollow); 12402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, *length_v_freqFollow); 12412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { /* numberTimeSlots==NUMBER_TIME_SLOTS_1152 */ 12462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT l,m; 12482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*------------------------------------------------------------------------ 12512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project remove fill borders 12522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ------------------------------------------------------------------------*/ 12532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (i_fillFollow >= 1) { 12542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow = i_fillFollow; 12552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow = i_fillFollow; 12562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numBordFollow = *length_v_bordFollow; 12592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bordMaxFollow = v_bordFollow[numBordFollow - 1]; 12602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*------------------------------------------------------------------------ 12622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project remove more borders if necessary to eliminate overlap 12632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ------------------------------------------------------------------------*/ 12642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* check for overlap */ 12662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project middle = bmin - bordMaxFollow; 12672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* intervals: 12692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i) middle < 0 : overlap, must remove borders 12702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ii) 0 <= middle < dmin : no overlap but too tight, must remove borders 12712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project iii) dmin <= middle <= dmax : ok, just concatenate 12722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project iv) dmax <= middle : too wide, must add borders 12732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project */ 12742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* first remove old non-fill-borders... */ 12762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project while (middle < 0) { 12772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* ...but don't remove all of them */ 12792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (numBordFollow == 1) 12802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 12812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project numBordFollow--; 12832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bordMaxFollow = v_bordFollow[numBordFollow - 1]; 12842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project middle = bmin - bordMaxFollow; 12852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 12872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* if this isn't enough, remove new non-fill borders */ 12882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (middle < 0) 12892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 12902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (l = 0, m = 0 ; l < *length_v_bord ; l++) 12912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 12922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if(v_bord[l]> bordMaxFollow) 12932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 12942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord[m] = v_bord[l]; 12952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq[m] = v_freq[l]; 12962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project m++; 12972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 12992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = l; 13012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = l; 13022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project bmin = v_bord[0]; 13042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*------------------------------------------------------------------------ 13082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project update modified follow-up data 13092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ------------------------------------------------------------------------*/ 13102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow = numBordFollow; 13122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow = numBordFollow; 13132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* left relative borders correspond to follow-up */ 13152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *nL = numBordFollow - 1; 13162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /*------------------------------------------------------------------------ 13182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project take care of intervals ii through iv 13192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ------------------------------------------------------------------------*/ 13202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* now middle should be >= 0 */ 13222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project middle = bmin - bordMaxFollow; 13232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (middle <= dmin) /* (ii) */ 13252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 13262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project b_new = *length_v_bord; 13272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_tuningSegm[0] != 0) 13292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 13302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* remove new "luxury" border and concatenate */ 13312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = b_new - 1; 13322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, 13332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow); 13342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = b_new - 1; 13362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq + 1, length_v_freq, v_freqFollow, 13372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow); 13382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else if (*length_v_bordFollow > 1) 13412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 13422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* remove old border and concatenate */ 13432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, 13442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow - 1); 13452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, 13462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow - 1); 13472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *nL = *nL - 1; 13492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else 13512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 13522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* remove new border and concatenate */ 13532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_bord - 1; i++) 13542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord[i] = v_bord[i + 1]; 13552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_freq - 1; i++) 13572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq[i] = v_freq[i + 1]; 13582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = b_new - 1; 13602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = b_new - 1; 13612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, 13632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bordFollow); 13642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, 13652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freqFollow); 13662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else if ((middle >= dmin) && (middle <= dmax)) /* (iii) */ 13692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 13702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* concatenate */ 13712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, *length_v_bordFollow); 13722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, *length_v_freqFollow); 13732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else /* (iv) */ 13762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project { 13772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project fillFramePre (dmax, v_bord, length_v_bord, v_freq, length_v_freq, bmin, 13782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project middle); 13792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_bord, length_v_bord, v_bordFollow, *length_v_bordFollow); 13802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddVecLeft (v_freq, length_v_freq, v_freqFollow, *length_v_freqFollow); 13812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 13832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 13842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 13882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: calcFrameClass 13892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 13902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: 13922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: INT* frameClass, INT* frameClassOld, INT tranFlag, INT* spreadFlag) 13942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 13962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 13972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 13982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 13992228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectcalcFrameClass (FRAME_CLASS *frameClass, FRAME_CLASS *frameClassOld, INT tranFlag, 14002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *spreadFlag) 14012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 14022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (*frameClassOld) { 14042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXFIXonly: 14052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXFIX: 14062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranFlag) *frameClass = FIXVAR; 14072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else *frameClass = FIXFIX; 14082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 14092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXVAR: 14102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranFlag) { *frameClass = VARVAR; *spreadFlag = 0; } 14112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 14122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (*spreadFlag) *frameClass = VARVAR; 14132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else *frameClass = VARFIX; 14142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 14152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 14162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARFIX: 14172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranFlag) *frameClass = FIXVAR; 14182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else *frameClass = FIXFIX; 14192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 14202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARVAR: 14212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (tranFlag) { *frameClass = VARVAR; *spreadFlag = 0; } 14222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 14232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (*spreadFlag) *frameClass = VARVAR; 14242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else *frameClass = VARFIX; 14252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 14262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 14272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project }; 14282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *frameClassOld = *frameClass; 14302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 14312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 14352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: specialCase 14362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 14372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: 14392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: spreadFlag 14412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project allowSpread 14422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord 14432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord 14442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq 14452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq 14462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project parts 14472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project d 14482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 14502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 14522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 14532228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectspecialCase (INT *spreadFlag, INT allowSpread, INT *v_bord, 14542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bord, INT *v_freq, INT *length_v_freq, INT *parts, 14552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT d) 14562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 14572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT L; 14582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project L = *length_v_bord; 14602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (allowSpread) { /* add one "step 8" */ 14622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *spreadFlag = 1; 14632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_bord, length_v_bord, v_bord[L - 1] + 8); 14642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_freq, length_v_freq, 1); 14652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project (*parts)++; 14662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 14672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 14682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (d == 1) { /* stretch one slot */ 14692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_bord = L - 1; 14702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *length_v_freq = L - 1; 14712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 14722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 14732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if ((v_bord[L - 1] - v_bord[L - 2]) > 2) { /* compress one quant step */ 14742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord[L - 1] = v_bord[L - 1] - 2; 14752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq[*length_v_freq - 1] = 0; /* use low res for short segment */ 14762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 14772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 14782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 14792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 14802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 14842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: calcCmonBorder 14852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 14862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: 14882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: i_cmon 14902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_tran 14912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord 14922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord 14932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project tran 14942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 14962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 14972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 14982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 14992228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectcalcCmonBorder (INT *i_cmon, INT *i_tran, INT *v_bord, INT *length_v_bord, 15002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT tran, INT bufferFrameStart, INT numberTimeSlots) 15012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ /* FH 00-06-26 */ 15022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT i; 15032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_bord; i++) 15052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_bord[i] >= bufferFrameStart + numberTimeSlots) { /* FH 00-06-26 */ 15062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_cmon = i; 15072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 15082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 15092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* keep track of transient: */ 15112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < *length_v_bord; i++) 15122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (v_bord[i] >= tran) { 15132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_tran = i; 15142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 15152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 15162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else 15172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_tran = EMPTY; 15182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 15192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 15212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: keepForFollowUp 15222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 15232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: 15252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: v_bordFollow 15272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bordFollow 15282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freqFollow 15292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freqFollow 15302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_tranFollow 15312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_fillFollow 15322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord 15332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord 15342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq 15352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_cmon 15362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_tran 15372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project parts) 15382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 15402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 15422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 15432228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectkeepForFollowUp (INT *v_bordFollow, INT *length_v_bordFollow, 15442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_freqFollow, INT *length_v_freqFollow, 15452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *i_tranFollow, INT *i_fillFollow, INT *v_bord, 15462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *length_v_bord, INT *v_freq, INT i_cmon, INT i_tran, 15472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT parts, INT numberTimeSlots) 15482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ /* FH 00-06-26 */ 15492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT L, i, j; 15502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project L = *length_v_bord; 15522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project (*length_v_bordFollow) = 0; 15542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project (*length_v_freqFollow) = 0; 15552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (j = 0, i = i_cmon; i < L; i++, j++) { 15572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bordFollow[j] = v_bord[i] - numberTimeSlots; /* FH 00-06-26 */ 15582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freqFollow[j] = v_freq[i]; 15592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project (*length_v_bordFollow)++; 15602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project (*length_v_freqFollow)++; 15612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 15622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (i_tran != EMPTY) 15632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_tranFollow = i_tran - i_cmon; 15642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else 15652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_tranFollow = EMPTY; 15662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project *i_fillFollow = L - (parts - 1) - i_cmon; 15672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 15692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 15712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: calcCtrlSignal 15722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 15732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: 15752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: hSbrGrid 15772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project frameClass 15782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_bord 15792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord 15802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_freq 15812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq 15822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_cmon 15832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i_tran 15842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project spreadFlag 15852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nL 15862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none 15882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 15902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 15912228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectcalcCtrlSignal (HANDLE_SBR_GRID hSbrGrid, 15922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FRAME_CLASS frameClass, INT *v_bord, INT length_v_bord, INT *v_freq, 15932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT length_v_freq, INT i_cmon, INT i_tran, INT spreadFlag, 15942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT nL) 15952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 15962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 15982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT i, r, a, n, p, b, aL, aR, ntot, nmax, nR; 15992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_f = hSbrGrid->v_f; 16012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_fLR = hSbrGrid->v_fLR; 16022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_r = hSbrGrid->bs_rel_bord; 16032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_rL = hSbrGrid->bs_rel_bord_0; 16042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_rR = hSbrGrid->bs_rel_bord_1; 16052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT length_v_r = 0; 16072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT length_v_rR = 0; 16082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT length_v_rL = 0; 16092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (frameClass) { 16112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXVAR: 16122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* absolute border: */ 16132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project a = v_bord[i_cmon]; 16152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* relative borders: */ 16172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_r = 0; 16182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i = i_cmon; 16192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project while (i >= 1) { 16212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project r = v_bord[i] - v_bord[i - 1]; 16222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_r, &length_v_r, r); 16232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i--; 16242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 16252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* number of relative borders: */ 16282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project n = length_v_r; 16292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* freq res: */ 16322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < i_cmon; i++) 16332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_f[i] = v_freq[i_cmon - 1 - i]; 16342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_f[i_cmon] = 1; 16352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* pointer: */ 16372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project p = (i_cmon >= i_tran && i_tran != EMPTY) ? (i_cmon - i_tran + 1) : (0) ; 16382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->frameClass = frameClass; 16402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_abs_bord = a; 16412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->n = n; 16422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->p = p; 16432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 16452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARFIX: 16462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* absolute border: */ 16472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project a = v_bord[0]; 16482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* relative borders: */ 16502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_r = 0; 16512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 1; i < length_v_bord; i++) { 16532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project r = v_bord[i] - v_bord[i - 1]; 16542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_r, &length_v_r, r); 16552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 16562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* number of relative borders: */ 16582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project n = length_v_r; 16592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* freq res: */ 16612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (v_f, v_freq, length_v_freq * sizeof (INT)); 16622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* pointer: */ 16652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project p = (i_tran >= 0 && i_tran != EMPTY) ? (i_tran + 1) : (0) ; 16662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->frameClass = frameClass; 16682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_abs_bord = a; 16692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->n = n; 16702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->p = p; 16712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 16732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARVAR: 16742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (spreadFlag) { 16752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* absolute borders: */ 16762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project b = length_v_bord; 16772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project aL = v_bord[0]; 16792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project aR = v_bord[b - 1]; 16802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* number of relative borders: */ 16832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ntot = b - 2; 16842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nmax = 2; /* n: {0,1,2} */ 16862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (ntot > nmax) { 16872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nL = nmax; 16882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nR = ntot - nmax; 16892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 16902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 16912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nL = ntot; 16922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nR = 0; 16932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 16942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 16952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* relative borders: */ 16962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_rL = 0; 16972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 1; i <= nL; i++) { 16982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project r = v_bord[i] - v_bord[i - 1]; 16992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_rL, &length_v_rL, r); 17002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 17012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_rR = 0; 17032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i = b - 1; 17042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project while (i >= b - nR) { 17052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project r = v_bord[i] - v_bord[i - 1]; 17062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_rR, &length_v_rR, r); 17072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i--; 17082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 17092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* pointer (only one due to constraint in frame info): */ 17112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project p = (i_tran > 0 && i_tran != EMPTY) ? (b - i_tran) : (0) ; 17122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* freq res: */ 17142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < b - 1; i++) 17162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_fLR[i] = v_freq[i]; 17172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 17182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else { 17192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_bord = i_cmon + 1; 17212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_freq = i_cmon + 1; 17222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* absolute borders: */ 17252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project b = length_v_bord; 17262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project aL = v_bord[0]; 17282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project aR = v_bord[b - 1]; 17292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* number of relative borders: */ 17312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ntot = b - 2; 17322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nR = ntot - nL; 17332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* relative borders: */ 17352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_rL = 0; 17362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 1; i <= nL; i++) { 17372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project r = v_bord[i] - v_bord[i - 1]; 17382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_rL, &length_v_rL, r); 17392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 17402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project length_v_rR = 0; 17422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i = b - 1; 17432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project while (i >= b - nR) { 17442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project r = v_bord[i] - v_bord[i - 1]; 17452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKsbrEnc_AddRight (v_rR, &length_v_rR, r); 17462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project i--; 17472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 17482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* pointer (only one due to constraint in frame info): */ 17502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project p = (i_cmon >= i_tran && i_tran != EMPTY) ? (i_cmon - i_tran + 1) : (0) ; 17512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* freq res: */ 17532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < b - 1; i++) 17542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project v_fLR[i] = v_freq[i]; 17552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 17562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->frameClass = frameClass; 17582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_abs_bord_0 = aL; 17592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_abs_bord_1 = aR; 17602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_num_rel_0 = nL; 17612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->bs_num_rel_1 = nR; 17622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->p = p; 17632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 17652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 17672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* do nothing */ 17682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 17692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 17702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 17712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 17732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: createDefFrameInfo 17742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 17752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: Copies the default (static) frameInfo structs to the frameInfo 17772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project passed by reference; only used for FIXFIX frames 17782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: hFrameInfo - HANLDE_SBR_FRAME_INFO 17802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nEnv - INT 17812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nTimeSlots - INT 17822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: none; hSbrFrameInfo contains a copy of the default frameInfo 17842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 17852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Written: Andreas Schneider 17862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Revised: 17872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 17882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 17892228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectcreateDefFrameInfo(HANDLE_SBR_FRAME_INFO hSbrFrameInfo, INT nEnv, INT nTimeSlots) 17902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 17912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (nEnv) { 17922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 1: 17932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (nTimeSlots) { 17942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1920: 17952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo1_1920, sizeof (SBR_FRAME_INFO)); 17962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 17972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2048: 17982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo1_2048, sizeof (SBR_FRAME_INFO)); 17992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1152: 18012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo1_1152, sizeof (SBR_FRAME_INFO)); 18022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2304: 18042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo1_2304, sizeof (SBR_FRAME_INFO)); 18052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_512LD: 18072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo1_512LD, sizeof (SBR_FRAME_INFO)); 18082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 18102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(0); 18112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 18122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 2: 18142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (nTimeSlots) { 18152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1920: 18162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo2_1920, sizeof (SBR_FRAME_INFO)); 18172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2048: 18192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo2_2048, sizeof (SBR_FRAME_INFO)); 18202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1152: 18222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo2_1152, sizeof (SBR_FRAME_INFO)); 18232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2304: 18252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo2_2304, sizeof (SBR_FRAME_INFO)); 18262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_512LD: 18282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo2_512LD, sizeof (SBR_FRAME_INFO)); 18292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 18312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(0); 18322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 18332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 4: 18352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (nTimeSlots) { 18362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1920: 18372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo4_1920, sizeof (SBR_FRAME_INFO)); 18382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2048: 18402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo4_2048, sizeof (SBR_FRAME_INFO)); 18412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_1152: 18432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo4_1152, sizeof (SBR_FRAME_INFO)); 18442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_2304: 18462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo4_2304, sizeof (SBR_FRAME_INFO)); 18472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case NUMBER_TIME_SLOTS_512LD: 18492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDKmemcpy (hSbrFrameInfo, &frameInfo4_512LD, sizeof (SBR_FRAME_INFO)); 18502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 18522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(0); 18532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 18542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 18552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 18562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(0); 18572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 18582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 18592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project/******************************************************************************* 18622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Functionname: ctrlSignal2FrameInfo 18632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project ******************************************************************************* 18642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Description: Calculates frame_info struct from control signal. 18662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Arguments: hSbrGrid - source 18682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo - destination 18692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project Return: void; hSbrFrameInfo contains the updated FRAME_INFO struct 18712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project*******************************************************************************/ 18732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Projectstatic void 18742228e360595641dd906bf1773307f43d304f5b2The Android Open Source ProjectctrlSignal2FrameInfo (HANDLE_SBR_GRID hSbrGrid, 18752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project HANDLE_SBR_FRAME_INFO hSbrFrameInfo, 18762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT freq_res_fixfix) 18772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project{ 18782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT nEnv = 0, border = 0, i, k, p /*?*/; 18792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_r = hSbrGrid->bs_rel_bord; 18802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT *v_f = hSbrGrid->v_f; 18812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FRAME_CLASS frameClass = hSbrGrid->frameClass; 18832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT bufferFrameStart = hSbrGrid->bufferFrameStart; 18842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project INT numberTimeSlots = hSbrGrid->numberTimeSlots; 18852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (frameClass) { 18872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXFIX: 18882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project createDefFrameInfo(hSbrFrameInfo, hSbrGrid->bs_num_env, numberTimeSlots); 18892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 18902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* At this point all frequency resolutions are set to FREQ_RES_HIGH, so 18912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * only if freq_res_fixfix is set to FREQ_RES_LOW, they all have to be 18922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * changed. 18932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project * snd */ 18942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (freq_res_fixfix == FREQ_RES_LOW) { 18952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (i = 0; i < hSbrFrameInfo->nEnvelopes; i++) { 18962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->freqRes[i] = FREQ_RES_LOW; 18972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 18982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 18992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* ELD: store current frequency resolution */ 19002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrGrid->v_f[0] = hSbrFrameInfo->freqRes[0]; 19012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXVAR: 19042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARFIX: 19052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nEnv = hSbrGrid->n + 1; /* read n [SBR_NUM_BITS bits] */ /*? snd*/ 19062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(nEnv <= MAX_ENVELOPES_FIXVAR_VARFIX); 19072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nEnvelopes = nEnv; 19092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project border = hSbrGrid->bs_abs_bord; /* read the absolute border */ 19112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (nEnv == 1) 19132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nNoiseEnvelopes = 1; 19142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project else 19152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nNoiseEnvelopes = 2; 19162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 19202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* do nothing */ 19212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (frameClass) { 19252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case FIXVAR: 19262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[0] = bufferFrameStart; /* start-position of 1st envelope */ 19272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[nEnv] = border; 19292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (k = 0, i = nEnv - 1; k < nEnv - 1; k++, i--) { 19312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project border -= v_r[k]; 19322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[i] = border; 19332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* make either envelope nr. nEnv + 1 - p short; or don't shorten if p == 0 */ 19362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project p = hSbrGrid->p; 19372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (p == 0) { 19382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->shortEnv = 0; 19392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else { 19402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->shortEnv = nEnv + 1 - p; 19412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (k = 0, i = nEnv - 1; k < nEnv; k++, i--) { 19442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->freqRes[i] = (FREQ_RES)v_f[k]; 19452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* if either there is no short envelope or the last envelope is short... */ 19482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (p == 0 || p == 1) { 19492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[nEnv - 1]; 19502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else { 19512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[hSbrFrameInfo->shortEnv]; 19522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19542228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19552228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19562228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARFIX: 19572228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* in this case 'border' indicates the start of the 1st envelope */ 19582228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[0] = border; 19592228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19602228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (k = 0; k < nEnv - 1; k++) { 19612228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project border += v_r[k]; 19622228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[k + 1] = border; 19632228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19642228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19652228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[nEnv] = bufferFrameStart + numberTimeSlots; 19662228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19672228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project p = hSbrGrid->p; 19682228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (p == 0 || p == 1) { 19692228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->shortEnv = 0; 19702228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else { 19712228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->shortEnv = p - 1; 19722228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19732228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19742228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (k = 0; k < nEnv; k++) { 19752228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->freqRes[k] = (FREQ_RES)v_f[k]; 19762228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19772228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19782228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project switch (p) { 19792228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 0: 19802228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[1]; 19812228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19822228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case 1: 19832228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[nEnv - 1]; 19842228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19852228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 19862228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[hSbrFrameInfo->shortEnv]; 19872228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19882228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 19892228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 19902228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19912228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project case VARVAR: 19922228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project nEnv = hSbrGrid->bs_num_rel_0 + hSbrGrid->bs_num_rel_1 + 1; 19932228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project FDK_ASSERT(nEnv <= MAX_ENVELOPES_VARVAR); /* just to be sure */ 19942228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nEnvelopes = nEnv; 19952228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19962228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[0] = border = hSbrGrid->bs_abs_bord_0; 19972228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 19982228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (k = 0, i = 1; k < hSbrGrid->bs_num_rel_0; k++, i++) { 19992228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project border += hSbrGrid->bs_rel_bord_0[k]; 20002228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[i] = border; 20012228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20022228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20032228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project border = hSbrGrid->bs_abs_bord_1; 20042228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[nEnv] = border; 20052228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20062228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (k = 0, i = nEnv - 1; k < hSbrGrid->bs_num_rel_1; k++, i--) { 20072228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project border -= hSbrGrid->bs_rel_bord_1[k]; 20082228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->borders[i] = border; 20092228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20102228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20112228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project p = hSbrGrid->p; 20122228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (p == 0) { 20132228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->shortEnv = 0; 20142228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else { 20152228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->shortEnv = nEnv + 1 - p; 20162228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20172228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20182228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project for (k = 0; k < nEnv; k++) { 20192228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->freqRes[k] = (FREQ_RES)hSbrGrid->v_fLR[k]; 20202228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20212228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20222228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (nEnv == 1) { 20232228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nNoiseEnvelopes = 1; 20242228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[0] = hSbrGrid->bs_abs_bord_0; 20252228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrGrid->bs_abs_bord_1; 20262228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else { 20272228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->nNoiseEnvelopes = 2; 20282228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[0] = hSbrGrid->bs_abs_bord_0; 20292228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20302228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (p == 0 || p == 1) { 20312228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[nEnv - 1]; 20322228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else { 20332228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[hSbrFrameInfo->shortEnv]; 20342228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20352228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[2] = hSbrGrid->bs_abs_bord_1; 20362228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20372228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 20382228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20392228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project default: 20402228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project /* do nothing */ 20412228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project break; 20422228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20432228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 20442228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (frameClass == VARFIX || frameClass == FIXVAR) { 20452228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[0] = hSbrFrameInfo->borders[0]; 20462228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project if (nEnv == 1) { 20472228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[1] = hSbrFrameInfo->borders[nEnv]; 20482228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } else { 20492228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project hSbrFrameInfo->bordersNoise[2] = hSbrFrameInfo->borders[nEnv]; 20502228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20512228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project } 20522228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project} 20532228e360595641dd906bf1773307f43d304f5b2The Android Open Source Project 2054