| Index: source/libvpx/vp8/encoder/ethreading.c
 | 
| ===================================================================
 | 
| --- source/libvpx/vp8/encoder/ethreading.c	(revision 177019)
 | 
| +++ source/libvpx/vp8/encoder/ethreading.c	(working copy)
 | 
| @@ -17,12 +17,6 @@
 | 
|  
 | 
|  #if CONFIG_MULTITHREAD
 | 
|  
 | 
| -extern int vp8cx_encode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
 | 
| -                                         TOKENEXTRA **t,
 | 
| -                                         int recon_yoffset, int recon_uvoffset,
 | 
| -                                         int mb_row, int mb_col);
 | 
| -extern int vp8cx_encode_intra_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
 | 
| -                                         TOKENEXTRA **t);
 | 
|  extern void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x, int ok_to_skip);
 | 
|  
 | 
|  extern void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm);
 | 
| @@ -220,7 +214,9 @@
 | 
|                           * vp8cx_encode_inter_macroblock()) back into the
 | 
|                           * global segmentation map
 | 
|                           */
 | 
| -                        if (cpi->cyclic_refresh_mode_enabled && xd->segmentation_enabled)
 | 
| +                        if ((cpi->current_layer == 0) &&
 | 
| +                            (cpi->cyclic_refresh_mode_enabled &&
 | 
| +                             xd->segmentation_enabled))
 | 
|                          {
 | 
|                              const MB_MODE_INFO * mbmi = &xd->mode_info_context->mbmi;
 | 
|                              cpi->segmentation_map[map_index + mb_col] = mbmi->segment_id;
 | 
| @@ -422,13 +418,23 @@
 | 
|              zd->block[i].dequant = zd->dequant_uv;
 | 
|          zd->block[24].dequant = zd->dequant_y2;
 | 
|  #endif
 | 
| +
 | 
| +
 | 
| +        vpx_memcpy(z->rd_threshes, x->rd_threshes, sizeof(x->rd_threshes));
 | 
| +        vpx_memcpy(z->rd_thresh_mult, x->rd_thresh_mult,
 | 
| +                   sizeof(x->rd_thresh_mult));
 | 
| +
 | 
| +        z->zbin_over_quant = x->zbin_over_quant;
 | 
| +        z->zbin_mode_boost_enabled = x->zbin_mode_boost_enabled;
 | 
| +        z->zbin_mode_boost = x->zbin_mode_boost;
 | 
| +
 | 
| +        vpx_memset(z->error_bins, 0, sizeof(z->error_bins));
 | 
|      }
 | 
|  }
 | 
|  
 | 
|  void vp8cx_init_mbrthread_data(VP8_COMP *cpi,
 | 
|                                 MACROBLOCK *x,
 | 
|                                 MB_ROW_COMP *mbr_ei,
 | 
| -                               int mb_row,
 | 
|                                 int count
 | 
|                                )
 | 
|  {
 | 
| @@ -436,7 +442,6 @@
 | 
|      VP8_COMMON *const cm = & cpi->common;
 | 
|      MACROBLOCKD *const xd = & x->e_mbd;
 | 
|      int i;
 | 
| -    (void) mb_row;
 | 
|  
 | 
|      for (i = 0; i < count; i++)
 | 
|      {
 | 
| @@ -477,6 +482,15 @@
 | 
|          mbd->fullpixel_mask = 0xffffffff;
 | 
|          if(cm->full_pixel)
 | 
|              mbd->fullpixel_mask = 0xfffffff8;
 | 
| +
 | 
| +        vp8_zero(mb->coef_counts);
 | 
| +        vp8_zero(x->ymode_count);
 | 
| +        mb->skip_true_count = 0;
 | 
| +        vp8_zero(mb->MVcount);
 | 
| +        mb->prediction_error = 0;
 | 
| +        mb->intra_error = 0;
 | 
| +        vp8_zero(mb->count_mb_ref_frame_usage);
 | 
| +        mb->mbs_tested_so_far = 0;
 | 
|      }
 | 
|  }
 | 
|  
 | 
| 
 |