READ_UINT8 (&nr, slice->short_term_ref_pic_set_sps_flag, 1);
if (!slice->short_term_ref_pic_set_sps_flag) {
guint pos = nal_reader_get_pos (&nr);
+ guint epb_pos = nal_reader_get_epb_count (&nr);
+
if (!gst_h265_parser_parse_short_term_ref_pic_sets
(&slice->short_term_ref_pic_sets, &nr,
sps->num_short_term_ref_pic_sets, sps))
goto error;
- slice->short_term_ref_pic_set_size = nal_reader_get_pos (&nr) - pos;
+ slice->short_term_ref_pic_set_size =
+ (nal_reader_get_pos (&nr) - pos) -
+ (8 * (nal_reader_get_epb_count (&nr) - epb_pos));
} else if (sps->num_short_term_ref_pic_sets > 1) {
const guint n = ceil_log2 (sps->num_short_term_ref_pic_sets);
READ_UINT8 (&nr, slice->short_term_ref_pic_set_idx, n);
/* Number of emulation prevention bytes (EPB) in this slice_header() */
guint n_emulation_prevention_bytes;
- /* Size of short_term_ref_pic_set() in bits */
+ /* Size of short_term_ref_pic_set() after emulation preventation bytes are
+ * removed, in bits */
guint short_term_ref_pic_set_size;
};