aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNuo Mi <nuomi2021@gmail.com>2024-11-23 17:32:32 +0800
committerNuo Mi <nuomi2021@gmail.com>2024-11-30 09:58:59 +0800
commit5c5a08ecb53b1b9d97512ce398fa395c3fb8c1a8 (patch)
treeea3c0ef1727b73340d38f4f4dae2e3c07ef0e165
parent46006529a16efab45c865114a559914afe281341 (diff)
downloadffmpeg-5c5a08ecb53b1b9d97512ce398fa395c3fb8c1a8.tar.gz
avcodec/vvcdec: ensure every CTU belongs to a slice
According to section 6.3.3 "Spatial or component-wise partitionings," CTUs should fully cover slices with no overlaps, gaps, or additions. No overlaps are ensured by task_init_parse. No gaps and no additions are ensured by this patch. Co-authored-by: Frank Plowman <post@frankplowman.com>
-rw-r--r--libavcodec/vvc/thread.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libavcodec/vvc/thread.c b/libavcodec/vvc/thread.c
index 82c00dd4c9..f623d6a394 100644
--- a/libavcodec/vvc/thread.c
+++ b/libavcodec/vvc/thread.c
@@ -822,6 +822,13 @@ int ff_vvc_frame_submit(VVCContext *s, VVCFrameContext *fc)
}
}
}
+ for (int rs = 0; rs < ft->ctu_count; rs++) {
+ const VVCTask *t = ft->tasks + rs;
+ if (!t->sc) {
+ av_log(s->avctx, AV_LOG_ERROR, "frame %5d, CTU(%d, %d) not belong to any slice\r\n", (int)fc->decode_order, t->rx, t->ry);
+ return AVERROR_INVALIDDATA;
+ }
+ }
frame_thread_add_score(s, ft, 0, 0, VVC_TASK_STAGE_INIT);
return 0;