[FFmpeg-devel] [PATCH 1/2] avfilter/transform: Stop exporting internal functions

Paul B Mahol onemda at gmail.com
Thu Feb 25 02:34:05 EET 2021


On Thu, Feb 25, 2021 at 1:32 AM Andreas Rheinhardt <
andreas.rheinhardt at gmail.com> wrote:

> James Almer:
> > On 2/24/2021 11:22 AM, Andreas Rheinhardt wrote:
> >> avfilter_transform, avfilter_(add|sub|mult)_matrix are not part of the
> >> public API (transform.h is not a public header), yet they are currently
> >> exported because of their name. This commit changes this:
> >> avfilter_transform is renamed to ff_affine_transform; the other
> >> functions are just removed as they have never been used at all.
> >
> > The symbols are exported and have been in four releases so far for this
> > soname. If we plan on making a 4.4 release before the bump, it may be a
> > good idea if we keep the symbols around for the sake of not affecting
> > the ABI, so I'm inclined towards just wrapping them in a
> > LIBAVFILTER_VERSION_MAJOR < 8 check like we do when we remove avpriv
> ones.
> >
>
> And why? There was never a legitimate outside user of these functions.
> And removing avfilter_all_channel_layouts in
> d5e5c6862bbc834d5a036a3fa053a7569d84f928 (which also didn't have a
> legitimate outside user) didn't seem to break anything either.
> Btw: 88d80cb97528d52dac3178cf5393d6095eca6200 broke ABI for x64, because
> older versions of libavformat exchange a PutBitContext with libavcodec
> via avpriv_align_put_bits and avpriv_copy_bits. So we can't really make
> a 4.4 release.
>

5.0 then

>
> - Andreas
>
> >>
> >> Found-by: Anton Khirnov <anton at khirnov.net>
> >> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> >> ---
> >>   libavfilter/transform.c  | 23 +----------------------
> >>   libavfilter/transform.h  | 29 +----------------------------
> >>   libavfilter/vf_deshake.c |  5 +++--
> >>   3 files changed, 5 insertions(+), 52 deletions(-)
> >>
> >> diff --git a/libavfilter/transform.c b/libavfilter/transform.c
> >> index f4f9e0a47d..1f91436f73 100644
> >> --- a/libavfilter/transform.c
> >> +++ b/libavfilter/transform.c
> >> @@ -122,28 +122,7 @@ void ff_get_matrix(
> >>       matrix[8] = 1;
> >>   }
> >>   -void avfilter_add_matrix(const float *m1, const float *m2, float
> >> *result)
> >> -{
> >> -    int i;
> >> -    for (i = 0; i < 9; i++)
> >> -        result[i] = m1[i] + m2[i];
> >> -}
> >> -
> >> -void avfilter_sub_matrix(const float *m1, const float *m2, float
> >> *result)
> >> -{
> >> -    int i;
> >> -    for (i = 0; i < 9; i++)
> >> -        result[i] = m1[i] - m2[i];
> >> -}
> >> -
> >> -void avfilter_mul_matrix(const float *m1, float scalar, float *result)
> >> -{
> >> -    int i;
> >> -    for (i = 0; i < 9; i++)
> >> -        result[i] = m1[i] * scalar;
> >> -}
> >> -
> >> -int avfilter_transform(const uint8_t *src, uint8_t *dst,
> >> +int ff_affine_transform(const uint8_t *src, uint8_t *dst,
> >>                           int src_stride, int dst_stride,
> >>                           int width, int height, const float *matrix,
> >>                           enum InterpolateMethod interpolate,
> >> diff --git a/libavfilter/transform.h b/libavfilter/transform.h
> >> index 9b0c19ceca..0344f9c228 100644
> >> --- a/libavfilter/transform.h
> >> +++ b/libavfilter/transform.h
> >> @@ -83,33 +83,6 @@ void ff_get_matrix(
> >>       float *matrix
> >>   );
> >>   -/**
> >> - * Add two matrices together. result = m1 + m2.
> >> - *
> >> - * @param m1     9-item transformation matrix
> >> - * @param m2     9-item transformation matrix
> >> - * @param result 9-item transformation matrix
> >> - */
> >> -void avfilter_add_matrix(const float *m1, const float *m2, float
> >> *result);
> >> -
> >> -/**
> >> - * Subtract one matrix from another. result = m1 - m2.
> >> - *
> >> - * @param m1     9-item transformation matrix
> >> - * @param m2     9-item transformation matrix
> >> - * @param result 9-item transformation matrix
> >> - */
> >> -void avfilter_sub_matrix(const float *m1, const float *m2, float
> >> *result);
> >> -
> >> -/**
> >> - * Multiply a matrix by a scalar value. result = m1 * scalar.
> >> - *
> >> - * @param m1     9-item transformation matrix
> >> - * @param scalar a number
> >> - * @param result 9-item transformation matrix
> >> - */
> >> -void avfilter_mul_matrix(const float *m1, float scalar, float *result);
> >> -
> >>   /**
> >>    * Do an affine transformation with the given interpolation method.
> >> This
> >>    * multiplies each vector [x,y,1] by the matrix and then
> >> interpolates to
> >> @@ -126,7 +99,7 @@ void avfilter_mul_matrix(const float *m1, float
> >> scalar, float *result);
> >>    * @param fill        edge fill method
> >>    * @return negative on error
> >>    */
> >> -int avfilter_transform(const uint8_t *src, uint8_t *dst,
> >> +int ff_affine_transform(const uint8_t *src, uint8_t *dst,
> >>                           int src_stride, int dst_stride,
> >>                           int width, int height, const float *matrix,
> >>                           enum InterpolateMethod interpolate,
> >> diff --git a/libavfilter/vf_deshake.c b/libavfilter/vf_deshake.c
> >> index 28a541b94a..8771399351 100644
> >> --- a/libavfilter/vf_deshake.c
> >> +++ b/libavfilter/vf_deshake.c
> >> @@ -330,8 +330,9 @@ static int deshake_transform_c(AVFilterContext *ctx,
> >>         for (i = 0; i < 3; i++) {
> >>           // Transform the luma and chroma planes
> >> -        ret = avfilter_transform(in->data[i], out->data[i],
> >> in->linesize[i], out->linesize[i],
> >> -                                 plane_w[i], plane_h[i], matrixs[i],
> >> interpolate, fill);
> >> +        ret = ff_affine_transform(in->data[i], out->data[i],
> >> in->linesize[i],
> >> +                                  out->linesize[i], plane_w[i],
> >> plane_h[i],
> >> +                                  matrixs[i], interpolate, fill);
> >>           if (ret < 0)
> >>               return ret;
> >>       }
> >>
> >
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list