Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
92f8e06e
Commit
92f8e06e
authored
May 06, 2013
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86: dsputil hpeldsp: Move shared template functions into separate object
parent
7edaf4ed
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
69 additions
and
26 deletions
+69
-26
Makefile
libavcodec/x86/Makefile
+3
-1
dsputil_mmx.c
libavcodec/x86/dsputil_mmx.c
+4
-19
dsputil_mmx.h
libavcodec/x86/dsputil_mmx.h
+10
-0
hpeldsp_init.c
libavcodec/x86/hpeldsp_init.c
+7
-0
hpeldsp_rnd_template.c
libavcodec/x86/hpeldsp_rnd_template.c
+0
-2
rnd_mmx.c
libavcodec/x86/rnd_mmx.c
+32
-0
rnd_template.c
libavcodec/x86/rnd_template.c
+13
-4
No files found.
libavcodec/x86/Makefile
View file @
92f8e06e
...
...
@@ -36,12 +36,14 @@ MMX-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil_mmx.o \
x86/fpel_mmx.o
\
x86/idct_mmx_xvid.o
\
x86/idct_sse2_xvid.o
\
x86/rnd_mmx.o
\
x86/simple_idct.o
\
MMX-OBJS-$(CONFIG_ENCODERS)
+=
x86/dsputilenc_mmx.o
\
x86/motion_est.o
MMX-OBJS-$(CONFIG_HPELDSP)
+=
x86/fpel_mmx.o
\
x86/hpeldsp_mmx.o
x86/hpeldsp_mmx.o
\
x86/rnd_mmx.o
MMX-OBJS-$(CONFIG_VC1_DECODER)
+=
x86/vc1dsp_mmx.o
YASM-OBJS-$(CONFIG_AAC_DECODER)
+=
x86/sbrdsp.o
...
...
libavcodec/x86/dsputil_mmx.c
View file @
92f8e06e
...
...
@@ -99,21 +99,6 @@ void ff_put_no_rnd_mpeg4_qpel8_v_lowpass_mmxext(uint8_t *dst, uint8_t *src,
#if HAVE_INLINE_ASM
/***********************************/
/* MMX rounding */
#define DEF(x, y) x ## _ ## y ## _mmx
#define SET_RND MOVQ_WTWO
#define PAVGBP(a, b, c, d, e, f) PAVGBP_MMX(a, b, c, d, e, f)
#define PAVGB(a, b, c, e) PAVGB_MMX(a, b, c, e)
#include "rnd_template.c"
#undef DEF
#undef SET_RND
#undef PAVGBP
#undef PAVGB
/***********************************/
/* standard MMX */
...
...
@@ -877,19 +862,19 @@ QPEL_OP(put_no_rnd_, ff_pw_15, _no_rnd_, mmxext)
#if HAVE_INLINE_ASM
void
ff_put_rv40_qpel8_mc33_mmx
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
put_pixels8_xy2_mmx
(
dst
,
src
,
stride
,
8
);
ff_
put_pixels8_xy2_mmx
(
dst
,
src
,
stride
,
8
);
}
void
ff_put_rv40_qpel16_mc33_mmx
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
put_pixels16_xy2_mmx
(
dst
,
src
,
stride
,
16
);
ff_
put_pixels16_xy2_mmx
(
dst
,
src
,
stride
,
16
);
}
void
ff_avg_rv40_qpel8_mc33_mmx
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
avg_pixels8_xy2_mmx
(
dst
,
src
,
stride
,
8
);
ff_
avg_pixels8_xy2_mmx
(
dst
,
src
,
stride
,
8
);
}
void
ff_avg_rv40_qpel16_mc33_mmx
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
avg_pixels16_xy2_mmx
(
dst
,
src
,
stride
,
16
);
ff_
avg_pixels16_xy2_mmx
(
dst
,
src
,
stride
,
16
);
}
static
void
gmc_mmx
(
uint8_t
*
dst
,
uint8_t
*
src
,
...
...
libavcodec/x86/dsputil_mmx.h
View file @
92f8e06e
...
...
@@ -176,6 +176,16 @@ void ff_put_pixels16_sse2(uint8_t *block, const uint8_t *pixels,
void
ff_avg_pixels8_x2_mmx
(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
);
void
ff_avg_pixels8_xy2_mmx
(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
);
void
ff_avg_pixels16_xy2_mmx
(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
);
void
ff_put_pixels8_xy2_mmx
(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
);
void
ff_put_pixels16_xy2_mmx
(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
);
void
ff_put_rv40_qpel8_mc33_mmx
(
uint8_t
*
block
,
uint8_t
*
pixels
,
ptrdiff_t
stride
);
void
ff_put_rv40_qpel16_mc33_mmx
(
uint8_t
*
block
,
uint8_t
*
pixels
,
ptrdiff_t
stride
);
void
ff_avg_rv40_qpel8_mc33_mmx
(
uint8_t
*
block
,
uint8_t
*
pixels
,
ptrdiff_t
stride
);
...
...
libavcodec/x86/hpeldsp_init.c
View file @
92f8e06e
...
...
@@ -77,8 +77,12 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t *pixels,
#define avg_pixels8_mmx ff_avg_pixels8_mmx
#define avg_pixels8_x2_mmx ff_avg_pixels8_x2_mmx
#define avg_pixels16_mmx ff_avg_pixels16_mmx
#define avg_pixels8_xy2_mmx ff_avg_pixels8_xy2_mmx
#define avg_pixels16_xy2_mmx ff_avg_pixels16_xy2_mmx
#define put_pixels8_mmx ff_put_pixels8_mmx
#define put_pixels16_mmx ff_put_pixels16_mmx
#define put_pixels8_xy2_mmx ff_put_pixels8_xy2_mmx
#define put_pixels16_xy2_mmx ff_put_pixels16_xy2_mmx
#define avg_no_rnd_pixels16_mmx ff_avg_pixels16_mmx
#define put_no_rnd_pixels8_mmx ff_put_pixels8_mmx
#define put_no_rnd_pixels16_mmx ff_put_pixels16_mmx
...
...
@@ -91,13 +95,16 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t *pixels,
#define SET_RND MOVQ_WONE
#define PAVGBP(a, b, c, d, e, f) PAVGBP_MMX_NO_RND(a, b, c, d, e, f)
#define PAVGB(a, b, c, e) PAVGB_MMX_NO_RND(a, b, c, e)
#define STATIC static
#include "rnd_template.c"
#include "hpeldsp_rnd_template.c"
#undef DEF
#undef SET_RND
#undef PAVGBP
#undef PAVGB
#undef STATIC
/***********************************/
/* MMX rounding */
...
...
libavcodec/x86/hpeldsp_rnd_template.c
View file @
92f8e06e
...
...
@@ -24,8 +24,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "rnd_template.c"
// put_pixels
static
void
DEF
(
put
,
pixels8_x2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
)
{
...
...
libavcodec/x86/rnd_mmx.c
0 → 100644
View file @
92f8e06e
/*
* 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 "config.h"
#include "dsputil_mmx.h"
#if HAVE_INLINE_ASM
#define DEF(x, y) ff_ ## x ## _ ## y ## _mmx
#define SET_RND MOVQ_WTWO
#define PAVGBP(a, b, c, d, e, f) PAVGBP_MMX(a, b, c, d, e, f)
#define PAVGB(a, b, c, e) PAVGB_MMX(a, b, c, e)
#define STATIC
#include "rnd_template.c"
#endif
/* HAVE_INLINE_ASM */
libavcodec/x86/rnd_template.c
View file @
92f8e06e
...
...
@@ -24,8 +24,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stddef.h>
#include <stdint.h>
// put_pixels
static
void
DEF
(
put
,
pixels8_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
)
STATIC
void
DEF
(
put
,
pixels8_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
)
{
MOVQ_ZERO
(
mm7
);
SET_RND
(
mm6
);
// =2 for rnd and =1 for no_rnd version
...
...
@@ -93,7 +97,8 @@ static void DEF(put, pixels8_xy2)(uint8_t *block, const uint8_t *pixels, ptrdiff
// avg_pixels
// this routine is 'slightly' suboptimal but mostly unused
static
void
DEF
(
avg
,
pixels8_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
)
STATIC
void
DEF
(
avg
,
pixels8_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
)
{
MOVQ_ZERO
(
mm7
);
SET_RND
(
mm6
);
// =2 for rnd and =1 for no_rnd version
...
...
@@ -168,12 +173,16 @@ static void DEF(avg, pixels8_xy2)(uint8_t *block, const uint8_t *pixels, ptrdiff
}
//FIXME optimize
static
void
DEF
(
put
,
pixels16_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
){
STATIC
void
DEF
(
put
,
pixels16_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
)
{
DEF
(
put
,
pixels8_xy2
)(
block
,
pixels
,
line_size
,
h
);
DEF
(
put
,
pixels8_xy2
)(
block
+
8
,
pixels
+
8
,
line_size
,
h
);
}
static
void
DEF
(
avg
,
pixels16_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
){
STATIC
void
DEF
(
avg
,
pixels16_xy2
)(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
h
)
{
DEF
(
avg
,
pixels8_xy2
)(
block
,
pixels
,
line_size
,
h
);
DEF
(
avg
,
pixels8_xy2
)(
block
+
8
,
pixels
+
8
,
line_size
,
h
);
}
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