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: alac_decoder.h 23 */ 24 25 #ifndef ALAC_DECODER_H 26 #define ALAC_DECODER_H 27 28 #include <stdint.h> 29 30 #include "ALACAudioTypes.h" 31 32 typedef enum 33 { 34 false = 0, 35 ALAC_TRUE = 1 36 } bool ; 37 38 struct BitBuffer ; 39 40 typedef struct alac_decoder 41 { 42 // decoding parameters (public for use in the analyzer) 43 ALACSpecificConfig mConfig ; 44 45 uint16_t mActiveElements ; 46 47 // decoding buffers 48 int32_t * mMixBufferU ; 49 int32_t * mMixBufferV ; 50 int32_t * mPredictor ; 51 uint16_t * mShiftBuffer ; // note: this points to mPredictor's memory but different 52 // variable for clarity and type difference 53 } alac_decoder ; 54 55 alac_decoder * alac_decoder_new (void) ; 56 void alac_decoder_delete (alac_decoder *) ; 57 58 int32_t alac_init (alac_decoder *p, void * inMagicCookie, uint32_t inMagicCookieSize) ; 59 int32_t alac_decode (alac_decoder *, struct BitBuffer * bits, uint8_t * sampleBuffer, uint32_t numSamples, uint32_t numChannels, uint32_t * outNumSamples) ; 60 61 #endif /* ALAC_DECODER_H */ 62