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
a65bdceb
Commit
a65bdceb
authored
Jul 08, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86: mmx2 ---> mmxext in variable names
parent
652f5185
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
45 deletions
+56
-45
swscale_internal.h
libswscale/swscale_internal.h
+5
-5
utils.c
libswscale/utils.c
+46
-34
swscale_template.c
libswscale/x86/swscale_template.c
+5
-6
No files found.
libswscale/swscale_internal.h
View file @
a65bdceb
...
@@ -307,12 +307,12 @@ typedef struct SwsContext {
...
@@ -307,12 +307,12 @@ typedef struct SwsContext {
int
vChrFilterSize
;
///< Vertical filter size for chroma pixels.
int
vChrFilterSize
;
///< Vertical filter size for chroma pixels.
//@}
//@}
int
lumMmx
2FilterCodeSize
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code size for luma/alpha planes.
int
lumMmx
extFilterCodeSize
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code size for luma/alpha planes.
int
chrMmx
2FilterCodeSize
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code size for chroma planes.
int
chrMmx
extFilterCodeSize
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code size for chroma planes.
uint8_t
*
lumMmx
2FilterCode
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code for luma/alpha planes.
uint8_t
*
lumMmx
extFilterCode
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code for luma/alpha planes.
uint8_t
*
chrMmx
2FilterCode
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code for chroma planes.
uint8_t
*
chrMmx
extFilterCode
;
///< Runtime-generated MMXEXT horizontal fast bilinear scaler code for chroma planes.
int
canMMX
2
BeUsed
;
int
canMMX
EXT
BeUsed
;
int
dstY
;
///< Last destination vertical line output from last slice.
int
dstY
;
///< Last destination vertical line output from last slice.
int
flags
;
///< Flags passed by the user to select scaler algorithm, optimizations, subsampling, etc...
int
flags
;
///< Flags passed by the user to select scaler algorithm, optimizations, subsampling, etc...
...
...
libswscale/utils.c
View file @
a65bdceb
...
@@ -1001,18 +1001,18 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
...
@@ -1001,18 +1001,18 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
(
FFALIGN
(
srcW
,
16
)
*
2
*
FFALIGN
(
c
->
srcBpc
,
8
)
>>
3
)
+
16
,
(
FFALIGN
(
srcW
,
16
)
*
2
*
FFALIGN
(
c
->
srcBpc
,
8
)
>>
3
)
+
16
,
fail
);
fail
);
if
(
INLINE_MMXEXT
(
cpu_flags
)
&&
c
->
srcBpc
==
8
&&
c
->
dstBpc
<=
10
)
{
if
(
INLINE_MMXEXT
(
cpu_flags
)
&&
c
->
srcBpc
==
8
&&
c
->
dstBpc
<=
10
)
{
c
->
canMMX
2
BeUsed
=
(
dstW
>=
srcW
&&
(
dstW
&
31
)
==
0
&&
c
->
canMMX
EXT
BeUsed
=
(
dstW
>=
srcW
&&
(
dstW
&
31
)
==
0
&&
(
srcW
&
15
)
==
0
)
?
1
:
0
;
(
srcW
&
15
)
==
0
)
?
1
:
0
;
if
(
!
c
->
canMMX
2
BeUsed
&&
dstW
>=
srcW
&&
(
srcW
&
15
)
==
0
if
(
!
c
->
canMMX
EXT
BeUsed
&&
dstW
>=
srcW
&&
(
srcW
&
15
)
==
0
&&
(
flags
&
SWS_FAST_BILINEAR
))
{
&&
(
flags
&
SWS_FAST_BILINEAR
))
{
if
(
flags
&
SWS_PRINT_INFO
)
if
(
flags
&
SWS_PRINT_INFO
)
av_log
(
c
,
AV_LOG_INFO
,
av_log
(
c
,
AV_LOG_INFO
,
"output width is not a multiple of 32 -> no MMXEXT scaler
\n
"
);
"output width is not a multiple of 32 -> no MMXEXT scaler
\n
"
);
}
}
if
(
usesHFilter
)
if
(
usesHFilter
)
c
->
canMMX
2
BeUsed
=
0
;
c
->
canMMX
EXT
BeUsed
=
0
;
}
else
}
else
c
->
canMMX
2
BeUsed
=
0
;
c
->
canMMX
EXT
BeUsed
=
0
;
c
->
chrXInc
=
(((
int64_t
)
c
->
chrSrcW
<<
16
)
+
(
c
->
chrDstW
>>
1
))
/
c
->
chrDstW
;
c
->
chrXInc
=
(((
int64_t
)
c
->
chrSrcW
<<
16
)
+
(
c
->
chrDstW
>>
1
))
/
c
->
chrDstW
;
c
->
chrYInc
=
(((
int64_t
)
c
->
chrSrcH
<<
16
)
+
(
c
->
chrDstH
>>
1
))
/
c
->
chrDstH
;
c
->
chrYInc
=
(((
int64_t
)
c
->
chrSrcH
<<
16
)
+
(
c
->
chrDstH
>>
1
))
/
c
->
chrDstH
;
...
@@ -1025,7 +1025,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
...
@@ -1025,7 +1025,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
* correct variant would be like the vertical one, but that would require
* correct variant would be like the vertical one, but that would require
* some special code for the first and last pixel */
* some special code for the first and last pixel */
if
(
flags
&
SWS_FAST_BILINEAR
)
{
if
(
flags
&
SWS_FAST_BILINEAR
)
{
if
(
c
->
canMMX
2
BeUsed
)
{
if
(
c
->
canMMX
EXT
BeUsed
)
{
c
->
lumXInc
+=
20
;
c
->
lumXInc
+=
20
;
c
->
chrXInc
+=
20
;
c
->
chrXInc
+=
20
;
}
}
...
@@ -1042,38 +1042,50 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
...
@@ -1042,38 +1042,50 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
{
{
#if HAVE_MMXEXT_INLINE
#if HAVE_MMXEXT_INLINE
// can't downscale !!!
// can't downscale !!!
if
(
c
->
canMMX
2
BeUsed
&&
(
flags
&
SWS_FAST_BILINEAR
))
{
if
(
c
->
canMMX
EXT
BeUsed
&&
(
flags
&
SWS_FAST_BILINEAR
))
{
c
->
lumMmx
2
FilterCodeSize
=
initMMX2HScaler
(
dstW
,
c
->
lumXInc
,
NULL
,
c
->
lumMmx
ext
FilterCodeSize
=
initMMX2HScaler
(
dstW
,
c
->
lumXInc
,
NULL
,
NULL
,
NULL
,
8
);
NULL
,
NULL
,
8
);
c
->
chrMmx
2
FilterCodeSize
=
initMMX2HScaler
(
c
->
chrDstW
,
c
->
chrXInc
,
c
->
chrMmx
ext
FilterCodeSize
=
initMMX2HScaler
(
c
->
chrDstW
,
c
->
chrXInc
,
NULL
,
NULL
,
NULL
,
4
);
NULL
,
NULL
,
NULL
,
4
);
#if USE_MMAP
#if USE_MMAP
c
->
lumMmx2FilterCode
=
mmap
(
NULL
,
c
->
lumMmx2FilterCodeSize
,
PROT_READ
|
PROT_WRITE
,
MAP_PRIVATE
|
MAP_ANONYMOUS
,
-
1
,
0
);
c
->
lumMmxextFilterCode
=
mmap
(
NULL
,
c
->
lumMmxextFilterCodeSize
,
c
->
chrMmx2FilterCode
=
mmap
(
NULL
,
c
->
chrMmx2FilterCodeSize
,
PROT_READ
|
PROT_WRITE
,
MAP_PRIVATE
|
MAP_ANONYMOUS
,
-
1
,
0
);
PROT_READ
|
PROT_WRITE
,
MAP_PRIVATE
|
MAP_ANONYMOUS
,
-
1
,
0
);
c
->
chrMmxextFilterCode
=
mmap
(
NULL
,
c
->
chrMmxextFilterCodeSize
,
PROT_READ
|
PROT_WRITE
,
MAP_PRIVATE
|
MAP_ANONYMOUS
,
-
1
,
0
);
#elif HAVE_VIRTUALALLOC
#elif HAVE_VIRTUALALLOC
c
->
lumMmx2FilterCode
=
VirtualAlloc
(
NULL
,
c
->
lumMmx2FilterCodeSize
,
MEM_COMMIT
,
PAGE_EXECUTE_READWRITE
);
c
->
lumMmxextFilterCode
=
VirtualAlloc
(
NULL
,
c
->
chrMmx2FilterCode
=
VirtualAlloc
(
NULL
,
c
->
chrMmx2FilterCodeSize
,
MEM_COMMIT
,
PAGE_EXECUTE_READWRITE
);
c
->
lumMmxextFilterCodeSize
,
MEM_COMMIT
,
PAGE_EXECUTE_READWRITE
);
c
->
chrMmxextFilterCode
=
VirtualAlloc
(
NULL
,
c
->
chrMmxextFilterCodeSize
,
MEM_COMMIT
,
PAGE_EXECUTE_READWRITE
);
#else
#else
c
->
lumMmx
2FilterCode
=
av_malloc
(
c
->
lumMmx2
FilterCodeSize
);
c
->
lumMmx
extFilterCode
=
av_malloc
(
c
->
lumMmxext
FilterCodeSize
);
c
->
chrMmx
2FilterCode
=
av_malloc
(
c
->
chrMmx2
FilterCodeSize
);
c
->
chrMmx
extFilterCode
=
av_malloc
(
c
->
chrMmxext
FilterCodeSize
);
#endif
#endif
if
(
!
c
->
lumMmx
2FilterCode
||
!
c
->
chrMmx2
FilterCode
)
if
(
!
c
->
lumMmx
extFilterCode
||
!
c
->
chrMmxext
FilterCode
)
return
AVERROR
(
ENOMEM
);
return
AVERROR
(
ENOMEM
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hLumFilter
,
(
dstW
/
8
+
8
)
*
sizeof
(
int16_t
),
fail
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hLumFilter
,
(
dstW
/
8
+
8
)
*
sizeof
(
int16_t
),
fail
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hChrFilter
,
(
c
->
chrDstW
/
4
+
8
)
*
sizeof
(
int16_t
),
fail
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hChrFilter
,
(
c
->
chrDstW
/
4
+
8
)
*
sizeof
(
int16_t
),
fail
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hLumFilterPos
,
(
dstW
/
2
/
8
+
8
)
*
sizeof
(
int32_t
),
fail
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hLumFilterPos
,
(
dstW
/
2
/
8
+
8
)
*
sizeof
(
int32_t
),
fail
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hChrFilterPos
,
(
c
->
chrDstW
/
2
/
4
+
8
)
*
sizeof
(
int32_t
),
fail
);
FF_ALLOCZ_OR_GOTO
(
c
,
c
->
hChrFilterPos
,
(
c
->
chrDstW
/
2
/
4
+
8
)
*
sizeof
(
int32_t
),
fail
);
initMMX2HScaler
(
dstW
,
c
->
lumXInc
,
c
->
lumMmx
2
FilterCode
,
initMMX2HScaler
(
dstW
,
c
->
lumXInc
,
c
->
lumMmx
ext
FilterCode
,
c
->
hLumFilter
,
c
->
hLumFilterPos
,
8
);
c
->
hLumFilter
,
c
->
hLumFilterPos
,
8
);
initMMX2HScaler
(
c
->
chrDstW
,
c
->
chrXInc
,
c
->
chrMmx
2
FilterCode
,
initMMX2HScaler
(
c
->
chrDstW
,
c
->
chrXInc
,
c
->
chrMmx
ext
FilterCode
,
c
->
hChrFilter
,
c
->
hChrFilterPos
,
4
);
c
->
hChrFilter
,
c
->
hChrFilterPos
,
4
);
#if USE_MMAP
#if USE_MMAP
mprotect
(
c
->
lumMmx
2FilterCode
,
c
->
lumMmx2
FilterCodeSize
,
PROT_EXEC
|
PROT_READ
);
mprotect
(
c
->
lumMmx
extFilterCode
,
c
->
lumMmxext
FilterCodeSize
,
PROT_EXEC
|
PROT_READ
);
mprotect
(
c
->
chrMmx
2FilterCode
,
c
->
chrMmx2
FilterCodeSize
,
PROT_EXEC
|
PROT_READ
);
mprotect
(
c
->
chrMmx
extFilterCode
,
c
->
chrMmxext
FilterCodeSize
,
PROT_EXEC
|
PROT_READ
);
#endif
#endif
}
else
}
else
#endif
/* HAVE_MMXEXT_INLINE */
#endif
/* HAVE_MMXEXT_INLINE */
...
@@ -1651,21 +1663,21 @@ void sws_freeContext(SwsContext *c)
...
@@ -1651,21 +1663,21 @@ void sws_freeContext(SwsContext *c)
#if HAVE_MMX_INLINE
#if HAVE_MMX_INLINE
#if USE_MMAP
#if USE_MMAP
if
(
c
->
lumMmx
2
FilterCode
)
if
(
c
->
lumMmx
ext
FilterCode
)
munmap
(
c
->
lumMmx
2FilterCode
,
c
->
lumMmx2
FilterCodeSize
);
munmap
(
c
->
lumMmx
extFilterCode
,
c
->
lumMmxext
FilterCodeSize
);
if
(
c
->
chrMmx
2
FilterCode
)
if
(
c
->
chrMmx
ext
FilterCode
)
munmap
(
c
->
chrMmx
2FilterCode
,
c
->
chrMmx2
FilterCodeSize
);
munmap
(
c
->
chrMmx
extFilterCode
,
c
->
chrMmxext
FilterCodeSize
);
#elif HAVE_VIRTUALALLOC
#elif HAVE_VIRTUALALLOC
if
(
c
->
lumMmx
2
FilterCode
)
if
(
c
->
lumMmx
ext
FilterCode
)
VirtualFree
(
c
->
lumMmx
2
FilterCode
,
0
,
MEM_RELEASE
);
VirtualFree
(
c
->
lumMmx
ext
FilterCode
,
0
,
MEM_RELEASE
);
if
(
c
->
chrMmx
2
FilterCode
)
if
(
c
->
chrMmx
ext
FilterCode
)
VirtualFree
(
c
->
chrMmx
2
FilterCode
,
0
,
MEM_RELEASE
);
VirtualFree
(
c
->
chrMmx
ext
FilterCode
,
0
,
MEM_RELEASE
);
#else
#else
av_free
(
c
->
lumMmx
2
FilterCode
);
av_free
(
c
->
lumMmx
ext
FilterCode
);
av_free
(
c
->
chrMmx
2
FilterCode
);
av_free
(
c
->
chrMmx
ext
FilterCode
);
#endif
#endif
c
->
lumMmx
2
FilterCode
=
NULL
;
c
->
lumMmx
ext
FilterCode
=
NULL
;
c
->
chrMmx
2
FilterCode
=
NULL
;
c
->
chrMmx
ext
FilterCode
=
NULL
;
#endif
/* HAVE_MMX_INLINE */
#endif
/* HAVE_MMX_INLINE */
av_freep
(
&
c
->
yuvTable
);
av_freep
(
&
c
->
yuvTable
);
...
...
libswscale/x86/swscale_template.c
View file @
a65bdceb
...
@@ -1378,7 +1378,7 @@ static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
...
@@ -1378,7 +1378,7 @@ static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
{
{
int32_t
*
filterPos
=
c
->
hLumFilterPos
;
int32_t
*
filterPos
=
c
->
hLumFilterPos
;
int16_t
*
filter
=
c
->
hLumFilter
;
int16_t
*
filter
=
c
->
hLumFilter
;
void
*
mmx
2FilterCode
=
c
->
lumMmx2
FilterCode
;
void
*
mmx
extFilterCode
=
c
->
lumMmxext
FilterCode
;
int
i
;
int
i
;
#if defined(PIC)
#if defined(PIC)
uint64_t
ebxsave
;
uint64_t
ebxsave
;
...
@@ -1451,7 +1451,7 @@ static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
...
@@ -1451,7 +1451,7 @@ static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
#endif
#endif
#endif
#endif
::
"m"
(
src
),
"m"
(
dst
),
"m"
(
filter
),
"m"
(
filterPos
),
::
"m"
(
src
),
"m"
(
dst
),
"m"
(
filter
),
"m"
(
filterPos
),
"m"
(
mmx
2
FilterCode
)
"m"
(
mmx
ext
FilterCode
)
#if defined(PIC)
#if defined(PIC)
,
"m"
(
ebxsave
)
,
"m"
(
ebxsave
)
#endif
#endif
...
@@ -1474,7 +1474,7 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2,
...
@@ -1474,7 +1474,7 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2,
{
{
int32_t
*
filterPos
=
c
->
hChrFilterPos
;
int32_t
*
filterPos
=
c
->
hChrFilterPos
;
int16_t
*
filter
=
c
->
hChrFilter
;
int16_t
*
filter
=
c
->
hChrFilter
;
void
*
mmx
2FilterCode
=
c
->
chrMmx2
FilterCode
;
void
*
mmx
extFilterCode
=
c
->
chrMmxext
FilterCode
;
int
i
;
int
i
;
#if defined(PIC)
#if defined(PIC)
DECLARE_ALIGNED
(
8
,
uint64_t
,
ebxsave
);
DECLARE_ALIGNED
(
8
,
uint64_t
,
ebxsave
);
...
@@ -1535,7 +1535,7 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2,
...
@@ -1535,7 +1535,7 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2,
#endif
#endif
#endif
#endif
::
"m"
(
src1
),
"m"
(
dst1
),
"m"
(
filter
),
"m"
(
filterPos
),
::
"m"
(
src1
),
"m"
(
dst1
),
"m"
(
filter
),
"m"
(
filterPos
),
"m"
(
mmx
2
FilterCode
),
"m"
(
src2
),
"m"
(
dst2
)
"m"
(
mmx
ext
FilterCode
),
"m"
(
src2
),
"m"
(
dst2
)
#if defined(PIC)
#if defined(PIC)
,
"m"
(
ebxsave
)
,
"m"
(
ebxsave
)
#endif
#endif
...
@@ -1617,8 +1617,7 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
...
@@ -1617,8 +1617,7 @@ static av_cold void RENAME(sws_init_swScale)(SwsContext *c)
if
(
c
->
srcBpc
==
8
&&
c
->
dstBpc
<=
10
)
{
if
(
c
->
srcBpc
==
8
&&
c
->
dstBpc
<=
10
)
{
// Use the new MMX scaler if the MMXEXT one can't be used (it is faster than the x86 ASM one).
// Use the new MMX scaler if the MMXEXT one can't be used (it is faster than the x86 ASM one).
#if COMPILE_TEMPLATE_MMXEXT
#if COMPILE_TEMPLATE_MMXEXT
if
(
c
->
flags
&
SWS_FAST_BILINEAR
&&
c
->
canMMX2BeUsed
)
if
(
c
->
flags
&
SWS_FAST_BILINEAR
&&
c
->
canMMXEXTBeUsed
)
{
{
c
->
hyscale_fast
=
RENAME
(
hyscale_fast
);
c
->
hyscale_fast
=
RENAME
(
hyscale_fast
);
c
->
hcscale_fast
=
RENAME
(
hcscale_fast
);
c
->
hcscale_fast
=
RENAME
(
hcscale_fast
);
}
else
{
}
else
{
...
...
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