media/libvpx/vp8/common/x86/idct_blk_sse2.c

Thu, 15 Jan 2015 15:59:08 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:59:08 +0100
branch
TOR_BUG_9701
changeset 10
ac0c01689b40
permissions
-rw-r--r--

Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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  */
    11 #include "vpx_config.h"
    12 #include "vp8_rtcd.h"
    14 void vp8_idct_dequant_0_2x_sse2
    15             (short *q, short *dq ,
    16              unsigned char *dst, int dst_stride);
    17 void vp8_idct_dequant_full_2x_sse2
    18             (short *q, short *dq ,
    19              unsigned char *dst, int dst_stride);
    21 void vp8_dequant_idct_add_y_block_sse2
    22             (short *q, short *dq,
    23              unsigned char *dst, int stride, char *eobs)
    24 {
    25     int i;
    27     for (i = 0; i < 4; i++)
    28     {
    29         if (((short *)(eobs))[0])
    30         {
    31             if (((short *)(eobs))[0] & 0xfefe)
    32                 vp8_idct_dequant_full_2x_sse2 (q, dq, dst, stride);
    33             else
    34                 vp8_idct_dequant_0_2x_sse2 (q, dq, dst, stride);
    35         }
    36         if (((short *)(eobs))[1])
    37         {
    38             if (((short *)(eobs))[1] & 0xfefe)
    39                 vp8_idct_dequant_full_2x_sse2 (q+32, dq, dst+8, stride);
    40             else
    41                 vp8_idct_dequant_0_2x_sse2 (q+32, dq, dst+8, stride);
    42         }
    43         q    += 64;
    44         dst  += stride*4;
    45         eobs += 4;
    46     }
    47 }
    49 void vp8_dequant_idct_add_uv_block_sse2
    50             (short *q, short *dq,
    51              unsigned char *dstu, unsigned char *dstv, int stride, char *eobs)
    52 {
    53     if (((short *)(eobs))[0])
    54     {
    55         if (((short *)(eobs))[0] & 0xfefe)
    56             vp8_idct_dequant_full_2x_sse2 (q, dq, dstu, stride);
    57         else
    58             vp8_idct_dequant_0_2x_sse2 (q, dq, dstu, stride);
    59     }
    60     q    += 32;
    61     dstu += stride*4;
    63     if (((short *)(eobs))[1])
    64     {
    65         if (((short *)(eobs))[1] & 0xfefe)
    66             vp8_idct_dequant_full_2x_sse2 (q, dq, dstu, stride);
    67         else
    68             vp8_idct_dequant_0_2x_sse2 (q, dq, dstu, stride);
    69     }
    70     q    += 32;
    72     if (((short *)(eobs))[2])
    73     {
    74         if (((short *)(eobs))[2] & 0xfefe)
    75             vp8_idct_dequant_full_2x_sse2 (q, dq, dstv, stride);
    76         else
    77             vp8_idct_dequant_0_2x_sse2 (q, dq, dstv, stride);
    78     }
    79     q    += 32;
    80     dstv += stride*4;
    82     if (((short *)(eobs))[3])
    83     {
    84       if (((short *)(eobs))[3] & 0xfefe)
    85           vp8_idct_dequant_full_2x_sse2 (q, dq, dstv, stride);
    86       else
    87           vp8_idct_dequant_0_2x_sse2 (q, dq, dstv, stride);
    88     }
    89 }

mercurial