1d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/* ------------------------------------------------------------------
2d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * Copyright (C) 1998-2009 PacketVideo
3d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *
4d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * you may not use this file except in compliance with the License.
6d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * You may obtain a copy of the License at
7d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *
8d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *
10d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * Unless required by applicable law or agreed to in writing, software
11d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * express or implied.
14d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * See the License for the specific language governing permissions
15d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * and limitations under the License.
16d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * -------------------------------------------------------------------
17d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber */
18d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/****************************************************************************************
19d49b526dd2009270cb15f7fe4e70b74673950608Andreas HuberPortions of this file are derived from the following 3GPP standard:
20d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
21d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    3GPP TS 26.073
22d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    Available from http://www.3gpp.org
24d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
25d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber(C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26d49b526dd2009270cb15f7fe4e70b74673950608Andreas HuberPermission to distribute, modify and use this file under the standard license
27d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huberterms listed above has been obtained from the copyright holder.
28d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber****************************************************************************************/
29d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*
30d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
31d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
32d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
33d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
34d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Filename: /audio/gsm-amr/c/src/sid_sync.c
35d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Functions: sid_sync_init
36d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            sid_sync_reset
37d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            sid_sync_exit
38d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            sid_sync_set_handover_debt
39d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            sid_sync
40d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
41d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     Date: 03/13/2002
42d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
43d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
44d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REVISION HISTORY
45d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
46d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description: Changed type definition of state pointer to 'void' for
47d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber              sid_sync_init, sid_sync_reset, sid_sync_exit, and sid_sync.
48d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber              Updated to PV coding template.
49d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
50d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description:  Replaced OSCL mem type functions and eliminated include
51d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber               files that now are chosen by OSCL definitions
52d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
53d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description:  Replaced "int" and/or "char" with OSCL defined types.
54d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
55d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description:
56d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
57d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
58d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber MODULE DESCRIPTION
59d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
60d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber This file contains the functions that initialize, reset, exit, and perform
61d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber SID synchronization.
62d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
63d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
64d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber*/
65d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
66d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
67d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*----------------------------------------------------------------------------
68d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; INCLUDES
69d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber----------------------------------------------------------------------------*/
70d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include <stdlib.h>
71d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
72d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "typedef.h"
73d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "basic_op.h"
74d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "mode.h"
75d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "sid_sync.h"
76d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
77d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*----------------------------------------------------------------------------
78d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; MACROS
79d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; [Define module specific macros here]
80d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber----------------------------------------------------------------------------*/
81d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
82d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
83d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*----------------------------------------------------------------------------
84d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; DEFINES
85d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; [Include all pre-processor statements here. Include conditional
86d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; compile variables also.]
87d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber----------------------------------------------------------------------------*/
88d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
89d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*----------------------------------------------------------------------------
90d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; LOCAL FUNCTION DEFINITIONS
91d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; [List function prototypes here]
92d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber----------------------------------------------------------------------------*/
93d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
94d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*----------------------------------------------------------------------------
95d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; LOCAL VARIABLE DEFINITIONS
96d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; [Variable declaration - defined here and used outside this module]
97d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber----------------------------------------------------------------------------*/
98d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
99d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
100d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*
101d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
102d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION NAME: sid_sync_init
103d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
104d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber INPUT AND OUTPUT DEFINITIONS
105d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
106d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Inputs:
107d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    state = pointer containing a pointer to the state structure used for
108d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            SID synchronization (void)
109d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
110d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Outputs:
111d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
112d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
113d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Returns:
114d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    return_value = status of sid_sync_reset function; -1, if state is pointing
115d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                   to a NULL address (int)
116d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
117d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Global Variables Used:
118d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
119d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
120d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Local Variables Needed:
121d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
122d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
123d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
124d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION DESCRIPTION
125d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
126d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber This function initialize one instance of the sid_sync module. It stores
127d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber the pointer to state struct in *st. This pointer has to be passed to sid_sync
128d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber in each call. This function returns 0 on success, otherwise, -1.
129d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
130d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
131d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REQUIREMENTS
132d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
133d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber None
134d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
135d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
136d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REFERENCES
137d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
138d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber sid_sync.c, UMTS GSM AMR speech codec, R99 - Version 3.2.0, March 2, 2001
139d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
140d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
141d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber PSEUDO-CODE
142d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
143d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
144d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber RESOURCES USED [optional]
145d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
146d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber When the code is written for a specific target processor the
147d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber the resources used should be documented below.
148d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
149d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber HEAP MEMORY USED: x bytes
150d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
151d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber STACK MEMORY USED: x bytes
152d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
153d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CLOCK CYCLES: (cycle count equation for this function) + (variable
154d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                used to represent cycle count for each subroutine
155d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                called)
156d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     where: (cycle count variable) = cycle count for [subroutine
157d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                                     name]
158d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
159d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
160d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CAUTION [optional]
161d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber [State any special notes, constraints or cautions for users of this function]
162d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
163d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
164d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber*/
165d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
166d49b526dd2009270cb15f7fe4e70b74673950608Andreas HuberWord16 sid_sync_init(void **state)
167d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber{
168d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    sid_syncState* s;
169d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
170d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    if (state == NULL)
171d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    {
172d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* fprintf(stderr, "sid_sync_init:invalid state parameter\n"); */
173d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        return -1;
174d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    }
175d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
176d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *state = NULL;
177d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
178d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /* allocate memory */
179d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    if ((s = (sid_syncState *)
180d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber             malloc(sizeof(sid_syncState))) == NULL)
181d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    {
182d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* fprintf(stderr,
183d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                "sid_sync_init: "
184d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                "can not malloc state structure\n"); */
185d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        return -1;
186d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    }
187d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    s->sid_update_rate = 8;
188d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
189d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *state = (void *)s;
190d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
191d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    return(sid_sync_reset(s));
192d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber}
193d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
194d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/****************************************************************************/
195d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
196d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*
197d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
198d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION NAME: sid_sync_reset
199d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
200d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber INPUT AND OUTPUT DEFINITIONS
201d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
202d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Inputs:
203d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    state = pointer to the state structure used for SID synchronization (void)
204d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
205d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Outputs:
206d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
207d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
208d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Returns:
209d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    return_value = 0 (int)
210d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
211d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Global Variables Used:
212d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
213d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
214d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Local Variables Needed:
215d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
216d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
217d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
218d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION DESCRIPTION
219d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
220d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber This function performs a reset of the sid_sync module by setting the state
221d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber memory to zero.
222d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
223d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
224d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REQUIREMENTS
225d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
226d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber None
227d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
228d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
229d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REFERENCES
230d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
231d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber sid_sync.c, UMTS GSM AMR speech codec, R99 - Version 3.2.0, March 2, 2001
232d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
233d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
234d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber PSEUDO-CODE
235d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
236d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
237d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber RESOURCES USED [optional]
238d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
239d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber When the code is written for a specific target processor the
240d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber the resources used should be documented below.
241d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
242d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber HEAP MEMORY USED: x bytes
243d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
244d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber STACK MEMORY USED: x bytes
245d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
246d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CLOCK CYCLES: (cycle count equation for this function) + (variable
247d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                used to represent cycle count for each subroutine
248d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                called)
249d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     where: (cycle count variable) = cycle count for [subroutine
250d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                                     name]
251d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
252d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
253d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CAUTION [optional]
254d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber [State any special notes, constraints or cautions for users of this function]
255d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
256d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
257d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber*/
258d49b526dd2009270cb15f7fe4e70b74673950608Andreas HuberWord16 sid_sync_reset(void *st)
259d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber{
260d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    sid_syncState *state = (sid_syncState *) st;
261d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
262d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    state->sid_update_counter = 3;
263d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    state->sid_handover_debt = 0;
264d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    state->prev_ft = TX_SPEECH_GOOD;
265d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
266d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    return 0;
267d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber}
268d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
269d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
270d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/****************************************************************************/
271d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
272d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*
273d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
274d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION NAME: sid_sync_exit
275d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
276d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber INPUT AND OUTPUT DEFINITIONS
277d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
278d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Inputs:
279d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    state = pointer containing a pointer to the state structure used for
280d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            SID synchronization (void)
281d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
282d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Outputs:
283d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
284d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
285d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Returns:
286d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
287d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
288d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Global Variables Used:
289d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
290d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
291d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Local Variables Needed:
292d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
293d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
294d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
295d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION DESCRIPTION
296d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
297d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber This function frees up the state structure used by sid_sync function. It
298d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber stores NULL in *state.
299d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
300d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
301d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REQUIREMENTS
302d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
303d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber None
304d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
305d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
306d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REFERENCES
307d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
308d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber sid_sync.c, UMTS GSM AMR speech codec, R99 - Version 3.2.0, March 2, 2001
309d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
310d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
311d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber PSEUDO-CODE
312d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
313d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
314d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber RESOURCES USED [optional]
315d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
316d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber When the code is written for a specific target processor the
317d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber the resources used should be documented below.
318d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
319d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber HEAP MEMORY USED: x bytes
320d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
321d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber STACK MEMORY USED: x bytes
322d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
323d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CLOCK CYCLES: (cycle count equation for this function) + (variable
324d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                used to represent cycle count for each subroutine
325d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                called)
326d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     where: (cycle count variable) = cycle count for [subroutine
327d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                                     name]
328d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
329d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
330d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CAUTION [optional]
331d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber [State any special notes, constraints or cautions for users of this function]
332d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
333d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
334d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber*/
335d49b526dd2009270cb15f7fe4e70b74673950608Andreas Hubervoid sid_sync_exit(void **state)
336d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber{
337d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    sid_syncState **st = (sid_syncState **) state;
338d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
339d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    if (st == NULL || *st == NULL)
340d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    {
341d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        return;
342d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    }
343d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
344d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /* deallocate memory */
345d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    free(*st);
346d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *st = NULL;
347d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
348d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    return;
349d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
350d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber}
351d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
352d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/****************************************************************************/
353d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
354d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*
355d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
356d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION NAME: sid_sync_set_handover_debt
357d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
358d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber INPUT AND OUTPUT DEFINITIONS
359d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
360d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Inputs:
361d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    st = pointer to the state structure used for SID synchronization
362d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber         (sid_syncState)
363d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    debtFrames = number of handover debt frames (Word16)
364d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
365d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Outputs:
366d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    st->sid_handover_debt is set to debtFrames
367d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
368d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Returns:
369d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    return_value = 0
370d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
371d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Global Variables Used:
372d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
373d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
374d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Local Variables Needed:
375d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
376d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
377d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
378d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION DESCRIPTION
379d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
380d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber This function updates the handover debt to debtFrames. Extra SID_UPD are
381d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber scheduled to update remote decoder CNI states, right after an handover.
382d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber This is primarily for use on MS UL side.
383d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
384d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
385d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REQUIREMENTS
386d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
387d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber None
388d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
389d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
390d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REFERENCES
391d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
392d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber sid_sync.c, UMTS GSM AMR speech codec, R99 - Version 3.2.0, March 2, 2001
393d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
394d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
395d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber PSEUDO-CODE
396d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
397d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
398d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber RESOURCES USED [optional]
399d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
400d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber When the code is written for a specific target processor the
401d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber the resources used should be documented below.
402d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
403d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber HEAP MEMORY USED: x bytes
404d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
405d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber STACK MEMORY USED: x bytes
406d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
407d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CLOCK CYCLES: (cycle count equation for this function) + (variable
408d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                used to represent cycle count for each subroutine
409d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                called)
410d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     where: (cycle count variable) = cycle count for [subroutine
411d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                                     name]
412d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
413d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
414d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CAUTION [optional]
415d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber [State any special notes, constraints or cautions for users of this function]
416d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
417d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
418d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber*/
419d49b526dd2009270cb15f7fe4e70b74673950608Andreas Hubervoid sid_sync_set_handover_debt(sid_syncState *st,
420d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                                Word16 debtFrames)
421d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber{
422d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /* debtFrames >= 0 */
423d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    st->sid_handover_debt = debtFrames;
424d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    return;
425d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber}
426d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
427d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
428d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/****************************************************************************/
429d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
430d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*
431d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
432d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION NAME: sid_sync
433d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
434d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber INPUT AND OUTPUT DEFINITIONS
435d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
436d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Inputs:
437d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    state = pointer to the state structure used for SID synchronization
438d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            (sid_syncState)
439d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    mode = codec mode (enum Mode)
440d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    tx_frame_type = pointer to TX frame type store (enum TXFrameType)
441d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
442d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Outputs:
443d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    tx_frame_type contains the new TX frame type
444d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
445d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Returns:
446d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
447d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
448d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Global Variables Used:
449d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
450d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
451d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Local Variables Needed:
452d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    None
453d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
454d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
455d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber FUNCTION DESCRIPTION
456d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
457d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber This function performs SID frame synchronization to ensure that the mode
458d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber only switches to a neighbouring mode.
459d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
460d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
461d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REQUIREMENTS
462d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
463d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber None
464d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
465d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
466d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REFERENCES
467d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
468d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber sid_sync.c, UMTS GSM AMR speech codec, R99 - Version 3.2.0, March 2, 2001
469d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
470d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
471d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber PSEUDO-CODE
472d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
473d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
474d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber RESOURCES USED [optional]
475d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
476d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber When the code is written for a specific target processor the
477d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber the resources used should be documented below.
478d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
479d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber HEAP MEMORY USED: x bytes
480d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
481d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber STACK MEMORY USED: x bytes
482d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
483d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CLOCK CYCLES: (cycle count equation for this function) + (variable
484d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                used to represent cycle count for each subroutine
485d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                called)
486d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     where: (cycle count variable) = cycle count for [subroutine
487d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                                     name]
488d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
489d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
490d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber CAUTION [optional]
491d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber [State any special notes, constraints or cautions for users of this function]
492d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
493d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
494d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber*/
495d49b526dd2009270cb15f7fe4e70b74673950608Andreas Hubervoid sid_sync(void *state,
496d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber              enum Mode mode,
497d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber              enum TXFrameType *tx_frame_type)
498d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber{
499d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
500d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    sid_syncState *st = (sid_syncState *) state;
501d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
502d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    if (mode == MRDTX)
503d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    {
504d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
505d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        st->sid_update_counter--;
506d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
507d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        if (st->prev_ft == TX_SPEECH_GOOD)
508d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        {
509d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            *tx_frame_type = TX_SID_FIRST;
510d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            st->sid_update_counter = 3;
511d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        }
512d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        else
513d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        {
514d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            /* TX_SID_UPDATE or TX_NO_DATA */
515d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            if ((st->sid_handover_debt > 0) &&
516d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                    (st->sid_update_counter > 2))
517d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            {
518d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                /* ensure extra updates are  properly delayed after
519d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                   a possible SID_FIRST */
520d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                *tx_frame_type = TX_SID_UPDATE;
521d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                st->sid_handover_debt--;
522d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            }
523d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            else
524d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            {
525d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                if (st->sid_update_counter == 0)
526d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                {
527d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                    *tx_frame_type = TX_SID_UPDATE;
528d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                    st->sid_update_counter = st->sid_update_rate;
529d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                }
530d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                else
531d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                {
532d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                    *tx_frame_type = TX_NO_DATA;
533d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                }
534d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber            }
535d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        }
536d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    }
537d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    else
538d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    {
539d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        st->sid_update_counter = st->sid_update_rate ;
540d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        *tx_frame_type = TX_SPEECH_GOOD;
541d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    }
542d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    st->prev_ft = *tx_frame_type;
543d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber}
544d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
545