aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2025-07-12 11:15:56 +0200
committerNiklas Haas <git@haasn.dev>2025-07-17 12:26:05 +0200
commitdc61b74c1d30e0b51febdb6c567be1ca7c1eaca5 (patch)
tree0138aa54110f993ab44ff816c37505991e7bad56
parente6af82c49895825d0cbea71e24c77be6b16571c4 (diff)
downloadffmpeg-dc61b74c1d30e0b51febdb6c567be1ca7c1eaca5.tar.gz
avfilter/scene_sad: pass true depth to ff_scene_sad_get_fn()
I need to be able to distinguish between 10/12/14 and 16 bit depths, for overflow reasons.
-rw-r--r--libavfilter/f_select.c2
-rw-r--r--libavfilter/scene_sad.c5
-rw-r--r--libavfilter/vf_framerate.c2
-rw-r--r--libavfilter/vf_freezedetect.c2
-rw-r--r--libavfilter/vf_identity.c2
-rw-r--r--libavfilter/vf_minterpolate.c2
-rw-r--r--libavfilter/vf_scdet.c2
-rw-r--r--libavfilter/x86/scene_sad_init.c2
8 files changed, 9 insertions, 10 deletions
diff --git a/libavfilter/f_select.c b/libavfilter/f_select.c
index a5609ec178..46208a7b76 100644
--- a/libavfilter/f_select.c
+++ b/libavfilter/f_select.c
@@ -272,7 +272,7 @@ static int config_input(AVFilterLink *inlink)
inlink->type == AVMEDIA_TYPE_AUDIO ? inlink->sample_rate : NAN;
if (CONFIG_SELECT_FILTER && select->do_scene_detect) {
- select->sad = ff_scene_sad_get_fn(select->bitdepth == 8 ? 8 : 16);
+ select->sad = ff_scene_sad_get_fn(select->bitdepth);
if (!select->sad)
return AVERROR(EINVAL);
}
diff --git a/libavfilter/scene_sad.c b/libavfilter/scene_sad.c
index caf911eb5d..05dd97e055 100644
--- a/libavfilter/scene_sad.c
+++ b/libavfilter/scene_sad.c
@@ -63,11 +63,10 @@ ff_scene_sad_fn ff_scene_sad_get_fn(int depth)
sad = ff_scene_sad_get_fn_x86(depth);
#endif
if (!sad) {
- if (depth == 8)
+ if (depth <= 8)
sad = ff_scene_sad_c;
- if (depth == 16)
+ else if (depth <= 16)
sad = ff_scene_sad16_c;
}
return sad;
}
-
diff --git a/libavfilter/vf_framerate.c b/libavfilter/vf_framerate.c
index 9976db8d93..a6598f97bb 100644
--- a/libavfilter/vf_framerate.c
+++ b/libavfilter/vf_framerate.c
@@ -282,7 +282,7 @@ static int config_input(AVFilterLink *inlink)
s->bitdepth = pix_desc->comp[0].depth;
- s->sad = ff_scene_sad_get_fn(s->bitdepth == 8 ? 8 : 16);
+ s->sad = ff_scene_sad_get_fn(s->bitdepth);
if (!s->sad)
return AVERROR(EINVAL);
diff --git a/libavfilter/vf_freezedetect.c b/libavfilter/vf_freezedetect.c
index ce67eed3ae..465a2e640b 100644
--- a/libavfilter/vf_freezedetect.c
+++ b/libavfilter/vf_freezedetect.c
@@ -103,7 +103,7 @@ static int config_input(AVFilterLink *inlink)
s->height[plane] = inlink->h >> ((plane == 1 || plane == 2) ? pix_desc->log2_chroma_h : 0);
}
- s->sad = ff_scene_sad_get_fn(s->bitdepth == 8 ? 8 : 16);
+ s->sad = ff_scene_sad_get_fn(s->bitdepth);
if (!s->sad)
return AVERROR(EINVAL);
diff --git a/libavfilter/vf_identity.c b/libavfilter/vf_identity.c
index fc44bfaea0..6a94a92355 100644
--- a/libavfilter/vf_identity.c
+++ b/libavfilter/vf_identity.c
@@ -304,7 +304,7 @@ static int config_input_ref(AVFilterLink *inlink)
s->filter_slice = !s->is_msad ? compute_images_identity : compute_images_msad;
s->filter_line = desc->comp[0].depth > 8 ? identity_line_16bit : identity_line_8bit;
- s->sad = ff_scene_sad_get_fn(desc->comp[0].depth <= 8 ? 8 : 16);
+ s->sad = ff_scene_sad_get_fn(desc->comp[0].depth);
if (!s->sad)
return AVERROR(EINVAL);
diff --git a/libavfilter/vf_minterpolate.c b/libavfilter/vf_minterpolate.c
index 93d331f2ff..d034783bc5 100644
--- a/libavfilter/vf_minterpolate.c
+++ b/libavfilter/vf_minterpolate.c
@@ -387,7 +387,7 @@ static int config_input(AVFilterLink *inlink)
}
if (mi_ctx->scd_method == SCD_METHOD_FDIFF) {
- mi_ctx->sad = ff_scene_sad_get_fn(mi_ctx->bitdepth == 8 ? 8 : 16);
+ mi_ctx->sad = ff_scene_sad_get_fn(mi_ctx->bitdepth);
if (!mi_ctx->sad)
return AVERROR(EINVAL);
}
diff --git a/libavfilter/vf_scdet.c b/libavfilter/vf_scdet.c
index 1568a0a496..8aa2f0a73b 100644
--- a/libavfilter/vf_scdet.c
+++ b/libavfilter/vf_scdet.c
@@ -91,7 +91,7 @@ static int config_input(AVFilterLink *inlink)
s->height[plane] = inlink->h >> ((plane == 1 || plane == 2) ? desc->log2_chroma_h : 0);
}
- s->sad = ff_scene_sad_get_fn(s->bitdepth == 8 ? 8 : 16);
+ s->sad = ff_scene_sad_get_fn(s->bitdepth);
if (!s->sad)
return AVERROR(EINVAL);
diff --git a/libavfilter/x86/scene_sad_init.c b/libavfilter/x86/scene_sad_init.c
index 2c3729ceee..4a4c40195f 100644
--- a/libavfilter/x86/scene_sad_init.c
+++ b/libavfilter/x86/scene_sad_init.c
@@ -47,7 +47,7 @@ ff_scene_sad_fn ff_scene_sad_get_fn_x86(int depth)
{
#if HAVE_X86ASM
int cpu_flags = av_get_cpu_flags();
- if (depth == 8) {
+ if (depth <= 8) {
#if HAVE_AVX2_EXTERNAL
if (EXTERNAL_AVX2_FAST(cpu_flags))
return scene_sad_avx2;