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
99f8d321
Commit
99f8d321
authored
Oct 13, 2019
by
Paul B Mahol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avfilter/vf_convolution: fix undefined behaviour
Fixes #8263
parent
36508355
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
20 deletions
+20
-20
vf_convolution.c
libavfilter/vf_convolution.c
+20
-20
No files found.
libavfilter/vf_convolution.c
View file @
99f8d321
...
...
@@ -115,10 +115,10 @@ static void filter16_prewitt(uint8_t *dstp, int width,
int
x
;
for
(
x
=
0
;
x
<
width
;
x
++
)
{
in
t
suma
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
1
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
7
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
in
t
sumb
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
3
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
5
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
floa
t
suma
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
1
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
7
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
floa
t
sumb
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
3
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
5
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
dst
[
x
]
=
av_clip
(
sqrtf
(
suma
*
suma
+
sumb
*
sumb
)
*
scale
+
delta
,
0
,
peak
);
}
...
...
@@ -133,8 +133,8 @@ static void filter16_roberts(uint8_t *dstp, int width,
int
x
;
for
(
x
=
0
;
x
<
width
;
x
++
)
{
in
t
suma
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
1
][
2
*
x
])
*
-
1
;
in
t
sumb
=
AV_RN16A
(
&
c
[
4
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
3
][
2
*
x
])
*
-
1
;
floa
t
suma
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
1
][
2
*
x
])
*
-
1
;
floa
t
sumb
=
AV_RN16A
(
&
c
[
4
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
3
][
2
*
x
])
*
-
1
;
dst
[
x
]
=
av_clip
(
sqrtf
(
suma
*
suma
+
sumb
*
sumb
)
*
scale
+
delta
,
0
,
peak
);
}
...
...
@@ -149,10 +149,10 @@ static void filter16_sobel(uint8_t *dstp, int width,
int
x
;
for
(
x
=
0
;
x
<
width
;
x
++
)
{
in
t
suma
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
1
][
2
*
x
])
*
-
2
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
7
][
2
*
x
])
*
2
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
in
t
sumb
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
3
][
2
*
x
])
*
-
2
+
AV_RN16A
(
&
c
[
5
][
2
*
x
])
*
2
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
floa
t
suma
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
1
][
2
*
x
])
*
-
2
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
7
][
2
*
x
])
*
2
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
floa
t
sumb
=
AV_RN16A
(
&
c
[
0
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
2
][
2
*
x
])
*
1
+
AV_RN16A
(
&
c
[
3
][
2
*
x
])
*
-
2
+
AV_RN16A
(
&
c
[
5
][
2
*
x
])
*
2
+
AV_RN16A
(
&
c
[
6
][
2
*
x
])
*
-
1
+
AV_RN16A
(
&
c
[
8
][
2
*
x
])
*
1
;
dst
[
x
]
=
av_clip
(
sqrtf
(
suma
*
suma
+
sumb
*
sumb
)
*
scale
+
delta
,
0
,
peak
);
}
...
...
@@ -169,10 +169,10 @@ static void filter_prewitt(uint8_t *dst, int width,
int
x
;
for
(
x
=
0
;
x
<
width
;
x
++
)
{
in
t
suma
=
c0
[
x
]
*
-
1
+
c1
[
x
]
*
-
1
+
c2
[
x
]
*
-
1
+
c6
[
x
]
*
1
+
c7
[
x
]
*
1
+
c8
[
x
]
*
1
;
in
t
sumb
=
c0
[
x
]
*
-
1
+
c2
[
x
]
*
1
+
c3
[
x
]
*
-
1
+
c5
[
x
]
*
1
+
c6
[
x
]
*
-
1
+
c8
[
x
]
*
1
;
floa
t
suma
=
c0
[
x
]
*
-
1
+
c1
[
x
]
*
-
1
+
c2
[
x
]
*
-
1
+
c6
[
x
]
*
1
+
c7
[
x
]
*
1
+
c8
[
x
]
*
1
;
floa
t
sumb
=
c0
[
x
]
*
-
1
+
c2
[
x
]
*
1
+
c3
[
x
]
*
-
1
+
c5
[
x
]
*
1
+
c6
[
x
]
*
-
1
+
c8
[
x
]
*
1
;
dst
[
x
]
=
av_clip_uint8
(
sqrtf
(
suma
*
suma
+
sumb
*
sumb
)
*
scale
+
delta
);
}
...
...
@@ -186,8 +186,8 @@ static void filter_roberts(uint8_t *dst, int width,
int
x
;
for
(
x
=
0
;
x
<
width
;
x
++
)
{
in
t
suma
=
c
[
0
][
x
]
*
1
+
c
[
1
][
x
]
*
-
1
;
in
t
sumb
=
c
[
4
][
x
]
*
1
+
c
[
3
][
x
]
*
-
1
;
floa
t
suma
=
c
[
0
][
x
]
*
1
+
c
[
1
][
x
]
*
-
1
;
floa
t
sumb
=
c
[
4
][
x
]
*
1
+
c
[
3
][
x
]
*
-
1
;
dst
[
x
]
=
av_clip_uint8
(
sqrtf
(
suma
*
suma
+
sumb
*
sumb
)
*
scale
+
delta
);
}
...
...
@@ -204,10 +204,10 @@ static void filter_sobel(uint8_t *dst, int width,
int
x
;
for
(
x
=
0
;
x
<
width
;
x
++
)
{
in
t
suma
=
c0
[
x
]
*
-
1
+
c1
[
x
]
*
-
2
+
c2
[
x
]
*
-
1
+
c6
[
x
]
*
1
+
c7
[
x
]
*
2
+
c8
[
x
]
*
1
;
in
t
sumb
=
c0
[
x
]
*
-
1
+
c2
[
x
]
*
1
+
c3
[
x
]
*
-
2
+
c5
[
x
]
*
2
+
c6
[
x
]
*
-
1
+
c8
[
x
]
*
1
;
floa
t
suma
=
c0
[
x
]
*
-
1
+
c1
[
x
]
*
-
2
+
c2
[
x
]
*
-
1
+
c6
[
x
]
*
1
+
c7
[
x
]
*
2
+
c8
[
x
]
*
1
;
floa
t
sumb
=
c0
[
x
]
*
-
1
+
c2
[
x
]
*
1
+
c3
[
x
]
*
-
2
+
c5
[
x
]
*
2
+
c6
[
x
]
*
-
1
+
c8
[
x
]
*
1
;
dst
[
x
]
=
av_clip_uint8
(
sqrtf
(
suma
*
suma
+
sumb
*
sumb
)
*
scale
+
delta
);
}
...
...
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