1/* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18/****************************************************************************************
19Portions of this file are derived from the following 3GPP standard:
20
21    3GPP TS 26.073
22    ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23    Available from http://www.3gpp.org
24
25(C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26Permission to distribute, modify and use this file under the standard license
27terms listed above has been obtained from the copyright holder.
28****************************************************************************************/
29/*
30 Pathname: ./gsm-amr/c/src/extract_l.c
31
32------------------------------------------------------------------------------
33 REVISION HISTORY
34
35 Description: Created separate file for the extract_l function. Sync'ed up
36          with the current template and fixed tabs.
37
38 Description: Removed conditional code that updates WMOPS counter
39
40 Who:                       Date:
41 Description:
42
43------------------------------------------------------------------------------
44 INPUT AND OUTPUT DEFINITIONS
45
46 Inputs:
47    L_var1 = 32 bit long signed integer (Word32 ) whose value falls
48             in the range : 0x8000 0000 <= L_var1 <= 0x7fff ffff.
49
50 Local Stores/Buffers/Pointers Needed:
51    None
52
53 Global Stores/Buffers/Pointers Needed:
54    None
55
56 Outputs:
57    L_var1 = Most significant word of input (Word16)
58
59 Pointers and Buffers Modified:
60    None
61
62 Local Stores Modified:
63    None
64
65 Global Stores Modified:
66    None
67
68------------------------------------------------------------------------------
69 FUNCTION DESCRIPTION
70
71 This function returns the 16 LSB of the input, L_var1.
72
73------------------------------------------------------------------------------
74 REQUIREMENTS
75
76 None
77
78------------------------------------------------------------------------------
79 REFERENCES
80
81 [1] basicop2.c, ETS Version 2.0.0, February 8, 1999
82
83------------------------------------------------------------------------------
84 PSEUDO-CODE
85
86Word16 extract_l (Word32 L_var1)
87{
88    Word16 var_out;
89
90    var_out = (Word16) L_var1;
91#if (WMOPS)
92    multiCounter[currCounter].extract_l++;
93#endif
94    return (var_out);
95}
96
97------------------------------------------------------------------------------
98 RESOURCES USED
99   When the code is written for a specific target processor the
100     the resources used should be documented below.
101
102 STACK USAGE: [stack count for this module] + [variable to represent
103          stack usage for each subroutine called]
104
105     where: [stack usage variable] = stack usage for [subroutine
106         name] (see [filename].ext)
107
108 DATA MEMORY USED: x words
109
110 PROGRAM MEMORY USED: x words
111
112 CLOCK CYCLES: [cycle count equation for this module] + [variable
113           used to represent cycle count for each subroutine
114           called]
115
116     where: [cycle count variable] = cycle count for [subroutine
117        name] (see [filename].ext)
118
119------------------------------------------------------------------------------
120*/
121
122
123/*----------------------------------------------------------------------------
124; INCLUDES
125----------------------------------------------------------------------------*/
126#include    "basic_op.h"
127
128/*----------------------------------------------------------------------------
129; MACROS
130; Define module specific macros here
131----------------------------------------------------------------------------*/
132
133/*----------------------------------------------------------------------------
134; DEFINES
135; Include all pre-processor statements here. Include conditional
136; compile variables also.
137----------------------------------------------------------------------------*/
138
139/*----------------------------------------------------------------------------
140; LOCAL FUNCTION DEFINITIONS
141; Function Prototype declaration
142----------------------------------------------------------------------------*/
143
144/*----------------------------------------------------------------------------
145; LOCAL STORE/BUFFER/POINTER DEFINITIONS
146; Variable declaration - defined here and used outside this module
147----------------------------------------------------------------------------*/
148
149/*----------------------------------------------------------------------------
150; EXTERNAL FUNCTION REFERENCES
151; Declare functions defined elsewhere and referenced in this module
152----------------------------------------------------------------------------*/
153
154/*----------------------------------------------------------------------------
155; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
156; Declare variables used in this module but defined elsewhere
157----------------------------------------------------------------------------*/
158
159/*----------------------------------------------------------------------------
160; FUNCTION CODE
161----------------------------------------------------------------------------*/
162Word16 extract_l(Word32 L_var1)
163{
164    /*----------------------------------------------------------------------------
165    ; Define all local variables
166    ----------------------------------------------------------------------------*/
167
168    /*----------------------------------------------------------------------------
169    ; Function body here
170    ----------------------------------------------------------------------------*/
171
172    /*----------------------------------------------------------------------------
173    ; Return nothing or data or data pointer
174    ----------------------------------------------------------------------------*/
175    return ((Word16) L_var1);
176}
177