On 20/07/2019 00:19, Jarek Samic wrote:
> ---
>  libavfilter/transform.c  | 13 ++++++++++---
>  libavfilter/transform.h  | 30 +++++++++++++++++++-----------
>  libavfilter/vf_deshake.c |  7 +++++--
>  3 files changed, 34 insertions(+), 16 deletions(-)
> 
> diff --git a/libavfilter/transform.c b/libavfilter/transform.c
> index f92fc4d42f..f65de965cd 100644
> --- a/libavfilter/transform.c
> +++ b/libavfilter/transform.c
> @@ -103,12 +103,19 @@ INTERPOLATE_METHOD(interpolate_biquadratic)
>      }
>  }
>  
> -void avfilter_get_matrix(float x_shift, float y_shift, float angle, float 
> zoom, float *matrix) {
> -    matrix[0] = zoom * cos(angle);
> +void avfilter_get_matrix(
> +    float x_shift,
> +    float y_shift,
> +    float angle,
> +    float scale_x,
> +    float scale_y,
> +    float *matrix
> +) {
> +    matrix[0] = scale_x * cos(angle);
>      matrix[1] = -sin(angle);
>      matrix[2] = x_shift;
>      matrix[3] = -matrix[1];
> -    matrix[4] = matrix[0];
> +    matrix[4] = scale_y * cos(angle);
>      matrix[5] = y_shift;
>      matrix[6] = 0;
>      matrix[7] = 0;
> diff --git a/libavfilter/transform.h b/libavfilter/transform.h
> index 07436bfccb..0bdc9be123 100644
> --- a/libavfilter/transform.h
> +++ b/libavfilter/transform.h
> @@ -60,20 +60,28 @@ enum FillMethod {
>  #define FILL_DEFAULT FILL_ORIGINAL
>  
>  /**
> - * Get an affine transformation matrix from a given translation, rotation, 
> and
> - * zoom factor. The matrix will look like:
> + * Get an affine transformation matrix from given translation, rotation, and
> + * zoom factors. The matrix will look like:
>   *
> - * [ zoom * cos(angle),           -sin(angle),     x_shift,
> - *          sin(angle),     zoom * cos(angle),     y_shift,
> - *                   0,                     0,           1 ]
> + * [ scale_x * cos(angle),           -sin(angle),     x_shift,
> + *             sin(angle),  scale_y * cos(angle),     y_shift,
> + *                      0,                     0,           1 ]
>   *
> - * @param x_shift horizontal translation
> - * @param y_shift vertical translation
> - * @param angle   rotation in radians
> - * @param zoom    scale percent (1.0 = 100%)
> - * @param matrix  9-item affine transformation matrix
> + * @param x_shift   horizontal translation
> + * @param y_shift   vertical translation
> + * @param angle     rotation in radians
> + * @param scale_x   x scale percent (1.0 = 100%)
> + * @param scale_y   y scale percent (1.0 = 100%)
> + * @param matrix    9-item affine transformation matrix
>   */
> -void avfilter_get_matrix(float x_shift, float y_shift, float angle, float 
> zoom, float *matrix);
> +void avfilter_get_matrix(
> +    float x_shift,
> +    float y_shift,
> +    float angle,
> +    float scale_x,
> +    float scale_y,
> +    float *matrix
> +);

Apologies for not noticing this when we talked about it earlier, but this 
function is actually user-visible - it's global with an exported prefix 
(<http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavfilter/libavfilter.v;h=6518e5fc0960bc0c468e7cd3531634857fe4c68f;hb=HEAD>).
  That means the API/ABI is fixed and you shouldn't be changing the signature.

You could make a new function (with ff_ prefix, I guess?), or just inline the 
code in your own filter.

Thanks,

- Mark


(I'm not sure /why/ it's exported.  A bit of searching doesn't find any code 
which uses it other than the existing deshake filter, so maybe it doesn't need 
to be part of the user API?)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to