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
df91d091
Commit
df91d091
authored
Jun 06, 2011
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swscale: integrate yuv2nv12X_C into yuv2yuvX() function pointers.
parent
0fb51931
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
21 deletions
+12
-21
swscale.c
libswscale/swscale.c
+12
-15
swscale_internal.h
libswscale/swscale_internal.h
+0
-6
No files found.
libswscale/swscale.c
View file @
df91d091
...
...
@@ -362,10 +362,13 @@ static inline void yuv2yuvX_c(SwsContext *c, const int16_t *lumFilter,
static
inline
void
yuv2nv12X_c
(
SwsContext
*
c
,
const
int16_t
*
lumFilter
,
const
int16_t
**
lumSrc
,
int
lumFilterSize
,
const
int16_t
*
chrFilter
,
const
int16_t
**
chrUSrc
,
const
int16_t
**
chrVSrc
,
int
chrFilterSize
,
uint8_t
*
dest
,
uint8_t
*
uDest
,
int
dstW
,
int
chrDstW
,
enum
PixelFormat
dstFormat
)
const
int16_t
**
chrVSrc
,
int
chrFilterSize
,
const
int16_t
**
alpSrc
,
uint8_t
*
dest
,
uint8_t
*
uDest
,
uint8_t
*
vDest
,
uint8_t
*
aDest
,
int
dstW
,
int
chrDstW
)
{
enum
PixelFormat
dstFormat
=
c
->
dstFormat
;
//FIXME Optimize (just quickly written not optimized..)
int
i
;
for
(
i
=
0
;
i
<
dstW
;
i
++
)
{
...
...
@@ -1743,14 +1746,7 @@ static int swScale(SwsContext *c, const uint8_t* src[],
const
int16_t
**
chrUSrcPtr
=
(
const
int16_t
**
)
chrUPixBuf
+
chrBufIndex
+
firstChrSrcY
-
lastInChrBuf
+
vChrBufSize
;
const
int16_t
**
chrVSrcPtr
=
(
const
int16_t
**
)
chrVPixBuf
+
chrBufIndex
+
firstChrSrcY
-
lastInChrBuf
+
vChrBufSize
;
const
int16_t
**
alpSrcPtr
=
(
CONFIG_SWSCALE_ALPHA
&&
alpPixBuf
)
?
(
const
int16_t
**
)
alpPixBuf
+
lumBufIndex
+
firstLumSrcY
-
lastInLumBuf
+
vLumBufSize
:
NULL
;
if
(
dstFormat
==
PIX_FMT_NV12
||
dstFormat
==
PIX_FMT_NV21
)
{
const
int
chrSkipMask
=
(
1
<<
c
->
chrDstVSubSample
)
-
1
;
if
(
dstY
&
chrSkipMask
)
uDest
=
NULL
;
//FIXME split functions in lumi / chromi
c
->
yuv2nv12X
(
c
,
vLumFilter
+
dstY
*
vLumFilterSize
,
lumSrcPtr
,
vLumFilterSize
,
vChrFilter
+
chrDstY
*
vChrFilterSize
,
chrUSrcPtr
,
chrVSrcPtr
,
vChrFilterSize
,
dest
,
uDest
,
dstW
,
chrDstW
,
dstFormat
);
}
else
if
(
isPlanarYUV
(
dstFormat
)
||
dstFormat
==
PIX_FMT_GRAY8
)
{
//YV12 like
if
(
isPlanarYUV
(
dstFormat
)
||
dstFormat
==
PIX_FMT_GRAY8
)
{
//YV12 like
const
int
chrSkipMask
=
(
1
<<
c
->
chrDstVSubSample
)
-
1
;
if
((
dstY
&
chrSkipMask
)
||
isGray
(
dstFormat
))
uDest
=
vDest
=
NULL
;
//FIXME split functions in lumi / chromi
if
(
c
->
yuv2yuv1
&&
vLumFilterSize
==
1
&&
vChrFilterSize
==
1
)
{
// unscaled YV12
...
...
@@ -1805,8 +1801,8 @@ static int swScale(SwsContext *c, const uint8_t* src[],
yuv2nv12X_c
(
c
,
vLumFilter
+
dstY
*
vLumFilterSize
,
lumSrcPtr
,
vLumFilterSize
,
vChrFilter
+
chrDstY
*
vChrFilterSize
,
chrUSrcPtr
,
chrVSrcPtr
,
vChrFilterSize
,
dest
,
uDest
,
dstW
,
chrDstW
,
dstFormat
);
chrUSrcPtr
,
chrVSrcPtr
,
vChrFilterSize
,
NULL
,
dest
,
uDest
,
NULL
,
NULL
,
dstW
,
chrDstW
);
}
else
if
(
isPlanarYUV
(
dstFormat
)
||
dstFormat
==
PIX_FMT_GRAY8
)
{
//YV12
const
int
chrSkipMask
=
(
1
<<
c
->
chrDstVSubSample
)
-
1
;
if
((
dstY
&
chrSkipMask
)
||
isGray
(
dstFormat
))
uDest
=
vDest
=
NULL
;
//FIXME split functions in lumi / chromi
...
...
@@ -1865,8 +1861,9 @@ static void sws_init_swScale_c(SwsContext *c)
enum
PixelFormat
srcFormat
=
c
->
srcFormat
,
dstFormat
=
c
->
dstFormat
;
c
->
yuv2nv12X
=
yuv2nv12X_c
;
if
(
is16BPS
(
dstFormat
))
{
if
(
dstFormat
==
PIX_FMT_NV12
||
dstFormat
==
PIX_FMT_NV21
)
{
c
->
yuv2yuvX
=
yuv2nv12X_c
;
}
else
if
(
is16BPS
(
dstFormat
))
{
c
->
yuv2yuvX
=
isBE
(
dstFormat
)
?
yuv2yuvX16BE_c
:
yuv2yuvX16LE_c
;
}
else
if
(
is9_OR_10BPS
(
dstFormat
))
{
if
(
dstFormat
==
PIX_FMT_YUV420P9BE
||
dstFormat
==
PIX_FMT_YUV420P9LE
)
{
...
...
libswscale/swscale_internal.h
View file @
df91d091
...
...
@@ -250,12 +250,6 @@ typedef struct SwsContext {
#endif
/* function pointers for swScale() */
void
(
*
yuv2nv12X
)(
struct
SwsContext
*
c
,
const
int16_t
*
lumFilter
,
const
int16_t
**
lumSrc
,
int
lumFilterSize
,
const
int16_t
*
chrFilter
,
const
int16_t
**
chrUSrc
,
const
int16_t
**
chrVSrc
,
int
chrFilterSize
,
uint8_t
*
dest
,
uint8_t
*
uDest
,
int
dstW
,
int
chrDstW
,
int
dstFormat
);
void
(
*
yuv2yuv1
)(
struct
SwsContext
*
c
,
const
int16_t
*
lumSrc
,
const
int16_t
*
chrUSrc
,
const
int16_t
*
chrVSrc
,
const
int16_t
*
alpSrc
,
...
...
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