Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
cad40a38
Commit
cad40a38
authored
Jul 28, 2015
by
Vittorio Giovara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: Drop deprecated deinterlace module
Deprecated in 03/2013.
parent
069713aa
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
0 additions
and
290 deletions
+0
-290
avcodec.h
libavcodec/avcodec.h
+0
-10
imgconvert.c
libavcodec/imgconvert.c
+0
-175
imgconvert.h
libavcodec/imgconvert.h
+0
-16
version.h
libavcodec/version.h
+0
-3
Makefile
libavcodec/x86/Makefile
+0
-4
deinterlace.asm
libavcodec/x86/deinterlace.asm
+0
-82
No files found.
libavcodec/avcodec.h
View file @
cad40a38
...
...
@@ -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.
*/
...
...
libavcodec/imgconvert.c
View file @
cad40a38
...
...
@@ -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 */
libavcodec/imgconvert.h
View file @
cad40a38
...
...
@@ -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
);
...
...
libavcodec/version.h
View file @
cad40a38
...
...
@@ -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
...
...
libavcodec/x86/Makefile
View file @
cad40a38
...
...
@@ -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
...
...
libavcodec/x86/deinterlace.asm
deleted
100644 → 0
View file @
069713aa
;******************************************************************************
;* 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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment