media/libvpx/vp9/common/vp9_idct.h

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 #ifndef VP9_COMMON_VP9_IDCT_H_
    12 #define VP9_COMMON_VP9_IDCT_H_
    14 #include <assert.h>
    16 #include "./vpx_config.h"
    17 #include "vpx/vpx_integer.h"
    18 #include "vp9/common/vp9_common.h"
    19 #include "vp9/common/vp9_enums.h"
    22 // Constants and Macros used by all idct/dct functions
    23 #define DCT_CONST_BITS 14
    24 #define DCT_CONST_ROUNDING  (1 << (DCT_CONST_BITS - 1))
    26 #define UNIT_QUANT_SHIFT 2
    27 #define UNIT_QUANT_FACTOR (1 << UNIT_QUANT_SHIFT)
    29 #define pair_set_epi16(a, b) \
    30   _mm_set_epi16(b, a, b, a, b, a, b, a)
    32 #define pair_set_epi32(a, b) \
    33   _mm_set_epi32(b, a, b, a)
    35 // Constants:
    36 //  for (int i = 1; i< 32; ++i)
    37 //    printf("static const int cospi_%d_64 = %.0f;\n", i,
    38 //           round(16384 * cos(i*M_PI/64)));
    39 // Note: sin(k*Pi/64) = cos((32-k)*Pi/64)
    40 static const int cospi_1_64  = 16364;
    41 static const int cospi_2_64  = 16305;
    42 static const int cospi_3_64  = 16207;
    43 static const int cospi_4_64  = 16069;
    44 static const int cospi_5_64  = 15893;
    45 static const int cospi_6_64  = 15679;
    46 static const int cospi_7_64  = 15426;
    47 static const int cospi_8_64  = 15137;
    48 static const int cospi_9_64  = 14811;
    49 static const int cospi_10_64 = 14449;
    50 static const int cospi_11_64 = 14053;
    51 static const int cospi_12_64 = 13623;
    52 static const int cospi_13_64 = 13160;
    53 static const int cospi_14_64 = 12665;
    54 static const int cospi_15_64 = 12140;
    55 static const int cospi_16_64 = 11585;
    56 static const int cospi_17_64 = 11003;
    57 static const int cospi_18_64 = 10394;
    58 static const int cospi_19_64 = 9760;
    59 static const int cospi_20_64 = 9102;
    60 static const int cospi_21_64 = 8423;
    61 static const int cospi_22_64 = 7723;
    62 static const int cospi_23_64 = 7005;
    63 static const int cospi_24_64 = 6270;
    64 static const int cospi_25_64 = 5520;
    65 static const int cospi_26_64 = 4756;
    66 static const int cospi_27_64 = 3981;
    67 static const int cospi_28_64 = 3196;
    68 static const int cospi_29_64 = 2404;
    69 static const int cospi_30_64 = 1606;
    70 static const int cospi_31_64 = 804;
    72 //  16384 * sqrt(2) * sin(kPi/9) * 2 / 3
    73 static const int sinpi_1_9 = 5283;
    74 static const int sinpi_2_9 = 9929;
    75 static const int sinpi_3_9 = 13377;
    76 static const int sinpi_4_9 = 15212;
    78 static INLINE int dct_const_round_shift(int input) {
    79   int rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
    80   return (int16_t)rv;
    81 }
    83 typedef void (*transform_1d)(const int16_t*, int16_t*);
    85 typedef struct {
    86   transform_1d cols, rows;  // vertical and horizontal
    87 } transform_2d;
    89 void vp9_iwht4x4_add(const int16_t *input, uint8_t *dest, int stride, int eob);
    91 void vp9_idct4x4_add(const int16_t *input, uint8_t *dest, int stride, int eob);
    92 void vp9_idct8x8_add(const int16_t *input, uint8_t *dest, int stride, int eob);
    93 void vp9_idct16x16_add(const int16_t *input, uint8_t *dest, int stride, int
    94                        eob);
    95 void vp9_idct32x32_add(const int16_t *input, uint8_t *dest, int stride,
    96                        int eob);
    98 void vp9_iht4x4_add(TX_TYPE tx_type, const int16_t *input, uint8_t *dest,
    99                     int stride, int eob);
   100 void vp9_iht8x8_add(TX_TYPE tx_type, const int16_t *input, uint8_t *dest,
   101                     int stride, int eob);
   102 void vp9_iht16x16_add(TX_TYPE tx_type, const int16_t *input, uint8_t *dest,
   103                       int stride, int eob);
   106 #endif  // VP9_COMMON_VP9_IDCT_H_

mercurial