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 #ifdef BUILD_FLOAT
     30 void MixSoft_2St_D32C31_SAT(    Mix_2St_Cll_FLOAT_t       *pInstance,
     31                                 const LVM_FLOAT     *src1,
     32                                 const LVM_FLOAT     *src2,
     33                                       LVM_FLOAT     *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_FLOAT_t*)pInstance, src1, dst, n);
     45         MixInSoft_D32C31_SAT((void *)&pInstance->Alpha2, /* Cast to void: \
     46                                                               no dereferencing in function*/
     47                               src2, dst, n);
     48     }
     49 
     50     /******************************************************************************
     51        HARD MIXING
     52     *******************************************************************************/
     53 
     54     else
     55     {
     56         if (pInstance->Current1 == 0)
     57             MixSoft_1St_D32C31_WRA((void *) &pInstance->Alpha2, /* Cast to void: no \
     58                                                              dereferencing in function*/
     59                                     src2, dst, n);
     60         else if (pInstance->Current2 == 0)
     61             MixSoft_1St_D32C31_WRA((Mix_1St_Cll_FLOAT_t*) pInstance, src1, dst, n);
     62         else
     63             Core_MixHard_2St_D32C31_SAT(pInstance, src1, src2, dst, n);
     64     }
     65 }
     66 #else
     67 void MixSoft_2St_D32C31_SAT(    Mix_2St_Cll_t       *pInstance,
     68                                 const LVM_INT32     *src1,
     69                                 const LVM_INT32     *src2,
     70                                       LVM_INT32     *dst,
     71                                       LVM_INT16     n)
     72 {
     73 
     74     if(n<=0)    return;
     75 
     76     /******************************************************************************
     77        SOFT MIXING
     78     *******************************************************************************/
     79     if ((pInstance->Current1 != pInstance->Target1) || (pInstance->Current2 != pInstance->Target2))
     80     {
     81         MixSoft_1St_D32C31_WRA( (Mix_1St_Cll_t*) pInstance, src1, dst, n);
     82         MixInSoft_D32C31_SAT( (void *) &pInstance->Alpha2,     /* Cast to void: no dereferencing in function*/
     83             src2, dst, n);
     84     }
     85 
     86     /******************************************************************************
     87        HARD MIXING
     88     *******************************************************************************/
     89 
     90     else
     91     {
     92         if (pInstance->Current1 == 0)
     93             MixSoft_1St_D32C31_WRA( (void *) &pInstance->Alpha2, /* Cast to void: no dereferencing in function*/
     94             src2, dst, n);
     95         else if (pInstance->Current2 == 0)
     96             MixSoft_1St_D32C31_WRA( (Mix_1St_Cll_t*) pInstance, src1, dst, n);
     97         else
     98             Core_MixHard_2St_D32C31_SAT( pInstance, src1, src2, dst, n);
     99     }
    100 }
    101 #endif
    102 /**********************************************************************************/
    103 
    104