Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
453004fd
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
453004fd
编写于
9月 28, 2020
作者:
M
Mark Reid
提交者:
Michael Niedermayer
10月 02, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
libswcale/input: use more accurate rgbf32 yuv conversions
Signed-off-by:
N
Michael Niedermayer
<
michael@niedermayer.cc
>
上级
6bf57c6a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
70 addition
and
72 deletion
+70
-72
libswscale/input.c
libswscale/input.c
+5
-7
tests/ref/fate/filter-pixfmts-scale
tests/ref/fate/filter-pixfmts-scale
+4
-4
tests/ref/fate/sws-floatimg-cmp
tests/ref/fate/sws-floatimg-cmp
+61
-61
未找到文件。
libswscale/input.c
浏览文件 @
453004fd
...
...
@@ -984,15 +984,14 @@ static av_always_inline void planar_rgbf32_to_uv(uint8_t *_dstU, uint8_t *_dstV,
uint16_t
*
dstV
=
(
uint16_t
*
)
_dstV
;
int32_t
ru
=
rgb2yuv
[
RU_IDX
],
gu
=
rgb2yuv
[
GU_IDX
],
bu
=
rgb2yuv
[
BU_IDX
];
int32_t
rv
=
rgb2yuv
[
RV_IDX
],
gv
=
rgb2yuv
[
GV_IDX
],
bv
=
rgb2yuv
[
BV_IDX
];
int
bpc
=
16
;
int
shift
=
14
;
for
(
i
=
0
;
i
<
width
;
i
++
)
{
int
g
=
av_clip_uint16
(
lrintf
(
65535
.
0
f
*
rdpx
(
src
[
0
]
+
i
)));
int
b
=
av_clip_uint16
(
lrintf
(
65535
.
0
f
*
rdpx
(
src
[
1
]
+
i
)));
int
r
=
av_clip_uint16
(
lrintf
(
65535
.
0
f
*
rdpx
(
src
[
2
]
+
i
)));
dstU
[
i
]
=
(
ru
*
r
+
gu
*
g
+
bu
*
b
+
(
257
<<
(
RGB2YUV_SHIFT
+
bpc
-
9
)))
>>
(
RGB2YUV_SHIFT
+
shift
-
14
)
;
dstV
[
i
]
=
(
rv
*
r
+
gv
*
g
+
bv
*
b
+
(
257
<<
(
RGB2YUV_SHIFT
+
bpc
-
9
)))
>>
(
RGB2YUV_SHIFT
+
shift
-
14
)
;
dstU
[
i
]
=
(
ru
*
r
+
gu
*
g
+
bu
*
b
+
(
0x10001
<<
(
RGB2YUV_SHIFT
-
1
)))
>>
RGB2YUV_SHIFT
;
dstV
[
i
]
=
(
rv
*
r
+
gv
*
g
+
bv
*
b
+
(
0x10001
<<
(
RGB2YUV_SHIFT
-
1
)))
>>
RGB2YUV_SHIFT
;
}
}
...
...
@@ -1003,14 +1002,13 @@ static av_always_inline void planar_rgbf32_to_y(uint8_t *_dst, const uint8_t *_s
uint16_t
*
dst
=
(
uint16_t
*
)
_dst
;
int32_t
ry
=
rgb2yuv
[
RY_IDX
],
gy
=
rgb2yuv
[
GY_IDX
],
by
=
rgb2yuv
[
BY_IDX
];
int
bpc
=
16
;
int
shift
=
14
;
for
(
i
=
0
;
i
<
width
;
i
++
)
{
int
g
=
av_clip_uint16
(
lrintf
(
65535
.
0
f
*
rdpx
(
src
[
0
]
+
i
)));
int
b
=
av_clip_uint16
(
lrintf
(
65535
.
0
f
*
rdpx
(
src
[
1
]
+
i
)));
int
r
=
av_clip_uint16
(
lrintf
(
65535
.
0
f
*
rdpx
(
src
[
2
]
+
i
)));
dst
[
i
]
=
(
(
ry
*
r
+
gy
*
g
+
by
*
b
+
(
33
<<
(
RGB2YUV_SHIFT
+
bpc
-
9
)))
>>
(
RGB2YUV_SHIFT
+
shift
-
14
))
;
dst
[
i
]
=
(
ry
*
r
+
gy
*
g
+
by
*
b
+
(
0x2001
<<
(
RGB2YUV_SHIFT
-
1
)))
>>
RGB2YUV_SHIFT
;
}
}
...
...
tests/ref/fate/filter-pixfmts-scale
浏览文件 @
453004fd
...
...
@@ -25,8 +25,8 @@ gbrap12be 1d9b57766ba9c2192403f43967cb9af0
gbrap12le bb1ba1c157717db3dd612a76d38a018e
gbrap16be c72b935a6e57a8e1c37bff08c2db55b1
gbrap16le 13eb0e62b1ac9c1c86c81521eaefab5f
gbrapf32be
42e53d9edccbd9e09c4cd78780ba92f3
gbrapf32le
eebf3973ef94c841f0a1ceb1ed61621d
gbrapf32be
366b804d5697276e8c481c4bdf05a00b
gbrapf32le
558a268e6d6b907449d1056afab78f29
gbrp dc3387f925f972c61aae7eb23cdc19f0
gbrp10be 0277d4c3a8498d75e2783fb81379e481
gbrp10le f3d70f8ab845c3c9b8f7452e4a6e285a
...
...
@@ -38,8 +38,8 @@ gbrp16be 5fc826cfabebfc1442cb793c4b6303e2
gbrp16le 1b3e0b63d47a3e1b6b20931316883bf2
gbrp9be d9c88968001e1452ff31fbc8d16b18a0
gbrp9le 2ccfed0816bf6bd4bb3a5b7591d9603a
gbrpf32be
4614d32e4417f80e0adcc1bdcf6cde42
gbrpf32le
1366ee77e5559672260bbe51040e28b2
gbrpf32be
f3d0cefdf11c861001880772d817aac8
gbrpf32le
290468205c1c18a0667edfca45061aee
gray 221201cc7cfc4964eacd8b3e426fd276
gray10be 9452756d0b37f4f5c7cae7635e22d747
gray10le 37fd2e1ec6b66410212d39a342e864df
...
...
tests/ref/fate/sws-floatimg-cmp
浏览文件 @
453004fd
gbrpf32le -> yuv444p16le -> gbrpf32le
avg diff: 0.00
3852
avg diff: 0.00
0125
min diff: 0.000000
max diff: 0.00
6638
max diff: 0.00
0501
gbrpf32le -> yuv444p -> gbrpf32le
avg diff: 0.00
4316
avg diff: 0.00
1804
min diff: 0.000000
max diff: 0.0
12704
max diff: 0.0
06399
gbrpf32le -> yuv444p9le -> gbrpf32le
avg diff: 0.00
4053
min diff: 0.00000
1
max diff: 0.00
9402
avg diff: 0.00
0906
min diff: 0.00000
0
max diff: 0.00
3313
gbrpf32le -> yuv444p10le -> gbrpf32le
avg diff: 0.00
3960
avg diff: 0.00
0467
min diff: 0.000000
max diff: 0.00
8123
max diff: 0.00
1912
gbrpf32le -> yuv444p12le -> gbrpf32le
avg diff: 0.00
3878
avg diff: 0.00
0166
min diff: 0.000000
max diff: 0.00
7011
max diff: 0.00
0802
gbrpf32le -> yuv444p14le -> gbrpf32le
avg diff: 0.00
3868
avg diff: 0.00
0127
min diff: 0.000000
max diff: 0.00
6729
max diff: 0.00
0524
gbrpf32le -> rgb24 -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> bgr24 -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> rgba -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> bgra -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> argb -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> abgr -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> 0rgb -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> 0bgr -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> rgb0 -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> bgr0 -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> rgb48le -> gbrpf32le
avg diff: 0.00
3851
avg diff: 0.00
0249
min diff: 0.000000
max diff: 0.00
7076
max diff: 0.00
0990
gbrpf32le -> bgr48le -> gbrpf32le
avg diff: 0.00
3851
avg diff: 0.00
0249
min diff: 0.000000
max diff: 0.00
7076
max diff: 0.00
0990
gbrpf32le -> rgba64le -> gbrpf32le
avg diff: 0.00
3851
avg diff: 0.00
0249
min diff: 0.000000
max diff: 0.00
7076
max diff: 0.00
0990
gbrpf32le -> bgra64le -> gbrpf32le
avg diff: 0.00
3851
avg diff: 0.00
0249
min diff: 0.000000
max diff: 0.00
7076
max diff: 0.00
0990
gbrpf32le -> gbrp -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> gbrap -> gbrpf32le
avg diff: 0.00
4122
avg diff: 0.00
1011
min diff: 0.000000
max diff: 0.00
8975
max diff: 0.00
4229
gbrpf32le -> gbrp9le -> gbrpf32le
avg diff: 0.00
773
7
avg diff: 0.00
391
7
min diff: 0.000000
max diff: 0.0
14009
max diff: 0.0
07870
gbrpf32le -> gbrp10le -> gbrpf32le
avg diff: 0.00
7662
avg diff: 0.00
3841
min diff: 0.000000
max diff: 0.0
13605
max diff: 0.0
07456
gbrpf32le -> gbrap10le -> gbrpf32le
avg diff: 0.00
7662
avg diff: 0.00
3841
min diff: 0.000000
max diff: 0.0
13605
max diff: 0.0
07456
gbrpf32le -> gbrp12le -> gbrpf32le
avg diff: 0.00
7622
avg diff: 0.00
3796
min diff: 0.000000
max diff: 0.0
13335
max diff: 0.0
07140
gbrpf32le -> gbrap12le -> gbrpf32le
avg diff: 0.00
7622
avg diff: 0.00
3796
min diff: 0.000000
max diff: 0.0
13335
max diff: 0.0
07140
gbrpf32le -> gbrp14le -> gbrpf32le
avg diff: 0.00
7620
avg diff: 0.00
3792
min diff: 0.000000
max diff: 0.0
13232
max diff: 0.0
07034
gbrpf32le -> gbrp16le -> gbrpf32le
avg diff: 0.00
7680
avg diff: 0.00
3853
min diff: 0.000000
max diff: 0.0
13275
max diff: 0.0
07098
gbrpf32le -> gbrap16le -> gbrpf32le
avg diff: 0.00
7680
avg diff: 0.00
3853
min diff: 0.000000
max diff: 0.0
13275
max diff: 0.0
07098
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录