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
e66149e7
Commit
e66149e7
authored
May 24, 2011
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swscale: force --enable-runtime-cpudetect and remove SWS_CPU_CAPS_*.
parent
75abcdb3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
171 additions
and
340 deletions
+171
-340
swscale_bfin.c
libswscale/bfin/swscale_bfin.c
+9
-11
colorspace-test.c
libswscale/colorspace-test.c
+1
-28
options.c
libswscale/options.c
+0
-6
yuv2rgb_altivec.c
libswscale/ppc/yuv2rgb_altivec.c
+2
-1
rgb2rgb.c
libswscale/rgb2rgb.c
+3
-4
rgb2rgb.h
libswscale/rgb2rgb.h
+2
-2
rgb2rgb_template.c
libswscale/rgb2rgb_template.c
+0
-19
swscale.c
libswscale/swscale.c
+25
-109
swscale.h
libswscale/swscale.h
+0
-7
swscale_internal.h
libswscale/swscale_internal.h
+0
-5
utils.c
libswscale/utils.c
+54
-66
rgb2rgb.c
libswscale/x86/rgb2rgb.c
+11
-10
swscale_template.c
libswscale/x86/swscale_template.c
+4
-3
yuv2rgb_mmx.c
libswscale/x86/yuv2rgb_mmx.c
+36
-34
yuv2rgb_template.c
libswscale/x86/yuv2rgb_template.c
+13
-18
yuv2rgb.c
libswscale/yuv2rgb.c
+11
-17
No files found.
libswscale/bfin/swscale_bfin.c
View file @
e66149e7
...
@@ -79,15 +79,13 @@ static int yuyvtoyv12_unscaled(SwsContext *c, uint8_t* src[], int srcStride[], i
...
@@ -79,15 +79,13 @@ static int yuyvtoyv12_unscaled(SwsContext *c, uint8_t* src[], int srcStride[], i
void
ff_bfin_get_unscaled_swscale
(
SwsContext
*
c
)
void
ff_bfin_get_unscaled_swscale
(
SwsContext
*
c
)
{
{
SwsFunc
swScale
=
c
->
swScale
;
SwsFunc
swScale
=
c
->
swScale
;
if
(
c
->
flags
&
SWS_CPU_CAPS_BFIN
)
if
(
c
->
dstFormat
==
PIX_FMT_YUV420P
)
if
(
c
->
dstFormat
==
PIX_FMT_YUV420P
&&
c
->
srcFormat
==
PIX_FMT_UYVY422
)
{
if
(
c
->
srcFormat
==
PIX_FMT_UYVY422
)
{
av_log
(
NULL
,
AV_LOG_VERBOSE
,
"selecting Blackfin optimized uyvytoyv12_unscaled
\n
"
);
av_log
(
NULL
,
AV_LOG_VERBOSE
,
"selecting Blackfin optimized uyvytoyv12_unscaled
\n
"
);
c
->
swScale
=
uyvytoyv12_unscaled
;
c
->
swScale
=
uyvytoyv12_unscaled
;
}
}
if
(
c
->
dstFormat
==
PIX_FMT_YUV420P
&&
c
->
srcFormat
==
PIX_FMT_YUYV422
)
{
if
(
c
->
dstFormat
==
PIX_FMT_YUV420P
)
av_log
(
NULL
,
AV_LOG_VERBOSE
,
"selecting Blackfin optimized yuyvtoyv12_unscaled
\n
"
);
if
(
c
->
srcFormat
==
PIX_FMT_YUYV422
)
{
c
->
swScale
=
yuyvtoyv12_unscaled
;
av_log
(
NULL
,
AV_LOG_VERBOSE
,
"selecting Blackfin optimized yuyvtoyv12_unscaled
\n
"
);
}
c
->
swScale
=
yuyvtoyv12_unscaled
;
}
}
}
libswscale/colorspace-test.c
View file @
e66149e7
...
@@ -33,31 +33,6 @@
...
@@ -33,31 +33,6 @@
#define FUNC(s,d,n) {s,d,#n,n}
#define FUNC(s,d,n) {s,d,#n,n}
static
int
cpu_caps
;
static
char
*
args_parse
(
int
argc
,
char
*
argv
[])
{
int
o
;
while
((
o
=
getopt
(
argc
,
argv
,
"m23"
))
!=
-
1
)
{
switch
(
o
)
{
case
'm'
:
cpu_caps
|=
SWS_CPU_CAPS_MMX
;
break
;
case
'2'
:
cpu_caps
|=
SWS_CPU_CAPS_MMX2
;
break
;
case
'3'
:
cpu_caps
|=
SWS_CPU_CAPS_3DNOW
;
break
;
default:
av_log
(
NULL
,
AV_LOG_ERROR
,
"Unknown option %c
\n
"
,
o
);
}
}
return
argv
[
optind
];
}
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
{
{
int
i
,
funcNum
;
int
i
,
funcNum
;
...
@@ -70,9 +45,7 @@ int main(int argc, char **argv)
...
@@ -70,9 +45,7 @@ int main(int argc, char **argv)
return
-
1
;
return
-
1
;
av_log
(
NULL
,
AV_LOG_INFO
,
"memory corruption test ...
\n
"
);
av_log
(
NULL
,
AV_LOG_INFO
,
"memory corruption test ...
\n
"
);
args_parse
(
argc
,
argv
);
sws_rgb2rgb_init
();
av_log
(
NULL
,
AV_LOG_INFO
,
"CPU capabilities forced to %x
\n
"
,
cpu_caps
);
sws_rgb2rgb_init
(
cpu_caps
);
for
(
funcNum
=
0
;
;
funcNum
++
)
{
for
(
funcNum
=
0
;
;
funcNum
++
)
{
struct
func_info_s
{
struct
func_info_s
{
...
...
libswscale/options.c
View file @
e66149e7
...
@@ -48,12 +48,6 @@ static const AVOption options[] = {
...
@@ -48,12 +48,6 @@ static const AVOption options[] = {
{
"spline"
,
"natural bicubic spline"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_SPLINE
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"spline"
,
"natural bicubic spline"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_SPLINE
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"print_info"
,
"print info"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_PRINT_INFO
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"print_info"
,
"print info"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_PRINT_INFO
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"accurate_rnd"
,
"accurate rounding"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_ACCURATE_RND
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"accurate_rnd"
,
"accurate rounding"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_ACCURATE_RND
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"mmx"
,
"MMX SIMD acceleration"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_CPU_CAPS_MMX
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"mmx2"
,
"MMX2 SIMD acceleration"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_CPU_CAPS_MMX2
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"sse2"
,
"SSE2 SIMD acceleration"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_CPU_CAPS_SSE2
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"3dnow"
,
"3DNOW SIMD acceleration"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_CPU_CAPS_3DNOW
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"altivec"
,
"AltiVec SIMD acceleration"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_CPU_CAPS_ALTIVEC
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"bfin"
,
"Blackfin SIMD acceleration"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_CPU_CAPS_BFIN
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"full_chroma_int"
,
"full chroma interpolation"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_FULL_CHR_H_INT
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"full_chroma_int"
,
"full chroma interpolation"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_FULL_CHR_H_INT
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"full_chroma_inp"
,
"full chroma input"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_FULL_CHR_H_INP
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"full_chroma_inp"
,
"full chroma input"
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_FULL_CHR_H_INP
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"bitexact"
,
""
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_BITEXACT
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
{
"bitexact"
,
""
,
0
,
FF_OPT_TYPE_CONST
,
{.
dbl
=
SWS_BITEXACT
},
INT_MIN
,
INT_MAX
,
VE
,
"sws_flags"
},
...
...
libswscale/ppc/yuv2rgb_altivec.c
View file @
e66149e7
...
@@ -94,6 +94,7 @@ adjustment.
...
@@ -94,6 +94,7 @@ adjustment.
#include "libswscale/rgb2rgb.h"
#include "libswscale/rgb2rgb.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale_internal.h"
#include "libswscale/swscale_internal.h"
#include "libavutil/cpu.h"
#undef PROFILE_THE_BEAST
#undef PROFILE_THE_BEAST
#undef INC_SCALING
#undef INC_SCALING
...
@@ -692,7 +693,7 @@ static int altivec_uyvy_rgb32 (SwsContext *c,
...
@@ -692,7 +693,7 @@ static int altivec_uyvy_rgb32 (SwsContext *c,
*/
*/
SwsFunc
ff_yuv2rgb_init_altivec
(
SwsContext
*
c
)
SwsFunc
ff_yuv2rgb_init_altivec
(
SwsContext
*
c
)
{
{
if
(
!
(
c
->
flags
&
SWS_CPU_CAPS
_ALTIVEC
))
if
(
!
(
av_get_cpu_flags
()
&
AV_CPU_FLAG
_ALTIVEC
))
return
NULL
;
return
NULL
;
/*
/*
...
...
libswscale/rgb2rgb.c
View file @
e66149e7
...
@@ -116,12 +116,11 @@ void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t
...
@@ -116,12 +116,11 @@ void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t
32-bit C version, and and&add trick by Michael Niedermayer
32-bit C version, and and&add trick by Michael Niedermayer
*/
*/
void
sws_rgb2rgb_init
(
int
flags
)
void
sws_rgb2rgb_init
(
void
)
{
{
rgb2rgb_init_c
();
rgb2rgb_init_c
();
#if HAVE_MMX2 || HAVE_AMD3DNOW || HAVE_MMX
if
(
HAVE_MMX
)
rgb2rgb_init_x86
(
flags
);
rgb2rgb_init_x86
();
#endif
/* HAVE_MMX2 || HAVE_AMD3DNOW || HAVE_MMX */
}
}
void
rgb32to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
long
src_size
)
void
rgb32to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
long
src_size
)
...
...
libswscale/rgb2rgb.h
View file @
e66149e7
...
@@ -156,8 +156,8 @@ extern void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const u
...
@@ -156,8 +156,8 @@ extern void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const u
long
width
,
long
height
,
long
width
,
long
height
,
long
lumStride
,
long
chromStride
,
long
srcStride
);
long
lumStride
,
long
chromStride
,
long
srcStride
);
void
sws_rgb2rgb_init
(
int
flags
);
void
sws_rgb2rgb_init
(
void
);
void
rgb2rgb_init_x86
(
int
flags
);
void
rgb2rgb_init_x86
(
void
);
#endif
/* SWSCALE_RGB2RGB_H */
#endif
/* SWSCALE_RGB2RGB_H */
libswscale/rgb2rgb_template.c
View file @
e66149e7
...
@@ -278,25 +278,6 @@ static inline void rgb16tobgr24_c(const uint8_t *src, uint8_t *dst, long src_siz
...
@@ -278,25 +278,6 @@ static inline void rgb16tobgr24_c(const uint8_t *src, uint8_t *dst, long src_siz
}
}
}
}
/*
* mm0 = 00 B3 00 B2 00 B1 00 B0
* mm1 = 00 G3 00 G2 00 G1 00 G0
* mm2 = 00 R3 00 R2 00 R1 00 R0
* mm6 = FF FF FF FF FF FF FF FF
* mm7 = 00 00 00 00 00 00 00 00
*/
#define PACK_RGB32 \
"packuswb %%mm7, %%mm0 \n\t"
/* 00 00 00 00 B3 B2 B1 B0 */
\
"packuswb %%mm7, %%mm1 \n\t"
/* 00 00 00 00 G3 G2 G1 G0 */
\
"packuswb %%mm7, %%mm2 \n\t"
/* 00 00 00 00 R3 R2 R1 R0 */
\
"punpcklbw %%mm1, %%mm0 \n\t"
/* G3 B3 G2 B2 G1 B1 G0 B0 */
\
"punpcklbw %%mm6, %%mm2 \n\t"
/* FF R3 FF R2 FF R1 FF R0 */
\
"movq %%mm0, %%mm3 \n\t" \
"punpcklwd %%mm2, %%mm0 \n\t"
/* FF R1 G1 B1 FF R0 G0 B0 */
\
"punpckhwd %%mm2, %%mm3 \n\t"
/* FF R3 G3 B3 FF R2 G2 B2 */
\
MOVNTQ" %%mm0, %0 \n\t" \
MOVNTQ" %%mm3, 8%0 \n\t" \
static
inline
void
rgb15to32_c
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
long
src_size
)
static
inline
void
rgb15to32_c
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
long
src_size
)
{
{
const
uint16_t
*
end
;
const
uint16_t
*
end
;
...
...
libswscale/swscale.c
View file @
e66149e7
...
@@ -62,6 +62,7 @@ untested special converters
...
@@ -62,6 +62,7 @@ untested special converters
#include "rgb2rgb.h"
#include "rgb2rgb.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/cpu.h"
#include "libavutil/avutil.h"
#include "libavutil/avutil.h"
#include "libavutil/mathematics.h"
#include "libavutil/mathematics.h"
#include "libavutil/bswap.h"
#include "libavutil/bswap.h"
...
@@ -70,10 +71,6 @@ untested special converters
...
@@ -70,10 +71,6 @@ untested special converters
#undef MOVNTQ
#undef MOVNTQ
#undef PAVGB
#undef PAVGB
//#undef HAVE_MMX2
//#define HAVE_AMD3DNOW
//#undef HAVE_MMX
//#undef ARCH_X86
#define DITHER1XBPP
#define DITHER1XBPP
#define isPacked(x) ( \
#define isPacked(x) ( \
...
@@ -1179,57 +1176,14 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
...
@@ -1179,57 +1176,14 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
//Note: we have C, MMX, MMX2, 3DNOW versions, there is no 3DNOW+MMX2 one
//Note: we have C, MMX, MMX2, 3DNOW versions, there is no 3DNOW+MMX2 one
//Plain C versions
//Plain C versions
#if CONFIG_RUNTIME_CPUDETECT
# define COMPILE_C 1
# if ARCH_X86
# define COMPILE_MMX HAVE_MMX
# define COMPILE_MMX2 HAVE_MMX2
# define COMPILE_3DNOW HAVE_AMD3DNOW
# elif ARCH_PPC
# define COMPILE_ALTIVEC HAVE_ALTIVEC
# endif
#else
/* CONFIG_RUNTIME_CPUDETECT */
# if ARCH_X86
# if HAVE_MMX2
# define COMPILE_MMX2 1
# elif HAVE_AMD3DNOW
# define COMPILE_3DNOW 1
# elif HAVE_MMX
# define COMPILE_MMX 1
# else
# define COMPILE_C 1
# endif
# elif ARCH_PPC && HAVE_ALTIVEC
# define COMPILE_ALTIVEC 1
# else
# define COMPILE_C 1
# endif
#endif
#ifndef COMPILE_C
# define COMPILE_C 0
#endif
#ifndef COMPILE_MMX
# define COMPILE_MMX 0
#endif
#ifndef COMPILE_MMX2
# define COMPILE_MMX2 0
#endif
#ifndef COMPILE_3DNOW
# define COMPILE_3DNOW 0
#endif
#ifndef COMPILE_ALTIVEC
# define COMPILE_ALTIVEC 0
#endif
#define COMPILE_TEMPLATE_MMX 0
#define COMPILE_TEMPLATE_MMX2 0
#define COMPILE_TEMPLATE_MMX2 0
#define COMPILE_TEMPLATE_AMD3DNOW 0
#define COMPILE_TEMPLATE_AMD3DNOW 0
#define COMPILE_TEMPLATE_ALTIVEC 0
#define COMPILE_TEMPLATE_ALTIVEC 0
#include "swscale_template.c"
#include "swscale_template.c"
#if
COMPIL
E_ALTIVEC
#if
HAV
E_ALTIVEC
#undef RENAME
#undef RENAME
#undef COMPILE_TEMPLATE_ALTIVEC
#undef COMPILE_TEMPLATE_ALTIVEC
#define COMPILE_TEMPLATE_ALTIVEC 1
#define COMPILE_TEMPLATE_ALTIVEC 1
...
@@ -1237,15 +1191,11 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
...
@@ -1237,15 +1191,11 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
#include "ppc/swscale_template.c"
#include "ppc/swscale_template.c"
#endif
#endif
#if ARCH_X86
//MMX versions
//MMX versions
#if
COMPIL
E_MMX
#if
HAV
E_MMX
#undef RENAME
#undef RENAME
#undef COMPILE_TEMPLATE_MMX
#undef COMPILE_TEMPLATE_MMX2
#undef COMPILE_TEMPLATE_MMX2
#undef COMPILE_TEMPLATE_AMD3DNOW
#undef COMPILE_TEMPLATE_AMD3DNOW
#define COMPILE_TEMPLATE_MMX 1
#define COMPILE_TEMPLATE_MMX2 0
#define COMPILE_TEMPLATE_MMX2 0
#define COMPILE_TEMPLATE_AMD3DNOW 0
#define COMPILE_TEMPLATE_AMD3DNOW 0
#define RENAME(a) a ## _MMX
#define RENAME(a) a ## _MMX
...
@@ -1253,12 +1203,10 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
...
@@ -1253,12 +1203,10 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
#endif
#endif
//MMX2 versions
//MMX2 versions
#if
COMPIL
E_MMX2
#if
HAV
E_MMX2
#undef RENAME
#undef RENAME
#undef COMPILE_TEMPLATE_MMX
#undef COMPILE_TEMPLATE_MMX2
#undef COMPILE_TEMPLATE_MMX2
#undef COMPILE_TEMPLATE_AMD3DNOW
#undef COMPILE_TEMPLATE_AMD3DNOW
#define COMPILE_TEMPLATE_MMX 1
#define COMPILE_TEMPLATE_MMX2 1
#define COMPILE_TEMPLATE_MMX2 1
#define COMPILE_TEMPLATE_AMD3DNOW 0
#define COMPILE_TEMPLATE_AMD3DNOW 0
#define RENAME(a) a ## _MMX2
#define RENAME(a) a ## _MMX2
...
@@ -1266,61 +1214,47 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
...
@@ -1266,61 +1214,47 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin
#endif
#endif
//3DNOW versions
//3DNOW versions
#if
COMPILE_
3DNOW
#if
HAVE_AMD
3DNOW
#undef RENAME
#undef RENAME
#undef COMPILE_TEMPLATE_MMX
#undef COMPILE_TEMPLATE_MMX2
#undef COMPILE_TEMPLATE_MMX2
#undef COMPILE_TEMPLATE_AMD3DNOW
#undef COMPILE_TEMPLATE_AMD3DNOW
#define COMPILE_TEMPLATE_MMX 1
#define COMPILE_TEMPLATE_MMX2 0
#define COMPILE_TEMPLATE_MMX2 0
#define COMPILE_TEMPLATE_AMD3DNOW 1
#define COMPILE_TEMPLATE_AMD3DNOW 1
#define RENAME(a) a ## _3DNow
#define RENAME(a) a ## _3DNow
#include "x86/swscale_template.c"
#include "x86/swscale_template.c"
#endif
#endif
#endif //ARCH_X86
SwsFunc
ff_getSwsFunc
(
SwsContext
*
c
)
SwsFunc
ff_getSwsFunc
(
SwsContext
*
c
)
{
{
int
cpu_flags
=
av_get_cpu_flags
();
sws_init_swScale_c
(
c
);
sws_init_swScale_c
(
c
);
#if CONFIG_RUNTIME_CPUDETECT
#if HAVE_MMX2
#if ARCH_X86
// ordered per speed fastest first
// ordered per speed fastest first
if
(
c
->
flags
&
SWS_CPU_CAPS
_MMX2
)
{
if
(
c
pu_flags
&
AV_CPU_FLAG
_MMX2
)
{
sws_init_swScale_MMX2
(
c
);
sws_init_swScale_MMX2
(
c
);
return
swScale_MMX2
;
return
swScale_MMX2
;
}
else
if
(
c
->
flags
&
SWS_CPU_CAPS_3DNOW
)
{
}
else
#endif
#if HAVE_AMD3DNOW
if
(
cpu_flags
&
AV_CPU_FLAG_3DNOW
)
{
sws_init_swScale_3DNow
(
c
);
sws_init_swScale_3DNow
(
c
);
return
swScale_3DNow
;
return
swScale_3DNow
;
}
else
if
(
c
->
flags
&
SWS_CPU_CAPS_MMX
)
{
}
else
#endif
#if HAVE_MMX
if
(
cpu_flags
&
AV_CPU_FLAG_MMX
)
{
sws_init_swScale_MMX
(
c
);
sws_init_swScale_MMX
(
c
);
return
swScale_MMX
;
return
swScale_MMX
;
}
}
else
#endif
#else
#if HAVE_ALTIVEC
#if COMPILE_ALTIVEC
if
(
cpu_flags
&
AV_CPU_FLAG_ALTIVEC
)
{
if
(
c
->
flags
&
SWS_CPU_CAPS_ALTIVEC
)
{
sws_init_swScale_altivec
(
c
);
sws_init_swScale_altivec
(
c
);
return
swScale_altivec
;
return
swScale_altivec
;
}
}
else
#endif
#endif
/* ARCH_X86 */
#else //CONFIG_RUNTIME_CPUDETECT
#if COMPILE_TEMPLATE_MMX2
sws_init_swScale_MMX2
(
c
);
return
swScale_MMX2
;
#elif COMPILE_TEMPLATE_AMD3DNOW
sws_init_swScale_3DNow
(
c
);
return
swScale_3DNow
;
#elif COMPILE_TEMPLATE_MMX
sws_init_swScale_MMX
(
c
);
return
swScale_MMX
;
#elif COMPILE_TEMPLATE_ALTIVEC
sws_init_swScale_altivec
(
c
);
return
swScale_altivec
;
#endif
#endif
#endif //!CONFIG_RUNTIME_CPUDETECT
return
swScale_c
;
return
swScale_c
;
}
}
...
@@ -1864,23 +1798,6 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t* src[], int srcStride[
...
@@ -1864,23 +1798,6 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t* src[], int srcStride[
return
srcSliceH
;
return
srcSliceH
;
}
}
int
ff_hardcodedcpuflags
(
void
)
{
int
flags
=
0
;
#if COMPILE_TEMPLATE_MMX2
flags
|=
SWS_CPU_CAPS_MMX
|
SWS_CPU_CAPS_MMX2
;
#elif COMPILE_TEMPLATE_AMD3DNOW
flags
|=
SWS_CPU_CAPS_MMX
|
SWS_CPU_CAPS_3DNOW
;
#elif COMPILE_TEMPLATE_MMX
flags
|=
SWS_CPU_CAPS_MMX
;
#elif COMPILE_TEMPLATE_ALTIVEC
flags
|=
SWS_CPU_CAPS_ALTIVEC
;
#elif ARCH_BFIN
flags
|=
SWS_CPU_CAPS_BFIN
;
#endif
return
flags
;
}
void
ff_get_unscaled_swscale
(
SwsContext
*
c
)
void
ff_get_unscaled_swscale
(
SwsContext
*
c
)
{
{
const
enum
PixelFormat
srcFormat
=
c
->
srcFormat
;
const
enum
PixelFormat
srcFormat
=
c
->
srcFormat
;
...
@@ -1964,8 +1881,8 @@ void ff_get_unscaled_swscale(SwsContext *c)
...
@@ -1964,8 +1881,8 @@ void ff_get_unscaled_swscale(SwsContext *c)
if
(
srcFormat
==
PIX_FMT_UYVY422
&&
dstFormat
==
PIX_FMT_YUV422P
)
if
(
srcFormat
==
PIX_FMT_UYVY422
&&
dstFormat
==
PIX_FMT_YUV422P
)
c
->
swScale
=
uyvyToYuv422Wrapper
;
c
->
swScale
=
uyvyToYuv422Wrapper
;
#if
COMPIL
E_ALTIVEC
#if
HAV
E_ALTIVEC
if
((
c
->
flags
&
SWS_CPU_CAPS
_ALTIVEC
)
&&
if
((
av_get_cpu_flags
()
&
AV_CPU_FLAG
_ALTIVEC
)
&&
!
(
c
->
flags
&
SWS_BITEXACT
)
&&
!
(
c
->
flags
&
SWS_BITEXACT
)
&&
srcFormat
==
PIX_FMT_YUV420P
)
{
srcFormat
==
PIX_FMT_YUV420P
)
{
// unscaled YV12 -> packed YUV, we want speed
// unscaled YV12 -> packed YUV, we want speed
...
@@ -1995,8 +1912,7 @@ void ff_get_unscaled_swscale(SwsContext *c)
...
@@ -1995,8 +1912,7 @@ void ff_get_unscaled_swscale(SwsContext *c)
c
->
swScale
=
planarCopyWrapper
;
c
->
swScale
=
planarCopyWrapper
;
}
}
#if ARCH_BFIN
#if ARCH_BFIN
if
(
flags
&
SWS_CPU_CAPS_BFIN
)
ff_bfin_get_unscaled_swscale
(
c
);
ff_bfin_get_unscaled_swscale
(
c
);
#endif
#endif
}
}
...
...
libswscale/swscale.h
View file @
e66149e7
...
@@ -95,13 +95,6 @@ const char *swscale_license(void);
...
@@ -95,13 +95,6 @@ const char *swscale_license(void);
#define SWS_ACCURATE_RND 0x40000
#define SWS_ACCURATE_RND 0x40000
#define SWS_BITEXACT 0x80000
#define SWS_BITEXACT 0x80000
#define SWS_CPU_CAPS_MMX 0x80000000
#define SWS_CPU_CAPS_MMX2 0x20000000
#define SWS_CPU_CAPS_3DNOW 0x40000000
#define SWS_CPU_CAPS_ALTIVEC 0x10000000
#define SWS_CPU_CAPS_BFIN 0x01000000
#define SWS_CPU_CAPS_SSE2 0x02000000
#define SWS_MAX_REDUCE_CUTOFF 0.002
#define SWS_MAX_REDUCE_CUTOFF 0.002
#define SWS_CS_ITU709 1
#define SWS_CS_ITU709 1
...
...
libswscale/swscale_internal.h
View file @
e66149e7
...
@@ -475,11 +475,6 @@ extern const AVClass sws_context_class;
...
@@ -475,11 +475,6 @@ extern const AVClass sws_context_class;
*/
*/
void
ff_get_unscaled_swscale
(
SwsContext
*
c
);
void
ff_get_unscaled_swscale
(
SwsContext
*
c
);
/**
* Returns the SWS_CPU_CAPS for the optimized code compiled into swscale.
*/
int
ff_hardcodedcpuflags
(
void
);
/**
/**
* Returns function pointer to fastest main scaler path function depending
* Returns function pointer to fastest main scaler path function depending
* on architecture and available optimizations.
* on architecture and available optimizations.
...
...
libswscale/utils.c
View file @
e66149e7
This diff is collapsed.
Click to expand it.
libswscale/x86/rgb2rgb.c
View file @
e66149e7
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
#include "config.h"
#include "config.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/cpu.h"
#include "libavutil/bswap.h"
#include "libavutil/bswap.h"
#include "libswscale/rgb2rgb.h"
#include "libswscale/rgb2rgb.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale.h"
...
@@ -122,16 +123,16 @@ DECLARE_ASM_CONST(8, uint64_t, blue_15mask) = 0x0000001f0000001fULL;
...
@@ -122,16 +123,16 @@ DECLARE_ASM_CONST(8, uint64_t, blue_15mask) = 0x0000001f0000001fULL;
32-bit C version, and and&add trick by Michael Niedermayer
32-bit C version, and and&add trick by Michael Niedermayer
*/
*/
void
rgb2rgb_init_x86
(
int
flags
)
void
rgb2rgb_init_x86
(
void
)
{
{
#if HAVE_MMX2 || HAVE_AMD3DNOW || HAVE_MMX
int
cpu_flags
=
av_get_cpu_flags
();
if
(
flags
&
SWS_CPU_CAPS_SSE2
)
rgb2rgb_init_SSE2
();
if
(
HAVE_MMX
&&
cpu_flags
&
AV_CPU_FLAG_MMX
)
else
if
(
flags
&
SWS_CPU_CAPS_MMX2
)
rgb2rgb_init_MMX2
();
else
if
(
flags
&
SWS_CPU_CAPS_3DNOW
)
rgb2rgb_init_3DNOW
();
else
if
(
flags
&
SWS_CPU_CAPS_MMX
)
rgb2rgb_init_MMX
();
rgb2rgb_init_MMX
();
#endif
/* HAVE_MMX2 || HAVE_AMD3DNOW || HAVE_MMX */
if
(
HAVE_AMD3DNOW
&&
cpu_flags
&
AV_CPU_FLAG_3DNOW
)
rgb2rgb_init_3DNOW
();
if
(
HAVE_MMX2
&&
cpu_flags
&
AV_CPU_FLAG_MMX2
)
rgb2rgb_init_MMX2
();
if
(
HAVE_SSE
&&
cpu_flags
&
AV_CPU_FLAG_SSE2
)
rgb2rgb_init_SSE2
();
}
}
libswscale/x86/swscale_template.c
View file @
e66149e7
...
@@ -2721,10 +2721,11 @@ static int RENAME(swScale)(SwsContext *c, const uint8_t* src[], int srcStride[],
...
@@ -2721,10 +2721,11 @@ static int RENAME(swScale)(SwsContext *c, const uint8_t* src[], int srcStride[],
if
((
dstFormat
==
PIX_FMT_YUVA420P
)
&&
!
alpPixBuf
)
if
((
dstFormat
==
PIX_FMT_YUVA420P
)
&&
!
alpPixBuf
)
fillPlane
(
dst
[
3
],
dstStride
[
3
],
dstW
,
dstY
-
lastDstY
,
lastDstY
,
255
);
fillPlane
(
dst
[
3
],
dstStride
[
3
],
dstW
,
dstY
-
lastDstY
,
lastDstY
,
255
);
if
(
flags
&
SWS_CPU_CAPS_MMX2
)
__asm__
volatile
(
"sfence"
:::
"memory"
);
if
(
COMPILE_TEMPLATE_MMX2
)
__asm__
volatile
(
"sfence"
:::
"memory"
);
/* On K6 femms is faster than emms. On K7 femms is directly mapped to emms. */
/* On K6 femms is faster than emms. On K7 femms is directly mapped to emms. */
if
(
flags
&
SWS_CPU_CAPS_3DNOW
)
__asm__
volatile
(
"femms"
:::
"memory"
);
if
(
COMPILE_TEMPLATE_AMD3DNOW
)
__asm__
volatile
(
"femms"
:::
"memory"
);
else
__asm__
volatile
(
"emms"
:::
"memory"
);
else
__asm__
volatile
(
"emms"
:::
"memory"
);
/* store changed local vars back in the context */
/* store changed local vars back in the context */
c
->
dstY
=
dstY
;
c
->
dstY
=
dstY
;
c
->
lumBufIndex
=
lumBufIndex
;
c
->
lumBufIndex
=
lumBufIndex
;
...
...
libswscale/x86/yuv2rgb_mmx.c
View file @
e66149e7
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
#include "libswscale/swscale.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale_internal.h"
#include "libswscale/swscale_internal.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/cpu.h"
#define DITHER1XBPP // only for MMX
#define DITHER1XBPP // only for MMX
...
@@ -46,57 +47,58 @@ DECLARE_ASM_CONST(8, uint64_t, pb_03) = 0x0303030303030303ULL;
...
@@ -46,57 +47,58 @@ DECLARE_ASM_CONST(8, uint64_t, pb_03) = 0x0303030303030303ULL;
DECLARE_ASM_CONST
(
8
,
uint64_t
,
pb_07
)
=
0x0707070707070707ULL
;
DECLARE_ASM_CONST
(
8
,
uint64_t
,
pb_07
)
=
0x0707070707070707ULL
;
//MMX versions
//MMX versions
#if HAVE_MMX
#undef RENAME
#undef RENAME
#undef HAVE_MMX2
#undef COMPILE_TEMPLATE_MMX2
#undef HAVE_AMD3DNOW
#define COMPILE_TEMPLATE_MMX2 0
#define HAVE_MMX2 0
#define HAVE_AMD3DNOW 0
#define RENAME(a) a ## _MMX
#define RENAME(a) a ## _MMX
#include "yuv2rgb_template.c"
#include "yuv2rgb_template.c"
#endif
/* HAVE_MMX */
//MMX2 versions
//MMX2 versions
#if HAVE_MMX2
#undef RENAME
#undef RENAME
#undef
HAV
E_MMX2
#undef
COMPILE_TEMPLAT
E_MMX2
#define
HAV
E_MMX2 1
#define
COMPILE_TEMPLAT
E_MMX2 1
#define RENAME(a) a ## _MMX2
#define RENAME(a) a ## _MMX2
#include "yuv2rgb_template.c"
#include "yuv2rgb_template.c"
#endif
/* HAVE_MMX2 */
SwsFunc
ff_yuv2rgb_init_mmx
(
SwsContext
*
c
)
SwsFunc
ff_yuv2rgb_init_mmx
(
SwsContext
*
c
)
{
{
if
(
c
->
flags
&
SWS_CPU_CAPS_MMX2
)
{
int
cpu_flags
=
av_get_cpu_flags
();
if
(
c
->
srcFormat
!=
PIX_FMT_YUV420P
&&
c
->
srcFormat
!=
PIX_FMT_YUVA420P
)
return
NULL
;
if
(
HAVE_MMX2
&&
cpu_flags
&
AV_CPU_FLAG_MMX2
)
{
switch
(
c
->
dstFormat
)
{
switch
(
c
->
dstFormat
)
{
case
PIX_FMT_RGB32
:
if
(
CONFIG_SWSCALE_ALPHA
&&
c
->
srcFormat
==
PIX_FMT_YUVA420P
)
{
if
(
HAVE_7REGS
)
return
yuva420_rgb32_MMX2
;
break
;
}
else
return
yuv420_rgb32_MMX2
;
case
PIX_FMT_BGR32
:
if
(
CONFIG_SWSCALE_ALPHA
&&
c
->
srcFormat
==
PIX_FMT_YUVA420P
)
{
if
(
HAVE_7REGS
)
return
yuva420_bgr32_MMX2
;
break
;
}
else
return
yuv420_bgr32_MMX2
;
case
PIX_FMT_RGB24
:
return
yuv420_rgb24_MMX2
;
case
PIX_FMT_RGB24
:
return
yuv420_rgb24_MMX2
;
case
PIX_FMT_BGR24
:
return
yuv420_bgr24_MMX2
;
case
PIX_FMT_BGR24
:
return
yuv420_bgr24_MMX2
;
case
PIX_FMT_RGB565
:
return
yuv420_rgb16_MMX2
;
case
PIX_FMT_RGB555
:
return
yuv420_rgb15_MMX2
;
}
}
}
}
if
(
c
->
flags
&
SWS_CPU_CAPS_MMX
)
{
if
(
HAVE_MMX
&&
cpu_flags
&
AV_CPU_FLAG_MMX
)
{
switch
(
c
->
dstFormat
)
{
switch
(
c
->
dstFormat
)
{
case
PIX_FMT_RGB32
:
case
PIX_FMT_RGB32
:
if
(
CONFIG_SWSCALE_ALPHA
&&
c
->
srcFormat
==
PIX_FMT_YUVA420P
)
{
if
(
CONFIG_SWSCALE_ALPHA
&&
c
->
srcFormat
==
PIX_FMT_YUVA420P
)
{
if
(
HAVE_7REGS
)
return
yuva420_rgb32_MMX
;
#if HAVE_7REGS
break
;
return
yuva420_rgb32_MMX
;
}
else
return
yuv420_rgb32_MMX
;
#endif
case
PIX_FMT_BGR32
:
break
;
if
(
CONFIG_SWSCALE_ALPHA
&&
c
->
srcFormat
==
PIX_FMT_YUVA420P
)
{
}
else
return
yuv420_rgb32_MMX
;
if
(
HAVE_7REGS
)
return
yuva420_bgr32_MMX
;
case
PIX_FMT_BGR32
:
break
;
if
(
CONFIG_SWSCALE_ALPHA
&&
c
->
srcFormat
==
PIX_FMT_YUVA420P
)
{
}
else
return
yuv420_bgr32_MMX
;
#if HAVE_7REGS
case
PIX_FMT_RGB24
:
return
yuv420_rgb24_MMX
;
return
yuva420_bgr32_MMX
;
case
PIX_FMT_BGR24
:
return
yuv420_bgr24_MMX
;
#endif
case
PIX_FMT_RGB565
:
return
yuv420_rgb16_MMX
;
break
;
case
PIX_FMT_RGB555
:
return
yuv420_rgb15_MMX
;
}
else
return
yuv420_bgr32_MMX
;
case
PIX_FMT_RGB24
:
return
yuv420_rgb24_MMX
;
case
PIX_FMT_BGR24
:
return
yuv420_bgr24_MMX
;
case
PIX_FMT_RGB565
:
return
yuv420_rgb16_MMX
;
case
PIX_FMT_RGB555
:
return
yuv420_rgb15_MMX
;
}
}
}
}
...
...
libswscale/x86/yuv2rgb_template.c
View file @
e66149e7
...
@@ -25,14 +25,7 @@
...
@@ -25,14 +25,7 @@
#undef EMMS
#undef EMMS
#undef SFENCE
#undef SFENCE
#if HAVE_AMD3DNOW
#if COMPILE_TEMPLATE_MMX2
/* On K6 femms is faster than emms. On K7 femms is directly mapped to emms. */
#define EMMS "femms"
#else
#define EMMS "emms"
#endif
#if HAVE_MMX2
#define MOVNTQ "movntq"
#define MOVNTQ "movntq"
#define SFENCE "sfence"
#define SFENCE "sfence"
#else
#else
...
@@ -159,7 +152,8 @@
...
@@ -159,7 +152,8 @@
} \
} \
#define YUV2RGB_ENDFUNC \
#define YUV2RGB_ENDFUNC \
__asm__ volatile (SFENCE"\n\t"EMMS); \
__asm__ volatile (SFENCE"\n\t" \
"emms \n\t"); \
return srcSliceH; \
return srcSliceH; \
#define IF0(x)
#define IF0(x)
...
@@ -188,6 +182,7 @@
...
@@ -188,6 +182,7 @@
"paddusb "GREEN_DITHER"(%4), %%mm2\n\t" \
"paddusb "GREEN_DITHER"(%4), %%mm2\n\t" \
"paddusb "RED_DITHER"(%4), %%mm1\n\t" \
"paddusb "RED_DITHER"(%4), %%mm1\n\t" \
#if !COMPILE_TEMPLATE_MMX2
static
inline
int
RENAME
(
yuv420_rgb15
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
static
inline
int
RENAME
(
yuv420_rgb15
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
int
srcStride
[],
int
srcStride
[],
int
srcSliceY
,
int
srcSliceH
,
int
srcSliceY
,
int
srcSliceH
,
...
@@ -243,6 +238,7 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, const uint8_t *src[],
...
@@ -243,6 +238,7 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, const uint8_t *src[],
YUV2RGB_OPERANDS
YUV2RGB_OPERANDS
YUV2RGB_ENDFUNC
YUV2RGB_ENDFUNC
}
}
#endif
/* !COMPILE_TEMPLATE_MMX2 */
#define RGB_PACK24(blue, red)\
#define RGB_PACK24(blue, red)\
"packuswb %%mm3, %%mm0 \n"
/* R0 R2 R4 R6 R1 R3 R5 R7 */
\
"packuswb %%mm3, %%mm0 \n"
/* R0 R2 R4 R6 R1 R3 R5 R7 */
\
...
@@ -259,7 +255,7 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, const uint8_t *src[],
...
@@ -259,7 +255,7 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, const uint8_t *src[],
"punpckhwd %%mm6, %%mm5 \n"
/* R4 G4 B4 R5 R6 G6 B6 R7 */
\
"punpckhwd %%mm6, %%mm5 \n"
/* R4 G4 B4 R5 R6 G6 B6 R7 */
\
RGB_PACK24_B
RGB_PACK24_B
#if
HAV
E_MMX2
#if
COMPILE_TEMPLAT
E_MMX2
DECLARE_ASM_CONST
(
8
,
int16_t
,
mask1101
[
4
])
=
{
-
1
,
-
1
,
0
,
-
1
};
DECLARE_ASM_CONST
(
8
,
int16_t
,
mask1101
[
4
])
=
{
-
1
,
-
1
,
0
,
-
1
};
DECLARE_ASM_CONST
(
8
,
int16_t
,
mask0010
[
4
])
=
{
0
,
0
,
-
1
,
0
};
DECLARE_ASM_CONST
(
8
,
int16_t
,
mask0010
[
4
])
=
{
0
,
0
,
-
1
,
0
};
DECLARE_ASM_CONST
(
8
,
int16_t
,
mask0110
[
4
])
=
{
0
,
-
1
,
-
1
,
0
};
DECLARE_ASM_CONST
(
8
,
int16_t
,
mask0110
[
4
])
=
{
0
,
-
1
,
-
1
,
0
};
...
@@ -366,6 +362,7 @@ static inline int RENAME(yuv420_bgr24)(SwsContext *c, const uint8_t *src[],
...
@@ -366,6 +362,7 @@ static inline int RENAME(yuv420_bgr24)(SwsContext *c, const uint8_t *src[],
MOVNTQ " %%mm5, 16(%1)\n\t" \
MOVNTQ " %%mm5, 16(%1)\n\t" \
MOVNTQ " %%mm"alpha", 24(%1)\n\t" \
MOVNTQ " %%mm"alpha", 24(%1)\n\t" \
#if !COMPILE_TEMPLATE_MMX2
static
inline
int
RENAME
(
yuv420_rgb32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
static
inline
int
RENAME
(
yuv420_rgb32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
int
srcStride
[],
int
srcStride
[],
int
srcSliceY
,
int
srcSliceH
,
int
srcSliceY
,
int
srcSliceH
,
...
@@ -386,12 +383,12 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, const uint8_t *src[],
...
@@ -386,12 +383,12 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, const uint8_t *src[],
YUV2RGB_ENDFUNC
YUV2RGB_ENDFUNC
}
}
#if HAVE_7REGS && CONFIG_SWSCALE_ALPHA
static
inline
int
RENAME
(
yuva420_rgb32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
static
inline
int
RENAME
(
yuva420_rgb32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
int
srcStride
[],
int
srcStride
[],
int
srcSliceY
,
int
srcSliceH
,
int
srcSliceY
,
int
srcSliceH
,
uint8_t
*
dst
[],
int
dstStride
[])
uint8_t
*
dst
[],
int
dstStride
[])
{
{
#if HAVE_7REGS
int
y
,
h_size
;
int
y
,
h_size
;
YUV2RGB_LOOP
(
4
)
YUV2RGB_LOOP
(
4
)
...
@@ -406,10 +403,8 @@ static inline int RENAME(yuva420_rgb32)(SwsContext *c, const uint8_t *src[],
...
@@ -406,10 +403,8 @@ static inline int RENAME(yuva420_rgb32)(SwsContext *c, const uint8_t *src[],
YUV2RGB_ENDLOOP
(
4
)
YUV2RGB_ENDLOOP
(
4
)
YUV2RGB_OPERANDS_ALPHA
YUV2RGB_OPERANDS_ALPHA
YUV2RGB_ENDFUNC
YUV2RGB_ENDFUNC
#else
return
0
;
#endif
}
}
#endif
static
inline
int
RENAME
(
yuv420_bgr32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
static
inline
int
RENAME
(
yuv420_bgr32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
int
srcStride
[],
int
srcStride
[],
...
@@ -431,12 +426,12 @@ static inline int RENAME(yuv420_bgr32)(SwsContext *c, const uint8_t *src[],
...
@@ -431,12 +426,12 @@ static inline int RENAME(yuv420_bgr32)(SwsContext *c, const uint8_t *src[],
YUV2RGB_ENDFUNC
YUV2RGB_ENDFUNC
}
}
#if HAVE_7REGS && CONFIG_SWSCALE_ALPHA
static
inline
int
RENAME
(
yuva420_bgr32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
static
inline
int
RENAME
(
yuva420_bgr32
)(
SwsContext
*
c
,
const
uint8_t
*
src
[],
int
srcStride
[],
int
srcStride
[],
int
srcSliceY
,
int
srcSliceH
,
int
srcSliceY
,
int
srcSliceH
,
uint8_t
*
dst
[],
int
dstStride
[])
uint8_t
*
dst
[],
int
dstStride
[])
{
{
#if HAVE_7REGS
int
y
,
h_size
;
int
y
,
h_size
;
YUV2RGB_LOOP
(
4
)
YUV2RGB_LOOP
(
4
)
...
@@ -451,7 +446,7 @@ static inline int RENAME(yuva420_bgr32)(SwsContext *c, const uint8_t *src[],
...
@@ -451,7 +446,7 @@ static inline int RENAME(yuva420_bgr32)(SwsContext *c, const uint8_t *src[],
YUV2RGB_ENDLOOP
(
4
)
YUV2RGB_ENDLOOP
(
4
)
YUV2RGB_OPERANDS_ALPHA
YUV2RGB_OPERANDS_ALPHA
YUV2RGB_ENDFUNC
YUV2RGB_ENDFUNC
#else
return
0
;
#endif
}
}
#endif
#endif
/* !COMPILE_TEMPLATE_MMX2 */
libswscale/yuv2rgb.c
View file @
e66149e7
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
#include "rgb2rgb.h"
#include "rgb2rgb.h"
#include "swscale.h"
#include "swscale.h"
#include "swscale_internal.h"
#include "swscale_internal.h"
#include "libavutil/
x86_
cpu.h"
#include "libavutil/cpu.h"
#include "libavutil/bswap.h"
#include "libavutil/bswap.h"
extern
const
uint8_t
dither_4x4_16
[
4
][
8
];
extern
const
uint8_t
dither_4x4_16
[
4
][
8
];
...
@@ -579,24 +579,18 @@ CLOSEYUV2RGBFUNC(1)
...
@@ -579,24 +579,18 @@ CLOSEYUV2RGBFUNC(1)
SwsFunc
ff_yuv2rgb_get_func_ptr
(
SwsContext
*
c
)
SwsFunc
ff_yuv2rgb_get_func_ptr
(
SwsContext
*
c
)
{
{
SwsFunc
t
=
NULL
;
SwsFunc
t
=
NULL
;
#if HAVE_MMX
t
=
ff_yuv2rgb_init_mmx
(
c
);
#endif
#if HAVE_VIS
t
=
ff_yuv2rgb_init_vis
(
c
);
#endif
#if CONFIG_MLIB
t
=
ff_yuv2rgb_init_mlib
(
c
);
#endif
#if HAVE_ALTIVEC
if
(
c
->
flags
&
SWS_CPU_CAPS_ALTIVEC
)
t
=
ff_yuv2rgb_init_altivec
(
c
);
#endif
#if ARCH_BFIN
if
(
HAVE_MMX
)
{
if
(
c
->
flags
&
SWS_CPU_CAPS_BFIN
)
t
=
ff_yuv2rgb_init_mmx
(
c
);
}
else
if
(
HAVE_VIS
)
{
t
=
ff_yuv2rgb_init_vis
(
c
);
}
else
if
(
CONFIG_MLIB
)
{
t
=
ff_yuv2rgb_init_mlib
(
c
);
}
else
if
(
HAVE_ALTIVEC
)
{
t
=
ff_yuv2rgb_init_altivec
(
c
);
}
else
if
(
ARCH_BFIN
)
{
t
=
ff_yuv2rgb_get_func_ptr_bfin
(
c
);
t
=
ff_yuv2rgb_get_func_ptr_bfin
(
c
);
#endif
}
if
(
t
)
if
(
t
)
return
t
;
return
t
;
...
...
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