]> git.sesse.net Git - ffmpeg/commitdiff
Merge commit 'cad40a3833ad81a352e7657ec6f7d637cea3b798'
authorHendrik Leppkes <h.leppkes@gmail.com>
Sat, 5 Sep 2015 15:05:46 +0000 (17:05 +0200)
committerHendrik Leppkes <h.leppkes@gmail.com>
Sat, 5 Sep 2015 15:06:14 +0000 (17:06 +0200)
* commit 'cad40a3833ad81a352e7657ec6f7d637cea3b798':
  lavc: Drop deprecated deinterlace module

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavcodec/avcodec.h
libavcodec/imgconvert.c
libavcodec/imgconvert.h
libavcodec/version.h
libavcodec/x86/Makefile

index 8201536659966750401ca74721e4de07f4742ba4,e4e656c93a104c110b936d33d40af1433ee35e5b..6a918e904a7b5a518bf1bf95cc9dec7dc44eb757
@@@ -4977,18 -4227,8 +4977,8 @@@ int avpicture_layout(const AVPicture *s
   */
  int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
  
- #if FF_API_DEINTERLACE
- /**
-  *  deinterlace - if not supported return -1
-  *
-  * @deprecated - use yadif (in libavfilter) instead
-  */
- attribute_deprecated
- int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
-                           enum AVPixelFormat pix_fmt, int width, int height);
- #endif
  /**
 - * Copy image src to dst. Wraps av_picture_data_copy() above.
 + * Copy image src to dst. Wraps av_image_copy().
   */
  void av_picture_copy(AVPicture *dst, const AVPicture *src,
                       enum AVPixelFormat pix_fmt, int width, int height);
index dc67560742ae1c741b5ef13e2e5460f2061cc5a1,c9bf6a938a33bd61999661c7632baebe695652a8..7c1b22fb39eed6914ad048b23b01f8bc0eb17629
@@@ -286,206 -335,3 +286,31 @@@ int av_picture_pad(AVPicture *dst, cons
      }
      return 0;
  }
