1203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 2203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi/* ----------------------------------------------------------------------------------------------------------- 3203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviSoftware License for The Fraunhofer FDK AAC Codec Library for Android 4203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 5203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi� Copyright 1995 - 2015 Fraunhofer-Gesellschaft zur F�rderung der angewandten Forschung e.V. 6203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi All rights reserved. 7203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 8203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 1. INTRODUCTION 9203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviThe Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software that implements 10203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivithe MPEG Advanced Audio Coding ("AAC") encoding and decoding scheme for digital audio. 11203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviThis FDK AAC Codec software is intended to be used on a wide variety of Android devices. 12203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 13203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviAAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient general perceptual 14203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviaudio codecs. AAC-ELD is considered the best-performing full-bandwidth communications codec by 15203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviindependent studies and is widely deployed. AAC has been standardized by ISO and IEC as part 16203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviof the MPEG specifications. 17203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 18203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviPatent licenses for necessary patent claims for the FDK AAC Codec (including those of Fraunhofer) 19203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivimay be obtained through Via Licensing (www.vialicensing.com) or through the respective patent owners 20203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviindividually for the purpose of encoding or decoding bit streams in products that are compliant with 21203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivithe ISO/IEC MPEG audio standards. Please note that most manufacturers of Android devices already license 22203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivithese patent claims through Via Licensing or directly from the patent owners, and therefore FDK AAC Codec 23203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivisoftware may already be covered under those patent licenses when it is used for those licensed purposes only. 24203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 25203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviCommercially-licensed AAC software libraries, including floating-point versions with enhanced sound quality, 26203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviare also available from Fraunhofer. Users are encouraged to check the Fraunhofer website for additional 27203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviapplications information and documentation. 28203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 29203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi2. COPYRIGHT LICENSE 30203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 31203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviRedistribution and use in source and binary forms, with or without modification, are permitted without 32203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivipayment of copyright license fees provided that you satisfy the following conditions: 33203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 34203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviYou must retain the complete text of this software license in redistributions of the FDK AAC Codec or 35203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviyour modifications thereto in source code form. 36203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 37203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviYou must retain the complete text of this software license in the documentation and/or other materials 38203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviprovided with redistributions of the FDK AAC Codec or your modifications thereto in binary form. 39203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviYou must make available free of charge copies of the complete source code of the FDK AAC Codec and your 40203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivimodifications thereto to recipients of copies in binary form. 41203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 42203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviThe name of Fraunhofer may not be used to endorse or promote products derived from this library without 43203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviprior written permission. 44203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 45203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviYou may not charge copyright license fees for anyone to use, copy or distribute the FDK AAC Codec 46203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivisoftware or your modifications thereto. 47203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 48203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviYour modified versions of the FDK AAC Codec must carry prominent notices stating that you changed the software 49203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviand the date of any change. For modified versions of the FDK AAC Codec, the term 50203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi"Fraunhofer FDK AAC Codec Library for Android" must be replaced by the term 51203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi"Third-Party Modified Version of the Fraunhofer FDK AAC Codec Library for Android." 52203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 53203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi3. NO PATENT LICENSE 54203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 55203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviNO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without limitation the patents of Fraunhofer, 56203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviARE GRANTED BY THIS SOFTWARE LICENSE. Fraunhofer provides no warranty of patent non-infringement with 57203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivirespect to this software. 58203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 59203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviYou may use this FDK AAC Codec software or modifications thereto only for purposes that are authorized 60203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviby appropriate patent licenses. 61203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 62203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi4. DISCLAIMER 63203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 64203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviThis FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright holders and contributors 65203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi"AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, including but not limited to the implied warranties 66203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviof merchantability and fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 67203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviCONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, or consequential damages, 68203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviincluding but not limited to procurement of substitute goods or services; loss of use, data, or profits, 69203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivior business interruption, however caused and on any theory of liability, whether in contract, strict 70203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviliability, or tort (including negligence), arising in any way out of the use of this software, even if 71203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviadvised of the possibility of such damage. 72203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 73203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi5. CONTACT INFORMATION 74203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 75203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviFraunhofer Institute for Integrated Circuits IIS 76203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviAttention: Audio and Multimedia Departments - FDK AAC LL 77203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviAm Wolfsmantel 33 78203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi91058 Erlangen, Germany 79203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 80203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviwww.iis.fraunhofer.de/amm 81203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviamm-info@iis.fraunhofer.de 82203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi----------------------------------------------------------------------------------------------------------- */ 83203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 84203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi/***************************** MPEG-4 AAC Decoder ************************** 85203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 86203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi Author(s): Christian Griebel 87203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi Description: DRM transport stuff 88203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 89203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi******************************************************************************/ 90203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 91203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi#include "tpdec_drm.h" 92203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 93203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 94203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi#include "FDK_bitstream.h" 95203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 96203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 97203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 98203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivivoid drmRead_CrcInit(HANDLE_DRM pDrm) /*!< pointer to drm crc info stucture */ 99203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi{ 100203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi FDK_ASSERT(pDrm != NULL); 101203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 102203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi FDKcrcInit(&pDrm->crcInfo, 0x001d, 0xFFFF, 8); 103203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi} 104203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 105203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Triviint drmRead_CrcStartReg( 106203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi HANDLE_DRM pDrm, /*!< pointer to drm stucture */ 107203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi HANDLE_FDK_BITSTREAM hBs, /*!< handle to current bit buffer structure */ 108203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi int mBits /*!< number of bits in crc region */ 109203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi ) 110203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi{ 111203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi FDK_ASSERT(pDrm != NULL); 112203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 113203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi FDKcrcReset(&pDrm->crcInfo); 114203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 115203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi pDrm->crcReadValue = FDKreadBits(hBs, 8); 116203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 117203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi return ( FDKcrcStartReg(&pDrm->crcInfo, hBs, mBits) ); 118203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 119203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi} 120203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 121203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivivoid drmRead_CrcEndReg( 122203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi HANDLE_DRM pDrm, /*!< pointer to drm crc info stucture */ 123203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi HANDLE_FDK_BITSTREAM hBs, /*!< handle to current bit buffer structure */ 124203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi int reg /*!< crc region */ 125203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi ) 126203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi{ 127203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi FDK_ASSERT(pDrm != NULL); 128203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 129203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi FDKcrcEndReg(&pDrm->crcInfo, hBs, reg); 130203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi} 131203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 132203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel TriviTRANSPORTDEC_ERROR drmRead_CrcCheck( HANDLE_DRM pDrm ) 133203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi{ 134203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi TRANSPORTDEC_ERROR ErrorStatus = TRANSPORTDEC_OK; 135203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi USHORT crc; 136203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 137203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi crc = FDKcrcGetCRC(&pDrm->crcInfo) ^ 0xFF; 138203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi if (crc != pDrm->crcReadValue) 139203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi { 140203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi return (TRANSPORTDEC_CRC_ERROR); 141203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi } 142203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 143203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi return (ErrorStatus); 144203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi} 145203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 146203e3f28fbebec7011342017fafc2a0bda0ce530Jean-Michel Trivi 147