FFmpeg
libavfilter
scene_sad.c
Go to the documentation of this file.
1
/*
2
* This file is part of FFmpeg.
3
*
4
* FFmpeg is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
8
*
9
* FFmpeg is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
13
*
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with FFmpeg; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
/**
20
* @file
21
* Scene SAD functions
22
*/
23
24
#include "
scene_sad.h
"
25
26
void
ff_scene_sad16_c
(
SCENE_SAD_PARAMS
)
27
{
28
uint64_t sad = 0;
29
const
uint16_t *src1w = (
const
uint16_t *)
src1
;
30
const
uint16_t *src2w = (
const
uint16_t *)
src2
;
31
int
x, y;
32
33
stride1 /= 2;
34
stride2 /= 2;
35
36
for
(y = 0; y <
height
; y++) {
37
for
(x = 0; x <
width
; x++)
38
sad +=
FFABS
(src1w[x] - src2w[x]);
39
src1w += stride1;
40
src2w += stride2;
41
}
42
*sum = sad;
43
}
44
45
void
ff_scene_sad_c
(
SCENE_SAD_PARAMS
)
46
{
47
uint64_t sad = 0;
48
int
x, y;
49
50
for
(y = 0; y <
height
; y++) {
51
for
(x = 0; x <
width
; x++)
52
sad +=
FFABS
(
src1
[x] -
src2
[x]);
53
src1
+= stride1;
54
src2
+= stride2;
55
}
56
*sum = sad;
57
}
58
59
ff_scene_sad_fn
ff_scene_sad_get_fn
(
int
depth)
60
{
61
ff_scene_sad_fn
sad =
NULL
;
62
#if ARCH_X86
63
sad =
ff_scene_sad_get_fn_x86
(depth);
64
#endif
65
if
(!sad) {
66
if
(depth == 8)
67
sad =
ff_scene_sad_c
;
68
if
(depth == 16)
69
sad =
ff_scene_sad16_c
;
70
}
71
return
sad;
72
}
73
src1
const pixel * src1
Definition:
h264pred_template.c:421
ff_scene_sad16_c
void ff_scene_sad16_c(SCENE_SAD_PARAMS)
Definition:
scene_sad.c:26
ff_scene_sad_c
void ff_scene_sad_c(SCENE_SAD_PARAMS)
Definition:
scene_sad.c:45
ff_scene_sad_get_fn_x86
ff_scene_sad_fn ff_scene_sad_get_fn_x86(int depth)
Definition:
scene_sad_init.c:46
SCENE_SAD_PARAMS
#define SCENE_SAD_PARAMS
Definition:
scene_sad.h:29
width
#define width
FFABS
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
Definition:
common.h:64
ff_scene_sad_get_fn
ff_scene_sad_fn ff_scene_sad_get_fn(int depth)
Definition:
scene_sad.c:59
NULL
#define NULL
Definition:
coverity.c:32
scene_sad.h
ff_scene_sad_fn
void(* ff_scene_sad_fn)(SCENE_SAD_PARAMS)
Definition:
scene_sad.h:34
height
#define height
src2
const pixel * src2
Definition:
h264pred_template.c:422
Generated on Tue Feb 28 2023 21:33:51 for FFmpeg by
1.8.17