Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2004-2010 NXP Software
      3  * Copyright (C) 2010 The Android Open Source Project
      4  *
      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
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     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.
     16  */
     17 
     18 /**********************************************************************************
     19    INCLUDE FILES
     20 ***********************************************************************************/
     21 
     22 #include "Mixer_private.h"
     23 #include "LVM_Macros.h"
     24 
     25 /**********************************************************************************
     26    FUNCTION CORE_MIXHARD_2ST_D32C31_SAT
     27 ***********************************************************************************/
     28 
     29 void Core_MixHard_2St_D32C31_SAT(   Mix_2St_Cll_t       *pInstance,
     30                                     const LVM_INT32     *src1,
     31                                     const LVM_INT32     *src2,
     32                                           LVM_INT32     *dst,
     33                                           LVM_INT16     n)
     34 {
     35     LVM_INT32  Temp1,Temp2,Temp3;
     36     LVM_INT16 ii;
     37     LVM_INT16 Current1Short;
     38     LVM_INT16 Current2Short;
     39 
     40     Current1Short = (LVM_INT16)(pInstance->Current1 >> 16);
     41     Current2Short = (LVM_INT16)(pInstance->Current2 >> 16);
     42 
     43     for (ii = n; ii != 0; ii--){
     44         Temp1=*src1++;
     45         MUL32x16INTO32(Temp1,Current1Short,Temp3,15)
     46         Temp2=*src2++;
     47         MUL32x16INTO32(Temp2,Current2Short,Temp1,15)
     48         Temp2=(Temp1>>1)+(Temp3>>1);
     49         if (Temp2 > 0x3FFFFFFF)
     50             Temp2 = 0x7FFFFFFF;
     51         else if (Temp2 < - 0x40000000)
     52             Temp2 =  0x80000000;
     53         else
     54             Temp2=(Temp2<<1);
     55             *dst++ = Temp2;
     56     }
     57 }
     58 
     59 
     60 /**********************************************************************************/
     61