From2iToMS_16x16.c revision 2c8e5cab3faa6d360e222b7a6c40a80083d021ac
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
20     $Author: beq07716 $
21     $Revision: 1000 $
22     $Date: 2010-06-28 13:08:20 +0200 (Mon, 28 Jun 2010) $
23
24***********************************************************************************/
25
26/**********************************************************************************
27   INCLUDE FILES
28***********************************************************************************/
29
30#include "VectorArithmetic.h"
31
32/**********************************************************************************
33   FUNCTION  From2iToMS_16x16
34***********************************************************************************/
35
36void From2iToMS_16x16( const LVM_INT16  *src,
37                             LVM_INT16  *dstM,
38                             LVM_INT16  *dstS,
39                             LVM_INT16  n )
40{
41    LVM_INT32 temp1,left,right;
42    LVM_INT16 ii;
43    for (ii = n; ii != 0; ii--)
44    {
45        left = (LVM_INT32)*src;
46        src++;
47
48        right = (LVM_INT32)*src;
49        src++;
50
51        /* Compute M signal*/
52        temp1 =  (left+right)>>1;
53        *dstM = (LVM_INT16)temp1;
54        dstM++;
55
56        /* Compute S signal*/
57        temp1 =  (left-right)>>1;
58        *dstS = (LVM_INT16)temp1;
59        dstS++;
60    }
61
62    return;
63}
64
65/**********************************************************************************/
66