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