summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/avcodec.h10
-rw-r--r--libavcodec/imgconvert.c175
-rw-r--r--libavcodec/imgconvert.h16
-rw-r--r--libavcodec/version.h3
-rw-r--r--libavcodec/x86/Makefile4
-rw-r--r--libavcodec/x86/deinterlace.asm82
6 files changed, 0 insertions, 290 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 8eca49b654..e4e656c93a 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 0741e6ec2c..c9bf6a938a 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 56d89b2df0..e52ce0a64e 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 d14b1c0e4d..681c2e6d29 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 cc8000705b..1cf47a8567 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 70d000e0db..0000000000
--- 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