Thu, 15 Jan 2015 15:59:08 +0100
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 }