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
db4771af
Commit
db4771af
authored
Oct 14, 2018
by
Martin Vignali
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swscale : add YA16 LE/BE output
parent
658bbc00
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
130 additions
and
2 deletions
+130
-2
output.c
libswscale/output.c
+105
-0
utils.c
libswscale/utils.c
+2
-2
filter-pixdesc-ya16be
tests/ref/fate/filter-pixdesc-ya16be
+1
-0
filter-pixdesc-ya16le
tests/ref/fate/filter-pixdesc-ya16le
+1
-0
filter-pixfmts-copy
tests/ref/fate/filter-pixfmts-copy
+2
-0
filter-pixfmts-crop
tests/ref/fate/filter-pixfmts-crop
+2
-0
filter-pixfmts-field
tests/ref/fate/filter-pixfmts-field
+2
-0
filter-pixfmts-fieldorder
tests/ref/fate/filter-pixfmts-fieldorder
+2
-0
filter-pixfmts-hflip
tests/ref/fate/filter-pixfmts-hflip
+2
-0
filter-pixfmts-il
tests/ref/fate/filter-pixfmts-il
+2
-0
filter-pixfmts-null
tests/ref/fate/filter-pixfmts-null
+2
-0
filter-pixfmts-pad
tests/ref/fate/filter-pixfmts-pad
+1
-0
filter-pixfmts-scale
tests/ref/fate/filter-pixfmts-scale
+2
-0
filter-pixfmts-transpose
tests/ref/fate/filter-pixfmts-transpose
+2
-0
filter-pixfmts-vflip
tests/ref/fate/filter-pixfmts-vflip
+2
-0
No files found.
libswscale/output.c
View file @
db4771af
...
...
@@ -900,6 +900,99 @@ YUV2PACKEDWRAPPER(yuv2, 422, uyvy422, AV_PIX_FMT_UYVY422)
AV_WL16(pos, val); \
}
static
av_always_inline
void
yuv2ya16_X_c_template
(
SwsContext
*
c
,
const
int16_t
*
lumFilter
,
const
int32_t
**
lumSrc
,
int
lumFilterSize
,
const
int16_t
*
chrFilter
,
const
int32_t
**
unused_chrUSrc
,
const
int32_t
**
unused_chrVSrc
,
int
unused_chrFilterSize
,
const
int32_t
**
alpSrc
,
uint16_t
*
dest
,
int
dstW
,
int
y
,
enum
AVPixelFormat
target
,
int
unused_hasAlpha
,
int
unused_eightbytes
)
{
int
hasAlpha
=
!!
alpSrc
;
int
i
;
for
(
i
=
0
;
i
<
dstW
;
i
++
)
{
int
j
;
int
Y
=
1
<<
18
;
int64_t
A
=
0xffff
<<
14
;
for
(
j
=
0
;
j
<
lumFilterSize
;
j
++
)
Y
+=
lumSrc
[
j
][
i
]
*
lumFilter
[
j
];
Y
>>=
15
;
Y
=
av_clip_uint16
(
Y
);
if
(
hasAlpha
)
{
for
(
j
=
0
;
j
<
lumFilterSize
;
j
++
)
A
+=
alpSrc
[
j
][
i
]
*
lumFilter
[
j
];
A
>>=
15
;
A
=
av_clip_uint16
(
A
);
}
output_pixel
(
&
dest
[
2
*
i
],
Y
);
output_pixel
(
&
dest
[
2
*
i
+
1
],
hasAlpha
?
A
:
65535
);
}
}
static
av_always_inline
void
yuv2ya16_2_c_template
(
SwsContext
*
c
,
const
int32_t
*
buf
[
2
],
const
int32_t
*
unused_ubuf
[
2
],
const
int32_t
*
unused_vbuf
[
2
],
const
int32_t
*
abuf
[
2
],
uint16_t
*
dest
,
int
dstW
,
int
yalpha
,
int
unused_uvalpha
,
int
y
,
enum
AVPixelFormat
target
,
int
unused_hasAlpha
,
int
unused_eightbytes
)
{
int
hasAlpha
=
abuf
&&
abuf
[
0
]
&&
abuf
[
1
];
const
int32_t
*
buf0
=
buf
[
0
],
*
buf1
=
buf
[
1
],
*
abuf0
=
hasAlpha
?
abuf
[
0
]
:
NULL
,
*
abuf1
=
hasAlpha
?
abuf
[
1
]
:
NULL
;
int
yalpha1
=
4096
-
yalpha
;
int
i
;
av_assert2
(
yalpha
<=
4096U
);
for
(
i
=
0
;
i
<
dstW
;
i
++
)
{
int
Y
=
(
buf0
[
i
]
*
yalpha1
+
buf1
[
i
]
*
yalpha
)
>>
15
;
int
A
;
Y
=
av_clip_uint16
(
Y
);
if
(
hasAlpha
)
{
A
=
(
abuf0
[
i
]
*
yalpha1
+
abuf1
[
i
]
*
yalpha
)
>>
15
;
A
=
av_clip_uint16
(
A
);
}
output_pixel
(
&
dest
[
2
*
i
],
Y
);
output_pixel
(
&
dest
[
2
*
i
+
1
],
hasAlpha
?
A
:
65535
);
}
}
static
av_always_inline
void
yuv2ya16_1_c_template
(
SwsContext
*
c
,
const
int32_t
*
buf0
,
const
int32_t
*
unused_ubuf
[
2
],
const
int32_t
*
unused_vbuf
[
2
],
const
int32_t
*
abuf0
,
uint16_t
*
dest
,
int
dstW
,
int
unused_uvalpha
,
int
y
,
enum
AVPixelFormat
target
,
int
unused_hasAlpha
,
int
unused_eightbytes
)
{
int
hasAlpha
=
!!
abuf0
;
int
i
;
for
(
i
=
0
;
i
<
dstW
;
i
++
)
{
int
Y
=
buf0
[
i
]
>>
3
;
/* 19 - 16 */
int
A
;
Y
=
av_clip_uint16
(
Y
);
if
(
hasAlpha
)
{
A
=
abuf0
[
i
]
>>
3
;
if
(
A
&
0x100
)
A
=
av_clip_uint16
(
A
);
}
output_pixel
(
&
dest
[
2
*
i
],
Y
);
output_pixel
(
&
dest
[
2
*
i
+
1
],
hasAlpha
?
A
:
65535
);
}
}
static
av_always_inline
void
yuv2rgba64_X_c_template
(
SwsContext
*
c
,
const
int16_t
*
lumFilter
,
const
int32_t
**
lumSrc
,
int
lumFilterSize
,
...
...
@@ -1405,6 +1498,8 @@ YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64be, AV_PIX_FMT_BGRA64BE, 1, 1)
YUV2PACKED16WRAPPER
(
yuv2
,
rgba64
,
bgra64le
,
AV_PIX_FMT_BGRA64LE
,
1
,
1
)
YUV2PACKED16WRAPPER
(
yuv2
,
rgba64
,
bgrx64be
,
AV_PIX_FMT_BGRA64BE
,
0
,
1
)
YUV2PACKED16WRAPPER
(
yuv2
,
rgba64
,
bgrx64le
,
AV_PIX_FMT_BGRA64LE
,
0
,
1
)
YUV2PACKED16WRAPPER
(
yuv2
,
ya16
,
ya16be
,
AV_PIX_FMT_YA16BE
,
1
,
0
)
YUV2PACKED16WRAPPER
(
yuv2
,
ya16
,
ya16le
,
AV_PIX_FMT_YA16LE
,
1
,
0
)
YUV2PACKED16WRAPPER
(
yuv2
,
rgba64_full
,
rgb48be_full
,
AV_PIX_FMT_RGB48BE
,
0
,
0
)
YUV2PACKED16WRAPPER
(
yuv2
,
rgba64_full
,
rgb48le_full
,
AV_PIX_FMT_RGB48LE
,
0
,
0
)
...
...
@@ -2835,6 +2930,16 @@ av_cold void ff_sws_init_output_funcs(SwsContext *c,
*
yuv2packed2
=
yuv2ya8_2_c
;
*
yuv2packedX
=
yuv2ya8_X_c
;
break
;
case
AV_PIX_FMT_YA16LE
:
*
yuv2packed1
=
yuv2ya16le_1_c
;
*
yuv2packed2
=
yuv2ya16le_2_c
;
*
yuv2packedX
=
yuv2ya16le_X_c
;
break
;
case
AV_PIX_FMT_YA16BE
:
*
yuv2packed1
=
yuv2ya16be_1_c
;
*
yuv2packed2
=
yuv2ya16be_2_c
;
*
yuv2packedX
=
yuv2ya16be_X_c
;
break
;
case
AV_PIX_FMT_AYUV64LE
:
*
yuv2packedX
=
yuv2ayuv64le_X_c
;
break
;
...
...
libswscale/utils.c
View file @
db4771af
...
...
@@ -191,8 +191,8 @@ static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
[
AV_PIX_FMT_BGR444LE
]
=
{
1
,
1
},
[
AV_PIX_FMT_BGR444BE
]
=
{
1
,
1
},
[
AV_PIX_FMT_YA8
]
=
{
1
,
1
},
[
AV_PIX_FMT_YA16BE
]
=
{
1
,
0
},
[
AV_PIX_FMT_YA16LE
]
=
{
1
,
0
},
[
AV_PIX_FMT_YA16BE
]
=
{
1
,
1
},
[
AV_PIX_FMT_YA16LE
]
=
{
1
,
1
},
[
AV_PIX_FMT_BGR48BE
]
=
{
1
,
1
},
[
AV_PIX_FMT_BGR48LE
]
=
{
1
,
1
},
[
AV_PIX_FMT_BGRA64BE
]
=
{
1
,
1
,
1
},
...
...
tests/ref/fate/filter-pixdesc-ya16be
0 → 100644
View file @
db4771af
pixdesc-ya16be c5bf539478020302a30f36c5059b7695
tests/ref/fate/filter-pixdesc-ya16le
0 → 100644
View file @
db4771af
pixdesc-ya16le d238b5905b3ab79f7f00d5ea03ee4b87
tests/ref/fate/filter-pixfmts-copy
View file @
db4771af
...
...
@@ -76,6 +76,8 @@ rgba64le b91e1d77f799eb92241a2d2d28437b15
uyvy422 3bcf3c80047592f2211fae3260b1b65d
xyz12be a1ef56bf746d71f59669c28e48fc8450
xyz12le 831ff03c1ba4ef19374686f16a064d8c
ya16be 2f2c27f1854ac00c73d13861dcab2705
ya16le 2c1fbd127c9f0435adc0e9b2ea3f486b
ya8 dbb99fbcdc204aaa1a7397ff561f1a67
yuv410p 5d4d992a7728431aa4e0700f87fb7fd8
yuv411p 7e1300e89f5bc07939e2c4a6acbdf267
...
...
tests/ref/fate/filter-pixfmts-crop
View file @
db4771af
...
...
@@ -73,6 +73,8 @@ rgba64be 89910046972ab3c68e2a348302cc8ca9
rgba64le fea8ebfc869b52adf353778f29eac7a7
xyz12be cb4571f9aaa7b59f999ef327276104b7
xyz12le cd6aae8d26b18bdb4b9d068586276d91
ya16be 029a3b7c523de988e3161484d41ea15c
ya16le 32929a08d11982aec66ea1e665cfba3a
ya8 51a8dd297e35d40b06d3ebe8f4717895
yuv410p 3bb6c7b64f2c46bc5e8b77198ce4ea58
yuv411p 693e4afe96998e6dd91734037d75d887
...
...
tests/ref/fate/filter-pixfmts-field
View file @
db4771af
...
...
@@ -76,6 +76,8 @@ rgba64le dfdba4de4a7cac9abf08852666c341d3
uyvy422 1c49e44ab3f060e85fc4a3a9464f045e
xyz12be d2fa69ec91d3ed862f2dac3f8e7a3437
xyz12le 02bccd5e0b6824779a1f848b0ea3e3b5
ya16be c0ce74d2a3da641ea634a3898dda7455
ya16le 9b098d425e5bc27fa8a8ac8b176d592d
ya8 28cea4f98ed452bd3da9c752e5e3399c
yuv410p a85920d6bd26f51306e2ecbe71d1c554
yuv411p 9106e283d5dbcfba01c611886d58871a
...
...
tests/ref/fate/filter-pixfmts-fieldorder
View file @
db4771af
...
...
@@ -67,6 +67,8 @@ rgba64le b34e6e30621ae579519a2d91a96a0acf
uyvy422 75de70e31c435dde878002d3f22b238a
xyz12be 15f5cda71de5fef9cec5e75e3833b6bc
xyz12le 7be6c8781f38c21a6b8f602f62ca31e6
ya16be 205d6a21890c1f057c9c20fbbba590e2
ya16le f35616fdb5d3fbf767a4f11118cf8ad1
ya8 055ac5ab5ff8533dd319edc17a398af1
yuv411p e4a040e0e786c4dae07d9d3f90a54905
yuv422p 16ce67249c6ce7ef57a433646ad6dfc1
...
...
tests/ref/fate/filter-pixfmts-hflip
View file @
db4771af
...
...
@@ -73,6 +73,8 @@ rgba64be c910444019f4cfbf4d995227af55da8d
rgba64le 0c810d8b3a6bca10321788e1cb145340
xyz12be 25f90259ff8a226befdaec3dfe82996e
xyz12le 926c0791d59aaff61b2778e8ada3316d
ya16be 632b2e6e8e20c3edcfe99356fa7fca9e
ya16le e2ff5a2fb969c70dcc862937f9224873
ya8 4ad5920716de3d2fbbc49f95adb60345
yuv410p c49fd0c55c41185b1580aac77211992b
yuv411p c416371077dce13d31bf1dc706111ae7
...
...
tests/ref/fate/filter-pixfmts-il
View file @
db4771af
...
...
@@ -75,6 +75,8 @@ rgba64le a8a2daae04374a27219bc1c890204007
uyvy422 d6ee3ca43356d08c392382b24b22cda5
xyz12be 7c7d54c55f136cbbc50b18029f3be0b3
xyz12le 090ba6b1170baf2b1358b43b971d33b0
ya16be bf2cf1e89c9fdb5bc10425db567ba2da
ya16le 4e9c9097fae615b8a5f4c3b237f752f0
ya8 a38d6e288f582f1a04310232ed764afc
yuv410p dea1ab8843465adf5b8240b2d98fd85b
yuv411p 8bf73777a5ff43c126be274245aceff1
...
...
tests/ref/fate/filter-pixfmts-null
View file @
db4771af
...
...
@@ -76,6 +76,8 @@ rgba64le b91e1d77f799eb92241a2d2d28437b15
uyvy422 3bcf3c80047592f2211fae3260b1b65d
xyz12be a1ef56bf746d71f59669c28e48fc8450
xyz12le 831ff03c1ba4ef19374686f16a064d8c
ya16be 2f2c27f1854ac00c73d13861dcab2705
ya16le 2c1fbd127c9f0435adc0e9b2ea3f486b
ya8 dbb99fbcdc204aaa1a7397ff561f1a67
yuv410p 5d4d992a7728431aa4e0700f87fb7fd8
yuv411p 7e1300e89f5bc07939e2c4a6acbdf267
...
...
tests/ref/fate/filter-pixfmts-pad
View file @
db4771af
...
...
@@ -27,6 +27,7 @@ rgb0 78d500c8361ab6423a4826a00268c908
rgb24 17f9e2e0c609009acaf2175c42d4a2a5
rgba b157c90191463d34fb3ce77b36c96386
xyz12le 85abf80b77a9236a76ba0b00fcbdea2d
ya16le 17cbe58356d56ff0f0f00280a31e6ca6
ya8 5fc0f471207ddf7aa01b07027d56b672
yuv410p cb871dcc1e84a7ef1d21f9237b88cf6e
yuv411p aec2c1740de9a62db0d41f4dda9121b0
...
...
tests/ref/fate/filter-pixfmts-scale
View file @
db4771af
...
...
@@ -76,6 +76,8 @@ rgba64le 783d2779adfafe3548bdb671ec0de69e
uyvy422 aeb4ba4f9f003ae21f6d18089198244f
xyz12be c7ba8345998c0141ddc079cdd29b1a40
xyz12le 95f5d3a0de834cc495c9032a14987cde
ya16be 372195dc947eee1bcb6f733a3544272e
ya16le 3923551514cfa588cf528e6f48e8cb9a
ya8 0a9db5bb4b009de9197eede5e9d19e16
yuv410p e8f49b5fb9335b62c074f7f8bb0234fc
yuv411p 5af32557c93beb482e26e7af693104c6
...
...
tests/ref/fate/filter-pixfmts-transpose
View file @
db4771af
...
...
@@ -72,6 +72,8 @@ rgba64be a60041217f4c0cd796d19d3940a12a41
rgba64le ad47197774858858ae7b0c177dffa459
xyz12be 68e5cba640f6e4ef72dff950e88b5342
xyz12le 8b6b6a6db4d7561e80db88ccaecce7a9
ya16be 41b7ad48693e3ce8b4d3220016ef6b15
ya16le 8ea70315667011a6ed50b6750f42b142
ya8 d4b7a62f80681fa44c977ff3a64f4ce4
yuv410p 4c0143429edd30aa01493447c90132ea
yuv420p 2fa5b2201c75034206cc20e2c6134aed
...
...
tests/ref/fate/filter-pixfmts-vflip
View file @
db4771af
...
...
@@ -76,6 +76,8 @@ rgba64le 48f45b10503b7dd140329c3dd0d54c98
uyvy422 3a237e8376264e0cfa78f8a3fdadec8a
xyz12be 810644e008deb231850d779aaa27cc7e
xyz12le 829701db461b43533cf9241e0743bc61
ya16be 01fa2780505ce1bd187ae7f9dcc5fcc3
ya16le 492f528782acf22769b0b633187be212
ya8 4299c6ca3b470a7d8a420e26eb485b1d
yuv410p c7adfe96c8e043a6cb9290c39bf8063c
yuv411p 3fce29db403a25f81be39e01aaf6ff3a
...
...
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