mirror of https://git.ffmpeg.org/ffmpeg.git
hevc: simplify splitting the transform tree blocks
This commit is contained in:
parent
e36a2f4c52
commit
53a11135f2
|
@ -1392,29 +1392,24 @@ static int hls_transform_tree(HEVCContext *s, int x0, int y0,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (split_transform_flag) {
|
if (split_transform_flag) {
|
||||||
int x1 = x0 + ((1 << log2_trafo_size) >> 1);
|
const int trafo_size_split = 1 << (log2_trafo_size - 1);
|
||||||
int y1 = y0 + ((1 << log2_trafo_size) >> 1);
|
const int x1 = x0 + trafo_size_split;
|
||||||
|
const int y1 = y0 + trafo_size_split;
|
||||||
|
|
||||||
ret = hls_transform_tree(s, x0, y0, x0, y0, cb_xBase, cb_yBase,
|
#define SUBDIVIDE(x, y, idx) \
|
||||||
log2_cb_size, log2_trafo_size - 1,
|
do { \
|
||||||
trafo_depth + 1, 0);
|
ret = hls_transform_tree(s, x, y, x0, y0, cb_xBase, cb_yBase, log2_cb_size, \
|
||||||
if (ret < 0)
|
log2_trafo_size - 1, trafo_depth + 1, idx); \
|
||||||
return ret;
|
if (ret < 0) \
|
||||||
ret = hls_transform_tree(s, x1, y0, x0, y0, cb_xBase, cb_yBase,
|
return ret; \
|
||||||
log2_cb_size, log2_trafo_size - 1,
|
} while (0)
|
||||||
trafo_depth + 1, 1);
|
|
||||||
if (ret < 0)
|
SUBDIVIDE(x0, y0, 0);
|
||||||
return ret;
|
SUBDIVIDE(x1, y0, 1);
|
||||||
ret = hls_transform_tree(s, x0, y1, x0, y0, cb_xBase, cb_yBase,
|
SUBDIVIDE(x0, y1, 2);
|
||||||
log2_cb_size, log2_trafo_size - 1,
|
SUBDIVIDE(x1, y1, 3);
|
||||||
trafo_depth + 1, 2);
|
|
||||||
if (ret < 0)
|
#undef SUBDIVIDE
|
||||||
return ret;
|
|
||||||
ret = hls_transform_tree(s, x1, y1, x0, y0, cb_xBase, cb_yBase,
|
|
||||||
log2_cb_size, log2_trafo_size - 1,
|
|
||||||
trafo_depth + 1, 3);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
} else {
|
} else {
|
||||||
int min_tu_size = 1 << s->sps->log2_min_tb_size;
|
int min_tu_size = 1 << s->sps->log2_min_tb_size;
|
||||||
int log2_min_tu_size = s->sps->log2_min_tb_size;
|
int log2_min_tu_size = s->sps->log2_min_tb_size;
|
||||||
|
|
Loading…
Reference in New Issue