diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-07-28 14:30:26 +0100 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-08-28 16:04:19 +0200 |
commit | cad40a3833ad81a352e7657ec6f7d637cea3b798 (patch) | |
tree | 27003b21951b1075cd164ce70f3339e9653b119b /libavcodec | |
parent | 069713aa4b137781e270768d803b1f7456daa724 (diff) | |
download | ffmpeg-cad40a3833ad81a352e7657ec6f7d637cea3b798.tar.gz |
lavc: Drop deprecated deinterlace module
Deprecated in 03/2013.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/avcodec.h | 10 | ||||
-rw-r--r-- | libavcodec/imgconvert.c | 175 | ||||
-rw-r--r-- | libavcodec/imgconvert.h | 16 | ||||
-rw-r--r-- | libavcodec/version.h | 3 | ||||
-rw-r--r-- | libavcodec/x86/Makefile | 4 | ||||
-rw-r--r-- | libavcodec/x86/deinterlace.asm | 82 |
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 |