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
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