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
dd1d29bd
Commit
dd1d29bd
authored
Aug 22, 2013
by
Paul B Mahol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pngdec: use av_fast_padded_malloc(z)
Signed-off-by:
Paul B Mahol
<
onemda@gmail.com
>
parent
8fbf940e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
7 deletions
+11
-7
pngdec.c
libavcodec/pngdec.c
+11
-7
No files found.
libavcodec/pngdec.c
View file @
dd1d29bd
...
...
@@ -60,7 +60,10 @@ typedef struct PNGDecContext {
uint32_t
palette
[
256
];
uint8_t
*
crow_buf
;
uint8_t
*
last_row
;
int
last_row_size
;
uint8_t
*
tmp_row
;
uint8_t
*
buffer
;
int
buffer_size
;
int
pass
;
int
crow_size
;
/* compressed row size (include filter type) */
int
row_size
;
/* decompressed row size */
...
...
@@ -509,7 +512,6 @@ static int decode_frame(AVCodecContext *avctx,
int
buf_size
=
avpkt
->
size
;
AVFrame
*
p
;
AVDictionary
*
metadata
=
NULL
;
uint8_t
*
crow_buf_base
=
NULL
;
uint32_t
tag
,
length
;
int64_t
sig
;
int
ret
;
...
...
@@ -667,7 +669,7 @@ static int decode_frame(AVCodecContext *avctx,
if
(
avctx
->
pix_fmt
==
AV_PIX_FMT_PAL8
)
memcpy
(
p
->
data
[
1
],
s
->
palette
,
256
*
sizeof
(
uint32_t
));
/* empty row is used if differencing to the first row */
s
->
last_row
=
av_mallocz
(
s
->
row_size
);
av_fast_padded_mallocz
(
&
s
->
last_row
,
&
s
->
last_row_size
,
s
->
row_size
);
if
(
!
s
->
last_row
)
goto
fail
;
if
(
s
->
interlace_type
||
...
...
@@ -677,12 +679,12 @@ static int decode_frame(AVCodecContext *avctx,
goto
fail
;
}
/* compressed row */
crow_buf_base
=
av_malloc
(
s
->
row_size
+
16
);
if
(
!
crow_buf_base
)
av_fast_padded_malloc
(
&
s
->
buffer
,
&
s
->
buffer_size
,
s
->
row_size
+
16
);
if
(
!
s
->
buffer
)
goto
fail
;
/* we want crow_buf+1 to be 16-byte aligned */
s
->
crow_buf
=
crow_buf_base
+
15
;
s
->
crow_buf
=
s
->
buffer
+
15
;
s
->
zstream
.
avail_out
=
s
->
crow_size
;
s
->
zstream
.
next_out
=
s
->
crow_buf
;
}
...
...
@@ -861,9 +863,7 @@ static int decode_frame(AVCodecContext *avctx,
ret
=
bytestream2_tell
(
&
s
->
gb
);
the_end
:
inflateEnd
(
&
s
->
zstream
);
av_free
(
crow_buf_base
);
s
->
crow_buf
=
NULL
;
av_freep
(
&
s
->
last_row
);
av_freep
(
&
s
->
tmp_row
);
return
ret
;
fail
:
...
...
@@ -914,6 +914,10 @@ static av_cold int png_dec_end(AVCodecContext *avctx)
av_frame_free
(
&
s
->
last_picture
.
f
);
ff_thread_release_buffer
(
avctx
,
&
s
->
picture
);
av_frame_free
(
&
s
->
picture
.
f
);
av_freep
(
&
s
->
buffer
);
s
->
buffer_size
=
0
;
av_freep
(
&
s
->
last_row
);
s
->
last_row_size
=
0
;
return
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