diff options
author | James Almer <jamrial@gmail.com> | 2018-01-20 16:54:15 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2018-01-30 22:06:59 -0300 |
commit | 64f0fd599845fb9e4db9ba51012792abaf38a9ea (patch) | |
tree | 10461ed8bdbdb4e141faa116d3cde5f5ed2c9dc7 | |
parent | dd93df46a618c442ead15cc90d8b236d5e1894a9 (diff) | |
download | ffmpeg-64f0fd599845fb9e4db9ba51012792abaf38a9ea.tar.gz |
avcodec/hevc_ps: add a function to uninitialize parameter set buffers
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 9462b2b8205397ea5972b2365c2e8db6872ef3e9)
-rw-r--r-- | libavcodec/hevc_ps.c | 16 | ||||
-rw-r--r-- | libavcodec/hevc_ps.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 2ab4c34013..6f3af2daec 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -1709,6 +1709,22 @@ err: return ret; } +void ff_hevc_ps_uninit(HEVCParamSets *ps) +{ + int i; + + for (i = 0; i < FF_ARRAY_ELEMS(ps->vps_list); i++) + av_buffer_unref(&ps->vps_list[i]); + for (i = 0; i < FF_ARRAY_ELEMS(ps->sps_list); i++) + av_buffer_unref(&ps->sps_list[i]); + for (i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) + av_buffer_unref(&ps->pps_list[i]); + + ps->sps = NULL; + ps->pps = NULL; + ps->vps = NULL; +} + int ff_hevc_compute_poc(const HEVCSPS *sps, int pocTid0, int poc_lsb, int nal_unit_type) { int max_poc_lsb = 1 << sps->log2_max_poc_lsb; diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index 76f8eb31e6..f19d022469 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -421,6 +421,8 @@ int ff_hevc_decode_nal_sps(GetBitContext *gb, AVCodecContext *avctx, int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, HEVCParamSets *ps); +void ff_hevc_ps_uninit(HEVCParamSets *ps); + int ff_hevc_decode_short_term_rps(GetBitContext *gb, AVCodecContext *avctx, ShortTermRPS *rps, const HEVCSPS *sps, int is_slice_header); |