1f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/* ------------------------------------------------------------------
2f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Copyright (C) 1998-2009 PacketVideo
3f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *
4f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * you may not use this file except in compliance with the License.
6f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * You may obtain a copy of the License at
7f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *
8f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *
10f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Unless required by applicable law or agreed to in writing, software
11f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * express or implied.
14f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * See the License for the specific language governing permissions
15f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * and limitations under the License.
16f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * -------------------------------------------------------------------
17f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber */
18f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*
19f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
20f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Pathname: ./src/set_mc_info.c
21f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
22f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
23f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REVISION HISTORY
24f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
25f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Description: Modified per review comments
26f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
27f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Description: Change audioObjectType from Int to enum types
28f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
29f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Who:                               Date:
30f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Description:
31f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
32f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
33f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber INPUT AND OUTPUT DEFINITIONS
34f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
35f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Inputs:
36f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info    = pointer to structure MC_Info that holds information of
37f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  multiple channels' configurations
38f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  Data type pointer to MC_Info
39f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
40f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    objectType  = variable that holds the Audio Object Type of current
41f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  file/bitstream.
42f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  Data type Int
43f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
44f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    sampling_rate_idx = variable that indicates the sampling rate of the
45f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                        source file being encoded
46f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                        Data Type Int
47f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
48f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    tag         = variable that stores the element instance tag of the
49f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  first (front) channel element.
50f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  Data type Int
51f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
52f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    is_cpe      = variable that indicates if a Channel Pair Element (CPE)
53f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  or a Single Channel Element (SCE) is used.
54f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  Data type Int (maybe Boolean)
55f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
56f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pWinSeqInfo = array of pointers that points to structures holding
57f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  frame information of long and short window sequences.
58f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                  Data type FrameInfo
59f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
60f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pSfbwidth128 = array that will store the scalefactor bandwidth of
61f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                   short window sequence frame.
62f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                   Data type Int array
63f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
64f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Local Stores/Buffers/Pointers Needed:
65f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    None
66f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
67f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Global Stores/Buffers/Pointers Needed:
68f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    None
69f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
70f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Outputs:
71f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    return SUCCESS
72f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
73f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Pointers and Buffers Modified:
74f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info->nch           contains the number of channels depending
75f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            upon if CPE or SCE is used
76f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info->objectType    contents updated with the decoded Audio
77f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            Object Type
78f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
79f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info->ch_info.tag   contents updated with the value of decoded
80f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            channel element tag
81f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
82f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    PMC_Info->ch_info.cpe   contents updated depending upon if CPE or
83f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            SCE is used
84f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
85f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pWinSeqInfo             contents updated by calling infoinit if
86f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            sampling_rate_idx is different from
87f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            previous value
88f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
89f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pSfbWidth128            contents updated by calling infoinit if
90f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            sampling_rate_idx is different from
91f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                            previous value
92f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
93f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Local Stores Modified:
94f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    None
95f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
96f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Global Stores Modified:
97f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    None
98f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
99f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
100f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber FUNCTION DESCRIPTION
101f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
102f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber This function initializes the channel configuration information. The
103f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber structure MC_Info stores the number of channels, channel element tag.
104f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber If sampling rate index is different from the previous value,
105f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber The frame information will be updated by calling infoinit.c
106f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
107f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
108f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REQUIREMENTS
109f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
110f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber This function shall update the relevant information on channel configs
111f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
112f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
113f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REFERENCES
114f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
115f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber (1) MPEG-2 NBC Audio Decoder
116f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   "This software module was originally developed by AT&T, Dolby
117f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   Laboratories, Fraunhofer Gesellschaft IIS in the course of development
118f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   of the MPEG-2 NBC/MPEG-4 Audio standard ISO/IEC 13818-7, 14496-1,2 and
119f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   3. This software module is an implementation of a part of one or more
120f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   MPEG-2 NBC/MPEG-4 Audio tools as specified by the MPEG-2 NBC/MPEG-4
121f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   Audio standard. ISO/IEC  gives users of the MPEG-2 NBC/MPEG-4 Audio
122f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   standards free license to this software module or modifications thereof
123f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   for use in hardware or software products claiming conformance to the
124f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   MPEG-2 NBC/MPEG-4 Audio  standards. Those intending to use this software
125f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   module in hardware or software products are advised that this use may
126f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   infringe existing patents. The original developer of this software
127f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   module and his/her company, the subsequent editors and their companies,
128f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   and ISO/IEC have no liability for use of this software module or
129f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   modifications thereof in an implementation. Copyright is not released
130f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   for non MPEG-2 NBC/MPEG-4 Audio conforming products.The original
131f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   developer retains full right to use the code for his/her own purpose,
132f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   assign or donate the code to a third party and to inhibit third party
133f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   from using the code for non MPEG-2 NBC/MPEG-4 Audio conforming products.
134f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   This copyright notice must be included in all copies or derivative
135f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   works."
136f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   Copyright(c)1996.
137f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
138f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber  (2) ISO/IEC 14496-3: 1999(E)
139f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    Subpart 1   p20 Table 1.6.3
140f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    Subpart 4   p30 5.1.2.1
141f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    Subpart 4   p31 4.5.2.1.1
142f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
143f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
144f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber PSEUDO-CODE
145f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
146f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info->nch   = 0;
147f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
148f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info->profile = objectType;
149f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
150f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    IF (pMC_Info->sampling_rate_idx != sampling_rate_idx)
151f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    THEN
152f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pMC_Info->sampling_rate_idx = sampling_rate_idx;
153f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
154f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        CALL infoinit(
155f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                samp_rate_idx = sampling_rate_idx
156f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                ppWin_seq_info= pWinSeqInfo
157f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                pSfbwidth128  = pSfbwidth128)
158f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        MODIFYING(pWinSeqInfo, pSfbwidth128)
159f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        RETURNING(None)
160f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    ENDIF
161f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
162f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pCh_Info = &pMC_Info->ch_info[0];
163f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pCh_Info->tag = tag;
164f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
165f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    IF (is_cpe == FALSE)
166f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    THEN
167f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pCh_Info->cpe = FALSE;
168f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
169f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pMC_Info->nch = 1;
170f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
171f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    ELSE
172f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pCh_Info->cpe = TRUE;
173f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pCh_Info = &pMC_Info->ch_info[1];
174f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pCh_Info->tag = tag;
175f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pCh_Info->cpe = TRUE;
176f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
177f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pMC_Info->nch = 2;
178f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
179f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    ENDIF
180f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
181f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    RETURN(SUCCESS)
182f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
183f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
184f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber RESOURCES USED
185f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber   When the code is written for a specific target processor the
186f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     the resources used should be documented below.
187f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
188f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber STACK USAGE: [stack count for this module] + [variable to represent
189f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber          stack usage for each subroutine called]
190f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
191f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     where: [stack usage variable] = stack usage for [subroutine
192f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber         name] (see [filename].ext)
193f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
194f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber DATA MEMORY USED: x words
195f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
196f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber PROGRAM MEMORY USED: x words
197f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
198f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber CLOCK CYCLES: [cycle count equation for this module] + [variable
199f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber           used to represent cycle count for each subroutine
200f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber           called]
201f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
202f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     where: [cycle count variable] = cycle count for [subroutine
203f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        name] (see [filename].ext)
204f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
205f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
206f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber*/
207f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
208f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
209f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
210f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; INCLUDES
211f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
212f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber#include    "pv_audio_type_defs.h"
213f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber#include    "set_mc_info.h"
214f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber#include    "huffman.h"
215f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber#include    "s_ch_info.h"
216f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
217f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
218f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; MACROS
219f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Define module specific macros here
220f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
221f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
222f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
223f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
224f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; DEFINES
225f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Include all pre-processor statements here. Include conditional
226f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; compile variables also.
227f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
228f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
229f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
230f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; LOCAL FUNCTION DEFINITIONS
231f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Function Prototype declaration
232f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
233f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
234f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
235f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; LOCAL STORE/BUFFER/POINTER DEFINITIONS
236f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Variable declaration - defined here and used outside this module
237f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
238f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
239f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
240f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; EXTERNAL FUNCTION REFERENCES
241f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Declare functions defined elsewhere and referenced in this module
242f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
243f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
244f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
245f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
246f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Declare variables used in this module but defined elsewhere
247f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
248f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
249f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
250f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; FUNCTION CODE
251f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
252f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberInt set_mc_info(
253f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    MC_Info     *pMC_Info,
254f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    const tMP4AudioObjectType audioObjectType, /* used to be profile */
255f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    const Int    sampling_rate_idx,
256f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    const Int    tag,   /* always pass-in last element's value */
257f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    const Int    is_cpe,
258f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    FrameInfo   *pWinSeqInfo[],
259f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    Int          sfbwidth128[]
260f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber)
261f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber{
262f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    Ch_Info *pCh_Info; /*optional task: eliminate this structure */
263f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
264f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    /*
265f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     *   audioObjectType and sampling rate
266f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     *   re-configure if new sampling rate
267f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     *
268f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     */
269f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info->audioObjectType = audioObjectType;
270f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
271f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    if (pMC_Info->sampling_rate_idx != sampling_rate_idx)
272f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    {
273f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pMC_Info->sampling_rate_idx = sampling_rate_idx;
274f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
275f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        Int status;
276f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        status = infoinit(sampling_rate_idx,
277f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                          pWinSeqInfo,
278f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                          sfbwidth128);
279f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        if (SUCCESS != status)
280f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        {
281f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            return 1;
282f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        }
283f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    }
284f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
285f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    /*
286f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     * first setup values for mono config, Single Channel Element (SCE)
287f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     * then if stereo, go inside if(is_cpe != FALSE) branch to setup
288f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     * values for stereo.
289f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     * set the channel counts
290f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     * save tag for left channel
291f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber     */
292f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pMC_Info->nch   = 1 + is_cpe;
293f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
294f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pCh_Info = &pMC_Info->ch_info[0];
295f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pCh_Info->tag = tag;
296f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    pCh_Info->cpe = is_cpe;
297f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
298f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    /* This if branch maybe deleted in the future */
299f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    if (is_cpe != FALSE)
300f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    {
301f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        /* Channel Pair Element (CPE) */
302f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        /* right channel*/
303f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pCh_Info = &pMC_Info->ch_info[1];
304f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        pCh_Info->cpe = TRUE;
305f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
306f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    }
307f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
308f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    return(SUCCESS); /* possible future error checkings */
309f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber}
310