- #if FF_API_DEINTERLACE
- #if HAVE_MMX_EXTERNAL
- #define deinterlace_line_inplace ff_deinterlace_line_inplace_mmx
- #define deinterlace_line         ff_deinterlace_line_mmx
- #else
- #define deinterlace_line_inplace deinterlace_line_inplace_c
- #define deinterlace_line         deinterlace_line_c
- /* filter parameters: [-1 4 2 4 -1] // 8 */
- static void deinterlace_line_c(uint8_t *dst,
-                              const uint8_t *lum_m4, const uint8_t *lum_m3,
-                              const uint8_t *lum_m2, const uint8_t *lum_m1,
-                              const uint8_t *lum,
-                              int size)
- {
-     const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
-     int sum;
-     for(;size > 0;size--) {
-         sum = -lum_m4[0];
-         sum += lum_m3[0] << 2;
-         sum += lum_m2[0] << 1;
-         sum += lum_m1[0] << 2;
-         sum += -lum[0];
-         dst[0] = cm[(sum + 4) >> 3];
-         lum_m4++;
-         lum_m3++;
-         lum_m2++;
-         lum_m1++;
-         lum++;
-         dst++;
-     }
- }
- static void deinterlace_line_inplace_c(uint8_t *lum_m4, uint8_t *lum_m3,
-                                        uint8_t *lum_m2, uint8_t *lum_m1,
-                                        uint8_t *lum, int size)
- {
-     const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
-     int sum;
-     for(;size > 0;size--) {
-         sum = -lum_m4[0];
-         sum += lum_m3[0] << 2;
-         sum += lum_m2[0] << 1;
-         lum_m4[0]=lum_m2[0];
-         sum += lum_m1[0] << 2;
-         sum += -lum[0];
-         lum_m2[0] = cm[(sum + 4) >> 3];
-         lum_m4++;
-         lum_m3++;
-         lum_m2++;
-         lum_m1++;
-         lum++;
-     }
- }
- #endif /* !HAVE_MMX_EXTERNAL */
- /* deinterlacing : 2 temporal taps, 3 spatial taps linear filter. The
-    top field is copied as is, but the bottom field is deinterlaced
-    against the top field. */
- static void deinterlace_bottom_field(uint8_t *dst, int dst_wrap,
-                                     const uint8_t *src1, int src_wrap,
-                                     int width, int height)
- {
-     const uint8_t *src_m2, *src_m1, *src_0, *src_p1, *src_p2;
-     int y;
-     src_m2 = src1;
-     src_m1 = src1;
-     src_0=&src_m1[src_wrap];
-     src_p1=&src_0[src_wrap];
-     src_p2=&src_p1[src_wrap];
-     for(y=0;y<(height-2);y+=2) {
-         memcpy(dst,src_m1,width);
-         dst += dst_wrap;
-         deinterlace_line(dst,src_m2,src_m1,src_0,src_p1,src_p2,width);
-         src_m2 = src_0;
-         src_m1 = src_p1;
-         src_0 = src_p2;
-         src_p1 += 2*src_wrap;
-         src_p2 += 2*src_wrap;
-         dst += dst_wrap;
-     }
-     memcpy(dst,src_m1,width);
-     dst += dst_wrap;
-     /* do last line */
-     deinterlace_line(dst,src_m2,src_m1,src_0,src_0,src_0,width);
- }
- static int deinterlace_bottom_field_inplace(uint8_t *src1, int src_wrap,
-                                             int width, int height)
- {
-     uint8_t *src_m1, *src_0, *src_p1, *src_p2;
-     int y;
-     uint8_t *buf;
-     buf = av_malloc(width);
-     if (!buf)
-         return AVERROR(ENOMEM);
-     src_m1 = src1;
-     memcpy(buf,src_m1,width);
-     src_0=&src_m1[src_wrap];
-     src_p1=&src_0[src_wrap];
-     src_p2=&src_p1[src_wrap];
-     for(y=0;y<(height-2);y+=2) {
-         deinterlace_line_inplace(buf,src_m1,src_0,src_p1,src_p2,width);
-         src_m1 = src_p1;
-         src_0 = src_p2;
-         src_p1 += 2*src_wrap;
-         src_p2 += 2*src_wrap;
-     }
-     /* do last line */
-     deinterlace_line_inplace(buf,src_m1,src_0,src_0,src_0,width);
-     av_free(buf);
-     return 0;
- }
- int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
-                           enum AVPixelFormat pix_fmt, int width, int height)
- {
-     int i, ret;
-     if (pix_fmt != AV_PIX_FMT_YUV420P &&
-         pix_fmt != AV_PIX_FMT_YUVJ420P &&
-         pix_fmt != AV_PIX_FMT_YUV422P &&
-         pix_fmt != AV_PIX_FMT_YUVJ422P &&
-         pix_fmt != AV_PIX_FMT_YUV444P &&
-         pix_fmt != AV_PIX_FMT_YUV411P &&
-         pix_fmt != AV_PIX_FMT_GRAY8)
-         return -1;
-     if ((width & 3) != 0 || (height & 3) != 0)
-         return -1;
-     for(i=0;i<3;i++) {
-         if (i == 1) {
-             switch(pix_fmt) {
-             case AV_PIX_FMT_YUVJ420P:
-             case AV_PIX_FMT_YUV420P:
-                 width >>= 1;
-                 height >>= 1;
-                 break;
-             case AV_PIX_FMT_YUV422P:
-             case AV_PIX_FMT_YUVJ422P:
-                 width >>= 1;
-                 break;
-             case AV_PIX_FMT_YUV411P:
-                 width >>= 2;
-                 break;
-             default:
-                 break;
-             }
-             if (pix_fmt == AV_PIX_FMT_GRAY8) {
-                 break;
-             }
-         }
-         if (src == dst) {
-             ret = deinterlace_bottom_field_inplace(dst->data[i],
-                                                    dst->linesize[i],
-                                                    width, height);
-             if (ret < 0)
-                 return ret;
-         } else {
-             deinterlace_bottom_field(dst->data[i],dst->linesize[i],
-                                         src->data[i], src->linesize[i],
-                                         width, height);
-         }
-     }
-     emms_c();
-     return 0;
- }
- #endif /* FF_API_DEINTERLACE */
 +
 +#ifdef TEST
 +
 +int main(void){
 +    int i;
 +    int err=0;
 +    int skip = 0;
 +
 +    for (i=0; i<AV_PIX_FMT_NB*2; i++) {
 +        const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(i);
 +        if(!desc || !desc->name) {
 +            skip ++;
 +            continue;
 +        }
 +        if (skip) {
 +            av_log(NULL, AV_LOG_INFO, "%3d unused pixel format values\n", skip);
 +            skip = 0;
 +        }
 +        av_log(NULL, AV_LOG_INFO, "pix fmt %s yuv_plan:%d avg_bpp:%d\n", desc->name, is_yuv_planar(desc), av_get_padded_bits_per_pixel(desc));
 +        if ((!(desc->flags & AV_PIX_FMT_FLAG_ALPHA)) != (desc->nb_components != 2 && desc->nb_components != 4)) {
 +            av_log(NULL, AV_LOG_ERROR, "Alpha flag mismatch\n");
 +            err = 1;
 +        }
 +    }
 +    return err;
 +}
 +
 +#endif
