Merge commit '0871e2337777d9161e7f3554bcad19dabc9e15e1'
authorJames Almer <jamrial@gmail.com>
Mon, 23 Oct 2017 18:04:19 +0000 (15:04 -0300)
committerJames Almer <jamrial@gmail.com>
Mon, 23 Oct 2017 18:05:12 +0000 (15:05 -0300)
* commit '0871e2337777d9161e7f3554bcad19dabc9e15e1':
  lavc: Drop deprecated architectures symbols

Merged-by: James Almer <jamrial@gmail.com>
1  2 
libavcodec/alpha/idctdsp_alpha.c
libavcodec/avcodec.h
libavcodec/avdct.c
libavcodec/options_table.h
libavcodec/version.h

index 1923ebb,0000000..bd43842
mode 100644,000000..100644
--- /dev/null
@@@ -1,127 -1,0 +1,126 @@@
-         (avctx->idct_algo == FF_IDCT_AUTO ||
-          avctx->idct_algo == FF_IDCT_SIMPLEALPHA)) {
 +/*
 + * Copyright (c) 2002 Falk Hueffner <falk@debian.org>
 + *
 + * This file is part of FFmpeg.
 + *
 + * 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.
 + *
 + * 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 FFmpeg; if not, write to the Free Software
 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 + */
 +
 +#include "libavutil/attributes.h"
 +#include "libavcodec/idctdsp.h"
 +#include "idctdsp_alpha.h"
 +#include "asm.h"
 +
 +void put_pixels_clamped_mvi_asm(const int16_t *block, uint8_t *pixels,
 +                                ptrdiff_t line_size);
 +void add_pixels_clamped_mvi_asm(const int16_t *block, uint8_t *pixels,
 +                                ptrdiff_t line_size);
 +
 +void (*put_pixels_clamped_axp_p)(const int16_t *block, uint8_t *pixels,
 +                                 ptrdiff_t line_size);
 +void (*add_pixels_clamped_axp_p)(const int16_t *block, uint8_t *pixels,
 +                                 ptrdiff_t line_size);
 +
 +#if 0
 +/* These functions were the base for the optimized assembler routines,
 +   and remain here for documentation purposes.  */
 +static void put_pixels_clamped_mvi(const int16_t *block, uint8_t *pixels,
 +                                   ptrdiff_t line_size)
 +{
 +    int i = 8;
 +    uint64_t clampmask = zap(-1, 0xaa); /* 0x00ff00ff00ff00ff */
 +
 +    do {
 +        uint64_t shorts0, shorts1;
 +
 +        shorts0 = ldq(block);
 +        shorts0 = maxsw4(shorts0, 0);
 +        shorts0 = minsw4(shorts0, clampmask);
 +        stl(pkwb(shorts0), pixels);
 +
 +        shorts1 = ldq(block + 4);
 +        shorts1 = maxsw4(shorts1, 0);
 +        shorts1 = minsw4(shorts1, clampmask);
 +        stl(pkwb(shorts1), pixels + 4);
 +
 +        pixels += line_size;
 +        block += 8;
 +    } while (--i);
 +}
 +
 +void add_pixels_clamped_mvi(const int16_t *block, uint8_t *pixels,
 +                            ptrdiff_t line_size)
 +{
 +    int h = 8;
 +    /* Keep this function a leaf function by generating the constants
 +       manually (mainly for the hack value ;-).  */
 +    uint64_t clampmask = zap(-1, 0xaa); /* 0x00ff00ff00ff00ff */
 +    uint64_t signmask  = zap(-1, 0x33);
 +    signmask ^= signmask >> 1;  /* 0x8000800080008000 */
 +
 +    do {
 +        uint64_t shorts0, pix0, signs0;
 +        uint64_t shorts1, pix1, signs1;
 +
 +        shorts0 = ldq(block);
 +        shorts1 = ldq(block + 4);
 +
 +        pix0    = unpkbw(ldl(pixels));
 +        /* Signed subword add (MMX paddw).  */
 +        signs0  = shorts0 & signmask;
 +        shorts0 &= ~signmask;
 +        shorts0 += pix0;
 +        shorts0 ^= signs0;
 +        /* Clamp. */
 +        shorts0 = maxsw4(shorts0, 0);
 +        shorts0 = minsw4(shorts0, clampmask);
 +
 +        /* Next 4.  */
 +        pix1    = unpkbw(ldl(pixels + 4));
 +        signs1  = shorts1 & signmask;
 +        shorts1 &= ~signmask;
 +        shorts1 += pix1;
 +        shorts1 ^= signs1;
 +        shorts1 = maxsw4(shorts1, 0);
 +        shorts1 = minsw4(shorts1, clampmask);
 +
 +        stl(pkwb(shorts0), pixels);
 +        stl(pkwb(shorts1), pixels + 4);
 +
 +        pixels += line_size;
 +        block += 8;
 +    } while (--h);
 +}
 +#endif
 +
 +av_cold void ff_idctdsp_init_alpha(IDCTDSPContext *c, AVCodecContext *avctx,
 +                                   unsigned high_bit_depth)
 +{
 +    /* amask clears all bits that correspond to present features.  */
 +    if (amask(AMASK_MVI) == 0) {
 +        c->put_pixels_clamped = put_pixels_clamped_mvi_asm;
 +        c->add_pixels_clamped = add_pixels_clamped_mvi_asm;
 +    }
 +
 +    put_pixels_clamped_axp_p = c->put_pixels_clamped;
 +    add_pixels_clamped_axp_p = c->add_pixels_clamped;
 +
 +    if (!high_bit_depth && !avctx->lowres &&
++        (avctx->idct_algo == FF_IDCT_AUTO)) {
 +        c->idct_put = ff_simple_idct_put_axp;
 +        c->idct_add = ff_simple_idct_add_axp;
 +        c->idct =     ff_simple_idct_axp;
 +    }
 +}
@@@ -3110,16 -2744,8 +3107,10 @@@ typedef struct AVCodecContext 
  #endif /* FF_API_IDCT_XVIDMMX */
  #define FF_IDCT_SIMPLEARMV5TE 16
  #define FF_IDCT_SIMPLEARMV6   17
- #if FF_API_ARCH_SPARC
- #define FF_IDCT_SIMPLEVIS     18
- #endif
  #define FF_IDCT_FAAN          20
  #define FF_IDCT_SIMPLENEON    22
- #if FF_API_ARCH_ALPHA
- #define FF_IDCT_SIMPLEALPHA   23
- #endif
 +#define FF_IDCT_NONE          24 /* Used by XvMC to extract IDCT coefficients with FF_IDCT_PERM_NONE */
 +#define FF_IDCT_SIMPLEAUTO    128
  
      /**
       * bits per sample/pixel from the demuxer (needed for huffyuv).
index 80aca88,0000000..a9a43cc
mode 100644,000000..100644
--- /dev/null
@@@ -1,139 -1,0 +1,133 @@@
- #if FF_API_ARCH_SH4
- {"sh4", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SH4 }, INT_MIN, INT_MAX, V|E|D, "idct"},
- #endif
 +/*
 + * Copyright (c) 2014 Michael Niedermayer <michaelni@gmx.at>
 + *
 + * This file is part of FFmpeg.
 + *
 + * 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.
 + *
 + * 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 FFmpeg; if not, write to the Free Software
 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 + */
 +
 +#include "avcodec.h"
 +#include "idctdsp.h"
 +#include "fdctdsp.h"
 +#include "pixblockdsp.h"
 +#include "avdct.h"
 +
 +#define OFFSET(x) offsetof(AVDCT,x)
 +#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C
 +//these names are too long to be readable
 +#define V AV_OPT_FLAG_VIDEO_PARAM
 +#define A AV_OPT_FLAG_AUDIO_PARAM
 +#define E AV_OPT_FLAG_ENCODING_PARAM
 +#define D AV_OPT_FLAG_DECODING_PARAM
 +
 +static const AVOption avdct_options[] = {
 +{"dct", "DCT algorithm", OFFSET(dct_algo), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, 0, INT_MAX, V|E, "dct"},
 +{"auto", "autoselect a good one", 0, AV_OPT_TYPE_CONST, {.i64 = FF_DCT_AUTO }, INT_MIN, INT_MAX, V|E, "dct"},
 +{"fastint", "fast integer (experimental / for debugging)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_DCT_FASTINT }, INT_MIN, INT_MAX, V|E, "dct"},
 +{"int", "accurate integer", 0, AV_OPT_TYPE_CONST, {.i64 = FF_DCT_INT }, INT_MIN, INT_MAX, V|E, "dct"},
 +{"mmx", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_DCT_MMX }, INT_MIN, INT_MAX, V|E, "dct"},
 +{"altivec", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_DCT_ALTIVEC }, INT_MIN, INT_MAX, V|E, "dct"},
 +{"faan", "floating point AAN DCT (experimental / for debugging)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_DCT_FAAN }, INT_MIN, INT_MAX, V|E, "dct"},
 +
 +{"idct", "select IDCT implementation", OFFSET(idct_algo), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, 0, INT_MAX, V|E|D, "idct"},
 +{"auto", "autoselect a good one", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_AUTO }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"int", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_INT }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"simple", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLE }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"simplemmx", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLEMMX }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"arm", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_ARM }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"altivec", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_ALTIVEC }, INT_MIN, INT_MAX, V|E|D, "idct"},
