Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2021-02-13 13:15:22 +0300
committerPaul B Mahol <onemda@gmail.com>2021-02-16 23:12:11 +0300
commit058db59e164dc420239beac054212a1b1933a01d (patch)
tree316c248b1db0ab73ad1e3551dfceb620782ccc2c /libavfilter/vf_gblur.c
parentd0b6b1f941cd876066bd76322cd2976a961302ef (diff)
avfilter/vf_gblur: factor out postscale function
Diffstat (limited to 'libavfilter/vf_gblur.c')
-rw-r--r--libavfilter/vf_gblur.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/libavfilter/vf_gblur.c b/libavfilter/vf_gblur.c
index 68a2ed3520..70e2a668b4 100644
--- a/libavfilter/vf_gblur.c
+++ b/libavfilter/vf_gblur.c
@@ -54,6 +54,15 @@ typedef struct ThreadData {
int width;
} ThreadData;
+static void postscale_c(float *buffer, int length,
+ float postscale, float min, float max)
+{
+ for (int i = 0; i < length; i++) {
+ buffer[i] *= postscale;
+ buffer[i] = av_clipf(buffer[i], min, max);
+ }
+}
+
static void horiz_slice_c(float *buffer, int width, int height, int steps,
float nu, float bscale)
{
@@ -154,7 +163,6 @@ static int filter_vertically(AVFilterContext *ctx, void *arg, int jobnr, int nb_
return 0;
}
-
static int filter_postscale(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
{
GBlurContext *s = ctx->priv;
@@ -164,16 +172,12 @@ static int filter_postscale(AVFilterContext *ctx, void *arg, int jobnr, int nb_j
const int height = td->height;
const int width = td->width;
const int64_t numpixels = width * (int64_t)height;
- const unsigned slice_start = (numpixels * jobnr ) / nb_jobs;
- const unsigned slice_end = (numpixels * (jobnr+1)) / nb_jobs;
+ const int slice_start = (numpixels * jobnr ) / nb_jobs;
+ const int slice_end = (numpixels * (jobnr+1)) / nb_jobs;
const float postscale = s->postscale * s->postscaleV;
- float *buffer = s->buffer;
- unsigned i;
+ float *buffer = s->buffer + slice_start;
- for (i = slice_start; i < slice_end; i++) {
- buffer[i] *= postscale;
- buffer[i] = av_clipf(buffer[i], min, max);
- }
+ s->postscale_slice(buffer, slice_end - slice_start, postscale, min, max);
return 0;
}
@@ -228,6 +232,7 @@ static int query_formats(AVFilterContext *ctx)
void ff_gblur_init(GBlurContext *s)
{
s->horiz_slice = horiz_slice_c;
+ s->postscale_slice = postscale_c;
if (ARCH_X86_64)
ff_gblur_init_x86(s);
}