aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2024-06-03 10:21:42 +0200
committerAnton Khirnov <anton@khirnov.net>2024-06-11 17:39:35 +0200
commit82ded1ad3a79ad453e82ec317dc58dba91f900a0 (patch)
tree8f8aed8fe562dc3d187cd294af5cf2a697ad867e
parenta2e77caf37c90837eb543a268ec5cc3ba5465ca4 (diff)
downloadffmpeg-82ded1ad3a79ad453e82ec317dc58dba91f900a0.tar.gz
lavc/hevcdec: move sequence increment/IDR handling to hevc_frame_start()
From hls_slice_header(). It is only done once per frame, so that is a more appropriate place for this code.
-rw-r--r--libavcodec/hevc/hevcdec.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c
index 9abae3260d..b13e3e06a3 100644
--- a/libavcodec/hevc/hevcdec.c
+++ b/libavcodec/hevc/hevcdec.c
@@ -604,11 +604,6 @@ static int hls_slice_header(HEVCContext *s, GetBitContext *gb)
return 1; // This slice will be skipped later, do not corrupt state
}
- if ((IS_IDR(s) || IS_BLA(s)) && sh->first_slice_in_pic_flag) {
- s->seq_decode = (s->seq_decode + 1) & HEVC_SEQUENCE_COUNTER_MASK;
- if (IS_IDR(s))
- ff_hevc_clear_refs(s);
- }
sh->no_output_of_prior_pics_flag = 0;
if (IS_IRAP(s))
sh->no_output_of_prior_pics_flag = get_bits1(gb);
@@ -2949,6 +2944,12 @@ static int hevc_frame_start(HEVCContext *s)
memset(s->is_pcm, 0, (sps->min_pu_width + 1) * (sps->min_pu_height + 1));
memset(s->tab_slice_address, -1, pic_size_in_ctb * sizeof(*s->tab_slice_address));
+ if ((IS_IDR(s) || IS_BLA(s))) {
+ s->seq_decode = (s->seq_decode + 1) & HEVC_SEQUENCE_COUNTER_MASK;
+ if (IS_IDR(s))
+ ff_hevc_clear_refs(s);
+ }
+
s->is_decoded = 0;
s->slice_idx = 0;
s->first_nal_type = s->nal_unit_type;