1 /* 2 * Copyright (c) 2011 Apple Inc. All rights reserved. 3 * 4 * @APPLE_APACHE_LICENSE_HEADER_START@ 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License") ; 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 * @APPLE_APACHE_LICENSE_HEADER_END@ 19 */ 20 21 /* 22 File: ALACDecoder.h 23 */ 24 25 #ifndef _ALACDECODER_H 26 #define _ALACDECODER_H 27 28 #include <stdint.h> 29 30 #include "ALACAudioTypes.h" 31 32 struct BitBuffer ; 33 34 class ALACDecoder 35 { 36 public: 37 ALACDecoder () ; 38 ~ALACDecoder () ; 39 40 int32_t Init (void * inMagicCookie, uint32_t inMagicCookieSize) ; 41 int32_t Decode (struct BitBuffer * bits, uint8_t * sampleBuffer, uint32_t numSamples, uint32_t numChannels, uint32_t * outNumSamples) ; 42 43 public: 44 // decoding parameters (public for use in the analyzer) 45 ALACSpecificConfig mConfig ; 46 47 protected: 48 int32_t FillElement (struct BitBuffer * bits) ; 49 int32_t DataStreamElement (struct BitBuffer * bits) ; 50 51 uint16_t mActiveElements ; 52 53 // decoding buffers 54 int32_t * mMixBufferU ; 55 int32_t * mMixBufferV ; 56 int32_t * mPredictor ; 57 uint16_t * mShiftBuffer ; // note: this points to mPredictor's memory but different 58 // variable for clarity and type difference 59 } ; 60 61 #endif /* _ALACDECODER_H */ 62