MODE_INFO size reduction
[profile/ivi/libvpx.git] / vp8 / encoder / ethreading.c
index a03ff95..f99ce6d 100644 (file)
@@ -234,8 +234,23 @@ THREAD_FUNCTION thread_encoding_proc(void *p_data)
                     x->mb_activity_ptr++;
                     x->mb_norm_activity_ptr++;
 
-                    for (i = 0; i < 16; i++)
-                        vpx_memcpy(&xd->mode_info_context->bmi[i], &xd->block[i].bmi, sizeof(xd->block[i].bmi));
+                    if(cm->frame_type != INTRA_FRAME)
+                    {
+                        if (xd->mode_info_context->mbmi.mode != B_PRED)
+                        {
+                            for (i = 0; i < 16; i++)
+                                xd->mode_info_context->bmi[i].mv.as_int = xd->block[i].bmi.mv.as_int;
+                        }else
+                        {
+                            for (i = 0; i < 16; i++)
+                                xd->mode_info_context->bmi[i].as_mode = xd->block[i].bmi.mode;
+                        }
+                    }
+                    else {
+                        if(xd->mode_info_context->mbmi.mode != B_PRED)
+                            for (i = 0; i < 16; i++)
+                                xd->mode_info_context->bmi[i].as_mode = xd->block[i].bmi.mode;
+                    }
 
                     // adjust to the next column of macroblocks
                     x->src.y_buffer += 16;