Simple merge
index 0dced6cb626a9d82f77b5a3feee6400a0cffcfb6,681c2e6d29a87e52df24302ddc7f57629af9b51b..0ef31653caae1240c471493031d52f696ef8bd11
   * 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_DEINTERLACE
- #define FF_API_DEINTERLACE       (LIBAVCODEC_VERSION_MAJOR < 57)
- #endif
 +#ifndef FF_API_VIMA_DECODER
 +#define FF_API_VIMA_DECODER     (LIBAVCODEC_VERSION_MAJOR < 57)
 +#endif
 +#ifndef FF_API_OLD_DECODE_AUDIO
 +#define FF_API_OLD_DECODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 57)
 +#endif
 +#ifndef FF_API_OLD_ENCODE_AUDIO
 +#define FF_API_OLD_ENCODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 57)
 +#endif
 +#ifndef FF_API_OLD_ENCODE_VIDEO
 +#define FF_API_OLD_ENCODE_VIDEO (LIBAVCODEC_VERSION_MAJOR < 57)
 +#endif
 +#ifndef FF_API_CODEC_ID
 +#define FF_API_CODEC_ID          (LIBAVCODEC_VERSION_MAJOR < 57)
 +#endif
 +#ifndef FF_API_AUDIO_CONVERT
 +#define FF_API_AUDIO_CONVERT     (LIBAVCODEC_VERSION_MAJOR < 57)
 +#endif
 +#ifndef FF_API_AVCODEC_RESAMPLE
 +#define FF_API_AVCODEC_RESAMPLE  FF_API_AUDIO_CONVERT
 +#endif
  #ifndef FF_API_MISSING_SAMPLE
  #define FF_API_MISSING_SAMPLE    (LIBAVCODEC_VERSION_MAJOR < 57)
  #endif
index c4037700dfaeb483aaee8059ed5ea56aa271af87,1cf47a85671c5ac32dd111d27c0cb9b71397c351..3c3cc1cebb5ca0462d78e60a03a64998ff3539aa
@@@ -68,19 -56,19 +68,15 @@@ OBJS-$(CONFIG_WEBP_DECODER)            
  
  # GCC inline assembly optimizations
  # subsystems
 -MMX-OBJS-$(CONFIG_AUDIODSP)            += x86/audiodsp_mmx.o
 -MMX-OBJS-$(CONFIG_HPELDSP)             += x86/fpel_mmx.o                \
 -                                          x86/hpeldsp_mmx.o
 +MMX-OBJS-$(CONFIG_DIRAC_DECODER)       += x86/dirac_dwt.o
  MMX-OBJS-$(CONFIG_FDCTDSP)             += x86/fdct.o
 -MMX-OBJS-$(CONFIG_IDCTDSP)             += x86/idctdsp_mmx.o             \
 -                                          x86/simple_idct.o
 -MMX-OBJS-$(CONFIG_QPELDSP)             += x86/fpel_mmx.o
 +MMX-OBJS-$(CONFIG_IDCTDSP)             += x86/simple_idct.o
  
  # decoders/encoders
 -MMX-OBJS-$(CONFIG_MPEG4_DECODER)       += x86/xvididct_mmx.o            \
 -                                          x86/xvididct_sse2.o
 +MMX-OBJS-$(CONFIG_SNOW_DECODER)        += x86/snowdsp.o
 +MMX-OBJS-$(CONFIG_SNOW_ENCODER)        += x86/snowdsp.o
  MMX-OBJS-$(CONFIG_VC1_DECODER)         += x86/vc1dsp_mmx.o
  
- # YASM optimizations
- YASM-OBJS                              += x86/deinterlace.o             \
  # subsystems
  YASM-OBJS-$(CONFIG_AC3DSP)             += x86/ac3dsp.o
  YASM-OBJS-$(CONFIG_AUDIODSP)           += x86/audiodsp.o