Merge commit 'a7b365ae191f45a0d7ed7b34033d5d0cbdd47139'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 17 Nov 2014 10:54:41 +0000 (11:54 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 17 Nov 2014 10:54:41 +0000 (11:54 +0100)
* commit 'a7b365ae191f45a0d7ed7b34033d5d0cbdd47139':
  hevc: reduce code duplication in hls_prediction_unit()

Conflicts:
libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/hevc.c

@@@ -1621,75 -1671,57 +1623,59 @@@ static void hls_prediction_unit(HEVCCon
          for (j = 0; j < nPbH >> s->sps->log2_min_pu_size; j++)
              for (i = 0; i < nPbW >> s->sps->log2_min_pu_size; i++)
                  tab_mvf[(y_pu + j) * min_pu_width + x_pu + i] = current_mv;
-     } else { /* MODE_INTER */
-         lc->pu.merge_flag = ff_hevc_merge_flag_decode(s);
-         if (lc->pu.merge_flag) {
-             if (s->sh.max_num_merge_cand > 1)
-                 merge_idx = ff_hevc_merge_idx_decode(s);
-             else
-                 merge_idx = 0;
-             ff_hevc_luma_mv_merge_mode(s, x0, y0, nPbW, nPbH, log2_cb_size,
-                                        partIdx, merge_idx, &current_mv);
-             x_pu = x0 >> s->sps->log2_min_pu_size;
-             y_pu = y0 >> s->sps->log2_min_pu_size;
-             for (j = 0; j < nPbH >> s->sps->log2_min_pu_size; j++)
-                 for (i = 0; i < nPbW >> s->sps->log2_min_pu_size; i++)
-                     tab_mvf[(y_pu + j) * min_pu_width + x_pu + i] = current_mv;
-         } else {
-             enum InterPredIdc inter_pred_idc = PRED_L0;
-             ff_hevc_set_neighbour_available(s, x0, y0, nPbW, nPbH);
-             current_mv.pred_flag = 0;
-             if (s->sh.slice_type == B_SLICE)
-                 inter_pred_idc = ff_hevc_inter_pred_idc_decode(s, nPbW, nPbH);
-             if (inter_pred_idc != PRED_L1) {
-                 if (s->sh.nb_refs[L0]) {
-                     ref_idx[0] = ff_hevc_ref_idx_lx_decode(s, s->sh.nb_refs[L0]);
-                     current_mv.ref_idx[0] = ref_idx[0];
-                 }
-                 current_mv.pred_flag = PF_L0;
-                 ff_hevc_hls_mvd_coding(s, x0, y0, 0);
-                 mvp_flag[0] = ff_hevc_mvp_lx_flag_decode(s);
-                 ff_hevc_luma_mv_mvp_mode(s, x0, y0, nPbW, nPbH, log2_cb_size,
-                                          partIdx, merge_idx, &current_mv,
-                                          mvp_flag[0], 0);
-                 current_mv.mv[0].x += lc->pu.mvd.x;
-                 current_mv.mv[0].y += lc->pu.mvd.y;
+     } else {
+         enum InterPredIdc inter_pred_idc = PRED_L0;
+         ff_hevc_set_neighbour_available(s, x0, y0, nPbW, nPbH);
++        current_mv.pred_flag = 0;
+         if (s->sh.slice_type == B_SLICE)
+             inter_pred_idc = ff_hevc_inter_pred_idc_decode(s, nPbW, nPbH);
+         if (inter_pred_idc != PRED_L1) {
+             if (s->sh.nb_refs[L0]) {
+                 ref_idx[0] = ff_hevc_ref_idx_lx_decode(s, s->sh.nb_refs[L0]);
+                 current_mv.ref_idx[0] = ref_idx[0];
              }
 -            current_mv.pred_flag[0] = 1;
 -            hls_mvd_coding(s, x0, y0, 0);
 +
-             if (inter_pred_idc != PRED_L0) {
-                 if (s->sh.nb_refs[L1]) {
-                     ref_idx[1] = ff_hevc_ref_idx_lx_decode(s, s->sh.nb_refs[L1]);
-                     current_mv.ref_idx[1] = ref_idx[1];
-                 }
-                 if (s->sh.mvd_l1_zero_flag == 1 && inter_pred_idc == PRED_BI) {
-                     AV_ZERO32(&lc->pu.mvd);
-                 } else {
-                     ff_hevc_hls_mvd_coding(s, x0, y0, 1);
-                 }
++            current_mv.pred_flag = PF_L0;
++            ff_hevc_hls_mvd_coding(s, x0, y0, 0);
+             mvp_flag[0] = ff_hevc_mvp_lx_flag_decode(s);
+             ff_hevc_luma_mv_mvp_mode(s, x0, y0, nPbW, nPbH, log2_cb_size,
+                                      partIdx, merge_idx, &current_mv,
+                                      mvp_flag[0], 0);
+             current_mv.mv[0].x += lc->pu.mvd.x;
+             current_mv.mv[0].y += lc->pu.mvd.y;
+         }
  
-                 current_mv.pred_flag += PF_L1;
-                 mvp_flag[1] = ff_hevc_mvp_lx_flag_decode(s);
-                 ff_hevc_luma_mv_mvp_mode(s, x0, y0, nPbW, nPbH, log2_cb_size,
-                                          partIdx, merge_idx, &current_mv,
-                                          mvp_flag[1], 1);
-                 current_mv.mv[1].x += lc->pu.mvd.x;
-                 current_mv.mv[1].y += lc->pu.mvd.y;
+         if (inter_pred_idc != PRED_L0) {
+             if (s->sh.nb_refs[L1]) {
+                 ref_idx[1] = ff_hevc_ref_idx_lx_decode(s, s->sh.nb_refs[L1]);
+                 current_mv.ref_idx[1] = ref_idx[1];
              }
  
-             x_pu = x0 >> s->sps->log2_min_pu_size;
-             y_pu = y0 >> s->sps->log2_min_pu_size;
+             if (s->sh.mvd_l1_zero_flag == 1 && inter_pred_idc == PRED_BI) {
+                 AV_ZERO32(&lc->pu.mvd);
+             } else {
 -                hls_mvd_coding(s, x0, y0, 1);
++                ff_hevc_hls_mvd_coding(s, x0, y0, 1);
+             }
  
-             for(j = 0; j < nPbH >> s->sps->log2_min_pu_size; j++)
-                 for (i = 0; i < nPbW >> s->sps->log2_min_pu_size; i++)
-                     tab_mvf[(y_pu + j) * min_pu_width + x_pu + i] = current_mv;
 -            current_mv.pred_flag[1] = 1;
++            current_mv.pred_flag += PF_L1;
+             mvp_flag[1] = ff_hevc_mvp_lx_flag_decode(s);
+             ff_hevc_luma_mv_mvp_mode(s, x0, y0, nPbW, nPbH, log2_cb_size,
+                                      partIdx, merge_idx, &current_mv,
+                                      mvp_flag[1], 1);
+             current_mv.mv[1].x += lc->pu.mvd.x;
+             current_mv.mv[1].y += lc->pu.mvd.y;
          }
+         x_pu = x0 >> s->sps->log2_min_pu_size;
+         y_pu = y0 >> s->sps->log2_min_pu_size;
+         for(j = 0; j < nPbH >> s->sps->log2_min_pu_size; j++)
+             for (i = 0; i < nPbW >> s->sps->log2_min_pu_size; i++)
+                 tab_mvf[(y_pu + j) * min_pu_width + x_pu + i] = current_mv;
      }
  
 -    if (current_mv.pred_flag[0]) {
 +    if (current_mv.pred_flag & PF_L0) {
          ref0 = refPicList[0].ref[current_mv.ref_idx[0]];
          if (!ref0)
              return;