Initial commit.
[libsalac.git] / src / lib / alac / codec / .svn / text-base / ALACDecoder.h.svn-base
blob7802eab031f3302d1eeb4db542eb6f38ff510aba
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  */
22         File:           ALACDecoder.h
25 #ifndef _ALACDECODER_H
26 #define _ALACDECODER_H
28 #if PRAGMA_ONCE
29 #pragma once
30 #endif
32 #include <stdint.h>
34 #include "ALACAudioTypes.h"
36 struct BitBuffer;
38 class ALACDecoder
40         public:
41                 ALACDecoder();
42                 ~ALACDecoder();
44                 int32_t Init( void * inMagicCookie, uint32_t inMagicCookieSize );
45                 int32_t Decode( struct BitBuffer * bits, uint8_t * sampleBuffer, uint32_t numSamples, uint32_t numChannels, uint32_t * outNumSamples );
47         public:
48                 // decoding parameters (public for use in the analyzer)
49                 ALACSpecificConfig              mConfig;
51         protected:
52                 int32_t FillElement( struct BitBuffer * bits );
53                 int32_t DataStreamElement( struct BitBuffer * bits );
55                 uint16_t                                        mActiveElements;
57                 // decoding buffers
58                 int32_t *                               mMixBufferU;
59                 int32_t *                               mMixBufferV;
60                 int32_t *                               mPredictor;
61                 uint16_t *                              mShiftBuffer;   // note: this points to mPredictor's memory but different
62                                                                                                 //               variable for clarity and type difference
65 #endif  /* _ALACDECODER_H */