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
c90f57c6
Commit
c90f57c6
authored
Mar 30, 2020
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vp9dec: factorise freeing per-tile allocated data
parent
c5844096
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
20 deletions
+16
-20
vp9.c
libavcodec/vp9.c
+16
-20
No files found.
libavcodec/vp9.c
View file @
c90f57c6
...
...
@@ -93,6 +93,12 @@ static void vp9_free_entries(AVCodecContext *avctx) {}
static
int
vp9_alloc_entries
(
AVCodecContext
*
avctx
,
int
n
)
{
return
0
;
}
#endif
static
void
vp9_tile_data_free
(
VP9TileData
*
td
)
{
av_freep
(
&
td
->
b_base
);
av_freep
(
&
td
->
block_base
);
}
static
void
vp9_frame_unref
(
AVCodecContext
*
avctx
,
VP9Frame
*
f
)
{
ff_thread_release_buffer
(
avctx
,
&
f
->
tf
);
...
...
@@ -281,10 +287,8 @@ static int update_size(AVCodecContext *avctx, int w, int h)
#undef assign
if
(
s
->
td
)
{
for
(
i
=
0
;
i
<
s
->
active_tile_cols
;
i
++
)
{
av_freep
(
&
s
->
td
[
i
].
b_base
);
av_freep
(
&
s
->
td
[
i
].
block_base
);
}
for
(
i
=
0
;
i
<
s
->
active_tile_cols
;
i
++
)
vp9_tile_data_free
(
&
s
->
td
[
i
]);
}
if
(
s
->
s
.
h
.
bpp
!=
s
->
last_bpp
)
{
...
...
@@ -306,8 +310,7 @@ static int update_block_buffers(AVCodecContext *avctx)
if
(
td
->
b_base
&&
td
->
block_base
&&
s
->
block_alloc_using_2pass
==
s
->
s
.
frames
[
CUR_FRAME
].
uses_2pass
)
return
0
;
av_free
(
td
->
b_base
);
av_free
(
td
->
block_base
);
vp9_tile_data_free
(
td
);
chroma_blocks
=
64
*
64
>>
(
s
->
ss_h
+
s
->
ss_v
);
chroma_eobs
=
16
*
16
>>
(
s
->
ss_h
+
s
->
ss_v
);
if
(
s
->
s
.
frames
[
CUR_FRAME
].
uses_2pass
)
{
...
...
@@ -324,12 +327,9 @@ static int update_block_buffers(AVCodecContext *avctx)
td
->
uveob_base
[
0
]
=
td
->
eob_base
+
16
*
16
*
sbs
;
td
->
uveob_base
[
1
]
=
td
->
uveob_base
[
0
]
+
chroma_eobs
*
sbs
;
}
else
{
for
(
i
=
1
;
i
<
s
->
active_tile_cols
;
i
++
)
{
if
(
s
->
td
[
i
].
b_base
&&
s
->
td
[
i
].
block_base
)
{
av_free
(
s
->
td
[
i
].
b_base
);
av_free
(
s
->
td
[
i
].
block_base
);
}
}
for
(
i
=
1
;
i
<
s
->
active_tile_cols
;
i
++
)
vp9_tile_data_free
(
&
s
->
td
[
i
]);
for
(
i
=
0
;
i
<
s
->
active_tile_cols
;
i
++
)
{
s
->
td
[
i
].
b_base
=
av_malloc
(
sizeof
(
VP9Block
));
s
->
td
[
i
].
block_base
=
av_mallocz
((
64
*
64
+
2
*
chroma_blocks
)
*
bytesperpixel
*
sizeof
(
int16_t
)
+
...
...
@@ -773,10 +773,8 @@ static int decode_frame_header(AVCodecContext *avctx,
VP56RangeCoder
*
rc
;
if
(
s
->
td
)
{
for
(
i
=
0
;
i
<
s
->
active_tile_cols
;
i
++
)
{
av_free
(
s
->
td
[
i
].
b_base
);
av_free
(
s
->
td
[
i
].
block_base
);
}
for
(
i
=
0
;
i
<
s
->
active_tile_cols
;
i
++
)
vp9_tile_data_free
(
&
s
->
td
[
i
]);
av_free
(
s
->
td
);
}
...
...
@@ -1213,10 +1211,8 @@ static void free_buffers(VP9Context *s)
int
i
;
av_freep
(
&
s
->
intra_pred_data
[
0
]);
for
(
i
=
0
;
i
<
s
->
active_tile_cols
;
i
++
)
{
av_freep
(
&
s
->
td
[
i
].
b_base
);
av_freep
(
&
s
->
td
[
i
].
block_base
);
}
for
(
i
=
0
;
i
<
s
->
active_tile_cols
;
i
++
)
vp9_tile_data_free
(
&
s
->
td
[
i
]);
}
static
av_cold
int
vp9_decode_free
(
AVCodecContext
*
avctx
)
...
...
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