From 4b95e95dbae58c9b60891284bf8b5bbd83e5293a Mon Sep 17 00:00:00 2001 From: Hendrik Leppkes Date: Sun, 25 Jan 2015 12:58:47 +0100 Subject: [PATCH] hevc: store the short term rps flag and size in the context For future use by hardware accelerators. Signed-off-by: Anton Khirnov --- libavcodec/hevc.c | 8 +++++--- libavcodec/hevc.h | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c index 560d52c458..0148aba658 100644 --- a/libavcodec/hevc.c +++ b/libavcodec/hevc.c @@ -552,7 +552,7 @@ static int hls_slice_header(HEVCContext *s) sh->colour_plane_id = get_bits(gb, 2); if (!IS_IDR(s)) { - int short_term_ref_pic_set_sps_flag, poc; + int poc; sh->pic_order_cnt_lsb = get_bits(gb, s->sps->log2_max_poc_lsb); poc = ff_hevc_compute_poc(s, sh->pic_order_cnt_lsb); @@ -565,12 +565,14 @@ static int hls_slice_header(HEVCContext *s) } s->poc = poc; - short_term_ref_pic_set_sps_flag = get_bits1(gb); - if (!short_term_ref_pic_set_sps_flag) { + sh->short_term_ref_pic_set_sps_flag = get_bits1(gb); + if (!sh->short_term_ref_pic_set_sps_flag) { + int pos = get_bits_left(gb); ret = ff_hevc_decode_short_term_rps(s, &sh->slice_rps, s->sps, 1); if (ret < 0) return ret; + sh->short_term_ref_pic_set_size = pos - get_bits_left(gb); sh->short_term_rps = &sh->slice_rps; } else { int numbits, rps_idx; diff --git a/libavcodec/hevc.h b/libavcodec/hevc.h index c4162e7353..b78b1645fc 100644 --- a/libavcodec/hevc.h +++ b/libavcodec/hevc.h @@ -543,6 +543,8 @@ typedef struct SliceHeader { uint8_t colour_plane_id; ///< RPS coded in the slice header itself is stored here + int short_term_ref_pic_set_sps_flag; + int short_term_ref_pic_set_size; ShortTermRPS slice_rps; const ShortTermRPS *short_term_rps; LongTermRPS long_term_rps;