FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/libavfilter/psnr.c
Date: 2024-11-20 23:03:26
Exec Total Coverage
Lines: 18 18 100.0%
Functions: 3 3 100.0%
Branches: 6 6 100.0%

Line Branch Exec Source
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 7920 static uint64_t sse_line_8bit(const uint8_t *main_line, const uint8_t *ref_line, int outw)
29 {
30 int j;
31 7920 unsigned m2 = 0;
32
33
2/2
✓ Branch 0 taken 1745760 times.
✓ Branch 1 taken 7920 times.
1753680 for (j = 0; j < outw; j++) {
34 1745760 unsigned error = main_line[j] - ref_line[j];
35
36 1745760 m2 += error * error;
37 }
38
39 7920 return m2;
40 }
41
42 150000 static uint64_t sse_line_16bit(const uint8_t *_main_line, const uint8_t *_ref_line, int outw)
43 {
44 int j;
45 150000 uint64_t m2 = 0;
46 150000 const uint16_t *main_line = (const uint16_t *) _main_line;
47 150000 const uint16_t *ref_line = (const uint16_t *) _ref_line;
48
49
2/2
✓ Branch 0 taken 1500000 times.
✓ Branch 1 taken 150000 times.
1650000 for (j = 0; j < outw; j++) {
50 1500000 unsigned error = main_line[j] - ref_line[j];
51
52 1500000 m2 += error * error;
53 }
54
55 150000 return m2;
56 }
57
58 8 void ff_psnr_init(PSNRDSPContext *dsp, int bpp)
59 {
60
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 6 times.
8 dsp->sse_line = bpp > 8 ? sse_line_16bit : sse_line_8bit;
61 #if ARCH_X86
62 8 ff_psnr_init_x86(dsp, bpp);
63 #endif
64 8 }
65