| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 
|  | 3  * | 
|  | 4  *  Use of this source code is governed by a BSD-style license | 
|  | 5  *  that can be found in the LICENSE file in the root of the source | 
|  | 6  *  tree. An additional intellectual property rights grant can be found | 
|  | 7  *  in the file PATENTS.  All contributing project authors may | 
|  | 8  *  be found in the AUTHORS file in the root of the source tree. | 
|  | 9  */ | 
|  | 10 | 
|  | 11 #include "vpx_ports/config.h" | 
|  | 12 #include "vp8/common/recon.h" | 
|  | 13 #include "recon_x86.h" | 
|  | 14 #include "vpx_mem/vpx_mem.h" | 
|  | 15 | 
|  | 16 #define build_intra_predictors_mbuv_prototype(sym) \ | 
|  | 17     void sym(unsigned char *dst, int dst_stride, \ | 
|  | 18              const unsigned char *src, int src_stride) | 
|  | 19 typedef build_intra_predictors_mbuv_prototype((*build_intra_predictors_mbuv_fn_t
    )); | 
|  | 20 | 
|  | 21 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_dc_mmx2); | 
|  | 22 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_dctop_mmx2); | 
|  | 23 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_dcleft_mmx2); | 
|  | 24 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_dc128_mmx); | 
|  | 25 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_ho_mmx2); | 
|  | 26 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_ho_ssse3); | 
|  | 27 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_ve_mmx); | 
|  | 28 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_tm_sse2); | 
|  | 29 extern build_intra_predictors_mbuv_prototype(vp8_intra_pred_uv_tm_ssse3); | 
|  | 30 | 
|  | 31 static void vp8_build_intra_predictors_mbuv_x86(MACROBLOCKD *x, | 
|  | 32                                                 unsigned char *dst_u, | 
|  | 33                                                 unsigned char *dst_v, | 
|  | 34                                                 int dst_stride, | 
|  | 35                                                 build_intra_predictors_mbuv_fn_t
     tm_func, | 
|  | 36                                                 build_intra_predictors_mbuv_fn_t
     ho_func) | 
|  | 37 { | 
|  | 38     int mode = x->mode_info_context->mbmi.uv_mode; | 
|  | 39     build_intra_predictors_mbuv_fn_t fn; | 
|  | 40     int src_stride = x->dst.uv_stride; | 
|  | 41 | 
|  | 42     switch (mode) { | 
|  | 43         case  V_PRED: fn = vp8_intra_pred_uv_ve_mmx; break; | 
|  | 44         case  H_PRED: fn = ho_func; break; | 
|  | 45         case TM_PRED: fn = tm_func; break; | 
|  | 46         case DC_PRED: | 
|  | 47             if (x->up_available) { | 
|  | 48                 if (x->left_available) { | 
|  | 49                     fn = vp8_intra_pred_uv_dc_mmx2; break; | 
|  | 50                 } else { | 
|  | 51                     fn = vp8_intra_pred_uv_dctop_mmx2; break; | 
|  | 52                 } | 
|  | 53             } else if (x->left_available) { | 
|  | 54                 fn = vp8_intra_pred_uv_dcleft_mmx2; break; | 
|  | 55             } else { | 
|  | 56                 fn = vp8_intra_pred_uv_dc128_mmx; break; | 
|  | 57             } | 
|  | 58             break; | 
|  | 59         default: return; | 
|  | 60     } | 
|  | 61 | 
|  | 62     fn(dst_u, dst_stride, x->dst.u_buffer, src_stride); | 
|  | 63     fn(dst_v, dst_stride, x->dst.v_buffer, src_stride); | 
|  | 64 } | 
|  | 65 | 
|  | 66 void vp8_build_intra_predictors_mbuv_sse2(MACROBLOCKD *x) | 
|  | 67 { | 
|  | 68     vp8_build_intra_predictors_mbuv_x86(x, &x->predictor[256], | 
|  | 69                                         &x->predictor[320], 8, | 
|  | 70                                         vp8_intra_pred_uv_tm_sse2, | 
|  | 71                                         vp8_intra_pred_uv_ho_mmx2); | 
|  | 72 } | 
|  | 73 | 
|  | 74 void vp8_build_intra_predictors_mbuv_ssse3(MACROBLOCKD *x) | 
|  | 75 { | 
|  | 76     vp8_build_intra_predictors_mbuv_x86(x, &x->predictor[256], | 
|  | 77                                         &x->predictor[320], 8, | 
|  | 78                                         vp8_intra_pred_uv_tm_ssse3, | 
|  | 79                                         vp8_intra_pred_uv_ho_ssse3); | 
|  | 80 } | 
|  | 81 | 
|  | 82 void vp8_build_intra_predictors_mbuv_s_sse2(MACROBLOCKD *x) | 
|  | 83 { | 
|  | 84     vp8_build_intra_predictors_mbuv_x86(x, x->dst.u_buffer, | 
|  | 85                                         x->dst.v_buffer, x->dst.uv_stride, | 
|  | 86                                         vp8_intra_pred_uv_tm_sse2, | 
|  | 87                                         vp8_intra_pred_uv_ho_mmx2); | 
|  | 88 } | 
|  | 89 | 
|  | 90 void vp8_build_intra_predictors_mbuv_s_ssse3(MACROBLOCKD *x) | 
|  | 91 { | 
|  | 92     vp8_build_intra_predictors_mbuv_x86(x, x->dst.u_buffer, | 
|  | 93                                         x->dst.v_buffer, x->dst.uv_stride, | 
|  | 94                                         vp8_intra_pred_uv_tm_ssse3, | 
|  | 95                                         vp8_intra_pred_uv_ho_ssse3); | 
|  | 96 } | 
| OLD | NEW | 
|---|