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 "VectorArithmetic.h"
     24 
     25 
     26 /**********************************************************************************
     27    FUNCTION MIXSOFT_2ST_D32C31_SAT
     28 ***********************************************************************************/
     29 
     30 void MixSoft_2St_D32C31_SAT(    Mix_2St_Cll_t       *pInstance,
     31                                 const LVM_INT32     *src1,
     32                                 const LVM_INT32     *src2,
     33                                       LVM_INT32     *dst,
     34                                       LVM_INT16     n)
     35 {
     36 
     37     if(n<=0)    return;
     38 
     39     /******************************************************************************
     40        SOFT MIXING
     41     *******************************************************************************/
     42     if ((pInstance->Current1 != pInstance->Target1) || (pInstance->Current2 != pInstance->Target2))
     43     {
     44         MixSoft_1St_D32C31_WRA( (Mix_1St_Cll_t*) pInstance, src1, dst, n);
     45         MixInSoft_D32C31_SAT( (void *) &pInstance->Alpha2,     /* Cast to void: no dereferencing in function*/
     46             src2, dst, n);
     47     }
     48 
     49     /******************************************************************************
     50        HARD MIXING
     51     *******************************************************************************/
     52 
     53     else
     54     {
     55         if (pInstance->Current1 == 0)
     56             MixSoft_1St_D32C31_WRA( (void *) &pInstance->Alpha2, /* Cast to void: no dereferencing in function*/
     57             src2, dst, n);
     58         else if (pInstance->Current2 == 0)
     59             MixSoft_1St_D32C31_WRA( (Mix_1St_Cll_t*) pInstance, src1, dst, n);
     60         else
     61             Core_MixHard_2St_D32C31_SAT( pInstance, src1, src2, dst, n);
     62     }
     63 }
     64 
     65 /**********************************************************************************/
     66