aboutsummaryrefslogtreecommitdiff
path: root/Src/aacdec/incs/mp4dec_asc/audiospecificconfig_c.h
blob: cea33cdb426c60616aab71228b66417853220cac (plain) (blame)
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*************************************************************************** 
 *
 *               (C) copyright Fraunhofer - IIS (1998)
 *                        All Rights Reserved
 *
 *   $Header: /cvs/root/winamp/aacdec/incs/mp4dec_asc/audiospecificconfig_c.h,v 1.3 2012/05/08 20:16:50 audiodsp Exp $
 *   project : MPEG-4 Audio Decoder
 *   contents/description: interface to audioSpecificConfig
 *
 *   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 __AUDIOSPECIFICCONFIG_C_H__
#define __AUDIOSPECIFICCONFIG_C_H__

#include "mp4dec_asc/audioobjecttypes.h"
#include "mp4dec_asc/gaspecificconfig_c.h"
#include "mp4dec_asc/celpspecificconfig_c.h"
#include "mp4dec_asc/hvxcspecificconfig_c.h"
#include "mp4dec_asc/spatialspecificconfig_c.h"
#include "mp4dec_asc/slsspecificconfig_c.h"
#include "mp4dec_asc/mpeg12specificconfig_c.h"
#include "mp4dec_asc/epspecificconfig_c.h"
#include "mp4dec_asc/eldspecificconfig_c.h"

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

struct CSBitStream;

typedef struct CSAudioSpecificConfig {

  AUDIO_OBJECT_TYPE m_aot;
  AUDIO_OBJECT_TYPE m_origAot;
  unsigned int      m_samplingFrequencyIndex;
  unsigned int      m_samplingFrequency;
  int               m_channelConfiguration;
  int               m_epConfig;
  unsigned int      m_directMapping;

  /* SBR/PS extension */
  int               m_sbrPresentFlag;
  int               m_psPresentFlag;
  int               m_mpsPresentFlag;
  int               m_saocPresentFlag;
  int               m_ldmpsPresentFlag;
  AUDIO_OBJECT_TYPE m_extensionAudioObjectType;
  unsigned int      m_extensionSamplingFrequencyIndex;
  unsigned int      m_extensionSamplingFrequency;

  /* */
  unsigned int m_nrOfStreams;
  unsigned int m_avgBitRate;
  unsigned int m_layer;

  /* derived values */
  int          m_channels;
  unsigned int m_samplesPerFrame;

  /* aot-specific asc's */
  CSGaSpecificConfig      m_gaSpecificConfig;
  CSCelpSpecificConfig    m_celpSpecificConfig;
  HvxcSpecificConfig      m_hvxcSpecificConfig;
  CSSpatialSpecificConfig m_mpegsSpecificConfig;
  CSSpatialSpecificConfig m_saocSpecificConfig;
  CSSpatialSpecificConfig m_ldmpegsSpecificConfig;
  CSMpeg12SpecificConfig  m_mpeg12SpecificConfig;
  CSSlsSpecificConfig     m_slsSpecificConfig;
  CSEldSpecificConfig     m_eldSpecificConfig;
  CEpSpecificConfig       m_epSpecificConfig;

} CSAudioSpecificConfig, *CSAudioSpecificConfigPtr;

int AudioSpecificConfig_ParseLatm_amv0(
                                       CSAudioSpecificConfigPtr self, 
                                       struct CSBitStream *bs
                                       );

int AudioSpecificConfig_ParseLatm_amv1(
                                       CSAudioSpecificConfigPtr self, 
                                       struct CSBitStream *bs
                                       );

int AudioSpecificConfig_ParseExt(
                                 CSAudioSpecificConfigPtr self, 
                                 CSAudioSpecificConfigPtr baselayer, 
                                 struct CSBitStream       *bs, 
                                 unsigned int             streamsPerLayer, 
                                 unsigned int             avgBitrate,
                                 unsigned int             latm_flag
                                 );

void  AudioSpecificConfig_Copy(
                               CSAudioSpecificConfigPtr self, 
                               const CSAudioSpecificConfigPtr asc
                               );

int AudioSpecificConfig_Compare(
                                const CSAudioSpecificConfigPtr self, 
                                const CSAudioSpecificConfigPtr asc
                                );

#ifdef ASC_PRINT
int AudioSpecificConfig_Print(
                              const CSAudioSpecificConfigPtr asc,
                              char string[]
                              );
#endif

AUDIO_OBJECT_TYPE __GetAotFromAsc(CSAudioSpecificConfigPtr asc);
int __GetLayerFromAsc(
                      CSAudioSpecificConfigPtr asc, 
                      CSAudioSpecificConfigPtr asc_base
                      );
char* __GetAotString(AUDIO_OBJECT_TYPE aot);

#ifdef __cplusplus
}
#endif

#endif /* __AUDIOSPECIFICCONFIG_H__ */