[FFmpeg-cvslog] lavc: Drop deprecated deinterlace module

Vittorio Giovara git at videolan.org
Sat Sep 5 17:08:08 CEST 2015


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Tue Jul 28 14:30:26 2015 +0100| [cad40a3833ad81a352e7657ec6f7d637cea3b798] | committer: Vittorio Giovara

lavc: Drop deprecated deinterlace module

Deprecated in 03/2013.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cad40a3833ad81a352e7657ec6f7d637cea3b798
---

 libavcodec/avcodec.h           |   10 ---
 libavcodec/imgconvert.c        |  175 ----------------------------------------
 libavcodec/imgconvert.h        |   16 ----
 libavcodec/version.h           |    3 -
 libavcodec/x86/Makefile        |    4 -
 libavcodec/x86/deinterlace.asm |   82 -------------------
 6 files changed, 290 deletions(-)

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 8eca49b..e4e656c 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -4227,16 +4227,6 @@ int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt,
  */
 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.
  */
diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c
index 0741e6e..c9bf6a9 100644
--- a/libavcodec/imgconvert.c
+++ b/libavcodec/imgconvert.c
@@ -335,178 +335,3 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width,
     }
     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 */
diff --git a/libavcodec/imgconvert.h b/libavcodec/imgconvert.h
index 56d89b2..e52ce0a 100644
--- a/libavcodec/imgconvert.h
+++ b/libavcodec/imgconvert.h
@@ -23,22 +23,6 @@
 
 #include "version.h"
 
-#if FF_API_DEINTERLACE
-
-void ff_deinterlace_line_mmx(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);
-
-void ff_deinterlace_line_inplace_mmx(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);
-
-#endif /* FF_API_DEINTERLACE */
-
 /* 1/2^n downscaling functions */
 void ff_shrink22(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
 void ff_shrink44(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
diff --git a/libavcodec/version.h b/libavcodec/version.h
index d14b1c0..681c2e6 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -48,9 +48,6 @@
  * the public API and may change, break or disappear at any time.
  */
 
-#ifndef FF_API_DEINTERLACE
-#define FF_API_DEINTERLACE       (LIBAVCODEC_VERSION_MAJOR < 57)
-#endif
 #ifndef FF_API_MISSING_SAMPLE
 #define FF_API_MISSING_SAMPLE    (LIBAVCODEC_VERSION_MAJOR < 57)
 #endif
diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
index cc80007..1cf47a8 100644
--- a/libavcodec/x86/Makefile
+++ b/libavcodec/x86/Makefile
@@ -69,10 +69,6 @@ MMX-OBJS-$(CONFIG_MPEG4_DECODER)       += x86/xvididct_mmx.o            \
                                           x86/xvididct_sse2.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
diff --git a/libavcodec/x86/deinterlace.asm b/libavcodec/x86/deinterlace.asm
deleted file mode 100644
index 70d000e..0000000
--- a/libavcodec/x86/deinterlace.asm
+++ /dev/null
@@ -1,82 +0,0 @@
-;******************************************************************************
-;* SIMD-optimized deinterlacing functions
-;* Copyright (c) 2010 Vitor Sessak
-;* Copyright (c) 2002 Michael Niedermayer
-;*
-;* This file is part of Libav.
-;*
-;* Libav 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,
-;* 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
-;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-;******************************************************************************
-
-%include "libavutil/x86/x86util.asm"
-
-SECTION_RODATA
-
-cextern pw_4
-
-SECTION .text
-
-%macro DEINTERLACE 1
-%ifidn %1, inplace
-;void ff_deinterlace_line_inplace_mmx(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)
-cglobal deinterlace_line_inplace_mmx, 6,6,7,      lum_m4, lum_m3, lum_m2, lum_m1, lum, size
-%else
-;void ff_deinterlace_line_mmx(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)
-cglobal deinterlace_line_mmx,         7,7,7, dst, lum_m4, lum_m3, lum_m2, lum_m1, lum, size
-%endif
-    pxor  mm7, mm7
-    movq  mm6, [pw_4]
-.nextrow:
-    movd  mm0, [lum_m4q]
-    movd  mm1, [lum_m3q]
-    movd  mm2, [lum_m2q]
-%ifidn %1, inplace
-    movd [lum_m4q], mm2
-%endif
-    movd  mm3, [lum_m1q]
-    movd  mm4, [lumq]
-    punpcklbw mm0, mm7
-    punpcklbw mm1, mm7
-    punpcklbw mm2, mm7
-    punpcklbw mm3, mm7
-    punpcklbw mm4, mm7
-    paddw     mm1, mm3
-    psllw     mm2, 1
-    paddw     mm0, mm4
-    psllw     mm1, 2
-    paddw     mm2, mm6
-    paddw     mm1, mm2
-    psubusw   mm1, mm0
-    psrlw     mm1, 3
-    packuswb  mm1, mm7
-%ifidn %1, inplace
-    movd [lum_m2q], mm1
-%else
-    movd   [dstq], mm1
-    add       dstq, 4
-%endif
-    add    lum_m4q, 4
-    add    lum_m3q, 4
-    add    lum_m2q, 4
-    add    lum_m1q, 4
-    add       lumq, 4
-    sub      sized, 4
-    jg .nextrow
-    REP_RET
-%endmacro
-
-DEINTERLACE ""
-
-DEINTERLACE inplace



More information about the ffmpeg-cvslog mailing list