[FFmpeg-devel] [PATCH 3/6] lavfi/mandelbrot: make use of AV_OPT_TYPE_VIDEO_RATE

Clément Bœsch ubitux at gmail.com
Tue Mar 26 13:37:30 CET 2013


On Tue, Mar 26, 2013 at 12:26:32PM +0000, Paul B Mahol wrote:
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
>  libavfilter/vsrc_mandelbrot.c | 18 ++++--------------
>  1 file changed, 4 insertions(+), 14 deletions(-)
> 
> diff --git a/libavfilter/vsrc_mandelbrot.c b/libavfilter/vsrc_mandelbrot.c
> index 945c707..94b3853 100644
> --- a/libavfilter/vsrc_mandelbrot.c
> +++ b/libavfilter/vsrc_mandelbrot.c
> @@ -58,9 +58,8 @@ typedef struct Point {
>  typedef struct {
>      const AVClass *class;
>      int w, h;
> -    AVRational time_base;
> +    AVRational frame_rate;
>      uint64_t pts;
> -    char *rate;
>      int maxiter;
>      double start_x;
>      double start_y;
> @@ -84,8 +83,8 @@ typedef struct {
>  static const AVOption mandelbrot_options[] = {
>      {"size",        "set frame size",                OFFSET(w),       AV_OPT_TYPE_IMAGE_SIZE, {.str="640x480"},  CHAR_MIN, CHAR_MAX, FLAGS },
>      {"s",           "set frame size",                OFFSET(w),       AV_OPT_TYPE_IMAGE_SIZE, {.str="640x480"},  CHAR_MIN, CHAR_MAX, FLAGS },
> -    {"rate",        "set frame rate",                OFFSET(rate),    AV_OPT_TYPE_STRING,     {.str="25"},  CHAR_MIN, CHAR_MAX, FLAGS },
> -    {"r",           "set frame rate",                OFFSET(rate),    AV_OPT_TYPE_STRING,     {.str="25"},  CHAR_MIN, CHAR_MAX, FLAGS },
> +    {"rate",        "set frame rate",                OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="25"},  CHAR_MIN, CHAR_MAX, FLAGS },
> +    {"r",           "set frame rate",                OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="25"},  CHAR_MIN, CHAR_MAX, FLAGS },
>      {"maxiter",     "set max iterations number",     OFFSET(maxiter), AV_OPT_TYPE_INT,        {.i64=7189},  1,        INT_MAX, FLAGS },
>      {"start_x",     "set the initial x position",    OFFSET(start_x), AV_OPT_TYPE_DOUBLE,     {.dbl=-0.743643887037158704752191506114774}, -100, 100, FLAGS },
>      {"start_y",     "set the initial y position",    OFFSET(start_y), AV_OPT_TYPE_DOUBLE,     {.dbl=-0.131825904205311970493132056385139}, -100, 100, FLAGS },
> @@ -112,7 +111,6 @@ AVFILTER_DEFINE_CLASS(mandelbrot);
>  static av_cold int init(AVFilterContext *ctx, const char *args)
>  {
>      MBContext *mb = ctx->priv;
> -    AVRational rate_q;
>      int err;
>  
>      mb->class = &mandelbrot_class;
> @@ -125,13 +123,6 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
>      mb->start_scale /=mb->h;
>      mb->end_scale /=mb->h;
>  
> -    if (av_parse_video_rate(&rate_q, mb->rate) < 0) {
> -        av_log(ctx, AV_LOG_ERROR, "Invalid frame rate: %s\n", mb->rate);
> -        return AVERROR(EINVAL);
> -    }
> -    mb->time_base.num = rate_q.den;
> -    mb->time_base.den = rate_q.num;
> -
>      mb->cache_allocated = mb->w * mb->h * 3;
>      mb->cache_used = 0;
>      mb->point_cache= av_malloc(sizeof(*mb->point_cache)*mb->cache_allocated);
> @@ -145,7 +136,6 @@ static av_cold void uninit(AVFilterContext *ctx)
>  {
>      MBContext *mb = ctx->priv;
>  
> -    av_freep(&mb->rate);
>      av_freep(&mb->point_cache);
>      av_freep(&mb-> next_cache);
>      av_freep(&mb->zyklus);
> @@ -172,7 +162,7 @@ static int config_props(AVFilterLink *inlink)
>  
>      inlink->w = mb->w;
>      inlink->h = mb->h;
> -    inlink->time_base = mb->time_base;
> +    inlink->time_base = mb->frame_rate;
>  

You need a swap here as well AFAICT.

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130326/44a11e55/attachment.asc>


More information about the ffmpeg-devel mailing list