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
c2503d9c
Commit
c2503d9c
authored
Oct 10, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swscale: ppc: Hide arch-specific initialization details
Also give consistent names to init functions.
parent
6af2c351
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
51 additions
and
25 deletions
+51
-25
Makefile
libswscale/ppc/Makefile
+3
-3
swscale_altivec.c
libswscale/ppc/swscale_altivec.c
+5
-1
yuv2rgb_altivec.c
libswscale/ppc/yuv2rgb_altivec.c
+22
-6
yuv2yuv_altivec.c
libswscale/ppc/yuv2yuv_altivec.c
+7
-1
swscale.c
libswscale/swscale.c
+2
-2
swscale_internal.h
libswscale/swscale_internal.h
+5
-5
swscale_unscaled.c
libswscale/swscale_unscaled.c
+2
-2
utils.c
libswscale/utils.c
+3
-3
yuv2rgb.c
libswscale/yuv2rgb.c
+2
-2
No files found.
libswscale/ppc/Makefile
View file @
c2503d9c
ALTIVEC-OBJS
+=
ppc/swscale_altivec.o
\
ppc/yuv2rgb_altivec.o
\
ppc/yuv2yuv_altivec.o
\
OBJS
+=
ppc/swscale_altivec.o
\
ppc/yuv2rgb_altivec.o
\
ppc/yuv2yuv_altivec.o
\
libswscale/ppc/swscale_altivec.c
View file @
c2503d9c
...
...
@@ -30,6 +30,7 @@
#include "libavutil/cpu.h"
#include "yuv2rgb_altivec.h"
#if HAVE_ALTIVEC
#define vzero vec_splat_s32(0)
#define yuv2planeX_8(d1, d2, l1, src, x, perm, filter) do { \
...
...
@@ -284,9 +285,11 @@ static void hScale_altivec_real(SwsContext *c, int16_t *dst, int dstW,
}
}
}
#endif
/* HAVE_ALTIVEC */
av_cold
void
ff_sws_init_sw
Scale_altive
c
(
SwsContext
*
c
)
av_cold
void
ff_sws_init_sw
scale_pp
c
(
SwsContext
*
c
)
{
#if HAVE_ALTIVEC
enum
AVPixelFormat
dstFormat
=
c
->
dstFormat
;
if
(
!
(
av_get_cpu_flags
()
&
AV_CPU_FLAG_ALTIVEC
))
...
...
@@ -325,4 +328,5 @@ av_cold void ff_sws_init_swScale_altivec(SwsContext *c)
break
;
}
}
#endif
/* HAVE_ALTIVEC */
}
libswscale/ppc/yuv2rgb_altivec.c
View file @
c2503d9c
...
...
@@ -99,6 +99,8 @@
#include "libavutil/cpu.h"
#include "yuv2rgb_altivec.h"
#if HAVE_ALTIVEC
#undef PROFILE_THE_BEAST
#undef INC_SCALING
...
...
@@ -528,14 +530,17 @@ static int altivec_uyvy_rgb32(SwsContext *c, const unsigned char **in,
return
srcSliceH
;
}
#endif
/* HAVE_ALTIVEC */
/* Ok currently the acceleration routine only supports
* inputs of widths a multiple of 16
* and heights a multiple 2
*
* So we just fall back to the C codes for this.
*/
av_cold
SwsFunc
ff_yuv2rgb_init_
altive
c
(
SwsContext
*
c
)
av_cold
SwsFunc
ff_yuv2rgb_init_
pp
c
(
SwsContext
*
c
)
{
#if HAVE_ALTIVEC
if
(
!
(
av_get_cpu_flags
()
&
AV_CPU_FLAG_ALTIVEC
))
return
NULL
;
...
...
@@ -591,20 +596,26 @@ av_cold SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c)
}
break
;
}
#endif
/* HAVE_ALTIVEC */
return
NULL
;
}
av_cold
void
ff_yuv2rgb_init_tables_
altive
c
(
SwsContext
*
c
,
const
int
inv_table
[
4
],
int
brightness
,
int
contrast
,
int
saturation
)
av_cold
void
ff_yuv2rgb_init_tables_
pp
c
(
SwsContext
*
c
,
const
int
inv_table
[
4
],
int
brightness
,
int
contrast
,
int
saturation
)
{
#if HAVE_ALTIVEC
union
{
DECLARE_ALIGNED
(
16
,
signed
short
,
tmp
)[
8
];
vector
signed
short
vec
;
}
buf
;
if
(
!
(
av_get_cpu_flags
()
&
AV_CPU_FLAG_ALTIVEC
))
return
;
buf
.
tmp
[
0
]
=
((
0xffffLL
)
*
contrast
>>
8
)
>>
9
;
// cy
buf
.
tmp
[
1
]
=
-
256
*
brightness
;
// oy
buf
.
tmp
[
2
]
=
(
inv_table
[
0
]
>>
3
)
*
(
contrast
>>
16
)
*
(
saturation
>>
16
);
// crv
...
...
@@ -620,8 +631,11 @@ av_cold void ff_yuv2rgb_init_tables_altivec(SwsContext *c,
c
->
CGU
=
vec_splat
((
vector
signed
short
)
buf
.
vec
,
4
);
c
->
CGV
=
vec_splat
((
vector
signed
short
)
buf
.
vec
,
5
);
return
;
#endif
/* HAVE_ALTIVEC */
}
#if HAVE_ALTIVEC
static
av_always_inline
void
yuv2packedX_altivec
(
SwsContext
*
c
,
const
int16_t
*
lumFilter
,
const
int16_t
**
lumSrc
,
...
...
@@ -854,3 +868,5 @@ YUV2PACKEDX_WRAPPER(argb, AV_PIX_FMT_ARGB);
YUV2PACKEDX_WRAPPER
(
rgba
,
AV_PIX_FMT_RGBA
);
YUV2PACKEDX_WRAPPER
(
rgb24
,
AV_PIX_FMT_RGB24
);
YUV2PACKEDX_WRAPPER
(
bgr24
,
AV_PIX_FMT_BGR24
);
#endif
/* HAVE_ALTIVEC */
libswscale/ppc/yuv2yuv_altivec.c
View file @
c2503d9c
...
...
@@ -28,6 +28,8 @@
#include "libswscale/swscale_internal.h"
#include "libavutil/cpu.h"
#if HAVE_ALTIVEC
static
int
yv12toyuy2_unscaled_altivec
(
SwsContext
*
c
,
const
uint8_t
*
src
[],
int
srcStride
[],
int
srcSliceY
,
int
srcSliceH
,
uint8_t
*
dstParam
[],
...
...
@@ -179,8 +181,11 @@ static int yv12touyvy_unscaled_altivec(SwsContext *c, const uint8_t *src[],
return
srcSliceH
;
}
void
ff_swscale_get_unscaled_altivec
(
SwsContext
*
c
)
#endif
/* HAVE_ALTIVEC */
void
ff_swscale_get_unscaled_ppc
(
SwsContext
*
c
)
{
#if HAVE_ALTIVEC
if
((
av_get_cpu_flags
()
&
AV_CPU_FLAG_ALTIVEC
)
&&
!
(
c
->
srcW
&
15
)
&&
!
(
c
->
flags
&
SWS_BITEXACT
)
&&
c
->
srcFormat
==
AV_PIX_FMT_YUV420P
)
{
enum
AVPixelFormat
dstFormat
=
c
->
dstFormat
;
...
...
@@ -191,4 +196,5 @@ void ff_swscale_get_unscaled_altivec(SwsContext *c)
else
if
(
dstFormat
==
AV_PIX_FMT_UYVY422
)
c
->
swScale
=
yv12touyvy_unscaled_altivec
;
}
#endif
/* HAVE_ALTIVEC */
}
libswscale/swscale.c
View file @
c2503d9c
...
...
@@ -772,10 +772,10 @@ SwsFunc ff_getSwsFunc(SwsContext *c)
{
sws_init_swScale_c
(
c
);
if
(
ARCH_PPC
)
ff_sws_init_swscale_ppc
(
c
);
if
(
ARCH_X86
)
ff_sws_init_swscale_x86
(
c
);
if
(
HAVE_ALTIVEC
)
ff_sws_init_swScale_altivec
(
c
);
return
swScale
;
}
libswscale/swscale_internal.h
View file @
c2503d9c
...
...
@@ -564,15 +564,15 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c);
int
ff_yuv2rgb_c_init_tables
(
SwsContext
*
c
,
const
int
inv_table
[
4
],
int
fullRange
,
int
brightness
,
int
contrast
,
int
saturation
);
void
ff_yuv2rgb_init_tables_ppc
(
SwsContext
*
c
,
const
int
inv_table
[
4
],
int
brightness
,
int
contrast
,
int
saturation
);
void
ff_yuv2rgb_init_tables_altivec
(
SwsContext
*
c
,
const
int
inv_table
[
4
],
int
brightness
,
int
contrast
,
int
saturation
);
void
updateMMXDitherTables
(
SwsContext
*
c
,
int
dstY
,
int
lumBufIndex
,
int
chrBufIndex
,
int
lastInLumBuf
,
int
lastInChrBuf
);
SwsFunc
ff_yuv2rgb_init_x86
(
SwsContext
*
c
);
SwsFunc
ff_yuv2rgb_init_vis
(
SwsContext
*
c
);
SwsFunc
ff_yuv2rgb_init_
altive
c
(
SwsContext
*
c
);
SwsFunc
ff_yuv2rgb_init_
pp
c
(
SwsContext
*
c
);
SwsFunc
ff_yuv2rgb_get_func_ptr_bfin
(
SwsContext
*
c
);
void
ff_bfin_get_unscaled_swscale
(
SwsContext
*
c
);
...
...
@@ -736,7 +736,7 @@ extern const AVClass sws_context_class;
*/
void
ff_get_unscaled_swscale
(
SwsContext
*
c
);
void
ff_swscale_get_unscaled_
altive
c
(
SwsContext
*
c
);
void
ff_swscale_get_unscaled_
pp
c
(
SwsContext
*
c
);
/**
* Return function pointer to fastest main scaler path function depending
...
...
@@ -753,7 +753,7 @@ void ff_sws_init_output_funcs(SwsContext *c,
yuv2packed2_fn
*
yuv2packed2
,
yuv2packedX_fn
*
yuv2packedX
,
yuv2anyX_fn
*
yuv2anyX
);
void
ff_sws_init_sw
Scale_altive
c
(
SwsContext
*
c
);
void
ff_sws_init_sw
scale_pp
c
(
SwsContext
*
c
);
void
ff_sws_init_swscale_x86
(
SwsContext
*
c
);
#endif
/* SWSCALE_SWSCALE_INTERNAL_H */
libswscale/swscale_unscaled.c
View file @
c2503d9c
...
...
@@ -1091,8 +1091,8 @@ void ff_get_unscaled_swscale(SwsContext *c)
if
(
ARCH_BFIN
)
ff_bfin_get_unscaled_swscale
(
c
);
if
(
HAVE_ALTIVE
C
)
ff_swscale_get_unscaled_
altive
c
(
c
);
if
(
ARCH_PP
C
)
ff_swscale_get_unscaled_
pp
c
(
c
);
}
static
void
reset_ptr
(
const
uint8_t
*
src
[],
int
format
)
...
...
libswscale/utils.c
View file @
c2503d9c
...
...
@@ -806,9 +806,9 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4],
contrast
,
saturation
);
// FIXME factorize
if
(
PPC_ALTIVEC
(
av_get_cpu_flags
())
)
ff_yuv2rgb_init_tables_
altive
c
(
c
,
inv_table
,
brightness
,
contrast
,
saturation
);
if
(
ARCH_PPC
)
ff_yuv2rgb_init_tables_
pp
c
(
c
,
inv_table
,
brightness
,
contrast
,
saturation
);
return
0
;
}
...
...
libswscale/yuv2rgb.c
View file @
c2503d9c
...
...
@@ -564,10 +564,10 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c)
t
=
ff_yuv2rgb_init_x86
(
c
);
else
if
(
HAVE_VIS
)
t
=
ff_yuv2rgb_init_vis
(
c
);
else
if
(
HAVE_ALTIVEC
)
t
=
ff_yuv2rgb_init_altivec
(
c
);
else
if
(
ARCH_BFIN
)
t
=
ff_yuv2rgb_get_func_ptr_bfin
(
c
);
else
if
(
ARCH_PPC
)
t
=
ff_yuv2rgb_init_ppc
(
c
);
if
(
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