LCOV - code coverage report
Current view: directory - media/libvpx/vp8/common/x86 - recon_wrapper_sse2.c (source / functions) Found Hit Coverage
Test: app.info Lines: 29 0 0.0 %
Date: 2012-06-02 Functions: 5 0 0.0 %

       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               0 : 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               0 :     int mode = x->mode_info_context->mbmi.uv_mode;
      39                 :     build_intra_predictors_mbuv_fn_t fn;
      40               0 :     int src_stride = x->dst.uv_stride;
      41                 : 
      42               0 :     switch (mode) {
      43               0 :         case  V_PRED: fn = vp8_intra_pred_uv_ve_mmx; break;
      44               0 :         case  H_PRED: fn = ho_func; break;
      45               0 :         case TM_PRED: fn = tm_func; break;
      46                 :         case DC_PRED:
      47               0 :             if (x->up_available) {
      48               0 :                 if (x->left_available) {
      49               0 :                     fn = vp8_intra_pred_uv_dc_mmx2; break;
      50                 :                 } else {
      51               0 :                     fn = vp8_intra_pred_uv_dctop_mmx2; break;
      52                 :                 }
      53               0 :             } else if (x->left_available) {
      54               0 :                 fn = vp8_intra_pred_uv_dcleft_mmx2; break;
      55                 :             } else {
      56               0 :                 fn = vp8_intra_pred_uv_dc128_mmx; break;
      57                 :             }
      58                 :             break;
      59               0 :         default: return;
      60                 :     }
      61                 : 
      62               0 :     fn(dst_u, dst_stride, x->dst.u_buffer, src_stride);
      63               0 :     fn(dst_v, dst_stride, x->dst.v_buffer, src_stride);
      64                 : }
      65                 : 
      66               0 : void vp8_build_intra_predictors_mbuv_sse2(MACROBLOCKD *x)
      67                 : {
      68               0 :     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               0 : }
      73                 : 
      74               0 : void vp8_build_intra_predictors_mbuv_ssse3(MACROBLOCKD *x)
      75                 : {
      76               0 :     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               0 : }
      81                 : 
      82               0 : void vp8_build_intra_predictors_mbuv_s_sse2(MACROBLOCKD *x)
      83                 : {
      84               0 :     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               0 : }
      89                 : 
      90               0 : void vp8_build_intra_predictors_mbuv_s_ssse3(MACROBLOCKD *x)
      91                 : {
      92               0 :     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               0 : }

Generated by: LCOV version 1.7