- #if FF_API_ARCH_ALPHA
- {"simplealpha", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLEALPHA }, INT_MIN, INT_MAX, V|E|D, "idct"},
- #endif
 +{"simplearm", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLEARM }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"simplearmv5te", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLEARMV5TE }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"simplearmv6", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLEARMV6 }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"simpleneon", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLENEON }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +#if FF_API_UNUSED_MEMBERS
 +{"ipp", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_IPP }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +#endif
 +{"xvid", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_XVID }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"xvidmmx", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_XVID }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +{"faani", "floating point AAN IDCT (experimental / for debugging)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_FAAN }, INT_MIN, INT_MAX, V|D|E, "idct"},
 +{"simpleauto", "experimental / for debugging", 0, AV_OPT_TYPE_CONST, {.i64 = FF_IDCT_SIMPLEAUTO }, INT_MIN, INT_MAX, V|E|D, "idct"},
 +
 +{"bits_per_sample", "", OFFSET(bits_per_sample), AV_OPT_TYPE_INT, {.i64 = 8 }, 0, 14, 0,},
 +{NULL},
 +};
 +
 +static const AVClass avdct_class = {
 +    .class_name              = "AVDCT",
 +    .option                  = avdct_options,
 +    .version                 = LIBAVUTIL_VERSION_INT,
 +};
 +
 +const AVClass *avcodec_dct_get_class(void)
 +{
 +    return &avdct_class;
 +}
 +
 +AVDCT *avcodec_dct_alloc(void)
 +{
 +    AVDCT *dsp = av_mallocz(sizeof(AVDCT));
 +
 +    if (!dsp)
 +        return NULL;
 +
 +    dsp->av_class = &avdct_class;
 +    av_opt_set_defaults(dsp);
 +
 +    return dsp;
 +}
 +
 +int avcodec_dct_init(AVDCT *dsp)
 +{
 +    AVCodecContext *avctx = avcodec_alloc_context3(NULL);
 +
 +    if (!avctx)
 +        return AVERROR(ENOMEM);
 +
 +    avctx->idct_algo = dsp->idct_algo;
 +    avctx->dct_algo  = dsp->dct_algo;
 +    avctx->bits_per_raw_sample = dsp->bits_per_sample;
 +
 +#define COPY(src, name) memcpy(&dsp->name, &src.name, sizeof(dsp->name))
 +
 +#if CONFIG_IDCTDSP
 +    {
 +        IDCTDSPContext idsp;
 +        ff_idctdsp_init(&idsp, avctx);
 +        COPY(idsp, idct);
 +        COPY(idsp, idct_permutation);
 +    }
 +#endif
 +
 +#if CONFIG_FDCTDSP
 +    {
 +        FDCTDSPContext fdsp;
 +        ff_fdctdsp_init(&fdsp, avctx);
 +        COPY(fdsp, fdct);
 +    }
 +#endif
 +
 +#if CONFIG_PIXBLOCKDSP
 +    {
 +        PixblockDSPContext pdsp;
 +        ff_pixblockdsp_init(&pdsp, avctx);
 +        COPY(pdsp, get_pixels);
 +    }
 +#endif
 +
 +    avcodec_close(avctx);
 +    av_free(avctx);
 +
 +    return 0;
 +}
Simple merge
   * FF_API_* defines may be placed below to indicate public API that will be
   * dropped at a future version bump. The defines themselves are not part of
   * the public API and may change, break or disappear at any time.
 + *
 + * @note, when bumping the major version it is recommended to manually
 + * disable each FF_API_* in its own commit instead of disabling them all
 + * at once through the bump. This improves the git bisect-ability of the change.
   */
  
- #ifndef FF_API_ARCH_ALPHA
- #define FF_API_ARCH_ALPHA        (LIBAVCODEC_VERSION_MAJOR < 58)
- #endif
 +#ifndef FF_API_LOWRES
 +#define FF_API_LOWRES            (LIBAVCODEC_VERSION_MAJOR < 59)
 +#endif
 +#ifndef FF_API_DEBUG_MV
 +#define FF_API_DEBUG_MV          (LIBAVCODEC_VERSION_MAJOR < 58)
 +#endif
  #ifndef FF_API_XVMC
  #define FF_API_XVMC              (LIBAVCODEC_VERSION_MAJOR < 58)
  #endif