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
71c32ed5
Commit
71c32ed5
authored
Mar 28, 2014
by
Timothy Gu
Committed by
Vittorio Giovara
Apr 11, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
DNxHD: convert inline asm to yasm
parent
67685620
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
90 additions
and
1 deletion
+90
-1
Makefile
libavcodec/x86/Makefile
+2
-1
dnxhdenc.asm
libavcodec/x86/dnxhdenc.asm
+49
-0
dnxhdenc_init.c
libavcodec/x86/dnxhdenc_init.c
+39
-0
No files found.
libavcodec/x86/Makefile
View file @
71c32ed5
...
...
@@ -26,7 +26,7 @@ OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o
OBJS-$(CONFIG_AAC_DECODER)
+=
x86/sbrdsp_init.o
OBJS-$(CONFIG_CAVS_DECODER)
+=
x86/cavsdsp.o
OBJS-$(CONFIG_DCA_DECODER)
+=
x86/dcadsp_init.o
OBJS-$(CONFIG_DNXHD_ENCODER)
+=
x86/dnxhdenc.o
OBJS-$(CONFIG_DNXHD_ENCODER)
+=
x86/dnxhdenc
_init
.o
OBJS-$(CONFIG_MLP_DECODER)
+=
x86/mlpdsp.o
OBJS-$(CONFIG_PNG_DECODER)
+=
x86/pngdsp_init.o
OBJS-$(CONFIG_PRORES_DECODER)
+=
x86/proresdsp_init.o
...
...
@@ -56,6 +56,7 @@ YASM-OBJS += x86/deinterlace.o \
YASM-OBJS-$(CONFIG_AC3DSP)
+=
x86/ac3dsp.o
YASM-OBJS-$(CONFIG_DCT)
+=
x86/dct32.o
YASM-OBJS-$(CONFIG_DNXHD_ENCODER)
+=
x86/dnxhdenc.o
YASM-OBJS-$(CONFIG_DSPUTIL)
+=
x86/dsputil.o
\
x86/fpel.o
\
x86/mpeg4qpel.o
\
...
...
libavcodec/x86/dnxhdenc.asm
0 → 100644
View file @
71c32ed5
;************************************************************************
;* VC3/DNxHD SIMD functions
;* Copyright (c) 2007 Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
;* Copyright (c) 2014 Tiancheng "Timothy" Gu <timothygu99@gmail.com>
;*
;* 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
;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
;******************************************************************************
%include
"libavutil/x86/x86util.asm"
section
.
text
; void get_pixels_8x4_sym_sse2(int16_t *block, const uint8_t *pixels,
; ptrdiff_t line_size)
INIT_XMM
sse2
cglobal
get_pixels_8x4_sym
,
3
,
3
,
5
,
block
,
pixels
,
linesize
pxor
m4
,
m4
movq
m0
,
[pixelsq]
add
pixelsq
,
linesizeq
movq
m1
,
[pixelsq]
movq
m2
,
[
pixelsq
+
linesizeq
]
movq
m3
,
[
pixelsq
+
linesizeq
*
2
]
punpcklbw
m0
,
m4
punpcklbw
m1
,
m4
punpcklbw
m2
,
m4
punpcklbw
m3
,
m4
mova
[
blockq
]
,
m0
mova
[
blockq
+
16
]
,
m1
mova
[
blockq
+
32
]
,
m2
mova
[
blockq
+
48
]
,
m3
mova
[
blockq
+
64
]
,
m3
mova
[
blockq
+
80
]
,
m2
mova
[
blockq
+
96
]
,
m1
mova
[
blockq
+
112
]
,
m0
RET
libavcodec/x86/dnxhdenc.c
→
libavcodec/x86/dnxhdenc
_init
.c
View file @
71c32ed5
...
...
@@ -22,46 +22,18 @@
*/
#include "libavutil/attributes.h"
#include "libavutil/x86/asm.h"
#include "libavutil/x86/cpu.h"
#include "libavcodec/dnxhdenc.h"
#if HAVE_SSE2_INLINE
static
void
get_pixels_8x4_sym_sse2
(
int16_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
)
{
__asm__
volatile
(
"pxor %%xmm5, %%xmm5
\n\t
"
"movq (%0), %%xmm0
\n\t
"
"add %2, %0
\n\t
"
"movq (%0), %%xmm1
\n\t
"
"movq (%0, %2), %%xmm2
\n\t
"
"movq (%0, %2,2), %%xmm3
\n\t
"
"punpcklbw %%xmm5, %%xmm0
\n\t
"
"punpcklbw %%xmm5, %%xmm1
\n\t
"
"punpcklbw %%xmm5, %%xmm2
\n\t
"
"punpcklbw %%xmm5, %%xmm3
\n\t
"
"movdqa %%xmm0, (%1)
\n\t
"
"movdqa %%xmm1, 16(%1)
\n\t
"
"movdqa %%xmm2, 32(%1)
\n\t
"
"movdqa %%xmm3, 48(%1)
\n\t
"
"movdqa %%xmm3 , 64(%1)
\n\t
"
"movdqa %%xmm2 , 80(%1)
\n\t
"
"movdqa %%xmm1 , 96(%1)
\n\t
"
"movdqa %%xmm0, 112(%1)
\n\t
"
:
"+r"
(
pixels
)
:
"r"
(
block
),
"r"
((
x86_reg
)
line_size
)
);
}
#endif
/* HAVE_SSE2_INLINE */
void
ff_get_pixels_8x4_sym_sse2
(
int16_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
);
av_cold
void
ff_dnxhdenc_init_x86
(
DNXHDEncContext
*
ctx
)
{
#if HAVE_SSE2_
INLINE
if
(
INLINE
_SSE2
(
av_get_cpu_flags
()))
{
#if HAVE_SSE2_
EXTERNAL
if
(
EXTERNAL
_SSE2
(
av_get_cpu_flags
()))
{
if
(
ctx
->
cid_table
->
bit_depth
==
8
)
ctx
->
get_pixels_8x4_sym
=
get_pixels_8x4_sym_sse2
;
ctx
->
get_pixels_8x4_sym
=
ff_
get_pixels_8x4_sym_sse2
;
}
#endif
/* HAVE_SSE2_
INLINE
*/
#endif
/* HAVE_SSE2_
EXTERNAL
*/
}
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