[FFmpeg-cvslog] hevc: eliminate the last element from TransformTree

Anton Khirnov git at videolan.org
Mon Jul 28 14:19:31 CEST 2014


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sun Jul 27 10:59:40 2014 +0000| [e76f2d11970484266e67a12961f2339a5c2fccf9] | committer: Anton Khirnov

hevc: eliminate the last element from TransformTree

Replace it by passing an additional parameter to transform_unit()

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e76f2d11970484266e67a12961f2339a5c2fccf9
---

 libavcodec/hevc.c |   15 +++++++--------
 libavcodec/hevc.h |    5 -----
 2 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
index d889b57..20d2878 100644
--- a/libavcodec/hevc.c
+++ b/libavcodec/hevc.c
@@ -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 log2_cb_size, int log2_trafo_size,
                               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;
 
@@ -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_c = SCAN_DIAG;
 
@@ -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);
         if (log2_trafo_size > 2) {
             if (cbf_cb)
@@ -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->tt.cbf_luma = 1;
-
     if (log2_trafo_size <= s->sps->log2_max_trafo_size &&
         log2_trafo_size >  s->sps->log2_min_tb_size    &&
         trafo_depth     < lc->cu.max_trafo_depth       &&
@@ -1400,18 +1398,19 @@ do {
         int min_tu_size      = 1 << 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 cbf_luma         = 1;
 
         if (lc->cu.pred_mode == MODE_INTRA || trafo_depth != 0 ||
             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,
                                  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)
             return ret;
         // TODO: store cbf_luma somewhere else
-        if (lc->tt.cbf_luma) {
+        if (cbf_luma) {
             int i, j;
             for (i = 0; i < (1 << log2_trafo_size); i += min_tu_size)
                 for (j = 0; j < (1 << log2_trafo_size); j += min_tu_size) {
diff --git a/libavcodec/hevc.h b/libavcodec/hevc.h
index ad13d10..96dd80d 100644
--- a/libavcodec/hevc.h
+++ b/libavcodec/hevc.h
@@ -645,10 +645,6 @@ typedef struct PredictionUnit {
     uint8_t intra_pred_mode_c;
 } PredictionUnit;
 
-typedef struct TransformTree {
-    uint8_t cbf_luma;
-} TransformTree;
-
 typedef struct TransformUnit {
     int cu_qp_delta;
 
@@ -724,7 +720,6 @@ typedef struct HEVCLocalContext {
 
     GetBitContext gb;
     CABACContext cc;
-    TransformTree tt;
 
     int8_t qp_y;
     int8_t curr_qp_y;



More information about the ffmpeg-cvslog mailing list