• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007-2008 ARM Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 /**
18  *
19  * File Name:  armVCCOMM_Average.c
20  * OpenMAX DL: v1.0.2
21  * Revision:   9641
22  * Date:       Thursday, February 7, 2008
23  *
24  *
25  *
26  * Description:
27  * This function will calculate Average of two blocks if size iWidth X iHeight
28  *
29  */
30 
31 #include "omxtypes.h"
32 #include "armOMX.h"
33 #include "omxVC.h"
34 
35 #include "armCOMM.h"
36 #include "armVC.h"
37 
38 /**
39  * Function: armVCCOMM_Average
40  *
41  * Description:
42  * This function calculates the average of two blocks and stores the result.
43  *
44  * Remarks:
45  *
46  *	[in]	pPred0			Pointer to the top-left corner of reference block 0
47  *	[in]	pPred1			Pointer to the top-left corner of reference block 1
48  *	[in]	iPredStep0	    Step of reference block 0
49  *	[in]	iPredStep1	    Step of reference block 1
50  *	[in]	iDstStep 		Step of the destination buffer
51  *	[in]	iWidth			Width of the blocks
52  *	[in]	iHeight			Height of the blocks
53  *	[out]	pDstPred		Pointer to the destination buffer
54  *
55  * Return Value:
56  * Standard OMXResult value.
57  *
58  */
armVCCOMM_Average(const OMX_U8 * pPred0,const OMX_U8 * pPred1,OMX_U32 iPredStep0,OMX_U32 iPredStep1,OMX_U8 * pDstPred,OMX_U32 iDstStep,OMX_U32 iWidth,OMX_U32 iHeight)59  OMXResult armVCCOMM_Average (
60 	 const OMX_U8* 	    pPred0,
61 	 const OMX_U8* 	    pPred1,
62 	 OMX_U32		iPredStep0,
63 	 OMX_U32		iPredStep1,
64 	 OMX_U8*		pDstPred,
65 	 OMX_U32		iDstStep,
66 	 OMX_U32		iWidth,
67 	 OMX_U32		iHeight
68 )
69 {
70     OMX_U32     x, y;
71 
72     /* check for argument error */
73     armRetArgErrIf(pPred0 == NULL, OMX_Sts_BadArgErr)
74     armRetArgErrIf(pPred1 == NULL, OMX_Sts_BadArgErr)
75     armRetArgErrIf(pDstPred == NULL, OMX_Sts_BadArgErr)
76 
77     for (y = 0; y < iHeight; y++)
78     {
79         for (x = 0; x < iWidth; x++)
80         {
81             pDstPred [y * iDstStep + x] =
82                 (OMX_U8)(((OMX_U32)pPred0 [y * iPredStep0 + x] +
83                                   pPred1 [y * iPredStep1 + x] + 1) >> 1);
84         }
85     }
86 
87     return OMX_Sts_NoErr;
88 }
89 
90 /*****************************************************************************
91  *                              END OF FILE
92  *****************************************************************************/
93 
94