Merge commit '880e2aa23645ed9871c66ee1cbd00f93c72d2d73'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 2 Jun 2014 17:38:01 +0000 (19:38 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 2 Jun 2014 17:38:01 +0000 (19:38 +0200)
* commit '880e2aa23645ed9871c66ee1cbd00f93c72d2d73':
  Remove all Blackfin architecture optimizations

Conflicts:
libavcodec/bfin/dsputil.S
libavcodec/bfin/dsputil_init.c
libavcodec/bfin/fdct_bfin.S
libavcodec/bfin/hpel_pixels_no_rnd.S
libavcodec/bfin/hpeldsp_init.c
libavcodec/bfin/idct_bfin.S
libavcodec/bfin/mathops.h
libavcodec/bfin/pixels.S
libavcodec/bfin/pixels.h
libavcodec/bfin/vp3dsp.S
libavcodec/bfin/vp3dsp_init.c
libavutil/bfin/asm.h
libavutil/bfin/attributes.h
libswscale/bfin/internal_bfin.S
libswscale/bfin/swscale_bfin.c
libswscale/bfin/yuv2rgb_bfin.c
libswscale/swscale_internal.h
libswscale/version.h

If someone wants to maintain blackfin support in FFmpeg, please contact
ffmpeg-devel@ffmpeg.org

Merged-by: Michael Niedermayer <michaelni@gmx.at>
12 files changed:
1  2 
libavcodec/dct-test.c
libavcodec/dsputil.c
libavcodec/dsputil.h
libavcodec/hpeldsp.c
libavcodec/hpeldsp.h
libavcodec/vp3dsp.c
libavcodec/vp3dsp.h
libswscale/swscale.h
libswscale/swscale_internal.h
libswscale/swscale_unscaled.c
libswscale/version.h
libswscale/yuv2rgb.c

@@@ -148,15 -106,8 +140,11 @@@ static const struct algo idct_tab[] = 
  #endif
  #if HAVE_SSE2_INLINE
      { "XVID-SSE2",      ff_idct_xvid_sse2,     SSE2_PERM, AV_CPU_FLAG_SSE2, 1 },
 +#if ARCH_X86_64 && HAVE_YASM
 +    { "PR-SSE2",        ff_prores_idct_put_10_sse2_wrap,     TRANSPOSE_PERM, AV_CPU_FLAG_SSE2, 1 },
 +#endif
  #endif
  
- #if ARCH_BFIN
-     { "BFINidct",       ff_bfin_idct,          NO_PERM  },
- #endif
  #if ARCH_ARM
      { "SIMPLE-ARM",     ff_simple_idct_arm,    NO_PERM  },
      { "INT-ARM",        ff_j_rev_dct_arm,      MMX_PERM },
@@@ -1722,13 -1559,8 +1722,11 @@@ av_cold void ff_dsputil_init(DSPContex
          break;
      }
  
 +
 +    if (ARCH_ALPHA)
 +        ff_dsputil_init_alpha(c, avctx);
      if (ARCH_ARM)
          ff_dsputil_init_arm(c, avctx, high_bit_depth);
-     if (ARCH_BFIN)
-         ff_dsputil_init_bfin(c, avctx, high_bit_depth);
      if (ARCH_PPC)
          ff_dsputil_init_ppc(c, avctx, high_bit_depth);
      if (ARCH_X86)
@@@ -249,11 -243,8 +249,9 @@@ int ff_check_alignment(void)
  
  void ff_set_cmp(DSPContext *c, me_cmp_func *cmp, int type);
  
 +void ff_dsputil_init_alpha(DSPContext* c, AVCodecContext *avctx);
  void ff_dsputil_init_arm(DSPContext *c, AVCodecContext *avctx,
                           unsigned high_bit_depth);
- void ff_dsputil_init_bfin(DSPContext *c, AVCodecContext *avctx,
-                           unsigned high_bit_depth);
  void ff_dsputil_init_ppc(DSPContext *c, AVCodecContext *avctx,
                           unsigned high_bit_depth);
  void ff_dsputil_init_x86(DSPContext *c, AVCodecContext *avctx,
@@@ -357,12 -357,8 +357,10 @@@ av_cold void ff_hpeldsp_init(HpelDSPCon
  
      if (ARCH_AARCH64)
          ff_hpeldsp_init_aarch64(c, flags);
 +    if (ARCH_ALPHA)
 +        ff_hpeldsp_init_alpha(c, flags);
      if (ARCH_ARM)
          ff_hpeldsp_init_arm(c, flags);
-     if (ARCH_BFIN)
-         ff_hpeldsp_init_bfin(c, flags);
      if (ARCH_PPC)
          ff_hpeldsp_init_ppc(c, flags);
      if (ARCH_X86)
@@@ -95,9 -95,7 +95,8 @@@ typedef struct HpelDSPContext 
  void ff_hpeldsp_init(HpelDSPContext *c, int flags);
  
  void ff_hpeldsp_init_aarch64(HpelDSPContext *c, int flags);
 +void ff_hpeldsp_init_alpha(HpelDSPContext *c, int flags);
  void ff_hpeldsp_init_arm(HpelDSPContext *c, int flags);
- void ff_hpeldsp_init_bfin(HpelDSPContext *c, int flags);
  void ff_hpeldsp_init_ppc(HpelDSPContext *c, int flags);
  void ff_hpeldsp_init_x86(HpelDSPContext *c, int flags);
  
Simple merge
Simple merge
Simple merge
@@@ -473,32 -436,6 +473,18 @@@ typedef struct SwsContext 
      vector signed short  *vYCoeffsBank, *vCCoeffsBank;
  #endif
  
- #if ARCH_BFIN
-     DECLARE_ALIGNED(4, uint32_t, oy);
-     DECLARE_ALIGNED(4, uint32_t, oc);
-     DECLARE_ALIGNED(4, uint32_t, zero);
-     DECLARE_ALIGNED(4, uint32_t, cy);
-     DECLARE_ALIGNED(4, uint32_t, crv);
-     DECLARE_ALIGNED(4, uint32_t, rmask);
-     DECLARE_ALIGNED(4, uint32_t, cbu);
-     DECLARE_ALIGNED(4, uint32_t, bmask);
-     DECLARE_ALIGNED(4, uint32_t, cgu);
-     DECLARE_ALIGNED(4, uint32_t, cgv);
-     DECLARE_ALIGNED(4, uint32_t, gmask);
- #endif
 +    int use_mmx_vfilter;
 +
 +/* pre defined color-spaces gamma */
 +#define XYZ_GAMMA (2.6f)
 +#define RGB_GAMMA (2.2f)
 +    int16_t *xyzgamma;
 +    int16_t *rgbgamma;
 +    int16_t *xyzgammainv;
 +    int16_t *rgbgammainv;
 +    int16_t xyz2rgb_matrix[3][4];
 +    int16_t rgb2xyz_matrix[3][4];
 +
      /* function pointers for swscale() */
      yuv2planar1_fn yuv2plane1;
      yuv2planarX_fn yuv2planeX;
@@@ -618,19 -552,10 +604,18 @@@ void ff_yuv2rgb_init_tables_ppc(SwsCont
  void updateMMXDitherTables(SwsContext *c, int dstY, int lumBufIndex, int chrBufIndex,
                             int lastInLumBuf, int lastInChrBuf);
  
 +av_cold void ff_sws_init_range_convert(SwsContext *c);
 +
  SwsFunc ff_yuv2rgb_init_x86(SwsContext *c);
  SwsFunc ff_yuv2rgb_init_ppc(SwsContext *c);
- SwsFunc ff_yuv2rgb_init_bfin(SwsContext *c);
  
 +#if FF_API_SWS_FORMAT_NAME
 +/**
 + * @deprecated Use av_get_pix_fmt_name() instead.
 + */
 +attribute_deprecated
  const char *sws_format_name(enum AVPixelFormat format);
 +#endif
  
  static av_always_inline int is16BPS(enum AVPixelFormat pix_fmt)
  {
@@@ -851,9 -718,7 +836,8 @@@ extern const AVClass sws_context_class
   * source and destination formats, bit depths, flags, etc.
   */
  void ff_get_unscaled_swscale(SwsContext *c);
- void ff_get_unscaled_swscale_bfin(SwsContext *c);
  void ff_get_unscaled_swscale_ppc(SwsContext *c);
 +void ff_get_unscaled_swscale_arm(SwsContext *c);
  
  /**
   * Return function pointer to fastest main scaler path function depending
@@@ -1749,12 -1117,179 +1749,10 @@@ void ff_get_unscaled_swscale(SwsContex
              c->swscale = planarCopyWrapper;
      }
  
-     if (ARCH_BFIN)
-         ff_get_unscaled_swscale_bfin(c);
      if (ARCH_PPC)
          ff_get_unscaled_swscale_ppc(c);
 -}
 -
 -static void reset_ptr(const uint8_t *src[], int format)
 -{
 -    if (!isALPHA(format))
 -        src[3] = NULL;
 -    if (!isPlanar(format)) {
 -        src[3] = src[2] = NULL;
 -
 -        if (!usePal(format))
 -            src[1] = NULL;
 -    }
 -}
 -
 -static int check_image_pointers(uint8_t *data[4], enum AVPixelFormat pix_fmt,
 -                                const int linesizes[4])
 -{
 -    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
 -    int i;
 -
 -    for (i = 0; i < 4; i++) {
 -        int plane = desc->comp[i].plane;
 -        if (!data[plane] || !linesizes[plane])
 -            return 0;
 -    }
 -
 -    return 1;
 -}
 -
 -/**
 - * swscale wrapper, so we don't need to export the SwsContext.
 - * Assumes planar YUV to be in YUV order instead of YVU.
 - */
 -int attribute_align_arg sws_scale(struct SwsContext *c,
 -                                  const uint8_t * const srcSlice[],
 -                                  const int srcStride[], int srcSliceY,
 -                                  int srcSliceH, uint8_t *const dst[],
 -                                  const int dstStride[])
 -{
 -    int i;
 -    const uint8_t *src2[4] = { srcSlice[0], srcSlice[1], srcSlice[2], srcSlice[3] };
 -    uint8_t *dst2[4] = { dst[0], dst[1], dst[2], dst[3] };
 -
 -    // do not mess up sliceDir if we have a "trailing" 0-size slice
 -    if (srcSliceH == 0)
 -        return 0;
 -
 -    if (!check_image_pointers(srcSlice, c->srcFormat, srcStride)) {
 -        av_log(c, AV_LOG_ERROR, "bad src image pointers\n");
 -        return 0;
 -    }
 -    if (!check_image_pointers(dst, c->dstFormat, dstStride)) {
 -        av_log(c, AV_LOG_ERROR, "bad dst image pointers\n");
 -        return 0;
 -    }
 -
 -    if (c->sliceDir == 0 && srcSliceY != 0 && srcSliceY + srcSliceH != c->srcH) {
 -        av_log(c, AV_LOG_ERROR, "Slices start in the middle!\n");
 -        return 0;
 -    }
 -    if (c->sliceDir == 0) {
 -        if (srcSliceY == 0) c->sliceDir = 1; else c->sliceDir = -1;
 -    }
 -
 -    if (usePal(c->srcFormat)) {
 -        for (i = 0; i < 256; i++) {
 -            int r, g, b, y, u, v;
 -            if (c->srcFormat == AV_PIX_FMT_PAL8) {
 -                uint32_t p = ((const uint32_t *)(srcSlice[1]))[i];
 -                r = (p >> 16) & 0xFF;
 -                g = (p >>  8) & 0xFF;
 -                b =  p        & 0xFF;
 -            } else if (c->srcFormat == AV_PIX_FMT_RGB8) {
 -                r = ( i >> 5     ) * 36;
 -                g = ((i >> 2) & 7) * 36;
 -                b = ( i       & 3) * 85;
 -            } else if (c->srcFormat == AV_PIX_FMT_BGR8) {
 -                b = ( i >> 6     ) * 85;
 -                g = ((i >> 3) & 7) * 36;
 -                r = ( i       & 7) * 36;
 -            } else if (c->srcFormat == AV_PIX_FMT_RGB4_BYTE) {
 -                r = ( i >> 3     ) * 255;
 -                g = ((i >> 1) & 3) * 85;
 -                b = ( i       & 1) * 255;
 -            } else if (c->srcFormat == AV_PIX_FMT_GRAY8 ||
 -                      c->srcFormat == AV_PIX_FMT_Y400A) {
 -                r = g = b = i;
 -            } else {
 -                assert(c->srcFormat == AV_PIX_FMT_BGR4_BYTE);
 -                b = ( i >> 3     ) * 255;
 -                g = ((i >> 1) & 3) * 85;
 -                r = ( i       & 1) * 255;
 -            }
 -            y = av_clip_uint8((RY * r + GY * g + BY * b + ( 33 << (RGB2YUV_SHIFT - 1))) >> RGB2YUV_SHIFT);
 -            u = av_clip_uint8((RU * r + GU * g + BU * b + (257 << (RGB2YUV_SHIFT - 1))) >> RGB2YUV_SHIFT);
 -            v = av_clip_uint8((RV * r + GV * g + BV * b + (257 << (RGB2YUV_SHIFT - 1))) >> RGB2YUV_SHIFT);
 -            c->pal_yuv[i] = y + (u << 8) + (v << 16) + (0xFFU << 24);
 -
 -            switch (c->dstFormat) {
 -            case AV_PIX_FMT_BGR32:
 -#if !HAVE_BIGENDIAN
 -            case AV_PIX_FMT_RGB24:
 -#endif
 -                c->pal_rgb[i] =  r + (g << 8) + (b << 16) + (0xFFU << 24);
 -                break;
 -            case AV_PIX_FMT_BGR32_1:
 -#if HAVE_BIGENDIAN
 -            case AV_PIX_FMT_BGR24:
 -#endif
 -                c->pal_rgb[i] = 0xFF + (r << 8) + (g << 16) + ((unsigned)b << 24);
 -                break;
 -            case AV_PIX_FMT_RGB32_1:
 -#if HAVE_BIGENDIAN
 -            case AV_PIX_FMT_RGB24:
 -#endif
 -                c->pal_rgb[i] = 0xFF + (b << 8) + (g << 16) + ((unsigned)r << 24);
 -                break;
 -            case AV_PIX_FMT_RGB32:
 -#if !HAVE_BIGENDIAN
 -            case AV_PIX_FMT_BGR24:
 -#endif
 -            default:
 -                c->pal_rgb[i] =  b + (g << 8) + (r << 16) + (0xFFU << 24);
 -            }
 -        }
 -    }
 -
 -    // copy strides, so they can safely be modified
 -    if (c->sliceDir == 1) {
 -        // slices go from top to bottom
 -        int srcStride2[4] = { srcStride[0], srcStride[1], srcStride[2],
 -                              srcStride[3] };
 -        int dstStride2[4] = { dstStride[0], dstStride[1], dstStride[2],
 -                              dstStride[3] };
 -
 -        reset_ptr(src2, c->srcFormat);
 -        reset_ptr((const uint8_t **) dst2, c->dstFormat);
 -
 -        /* reset slice direction at end of frame */
 -        if (srcSliceY + srcSliceH == c->srcH)
 -            c->sliceDir = 0;
 -
 -        return c->swscale(c, src2, srcStride2, srcSliceY, srcSliceH, dst2,
 -                          dstStride2);
 -    } else {
 -        // slices go from bottom to top => we flip the image internally
 -        int srcStride2[4] = { -srcStride[0], -srcStride[1], -srcStride[2],
 -                              -srcStride[3] };
 -        int dstStride2[4] = { -dstStride[0], -dstStride[1], -dstStride[2],
 -                              -dstStride[3] };
 -
 -        src2[0] += (srcSliceH - 1) * srcStride[0];
 -        if (!usePal(c->srcFormat))
 -            src2[1] += ((srcSliceH >> c->chrSrcVSubSample) - 1) * srcStride[1];
 -        src2[2] += ((srcSliceH >> c->chrSrcVSubSample) - 1) * srcStride[2];
 -        src2[3] += (srcSliceH - 1) * srcStride[3];
 -        dst2[0] += ( c->dstH                         - 1) * dstStride[0];
 -        dst2[1] += ((c->dstH >> c->chrDstVSubSample) - 1) * dstStride[1];
 -        dst2[2] += ((c->dstH >> c->chrDstVSubSample) - 1) * dstStride[2];
 -        dst2[3] += ( c->dstH                         - 1) * dstStride[3];
 -
 -        reset_ptr(src2, c->srcFormat);
 -        reset_ptr((const uint8_t **) dst2, c->dstFormat);
 -
 -        /* reset slice direction at end of frame */
 -        if (!srcSliceY)
 -            c->sliceDir = 0;
 -
 -        return c->swscale(c, src2, srcStride2, c->srcH-srcSliceY-srcSliceH,
 -                          srcSliceH, dst2, dstStride2);
 -    }
 +//     if (ARCH_ARM)
 +//         ff_get_unscaled_swscale_arm(c);
  }
  
  /* Convert the palette to the same packed 32-bit format as the palette */
  #ifndef FF_API_SWS_CPU_CAPS
  #define FF_API_SWS_CPU_CAPS    (LIBSWSCALE_VERSION_MAJOR < 3)
  #endif
 +#ifndef FF_API_SWS_FORMAT_NAME
 +#define FF_API_SWS_FORMAT_NAME  (LIBSWSCALE_VERSION_MAJOR < 3)
 +#endif
+ #ifndef FF_API_ARCH_BFIN
+ #define FF_API_ARCH_BFIN       (LIBSWSCALE_VERSION_MAJOR < 3)
+ #endif
  
  #endif /* SWSCALE_VERSION_H */
Simple merge