2 * Copyright (C) 2004-2010 NXP Software
3 * Copyright (C) 2010 The Android Open Source Project
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 /**********************************************************************************
20 ***********************************************************************************/
22 #include "LVC_Mixer_Private.h"
23 #include "LVM_Macros.h"
24 #include "ScalarArithmetic.h"
27 /**********************************************************************************
28 FUNCTION LVC_Core_MixHard_1St_2i_D16C31_SAT
29 ***********************************************************************************/
31 void LVC_Core_MixHard_1St_2i_D16C31_SAT( LVMixer3_st *ptrInstance1,
32 LVMixer3_st *ptrInstance2,
39 LVM_INT16 Current1Short;
40 LVM_INT16 Current2Short;
41 Mix_Private_st *pInstance1=(Mix_Private_st *)(ptrInstance1->PrivateParams);
42 Mix_Private_st *pInstance2=(Mix_Private_st *)(ptrInstance2->PrivateParams);
45 Current1Short = (LVM_INT16)(pInstance1->Current >> 16);
46 Current2Short = (LVM_INT16)(pInstance2->Current >> 16);
48 for (ii = n; ii != 0; ii--)
50 Temp = ((LVM_INT32)*(src++) * (LVM_INT32)Current1Short)>>15;
51 if (Temp > 0x00007FFF)
53 else if (Temp < -0x00008000)
56 *dst++ = (LVM_INT16)Temp;
58 Temp = ((LVM_INT32)*(src++) * (LVM_INT32)Current2Short)>>15;
59 if (Temp > 0x00007FFF)
61 else if (Temp < -0x00008000)
64 *dst++ = (LVM_INT16)Temp;
69 /**********************************************************************************/