[FFmpeg-devel] [PATCH 05/11] avcodec/vvcdec: refact out is_available from is_a0_available
Nuo Mi
nuomi2021 at gmail.com
Sun Jul 28 06:18:01 EEST 2024
---
libavcodec/vvc/mvs.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/libavcodec/vvc/mvs.c b/libavcodec/vvc/mvs.c
index 1788a7150b..905edf1cd0 100644
--- a/libavcodec/vvc/mvs.c
+++ b/libavcodec/vvc/mvs.c
@@ -545,6 +545,16 @@ typedef struct NeighbourContext {
const VVCLocalContext *lc;
} NeighbourContext;
+static int is_available(const VVCFrameContext *fc, const int x0, const int y0)
+{
+ const VVCSPS *sps = fc->ps.sps;
+ const int x = x0 >> sps->min_cb_log2_size_y;
+ const int y = y0 >> sps->min_cb_log2_size_y;
+ const int min_cb_width = fc->ps.pps->min_cb_width;
+
+ return SAMPLE_CTB(fc->tab.cb_width[0], x, y) != 0;
+}
+
static int is_a0_available(const VVCLocalContext *lc, const CodingUnit *cu)
{
const VVCFrameContext *fc = lc->fc;
@@ -555,15 +565,11 @@ static int is_a0_available(const VVCLocalContext *lc, const CodingUnit *cu)
if (!x0b && !lc->ctb_left_flag) {
cand_bottom_left = 0;
} else {
- const int log2_min_cb_size = sps->min_cb_log2_size_y;
- const int min_cb_width = fc->ps.pps->min_cb_width;
- const int x = (cu->x0 - 1) >> log2_min_cb_size;
- const int y = (cu->y0 + cu->cb_height) >> log2_min_cb_size;
- const int max_y = FFMIN(fc->ps.pps->height, ((cu->y0 >> sps->ctb_log2_size_y) + 1) << sps->ctb_log2_size_y);
+ const int max_y = FFMIN(fc->ps.pps->height, ((cu->y0 >> sps->ctb_log2_size_y) + 1) << sps->ctb_log2_size_y);
if (cu->y0 + cu->cb_height >= max_y)
cand_bottom_left = 0;
else
- cand_bottom_left = SAMPLE_CTB(fc->tab.cb_width[0], x, y) != 0;
+ cand_bottom_left = is_available(fc, cu->x0 - 1, cu->y0 + cu->cb_height);
}
return cand_bottom_left;
}
--
2.34.1
More information about the ffmpeg-devel
mailing list