FFmpeg
libavfilter
vf_blackdetect.h
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
#ifndef AVFILTER_BLACKDETECT_H
20
#define AVFILTER_BLACKDETECT_H
21
22
#include <stddef.h>
23
#include <stdint.h>
24
25
#include "config.h"
26
27
typedef
unsigned (*
ff_blackdetect_fn
)(
const
uint8_t *
src
, ptrdiff_t
stride
,
28
ptrdiff_t
width
, ptrdiff_t
height
,
29
unsigned
threshold);
30
31
ff_blackdetect_fn
ff_blackdetect_get_fn_x86
(
int
depth);
32
33
static
unsigned
count_pixels8_c
(
const
uint8_t *
src
, ptrdiff_t
stride
,
34
ptrdiff_t
width
, ptrdiff_t
height
,
35
unsigned
threshold)
36
{
37
unsigned
int
counter = 0;
38
while
(
height
--) {
39
for
(
int
x = 0; x <
width
; x++)
40
counter +=
src
[x] <= threshold;
41
src
+=
stride
;
42
}
43
return
counter;
44
}
45
46
static
unsigned
count_pixels16_c
(
const
uint8_t *
src
, ptrdiff_t
stride
,
47
ptrdiff_t
width
, ptrdiff_t
height
,
48
unsigned
threshold)
49
{
50
unsigned
int
counter = 0;
51
while
(
height
--) {
52
const
uint16_t *src16 = (
const
uint16_t *)
src
;
53
for
(
int
x = 0; x <
width
; x++)
54
counter += src16[x] <= threshold;
55
src
+=
stride
;
56
}
57
return
counter;
58
}
59
60
61
static
inline
ff_blackdetect_fn
ff_blackdetect_get_fn
(
int
depth)
62
{
63
ff_blackdetect_fn
fn
=
NULL
;
64
#if ARCH_X86
65
fn
=
ff_blackdetect_get_fn_x86
(depth);
66
#endif
67
68
if
(!
fn
)
69
fn
= depth == 8 ?
count_pixels8_c
:
count_pixels16_c
;
70
return
fn
;
71
}
72
73
#endif
/* AVFILTER_BLACKDETECT_H */
count_pixels16_c
static unsigned count_pixels16_c(const uint8_t *src, ptrdiff_t stride, ptrdiff_t width, ptrdiff_t height, unsigned threshold)
Definition:
vf_blackdetect.h:46
NULL
#define NULL
Definition:
coverity.c:32
ff_blackdetect_fn
unsigned(* ff_blackdetect_fn)(const uint8_t *src, ptrdiff_t stride, ptrdiff_t width, ptrdiff_t height, unsigned threshold)
Definition:
vf_blackdetect.h:27
height
#define height
Definition:
dsp.h:89
fn
#define fn(a)
Definition:
aap_template.c:37
count_pixels8_c
static unsigned count_pixels8_c(const uint8_t *src, ptrdiff_t stride, ptrdiff_t width, ptrdiff_t height, unsigned threshold)
Definition:
vf_blackdetect.h:33
stride
#define stride
Definition:
h264pred_template.c:536
ff_blackdetect_get_fn
static ff_blackdetect_fn ff_blackdetect_get_fn(int depth)
Definition:
vf_blackdetect.h:61
ff_blackdetect_get_fn_x86
ff_blackdetect_fn ff_blackdetect_get_fn_x86(int depth)
Definition:
vf_blackdetect_init.c:28
width
#define width
Definition:
dsp.h:89
src
#define src
Definition:
vp8dsp.c:248
Generated on Sun Aug 31 2025 19:22:52 for FFmpeg by
1.8.17