Message ID | 20230414210810.47688-1-surajshirvankar@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] vfilter: Speed up vf_mutiply with inlining | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
Hi, On Fri, Apr 14, 2023 at 5:08 PM Suraj Shirvankar <surajshirvankar@gmail.com> wrote: > Add inline to provide a slight speed up fo vf_multiply > > Signed-off-by: Suraj Shirvankar <surajshirvankar@gmail.com> > --- > libavfilter/vf_multiply.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/libavfilter/vf_multiply.c b/libavfilter/vf_multiply.c > index 979b885eb1..b9ff92d8e1 100644 > --- a/libavfilter/vf_multiply.c > +++ b/libavfilter/vf_multiply.c > @@ -72,9 +72,8 @@ static int config_input(AVFilterLink *inlink) > return 0; > } > > -static void multiply(const uint8_t *ssrc, const uint8_t *rref, uint8_t > *ddst, > - float scale, float offset, int w) > -{ > +static inline void multiply(const uint8_t *ssrc, const uint8_t *rref, > + uint8_t *ddst, float scale, float offset, int > w) { > const float *src = (const float *)ssrc; > const float *ref = (const float *)rref; > float *dst = (float *)ddst; > Please provide performance measurements to justify the change. Wouldn't it be better to write SIMD? > @@ -86,8 +85,8 @@ static void multiply(const uint8_t *ssrc, const uint8_t > *rref, uint8_t *ddst, > } > } > > -static int multiply_slice(AVFilterContext *ctx, void *arg, int jobnr, int > nb_jobs) > -{ > +static inline int multiply_slice(AVFilterContext *ctx, void *arg, int > jobnr, > + int nb_jobs) { > MultiplyContext *s = ctx->priv; > const float offset = s->offset; > const float scale = s->scale; > This does nothing, since the function pointer is passed to ff_filter_execute(). Ronald
Hi Ronald On Sat, Apr 15, 2023, 1:33 AM Ronald S. Bultje <rsbultje@gmail.com> wrote: > Hi, > > On Fri, Apr 14, 2023 at 5:08 PM Suraj Shirvankar < > surajshirvankar@gmail.com> wrote: > >> Add inline to provide a slight speed up fo vf_multiply >> >> Signed-off-by: Suraj Shirvankar <surajshirvankar@gmail.com> >> --- >> libavfilter/vf_multiply.c | 9 ++++----- >> 1 file changed, 4 insertions(+), 5 deletions(-) >> >> diff --git a/libavfilter/vf_multiply.c b/libavfilter/vf_multiply.c >> index 979b885eb1..b9ff92d8e1 100644 >> --- a/libavfilter/vf_multiply.c >> +++ b/libavfilter/vf_multiply.c >> @@ -72,9 +72,8 @@ static int config_input(AVFilterLink *inlink) >> return 0; >> } >> >> -static void multiply(const uint8_t *ssrc, const uint8_t *rref, uint8_t >> *ddst, >> - float scale, float offset, int w) >> -{ >> +static inline void multiply(const uint8_t *ssrc, const uint8_t *rref, >> + uint8_t *ddst, float scale, float offset, >> int w) { >> const float *src = (const float *)ssrc; >> const float *ref = (const float *)rref; >> float *dst = (float *)ddst; >> > > Please provide performance measurements to justify the change. Wouldn't it > be better to write SIMD? > I agree it would make more sense to use the SIMD version. Will attach relative performance improvement. > >> @@ -86,8 +85,8 @@ static void multiply(const uint8_t *ssrc, const uint8_t >> *rref, uint8_t *ddst, >> } >> } >> >> -static int multiply_slice(AVFilterContext *ctx, void *arg, int jobnr, >> int nb_jobs) >> -{ >> +static inline int multiply_slice(AVFilterContext *ctx, void *arg, int >> jobnr, >> + int nb_jobs) { >> MultiplyContext *s = ctx->priv; >> const float offset = s->offset; >> const float scale = s->scale; >> > > This does nothing, since the function pointer is passed to > ff_filter_execute(). > Ah yes my bad, will remove this change. > > Ronald >
diff --git a/libavfilter/vf_multiply.c b/libavfilter/vf_multiply.c index 979b885eb1..b9ff92d8e1 100644 --- a/libavfilter/vf_multiply.c +++ b/libavfilter/vf_multiply.c @@ -72,9 +72,8 @@ static int config_input(AVFilterLink *inlink) return 0; } -static void multiply(const uint8_t *ssrc, const uint8_t *rref, uint8_t *ddst, - float scale, float offset, int w) -{ +static inline void multiply(const uint8_t *ssrc, const uint8_t *rref, + uint8_t *ddst, float scale, float offset, int w) { const float *src = (const float *)ssrc; const float *ref = (const float *)rref; float *dst = (float *)ddst; @@ -86,8 +85,8 @@ static void multiply(const uint8_t *ssrc, const uint8_t *rref, uint8_t *ddst, } } -static int multiply_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) -{ +static inline int multiply_slice(AVFilterContext *ctx, void *arg, int jobnr, + int nb_jobs) { MultiplyContext *s = ctx->priv; const float offset = s->offset; const float scale = s->scale;
Add inline to provide a slight speed up fo vf_multiply Signed-off-by: Suraj Shirvankar <surajshirvankar@gmail.com> --- libavfilter/vf_multiply.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)