LCOV - code coverage report
Current view: directory - media/libvpx/vp8/common/x86 - loopfilter_x86.c (source / functions) Found Hit Coverage
Test: app.info Lines: 76 0 0.0 %
Date: 2012-06-02 Functions: 12 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                 : 
      12                 : #include "vpx_config.h"
      13                 : #include "vp8/common/loopfilter.h"
      14                 : 
      15                 : prototype_loopfilter(vp8_mbloop_filter_vertical_edge_mmx);
      16                 : prototype_loopfilter(vp8_mbloop_filter_horizontal_edge_mmx);
      17                 : prototype_loopfilter(vp8_loop_filter_vertical_edge_mmx);
      18                 : prototype_loopfilter(vp8_loop_filter_horizontal_edge_mmx);
      19                 : 
      20                 : prototype_loopfilter(vp8_loop_filter_vertical_edge_sse2);
      21                 : prototype_loopfilter(vp8_loop_filter_horizontal_edge_sse2);
      22                 : prototype_loopfilter(vp8_mbloop_filter_vertical_edge_sse2);
      23                 : prototype_loopfilter(vp8_mbloop_filter_horizontal_edge_sse2);
      24                 : 
      25                 : extern loop_filter_uvfunction vp8_loop_filter_horizontal_edge_uv_sse2;
      26                 : extern loop_filter_uvfunction vp8_loop_filter_vertical_edge_uv_sse2;
      27                 : extern loop_filter_uvfunction vp8_mbloop_filter_horizontal_edge_uv_sse2;
      28                 : extern loop_filter_uvfunction vp8_mbloop_filter_vertical_edge_uv_sse2;
      29                 : 
      30                 : #if HAVE_MMX
      31                 : /* Horizontal MB filtering */
      32               0 : void vp8_loop_filter_mbh_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
      33                 :                              int y_stride, int uv_stride, loop_filter_info *lfi)
      34                 : {
      35               0 :     vp8_mbloop_filter_horizontal_edge_mmx(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
      36                 : 
      37               0 :     if (u_ptr)
      38               0 :         vp8_mbloop_filter_horizontal_edge_mmx(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
      39                 : 
      40               0 :     if (v_ptr)
      41               0 :         vp8_mbloop_filter_horizontal_edge_mmx(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
      42               0 : }
      43                 : 
      44                 : 
      45                 : /* Vertical MB Filtering */
      46               0 : void vp8_loop_filter_mbv_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
      47                 :                              int y_stride, int uv_stride, loop_filter_info *lfi)
      48                 : {
      49               0 :     vp8_mbloop_filter_vertical_edge_mmx(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
      50                 : 
      51               0 :     if (u_ptr)
      52               0 :         vp8_mbloop_filter_vertical_edge_mmx(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
      53                 : 
      54               0 :     if (v_ptr)
      55               0 :         vp8_mbloop_filter_vertical_edge_mmx(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1);
      56               0 : }
      57                 : 
      58                 : 
      59                 : /* Horizontal B Filtering */
      60               0 : void vp8_loop_filter_bh_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
      61                 :                             int y_stride, int uv_stride, loop_filter_info *lfi)
      62                 : {
      63               0 :     vp8_loop_filter_horizontal_edge_mmx(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
      64               0 :     vp8_loop_filter_horizontal_edge_mmx(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
      65               0 :     vp8_loop_filter_horizontal_edge_mmx(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
      66                 : 
      67               0 :     if (u_ptr)
      68               0 :         vp8_loop_filter_horizontal_edge_mmx(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
      69                 : 
      70               0 :     if (v_ptr)
      71               0 :         vp8_loop_filter_horizontal_edge_mmx(v_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
      72               0 : }
      73                 : 
      74                 : 
      75               0 : void vp8_loop_filter_bhs_mmx(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
      76                 : {
      77               0 :     vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 4 * y_stride, y_stride, blimit);
      78               0 :     vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 8 * y_stride, y_stride, blimit);
      79               0 :     vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 12 * y_stride, y_stride, blimit);
      80               0 : }
      81                 : 
      82                 : 
      83                 : /* Vertical B Filtering */
      84               0 : void vp8_loop_filter_bv_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
      85                 :                             int y_stride, int uv_stride, loop_filter_info *lfi)
      86                 : {
      87               0 :     vp8_loop_filter_vertical_edge_mmx(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
      88               0 :     vp8_loop_filter_vertical_edge_mmx(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
      89               0 :     vp8_loop_filter_vertical_edge_mmx(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
      90                 : 
      91               0 :     if (u_ptr)
      92               0 :         vp8_loop_filter_vertical_edge_mmx(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
      93                 : 
      94               0 :     if (v_ptr)
      95               0 :         vp8_loop_filter_vertical_edge_mmx(v_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1);
      96               0 : }
      97                 : 
      98                 : 
      99               0 : void vp8_loop_filter_bvs_mmx(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
     100                 : {
     101               0 :     vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 4, y_stride, blimit);
     102               0 :     vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 8, y_stride, blimit);
     103               0 :     vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 12, y_stride, blimit);
     104               0 : }
     105                 : #endif
     106                 : 
     107                 : 
     108                 : /* Horizontal MB filtering */
     109                 : #if HAVE_SSE2
     110               0 : void vp8_loop_filter_mbh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
     111                 :                               int y_stride, int uv_stride, loop_filter_info *lfi)
     112                 : {
     113               0 :     vp8_mbloop_filter_horizontal_edge_sse2(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
     114                 : 
     115               0 :     if (u_ptr)
     116               0 :         vp8_mbloop_filter_horizontal_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, v_ptr);
     117               0 : }
     118                 : 
     119                 : 
     120                 : /* Vertical MB Filtering */
     121               0 : void vp8_loop_filter_mbv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
     122                 :                               int y_stride, int uv_stride, loop_filter_info *lfi)
     123                 : {
     124               0 :     vp8_mbloop_filter_vertical_edge_sse2(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2);
     125                 : 
     126               0 :     if (u_ptr)
     127               0 :         vp8_mbloop_filter_vertical_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, v_ptr);
     128               0 : }
     129                 : 
     130                 : 
     131                 : /* Horizontal B Filtering */
     132               0 : void vp8_loop_filter_bh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
     133                 :                              int y_stride, int uv_stride, loop_filter_info *lfi)
     134                 : {
     135               0 :     vp8_loop_filter_horizontal_edge_sse2(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
     136               0 :     vp8_loop_filter_horizontal_edge_sse2(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
     137               0 :     vp8_loop_filter_horizontal_edge_sse2(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
     138                 : 
     139               0 :     if (u_ptr)
     140               0 :         vp8_loop_filter_horizontal_edge_uv_sse2(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, v_ptr + 4 * uv_stride);
     141               0 : }
     142                 : 
     143                 : 
     144               0 : void vp8_loop_filter_bhs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
     145                 : {
     146               0 :     vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 4 * y_stride, y_stride, blimit);
     147               0 :     vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 8 * y_stride, y_stride, blimit);
     148               0 :     vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 12 * y_stride, y_stride, blimit);
     149               0 : }
     150                 : 
     151                 : 
     152                 : /* Vertical B Filtering */
     153               0 : void vp8_loop_filter_bv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
     154                 :                              int y_stride, int uv_stride, loop_filter_info *lfi)
     155                 : {
     156               0 :     vp8_loop_filter_vertical_edge_sse2(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
     157               0 :     vp8_loop_filter_vertical_edge_sse2(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
     158               0 :     vp8_loop_filter_vertical_edge_sse2(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2);
     159                 : 
     160               0 :     if (u_ptr)
     161               0 :         vp8_loop_filter_vertical_edge_uv_sse2(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, v_ptr + 4);
     162               0 : }
     163                 : 
     164                 : 
     165               0 : void vp8_loop_filter_bvs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit)
     166                 : {
     167               0 :     vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 4, y_stride, blimit);
     168               0 :     vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 8, y_stride, blimit);
     169               0 :     vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 12, y_stride, blimit);
     170               0 : }
     171                 : 
     172                 : #endif

Generated by: LCOV version 1.7