[FFmpeg-devel] [PATCH 2/2] vf_crop: keepaspect support
Stefano Sabatini
stefasab at gmail.com
Sun Mar 11 17:44:11 CET 2012
On date Saturday 2012-03-10 08:26:07 +0100, Michael Niedermayer encoded:
> From: Baptiste Coudurier <baptiste.coudurier at gmail.com>
>
> ---
> libavfilter/vf_crop.c | 14 +++++++++++++-
> 1 files changed, 13 insertions(+), 1 deletions(-)
>
> diff --git a/libavfilter/vf_crop.c b/libavfilter/vf_crop.c
> index 117cd43..c8c4fb2 100644
> --- a/libavfilter/vf_crop.c
> +++ b/libavfilter/vf_crop.c
> @@ -74,6 +74,9 @@ typedef struct {
> int w; ///< width of the cropped area
> int h; ///< height of the cropped area
>
> + AVRational out_sar; ///< output sample aspect ratio
> + int keep_aspect; ///< keep display aspect ratio when cropping
> +
> int max_step[4]; ///< max pixel step for each plane, expressed as a number of bytes
> int hsub, vsub; ///< chroma subsampling
> char x_expr[256], y_expr[256], ow_expr[256], oh_expr[256];
> @@ -124,7 +127,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
> av_strlcpy(crop->y_expr, "(in_h-out_h)/2", sizeof(crop->y_expr));
>
> if (args)
> - sscanf(args, "%255[^:]:%255[^:]:%255[^:]:%255[^:]", crop->ow_expr, crop->oh_expr, crop->x_expr, crop->y_expr);
> + sscanf(args, "%255[^:]:%255[^:]:%255[^:]:%255[^:]:%d", crop->ow_expr, crop->oh_expr, crop->x_expr, crop->y_expr, &crop->keep_aspect);
>
> return 0;
> }
> @@ -210,6 +213,14 @@ static int config_input(AVFilterLink *link)
> NULL, NULL, NULL, NULL, 0, ctx)) < 0)
> return AVERROR(EINVAL);
>
> + if (crop->keep_aspect) {
> + AVRational dar = av_mul_q(link->sample_aspect_ratio,
> + (AVRational){ link->w, link->h });
> + av_reduce(&crop->out_sar.num, &crop->out_sar.den,
> + dar.num * crop->h, dar.den * crop->w, INT_MAX);
> + } else
> + crop->out_sar = link->sample_aspect_ratio;
> +
> av_log(ctx, AV_LOG_INFO, "w:%d h:%d -> w:%d h:%d\n",
> link->w, link->h, crop->w, crop->h);
>
> @@ -239,6 +250,7 @@ static int config_output(AVFilterLink *link)
>
> link->w = crop->w;
> link->h = crop->h;
> + link->sample_aspect_ratio = crop->out_sar;
OK but please update documentation (check attached diff). Also don't
forget to bump micro so we know when the feature is available by
reading the version numbers.
--
FFmpeg = Formidable & Fierce Miracolous Proud Extroverse Gigant
-------------- next part --------------
A non-text attachment was scrubbed...
Name: crop-docs.diff
Type: text/x-diff
Size: 751 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120311/67b1530f/attachment.bin>
More information about the ffmpeg-devel
mailing list