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
0b711ca3
Commit
0b711ca3
authored
Jan 18, 2013
by
Mans Rullgard
Committed by
Diego Biurrun
Jan 20, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dsputil: drop non-compliant "fast" qpel mc functions
Signed-off-by:
Diego Biurrun
<
diego@biurrun.de
>
parent
4603ec85
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
3 additions
and
144 deletions
+3
-144
dsputil.c
libavcodec/dsputil.c
+0
-16
dsputil.h
libavcodec/dsputil.h
+0
-3
h263dec.c
libavcodec/h263dec.c
+1
-4
h264.c
libavcodec/h264.c
+2
-9
dsputil_avg_template.c
libavcodec/x86/dsputil_avg_template.c
+0
-51
dsputil_mmx.c
libavcodec/x86/dsputil_mmx.c
+0
-61
No files found.
libavcodec/dsputil.c
View file @
0b711ca3
...
...
@@ -2629,8 +2629,6 @@ int ff_check_alignment(void){
av_cold
void
ff_dsputil_init
(
DSPContext
*
c
,
AVCodecContext
*
avctx
)
{
int
i
,
j
;
ff_check_alignment
();
#if CONFIG_ENCODERS
...
...
@@ -2832,9 +2830,6 @@ av_cold void ff_dsputil_init(DSPContext* c, AVCodecContext *avctx)
c
->
shrink
[
2
]
=
ff_shrink44
;
c
->
shrink
[
3
]
=
ff_shrink88
;
memset
(
c
->
put_2tap_qpel_pixels_tab
,
0
,
sizeof
(
c
->
put_2tap_qpel_pixels_tab
));
memset
(
c
->
avg_2tap_qpel_pixels_tab
,
0
,
sizeof
(
c
->
avg_2tap_qpel_pixels_tab
));
#undef FUNC
#undef FUNCC
#define FUNC(f, depth) f ## _ ## depth
...
...
@@ -2931,17 +2926,6 @@ av_cold void ff_dsputil_init(DSPContext* c, AVCodecContext *avctx)
if
(
ARCH_SH4
)
ff_dsputil_init_sh4
(
c
,
avctx
);
if
(
ARCH_BFIN
)
ff_dsputil_init_bfin
(
c
,
avctx
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
j
=
0
;
j
<
16
;
j
++
)
{
if
(
!
c
->
put_2tap_qpel_pixels_tab
[
i
][
j
])
c
->
put_2tap_qpel_pixels_tab
[
i
][
j
]
=
c
->
put_h264_qpel_pixels_tab
[
i
][
j
];
if
(
!
c
->
avg_2tap_qpel_pixels_tab
[
i
][
j
])
c
->
avg_2tap_qpel_pixels_tab
[
i
][
j
]
=
c
->
avg_h264_qpel_pixels_tab
[
i
][
j
];
}
}
ff_init_scantable_permutation
(
c
->
idct_permutation
,
c
->
idct_permutation_type
);
}
libavcodec/dsputil.h
View file @
0b711ca3
...
...
@@ -322,9 +322,6 @@ typedef struct DSPContext {
qpel_mc_func
put_h264_qpel_pixels_tab
[
4
][
16
];
qpel_mc_func
avg_h264_qpel_pixels_tab
[
4
][
16
];
qpel_mc_func
put_2tap_qpel_pixels_tab
[
4
][
16
];
qpel_mc_func
avg_2tap_qpel_pixels_tab
[
4
][
16
];
me_cmp_func
pix_abs
[
2
][
4
];
/* huffyuv specific */
...
...
libavcodec/h263dec.c
View file @
0b711ca3
...
...
@@ -615,10 +615,7 @@ retry:
s
->
next_p_frame_damaged
=
0
;
}
if
((
s
->
avctx
->
flags2
&
CODEC_FLAG2_FAST
)
&&
s
->
pict_type
==
AV_PICTURE_TYPE_B
){
s
->
me
.
qpel_put
=
s
->
dsp
.
put_2tap_qpel_pixels_tab
;
s
->
me
.
qpel_avg
=
s
->
dsp
.
avg_2tap_qpel_pixels_tab
;
}
else
if
((
!
s
->
no_rounding
)
||
s
->
pict_type
==
AV_PICTURE_TYPE_B
){
if
((
!
s
->
no_rounding
)
||
s
->
pict_type
==
AV_PICTURE_TYPE_B
){
s
->
me
.
qpel_put
=
s
->
dsp
.
put_qpel_pixels_tab
;
s
->
me
.
qpel_avg
=
s
->
dsp
.
avg_qpel_pixels_tab
;
}
else
{
...
...
libavcodec/h264.c
View file @
0b711ca3
...
...
@@ -2593,15 +2593,8 @@ static int decode_slice_header(H264Context *h, H264Context *h0)
int
last_pic_structure
,
last_pic_droppable
;
int
needs_reinit
=
0
;
/* FIXME: 2tap qpel isn't implemented for high bit depth. */
if
((
s
->
avctx
->
flags2
&
CODEC_FLAG2_FAST
)
&&
!
h
->
nal_ref_idc
&&
!
h
->
pixel_shift
)
{
s
->
me
.
qpel_put
=
s
->
dsp
.
put_2tap_qpel_pixels_tab
;
s
->
me
.
qpel_avg
=
s
->
dsp
.
avg_2tap_qpel_pixels_tab
;
}
else
{
s
->
me
.
qpel_put
=
s
->
dsp
.
put_h264_qpel_pixels_tab
;
s
->
me
.
qpel_avg
=
s
->
dsp
.
avg_h264_qpel_pixels_tab
;
}
s
->
me
.
qpel_put
=
s
->
dsp
.
put_h264_qpel_pixels_tab
;
s
->
me
.
qpel_avg
=
s
->
dsp
.
avg_h264_qpel_pixels_tab
;
first_mb_in_slice
=
get_ue_golomb
(
&
s
->
gb
);
...
...
libavcodec/x86/dsputil_avg_template.c
View file @
0b711ca3
...
...
@@ -802,54 +802,3 @@ static void DEF(avg_pixels16_xy2)(uint8_t *block, const uint8_t *pixels, int lin
DEF
(
avg_pixels8_xy2
)(
block
,
pixels
,
line_size
,
h
);
DEF
(
avg_pixels8_xy2
)(
block
+
8
,
pixels
+
8
,
line_size
,
h
);
}
#define QPEL_2TAP_L3(OPNAME) \
static void DEF(OPNAME ## 2tap_qpel16_l3)(uint8_t *dst, uint8_t *src, int stride, int h, int off1, int off2){\
__asm__ volatile(\
"1: \n\t"\
"movq (%1,%2), %%mm0 \n\t"\
"movq 8(%1,%2), %%mm1 \n\t"\
PAVGB" (%1,%3), %%mm0 \n\t"\
PAVGB" 8(%1,%3), %%mm1 \n\t"\
PAVGB" (%1), %%mm0 \n\t"\
PAVGB" 8(%1), %%mm1 \n\t"\
STORE_OP( (%1,%4),%%mm0)\
STORE_OP(8(%1,%4),%%mm1)\
"movq %%mm0, (%1,%4) \n\t"\
"movq %%mm1, 8(%1,%4) \n\t"\
"add %5, %1 \n\t"\
"decl %0 \n\t"\
"jnz 1b \n\t"\
:"+g"(h), "+r"(src)\
:"r"((x86_reg)off1), "r"((x86_reg)off2),\
"r"((x86_reg)(dst-src)), "r"((x86_reg)stride)\
:"memory"\
);\
}\
static void DEF(OPNAME ## 2tap_qpel8_l3)(uint8_t *dst, uint8_t *src, int stride, int h, int off1, int off2){\
__asm__ volatile(\
"1: \n\t"\
"movq (%1,%2), %%mm0 \n\t"\
PAVGB" (%1,%3), %%mm0 \n\t"\
PAVGB" (%1), %%mm0 \n\t"\
STORE_OP((%1,%4),%%mm0)\
"movq %%mm0, (%1,%4) \n\t"\
"add %5, %1 \n\t"\
"decl %0 \n\t"\
"jnz 1b \n\t"\
:"+g"(h), "+r"(src)\
:"r"((x86_reg)off1), "r"((x86_reg)off2),\
"r"((x86_reg)(dst-src)), "r"((x86_reg)stride)\
:"memory"\
);\
}
#ifndef SKIP_FOR_3DNOW
#define STORE_OP(a,b) PAVGB" "#a","#b" \n\t"
QPEL_2TAP_L3
(
avg_
)
#undef STORE_OP
#define STORE_OP(a,b)
QPEL_2TAP_L3
(
put_
)
#undef STORE_OP
#undef QPEL_2TAP_L3
#endif
/* SKIP_FOR_3DNOW */
libavcodec/x86/dsputil_mmx.c
View file @
0b711ca3
...
...
@@ -1557,63 +1557,6 @@ QPEL_OP(put_, ff_pw_16, _, PUT_OP, mmxext)
QPEL_OP
(
avg_
,
ff_pw_16
,
_
,
AVG_MMXEXT_OP
,
mmxext
)
QPEL_OP
(
put_no_rnd_
,
ff_pw_15
,
_no_rnd_
,
PUT_OP
,
mmxext
)
/***********************************/
/* bilinear qpel: not compliant to any spec, only for -lavdopts fast */
#define QPEL_2TAP_XY(OPNAME, SIZE, MMX, XY, HPEL) \
static void OPNAME ## 2tap_qpel ## SIZE ## _mc ## XY ## _ ## MMX(uint8_t *dst, \
uint8_t *src, \
int stride) \
{ \
OPNAME ## pixels ## SIZE ## HPEL(dst, src, stride, SIZE); \
}
#define QPEL_2TAP_L3(OPNAME, SIZE, MMX, XY, S0, S1, S2) \
static void OPNAME ## 2tap_qpel ## SIZE ## _mc ## XY ## _ ## MMX(uint8_t *dst, \
uint8_t *src, \
int stride) \
{ \
OPNAME ## 2tap_qpel ## SIZE ## _l3_ ## MMX(dst, src + S0, stride, SIZE, \
S1, S2); \
}
#define QPEL_2TAP(OPNAME, SIZE, MMX) \
QPEL_2TAP_XY(OPNAME, SIZE, MMX, 20, _x2_ ## MMX) \
QPEL_2TAP_XY(OPNAME, SIZE, MMX, 02, _y2_ ## MMX) \
QPEL_2TAP_XY(OPNAME, SIZE, MMX, 22, _xy2_mmx) \
static const qpel_mc_func OPNAME ## 2tap_qpel ## SIZE ## _mc00_ ## MMX = \
OPNAME ## qpel ## SIZE ## _mc00_ ## MMX; \
static const qpel_mc_func OPNAME ## 2tap_qpel ## SIZE ## _mc21_ ## MMX = \
OPNAME ## 2tap_qpel ## SIZE ## _mc20_ ## MMX; \
static const qpel_mc_func OPNAME ## 2tap_qpel ## SIZE ## _mc12_ ## MMX = \
OPNAME ## 2tap_qpel ## SIZE ## _mc02_ ## MMX; \
static void OPNAME ## 2tap_qpel ## SIZE ## _mc32_ ## MMX(uint8_t *dst, \
uint8_t *src, \
int stride) \
{ \
OPNAME ## pixels ## SIZE ## _y2_ ## MMX(dst, src + 1, stride, SIZE); \
} \
static void OPNAME ## 2tap_qpel ## SIZE ## _mc23_ ## MMX(uint8_t *dst, \
uint8_t *src, \
int stride) \
{ \
OPNAME ## pixels ## SIZE ## _x2_ ## MMX(dst, src + stride, \
stride, SIZE); \
} \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 10, 0, 1, 0) \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 30, 1, -1, 0) \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 01, 0, stride, 0) \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 03, stride, -stride, 0) \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 11, 0, stride, 1) \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 31, 1, stride, -1) \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 13, stride, -stride, 1) \
QPEL_2TAP_L3(OPNAME, SIZE, MMX, 33, stride + 1, -stride, -1) \
QPEL_2TAP
(
put_
,
16
,
mmxext
)
QPEL_2TAP
(
avg_
,
16
,
mmxext
)
QPEL_2TAP
(
put_
,
8
,
mmxext
)
QPEL_2TAP
(
avg_
,
8
,
mmxext
)
void
ff_put_rv40_qpel8_mc33_mmx
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
stride
)
{
put_pixels8_xy2_mmx
(
dst
,
src
,
stride
,
8
);
...
...
@@ -2042,13 +1985,9 @@ static void dsputil_init_mmxext(DSPContext *c, AVCodecContext *avctx,
#if HAVE_INLINE_ASM
SET_QPEL_FUNCS
(
avg_qpel
,
0
,
16
,
mmxext
,
);
SET_QPEL_FUNCS
(
avg_qpel
,
1
,
8
,
mmxext
,
);
SET_QPEL_FUNCS
(
avg_2tap_qpel
,
0
,
16
,
mmxext
,
);
SET_QPEL_FUNCS
(
avg_2tap_qpel
,
1
,
8
,
mmxext
,
);
SET_QPEL_FUNCS
(
put_qpel
,
0
,
16
,
mmxext
,
);
SET_QPEL_FUNCS
(
put_qpel
,
1
,
8
,
mmxext
,
);
SET_QPEL_FUNCS
(
put_2tap_qpel
,
0
,
16
,
mmxext
,
);
SET_QPEL_FUNCS
(
put_2tap_qpel
,
1
,
8
,
mmxext
,
);
SET_QPEL_FUNCS
(
put_no_rnd_qpel
,
0
,
16
,
mmxext
,
);
SET_QPEL_FUNCS
(
put_no_rnd_qpel
,
1
,
8
,
mmxext
,
);
...
...
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