1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
/***************************** MPEG-4 AAC Decoder **************************
(C) Copyright Fraunhofer IIS (2004)
All Rights Reserved
Please be advised that this software and/or program delivery is
Confidential Information of Fraunhofer and subject to and covered by the
Fraunhofer IIS Software Evaluation Agreement
between Google Inc. and Fraunhofer
effective and in full force since March 1, 2012.
You may use this software and/or program only under the terms and
conditions described in the above mentioned Fraunhofer IIS Software
Evaluation Agreement. Any other and/or further use requires a separate agreement.
$Id$
Author(s): Josef Hoepfl
Description:
This software and/or program is protected by copyright law and international
treaties. Any reproduction or distribution of this software and/or program,
or any portion of it, may result in severe civil and criminal penalties, and
will be prosecuted to the maximum extent possible under law.
******************************************************************************/
#ifndef CHANNEL_H
#define CHANNEL_H
#include "common_fix.h"
#include "FDK_bitstream.h"
#include "channelinfo.h"
#include "tpdec_lib.h"
/**
* \brief Init codeBook SFB indices (section data) with HCB_ESC. Useful for bitstreams
* which do not have any section data, but still SFB's (scale factor bands). This has
* the effect that upto the amount of transmitted SFB are treated as non-zero.
* \param pAacDecoderChannelInfo channel info structure containing a valid icsInfo struct.
*/
void CChannel_CodebookTableInit(CAacDecoderChannelInfo *pAacDecoderChannelInfo);
/**
* \brief decode a channel element. To be called after CChannelElement_Read()
* \param pAacDecoderChannelInfo pointer to channel data struct. Depending on el_channels either one or two.
* \param pSamplingRateInfo pointer to sample rate information structure
* \param el_channels amount of channels of the element to be decoded.
* \param output pointer to time domain output buffer (ACELP)
* \param stride factor for accessing output
*/
void CChannelElement_Decode ( CAacDecoderChannelInfo *pAacDecoderChannelInfo[2],
CAacDecoderStaticChannelInfo *pAacDecoderStaticChannelInfo[2],
SamplingRateInfo *pSamplingRateInfo,
UINT flags,
int el_channels );
/**
* \brief Read channel element of given type from bitstream.
* \param hBs bitstream handle to access bitstream data.
* \param pAacDecoderChannelInfo pointer array to store channel information.
* \param aot Audio Object Type
* \param pSamplingRateInfo sampling rate info table.
* \param flags parser guidance flags
* \param numberOfChannels amoun of channels contained in the object to be parsed.
* \param epConfig the current epConfig value obtained from the Audio Specific Config.
* \param pTp transport decoder handle required for ADTS CRC checking.
* ...
* \return an AAC_DECODER_ERROR error code.
*/
AAC_DECODER_ERROR CChannelElement_Read(HANDLE_FDK_BITSTREAM hBs,
CAacDecoderChannelInfo *pAacDecoderChannelInfo[],
CAacDecoderStaticChannelInfo *pAacDecoderStaticChannelInfo[],
const AUDIO_OBJECT_TYPE aot,
const SamplingRateInfo *pSamplingRateInfo,
const UINT flags,
const UINT frame_length,
const UCHAR numberOfChannels,
const SCHAR epConfig,
HANDLE_TRANSPORTDEC pTpDec
);
#endif /* #ifndef CHANNEL_H */
|