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
fe7fbf3a
Commit
fe7fbf3a
authored
Sep 19, 2019
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec/jpeglsdec: Return error codes from ls_decode_line()
Signed-off-by:
Michael Niedermayer
<
michael@niedermayer.cc
>
parent
c552c3ef
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
8 deletions
+18
-8
jpeglsdec.c
libavcodec/jpeglsdec.c
+18
-8
No files found.
libavcodec/jpeglsdec.c
View file @
fe7fbf3a
...
@@ -222,7 +222,7 @@ static inline int ls_get_code_runterm(GetBitContext *gb, JLSState *state,
...
@@ -222,7 +222,7 @@ static inline int ls_get_code_runterm(GetBitContext *gb, JLSState *state,
/**
/**
* Decode one line of image
* Decode one line of image
*/
*/
static
inline
void
ls_decode_line
(
JLSState
*
state
,
MJpegDecodeContext
*
s
,
static
inline
int
ls_decode_line
(
JLSState
*
state
,
MJpegDecodeContext
*
s
,
void
*
last
,
void
*
dst
,
int
last2
,
int
w
,
void
*
last
,
void
*
dst
,
int
last2
,
int
w
,
int
stride
,
int
comp
,
int
bits
)
int
stride
,
int
comp
,
int
bits
)
{
{
...
@@ -234,7 +234,7 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
...
@@ -234,7 +234,7 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
int
err
,
pred
;
int
err
,
pred
;
if
(
get_bits_left
(
&
s
->
gb
)
<=
0
)
if
(
get_bits_left
(
&
s
->
gb
)
<=
0
)
return
;
return
AVERROR_INVALIDDATA
;
/* compute gradients */
/* compute gradients */
Ra
=
x
?
R
(
dst
,
x
-
stride
)
:
R
(
last
,
x
);
Ra
=
x
?
R
(
dst
,
x
-
stride
)
:
R
(
last
,
x
);
...
@@ -263,11 +263,11 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
...
@@ -263,11 +263,11 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
}
}
/* if EOL reached, we stop decoding */
/* if EOL reached, we stop decoding */
if
(
r
!=
1
<<
ff_log2_run
[
state
->
run_index
[
comp
]])
if
(
r
!=
1
<<
ff_log2_run
[
state
->
run_index
[
comp
]])
return
;
return
0
;
if
(
state
->
run_index
[
comp
]
<
31
)
if
(
state
->
run_index
[
comp
]
<
31
)
state
->
run_index
[
comp
]
++
;
state
->
run_index
[
comp
]
++
;
if
(
x
+
stride
>
w
)
if
(
x
+
stride
>
w
)
return
;
return
0
;
}
}
/* decode aborted run */
/* decode aborted run */
r
=
ff_log2_run
[
state
->
run_index
[
comp
]];
r
=
ff_log2_run
[
state
->
run_index
[
comp
]];
...
@@ -284,7 +284,7 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
...
@@ -284,7 +284,7 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
if
(
x
>=
w
)
{
if
(
x
>=
w
)
{
av_log
(
NULL
,
AV_LOG_ERROR
,
"run overflow
\n
"
);
av_log
(
NULL
,
AV_LOG_ERROR
,
"run overflow
\n
"
);
av_assert0
(
x
<=
w
);
av_assert0
(
x
<=
w
);
return
;
return
AVERROR_INVALIDDATA
;
}
}
/* decode run termination value */
/* decode run termination value */
...
@@ -341,6 +341,8 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
...
@@ -341,6 +341,8 @@ static inline void ls_decode_line(JLSState *state, MJpegDecodeContext *s,
W
(
dst
,
x
,
pred
);
W
(
dst
,
x
,
pred
);
x
+=
stride
;
x
+=
stride
;
}
}
return
0
;
}
}
int
ff_jpegls_decode_picture
(
MJpegDecodeContext
*
s
,
int
near
,
int
ff_jpegls_decode_picture
(
MJpegDecodeContext
*
s
,
int
near
,
...
@@ -407,13 +409,16 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
...
@@ -407,13 +409,16 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
width
=
s
->
width
*
stride
;
width
=
s
->
width
*
stride
;
cur
+=
off
;
cur
+=
off
;
for
(
i
=
0
;
i
<
s
->
height
;
i
++
)
{
for
(
i
=
0
;
i
<
s
->
height
;
i
++
)
{
int
ret
;
if
(
s
->
bits
<=
8
)
{
if
(
s
->
bits
<=
8
)
{
ls_decode_line
(
state
,
s
,
last
,
cur
,
t
,
width
,
stride
,
off
,
8
);
ret
=
ls_decode_line
(
state
,
s
,
last
,
cur
,
t
,
width
,
stride
,
off
,
8
);
t
=
last
[
0
];
t
=
last
[
0
];
}
else
{
}
else
{
ls_decode_line
(
state
,
s
,
last
,
cur
,
t
,
width
,
stride
,
off
,
16
);
ret
=
ls_decode_line
(
state
,
s
,
last
,
cur
,
t
,
width
,
stride
,
off
,
16
);
t
=
*
((
uint16_t
*
)
last
);
t
=
*
((
uint16_t
*
)
last
);
}
}
if
(
ret
<
0
)
break
;
last
=
cur
;
last
=
cur
;
cur
+=
s
->
picture_ptr
->
linesize
[
0
];
cur
+=
s
->
picture_ptr
->
linesize
[
0
];
...
@@ -429,9 +434,12 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
...
@@ -429,9 +434,12 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
memset
(
cur
,
0
,
s
->
picture_ptr
->
linesize
[
0
]);
memset
(
cur
,
0
,
s
->
picture_ptr
->
linesize
[
0
]);
width
=
s
->
width
*
stride
;
width
=
s
->
width
*
stride
;
for
(
i
=
0
;
i
<
s
->
height
;
i
++
)
{
for
(
i
=
0
;
i
<
s
->
height
;
i
++
)
{
int
ret
;
for
(
j
=
0
;
j
<
stride
;
j
++
)
{
for
(
j
=
0
;
j
<
stride
;
j
++
)
{
ls_decode_line
(
state
,
s
,
last
+
j
,
cur
+
j
,
ret
=
ls_decode_line
(
state
,
s
,
last
+
j
,
cur
+
j
,
Rc
[
j
],
width
,
stride
,
j
,
8
);
Rc
[
j
],
width
,
stride
,
j
,
8
);
if
(
ret
<
0
)
break
;
Rc
[
j
]
=
last
[
j
];
Rc
[
j
]
=
last
[
j
];
if
(
s
->
restart_interval
&&
!--
s
->
restart_count
)
{
if
(
s
->
restart_interval
&&
!--
s
->
restart_count
)
{
...
@@ -439,6 +447,8 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
...
@@ -439,6 +447,8 @@ int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near,
skip_bits
(
&
s
->
gb
,
16
);
/* skip RSTn */
skip_bits
(
&
s
->
gb
,
16
);
/* skip RSTn */
}
}
}
}
if
(
ret
<
0
)
break
;
last
=
cur
;
last
=
cur
;
cur
+=
s
->
picture_ptr
->
linesize
[
0
];
cur
+=
s
->
picture_ptr
->
linesize
[
0
];
}
}
...
...
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