Coverage Report

Created: 2023-09-25 06:47

/src/libmpeg2/common/icv_sad.c
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Copyright (C) 2015 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
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19
*/
20
/**
21
*******************************************************************************
22
* @file
23
*  icv_sad.c
24
*
25
* @brief
26
*  This file contains the functions to compute SAD
27
*
28
* @author
29
*  Ittiam
30
*
31
* @par List of Functions:
32
*  sad_8x4()
33
*
34
* @remarks
35
*  None
36
*
37
*******************************************************************************
38
*/
39
/*****************************************************************************/
40
/* File Includes                                                             */
41
/*****************************************************************************/
42
/* System include files */
43
#include <stdio.h>
44
#include <stdint.h>
45
#include <string.h>
46
#include <stdlib.h>
47
#include <assert.h>
48
49
/* User include files */
50
#include "icv_datatypes.h"
51
#include "icv_macros.h"
52
#include "icv_platform_macros.h"
53
#include "icv.h"
54
55
/**
56
*******************************************************************************
57
*
58
* @brief
59
*  Compute 8x4 SAD
60
*
61
* @par   Description
62
*  Compute 8x4 sum of absolute differences between source and reference block
63
*
64
* @param[in] pu1_src
65
*  Source buffer
66
*
67
* @param[in] pu1_ref
68
*  Reference buffer
69
*
70
* @param[in] src_strd
71
*  Source stride
72
*
73
* @param[in] ref_strd
74
*  Reference stride
75
*
76
* @param[in] wd
77
*  Assumed to be 8
78
*
79
* @param[in] ht
80
*  Assumed to be 4
81
82
* @returns
83
*  SAD
84
*
85
* @remarks
86
*
87
*******************************************************************************
88
*/
89
WORD32 icv_sad_8x4(UWORD8 *pu1_src,
90
                   UWORD8 *pu1_ref,
91
                   WORD32 src_strd,
92
                   WORD32 ref_strd,
93
                   WORD32 wd,
94
                   WORD32 ht)
95
15.2M
{
96
15.2M
    WORD32 sad;
97
15.2M
    WORD32 i;
98
15.2M
    WORD32 j;
99
15.2M
    UNUSED(wd);
100
15.2M
    UNUSED(ht);
101
102
15.2M
    ASSERT(wd == 8);
103
15.2M
    ASSERT(ht == 4);
104
105
15.2M
    sad = 0;
106
107
76.0M
    for(j = 0; j < 4; j++)
108
60.7M
    {
109
543M
        for(i = 0; i < 8; i++)
110
482M
        {
111
482M
            WORD32 src;
112
482M
            WORD32 ref;
113
114
482M
            src = *pu1_src++;
115
482M
            ref = *pu1_ref++;
116
117
482M
            sad += ABS_DIF(src, ref);
118
482M
        }
119
60.7M
        pu1_src += (src_strd - 8);
120
60.7M
        pu1_ref += (ref_strd - 8);
121
60.7M
    }
122
123
15.2M
    return sad;
124
15.2M
}