FFmpeg
libavfilter
psnr.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Ronald S. Bultje <rsbultje@gmail.com>
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include "config.h"
22
23
#include <stddef.h>
24
#include <stdint.h>
25
26
#include "
psnr.h
"
27
28
static
uint64_t
sse_line_8bit
(
const
uint8_t *main_line,
const
uint8_t *ref_line,
int
outw)
29
{
30
int
j;
31
unsigned
m2 = 0;
32
33
for
(j = 0; j < outw; j++) {
34
unsigned
error
= main_line[j] - ref_line[j];
35
36
m2 +=
error
*
error
;
37
}
38
39
return
m2;
40
}
41
42
static
uint64_t
sse_line_16bit
(
const
uint8_t *_main_line,
const
uint8_t *_ref_line,
int
outw)
43
{
44
int
j;
45
uint64_t m2 = 0;
46
const
uint16_t *main_line = (
const
uint16_t *) _main_line;
47
const
uint16_t *ref_line = (
const
uint16_t *) _ref_line;
48
49
for
(j = 0; j < outw; j++) {
50
unsigned
error
= main_line[j] - ref_line[j];
51
52
m2 +=
error
*
error
;
53
}
54
55
return
m2;
56
}
57
58
void
ff_psnr_init
(
PSNRDSPContext
*dsp,
int
bpp)
59
{
60
dsp->
sse_line
= bpp > 8 ?
sse_line_16bit
:
sse_line_8bit
;
61
#if ARCH_X86
62
ff_psnr_init_x86
(dsp, bpp);
63
#endif
64
}
error
static void error(const char *err)
Definition:
target_bsf_fuzzer.c:32
ff_psnr_init
void ff_psnr_init(PSNRDSPContext *dsp, int bpp)
Definition:
psnr.c:58
ff_psnr_init_x86
void ff_psnr_init_x86(PSNRDSPContext *dsp, int bpp)
Definition:
vf_psnr_init.c:28
psnr.h
PSNRDSPContext
Definition:
psnr.h:27
sse_line_8bit
static uint64_t sse_line_8bit(const uint8_t *main_line, const uint8_t *ref_line, int outw)
Definition:
psnr.c:28
PSNRDSPContext::sse_line
uint64_t(* sse_line)(const uint8_t *buf, const uint8_t *ref, int w)
Definition:
psnr.h:28
sse_line_16bit
static uint64_t sse_line_16bit(const uint8_t *_main_line, const uint8_t *_ref_line, int outw)
Definition:
psnr.c:42
Generated on Sat Dec 28 2024 19:22:33 for FFmpeg by
1.8.17