Merge commit 'f6633c55a3c0e93a5b2bab6aa0692fb608f2a38d'
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 23 Oct 2013 10:13:38 +0000 (12:13 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 23 Oct 2013 10:14:49 +0000 (12:14 +0200)
* commit 'f6633c55a3c0e93a5b2bab6aa0692fb608f2a38d':
  avfilter: Fix typo in Loren's email address

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavfilter/gradfun.h
libavfilter/vf_gradfun.c
libavfilter/x86/vf_gradfun.c

diff --combined libavfilter/gradfun.h
@@@ -1,21 -1,21 +1,21 @@@
  /*
   * Copyright (c) 2010 Nolan Lum <nol888@gmail.com>
-  * Copyright (c) 2009 Loren Merritt <lorenm@u.washignton.edu>
+  * Copyright (c) 2009 Loren Merritt <lorenm@u.washington.edu>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -35,13 -35,13 +35,13 @@@ typedef struct GradFunContext 
      int chroma_r;  ///< blur radius for the chroma planes
      uint16_t *buf; ///< holds image data for blur algorithm passed into filter.
      /// DSP functions.
 -    void (*filter_line) (uint8_t *dst, uint8_t *src, uint16_t *dc, int width, int thresh, const uint16_t *dithers);
 -    void (*blur_line) (uint16_t *dc, uint16_t *buf, uint16_t *buf1, uint8_t *src, int src_linesize, int width);
 +    void (*filter_line) (uint8_t *dst, const uint8_t *src, const uint16_t *dc, int width, int thresh, const uint16_t *dithers);
 +    void (*blur_line) (uint16_t *dc, uint16_t *buf, const uint16_t *buf1, const uint8_t *src, int src_linesize, int width);
  } GradFunContext;
  
  void ff_gradfun_init_x86(GradFunContext *gf);
  
 -void ff_gradfun_filter_line_c(uint8_t *dst, uint8_t *src, uint16_t *dc, int width, int thresh, const uint16_t *dithers);
 -void ff_gradfun_blur_line_c(uint16_t *dc, uint16_t *buf, uint16_t *buf1, uint8_t *src, int src_linesize, int width);
 +void ff_gradfun_filter_line_c(uint8_t *dst, const uint8_t *src, const uint16_t *dc, int width, int thresh, const uint16_t *dithers);
 +void ff_gradfun_blur_line_c(uint16_t *dc, uint16_t *buf, const uint16_t *buf1, const uint8_t *src, int src_linesize, int width);
  
  #endif /* AVFILTER_GRADFUN_H */
diff --combined libavfilter/vf_gradfun.c
@@@ -1,21 -1,21 +1,21 @@@
  /*
   * Copyright (c) 2010 Nolan Lum <nol888@gmail.com>
-  * Copyright (c) 2009 Loren Merritt <lorenm@u.washignton.edu>
+  * Copyright (c) 2009 Loren Merritt <lorenm@u.washington.edu>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -54,7 -54,7 +54,7 @@@ DECLARE_ALIGNED(16, static const uint16
      {0x54,0x34,0x4C,0x2C,0x52,0x32,0x4A,0x2A},
  };
  
 -void ff_gradfun_filter_line_c(uint8_t *dst, uint8_t *src, uint16_t *dc, int width, int thresh, const uint16_t *dithers)
 +void ff_gradfun_filter_line_c(uint8_t *dst, const uint8_t *src, const uint16_t *dc, int width, int thresh, const uint16_t *dithers)
  {
      int x;
      for (x = 0; x < width; dc += x & 1, x++) {
@@@ -68,7 -68,7 +68,7 @@@
      }
  }
  
 -void ff_gradfun_blur_line_c(uint16_t *dc, uint16_t *buf, uint16_t *buf1, uint8_t *src, int src_linesize, int width)
 +void ff_gradfun_blur_line_c(uint16_t *dc, uint16_t *buf, const uint16_t *buf1, const uint8_t *src, int src_linesize, int width)
  {
      int x, v, old;
      for (x = 0; x < width; x++) {
@@@ -79,7 -79,7 +79,7 @@@
      }
  }
  
 -static void filter(GradFunContext *ctx, uint8_t *dst, uint8_t *src, int width, int height, int dst_linesize, int src_linesize, int r)
 +static void filter(GradFunContext *ctx, uint8_t *dst, const uint8_t *src, int width, int height, int dst_linesize, int src_linesize, int r)
  {
      int bstride = FFALIGN(width, 16) / 2;
      int y;
@@@ -125,9 -125,9 +125,9 @@@ static av_cold int init(AVFilterContex
      GradFunContext *s = ctx->priv;
  
      s->thresh  = (1 << 15) / s->strength;
 -    s->radius &= ~1;
 +    s->radius  = av_clip((s->radius + 1) & ~1, 4, 32);
  
 -    s->blur_line = ff_gradfun_blur_line_c;
 +    s->blur_line   = ff_gradfun_blur_line_c;
      s->filter_line = ff_gradfun_filter_line_c;
  
      if (ARCH_X86)
@@@ -148,10 -148,9 +148,10 @@@ static int query_formats(AVFilterContex
  {
      static const enum AVPixelFormat pix_fmts[] = {
          AV_PIX_FMT_YUV410P,            AV_PIX_FMT_YUV420P,
 -        AV_PIX_FMT_GRAY8,              AV_PIX_FMT_NV12,
 -        AV_PIX_FMT_NV21,               AV_PIX_FMT_YUV444P,
 +        AV_PIX_FMT_GRAY8,              AV_PIX_FMT_YUV444P,
          AV_PIX_FMT_YUV422P,            AV_PIX_FMT_YUV411P,
 +        AV_PIX_FMT_YUV440P,
 +        AV_PIX_FMT_GBRP,
          AV_PIX_FMT_NONE
      };
  
@@@ -168,12 -167,12 +168,12 @@@ static int config_input(AVFilterLink *i
      int vsub = desc->log2_chroma_h;
  
      av_freep(&s->buf);
 -    s->buf = av_mallocz((FFALIGN(inlink->w, 16) * (s->radius + 1) / 2 + 32) * sizeof(uint16_t));
 +    s->buf = av_calloc((FFALIGN(inlink->w, 16) * (s->radius + 1) / 2 + 32), sizeof(*s->buf));
      if (!s->buf)
          return AVERROR(ENOMEM);
  
 -    s->chroma_w = -((-inlink->w) >> hsub);
 -    s->chroma_h = -((-inlink->h) >> vsub);
 +    s->chroma_w = FF_CEIL_RSHIFT(inlink->w, hsub);
 +    s->chroma_h = FF_CEIL_RSHIFT(inlink->h, vsub);
      s->chroma_r = av_clip(((((s->radius >> hsub) + (s->radius >> vsub)) / 2 ) + 1) & ~1, 4, 32);
  
      return 0;
@@@ -196,10 -195,13 +196,10 @@@ static int filter_frame(AVFilterLink *i
              av_frame_free(&in);
              return AVERROR(ENOMEM);
          }
 -
          av_frame_copy_props(out, in);
 -        out->width  = outlink->w;
 -        out->height = outlink->h;
      }
  
 -    for (p = 0; p < 4 && in->data[p]; p++) {
 +    for (p = 0; p < 4 && in->data[p] && in->linesize[p]; p++) {
          int w = inlink->w;
          int h = inlink->h;
          int r = s->radius;
  }
  
  #define OFFSET(x) offsetof(GradFunContext, x)
 -#define FLAGS AV_OPT_FLAG_VIDEO_PARAM
 -static const AVOption options[] = {
 +#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 +
 +static const AVOption gradfun_options[] = {
      { "strength", "The maximum amount by which the filter will change any one pixel.", OFFSET(strength), AV_OPT_TYPE_FLOAT, { .dbl = 1.2 }, 0.51, 64, FLAGS },
      { "radius",   "The neighborhood to fit the gradient to.",                          OFFSET(radius),   AV_OPT_TYPE_INT,   { .i64 = 16  }, 4,    32, FLAGS },
 -    { NULL },
 +    { NULL }
  };
  
 -static const AVClass gradfun_class = {
 -    .class_name = "gradfun",
 -    .item_name  = av_default_item_name,
 -    .option     = options,
 -    .version    = LIBAVUTIL_VERSION_INT,
 -};
 +AVFILTER_DEFINE_CLASS(gradfun);
  
  static const AVFilterPad avfilter_vf_gradfun_inputs[] = {
      {
@@@ -258,7 -264,7 +258,7 @@@ AVFilter avfilter_vf_gradfun = 
      .init          = init,
      .uninit        = uninit,
      .query_formats = query_formats,
 -
 -    .inputs    = avfilter_vf_gradfun_inputs,
 -    .outputs   = avfilter_vf_gradfun_outputs,
 +    .inputs        = avfilter_vf_gradfun_inputs,
 +    .outputs       = avfilter_vf_gradfun_outputs,
 +    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
  };
@@@ -1,20 -1,20 +1,20 @@@
  /*
-  * Copyright (C) 2009 Loren Merritt <lorenm@u.washignton.edu>
+  * Copyright (C) 2009 Loren Merritt <lorenm@u.washington.edu>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -30,7 -30,7 +30,7 @@@ DECLARE_ALIGNED(16, static const uint16
  DECLARE_ALIGNED(16, static const uint16_t, pw_ff)[8] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
  
  #if HAVE_MMXEXT_INLINE
 -static void gradfun_filter_line_mmxext(uint8_t *dst, uint8_t *src, uint16_t *dc,
 +static void gradfun_filter_line_mmxext(uint8_t *dst, const uint8_t *src, const uint16_t *dc,
                                         int width, int thresh,
                                         const uint16_t *dithers)
  {
  #endif
  
  #if HAVE_SSSE3_INLINE
 -static void gradfun_filter_line_ssse3(uint8_t *dst, uint8_t *src, uint16_t *dc, int width, int thresh, const uint16_t *dithers)
 +static void gradfun_filter_line_ssse3(uint8_t *dst, const uint8_t *src, const uint16_t *dc, int width, int thresh, const uint16_t *dithers)
  {
      intptr_t x;
      if (width & 7) {
  #endif /* HAVE_SSSE3_INLINE */
  
  #if HAVE_SSE2_INLINE
 -static void gradfun_blur_line_sse2(uint16_t *dc, uint16_t *buf, uint16_t *buf1, uint8_t *src, int src_linesize, int width)
 +static void gradfun_blur_line_sse2(uint16_t *dc, uint16_t *buf, const uint16_t *buf1, const uint8_t *src, int src_linesize, int width)
  {
  #define BLURV(load)\
      intptr_t x = -2*width;\