Commit e76f2d11 authored by Anton Khirnov's avatar Anton Khirnov

hevc: eliminate the last element from TransformTree

Replace it by passing an additional parameter to transform_unit()
parent 4aa80808
...@@ -1234,7 +1234,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, ...@@ -1234,7 +1234,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0,
int xBase, int yBase, int cb_xBase, int cb_yBase, int xBase, int yBase, int cb_xBase, int cb_yBase,
int log2_cb_size, int log2_trafo_size, int log2_cb_size, int log2_trafo_size,
int trafo_depth, int blk_idx, int trafo_depth, int blk_idx,
int cbf_cb, int cbf_cr) int cbf_luma, int cbf_cb, int cbf_cr)
{ {
HEVCLocalContext *lc = &s->HEVClc; HEVCLocalContext *lc = &s->HEVClc;
...@@ -1257,7 +1257,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, ...@@ -1257,7 +1257,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0,
} }
} }
if (lc->tt.cbf_luma || cbf_cb || cbf_cr) { if (cbf_luma || cbf_cb || cbf_cr) {
int scan_idx = SCAN_DIAG; int scan_idx = SCAN_DIAG;
int scan_idx_c = SCAN_DIAG; int scan_idx_c = SCAN_DIAG;
...@@ -1300,7 +1300,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, ...@@ -1300,7 +1300,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0,
} }
} }
if (lc->tt.cbf_luma) if (cbf_luma)
hls_residual_coding(s, x0, y0, log2_trafo_size, scan_idx, 0); hls_residual_coding(s, x0, y0, log2_trafo_size, scan_idx, 0);
if (log2_trafo_size > 2) { if (log2_trafo_size > 2) {
if (cbf_cb) if (cbf_cb)
...@@ -1349,8 +1349,6 @@ static int hls_transform_tree(HEVCContext *s, int x0, int y0, ...@@ -1349,8 +1349,6 @@ static int hls_transform_tree(HEVCContext *s, int x0, int y0,
lc->tu.cur_intra_pred_mode = lc->pu.intra_pred_mode[0]; lc->tu.cur_intra_pred_mode = lc->pu.intra_pred_mode[0];
} }
lc->tt.cbf_luma = 1;
if (log2_trafo_size <= s->sps->log2_max_trafo_size && if (log2_trafo_size <= s->sps->log2_max_trafo_size &&
log2_trafo_size > s->sps->log2_min_tb_size && log2_trafo_size > s->sps->log2_min_tb_size &&
trafo_depth < lc->cu.max_trafo_depth && trafo_depth < lc->cu.max_trafo_depth &&
...@@ -1400,18 +1398,19 @@ do { ...@@ -1400,18 +1398,19 @@ do {
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;
int min_tu_width = s->sps->min_tb_width; int min_tu_width = s->sps->min_tb_width;
int cbf_luma = 1;
if (lc->cu.pred_mode == MODE_INTRA || trafo_depth != 0 || if (lc->cu.pred_mode == MODE_INTRA || trafo_depth != 0 ||
cbf_cb || cbf_cr) cbf_cb || cbf_cr)
lc->tt.cbf_luma = ff_hevc_cbf_luma_decode(s, trafo_depth); cbf_luma = ff_hevc_cbf_luma_decode(s, trafo_depth);
ret = hls_transform_unit(s, x0, y0, xBase, yBase, cb_xBase, cb_yBase, ret = hls_transform_unit(s, x0, y0, xBase, yBase, cb_xBase, cb_yBase,
log2_cb_size, log2_trafo_size, trafo_depth, log2_cb_size, log2_trafo_size, trafo_depth,
blk_idx, cbf_cb, cbf_cr); blk_idx, cbf_luma, cbf_cb, cbf_cr);
if (ret < 0) if (ret < 0)
return ret; return ret;
// TODO: store cbf_luma somewhere else // TODO: store cbf_luma somewhere else
if (lc->tt.cbf_luma) { if (cbf_luma) {
int i, j; int i, j;
for (i = 0; i < (1 << log2_trafo_size); i += min_tu_size) for (i = 0; i < (1 << log2_trafo_size); i += min_tu_size)
for (j = 0; j < (1 << log2_trafo_size); j += min_tu_size) { for (j = 0; j < (1 << log2_trafo_size); j += min_tu_size) {
......
...@@ -645,10 +645,6 @@ typedef struct PredictionUnit { ...@@ -645,10 +645,6 @@ typedef struct PredictionUnit {
uint8_t intra_pred_mode_c; uint8_t intra_pred_mode_c;
} PredictionUnit; } PredictionUnit;
typedef struct TransformTree {
uint8_t cbf_luma;
} TransformTree;
typedef struct TransformUnit { typedef struct TransformUnit {
int cu_qp_delta; int cu_qp_delta;
...@@ -724,7 +720,6 @@ typedef struct HEVCLocalContext { ...@@ -724,7 +720,6 @@ typedef struct HEVCLocalContext {
GetBitContext gb; GetBitContext gb;
CABACContext cc; CABACContext cc;
TransformTree tt;
int8_t qp_y; int8_t qp_y;
int8_t curr_qp_y; int8_t curr_qp_y;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment