xref: /third_party/libsnd/src/ALAC/ALACDecoder.h (revision b815c7f3)
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
32struct BitBuffer ;
33
34class 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