media/libvpx/vp9/common/vp9_scale.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) 2013 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_SCALE_H_
    12 #define VP9_COMMON_VP9_SCALE_H_
    14 #include "vp9/common/vp9_mv.h"
    15 #include "vp9/common/vp9_convolve.h"
    17 #define REF_SCALE_SHIFT 14
    18 #define REF_NO_SCALE (1 << REF_SCALE_SHIFT)
    19 #define REF_INVALID_SCALE -1
    21 struct scale_factors;
    22 struct scale_factors_common {
    23   int x_scale_fp;   // horizontal fixed point scale factor
    24   int y_scale_fp;   // vertical fixed point scale factor
    25   int x_step_q4;
    26   int y_step_q4;
    28   int (*scale_value_x)(int val, const struct scale_factors_common *sfc);
    29   int (*scale_value_y)(int val, const struct scale_factors_common *sfc);
    30   void (*set_scaled_offsets)(struct scale_factors *scale, int row, int col);
    31   MV32 (*scale_mv)(const MV *mv, const struct scale_factors *scale);
    33   convolve_fn_t predict[2][2][2];  // horiz, vert, avg
    34 };
    36 struct scale_factors {
    37   int x_offset_q4;
    38   int y_offset_q4;
    39   const struct scale_factors_common *sfc;
    40 };
    42 void vp9_setup_scale_factors_for_frame(struct scale_factors *scale,
    43                                        struct scale_factors_common *scale_comm,
    44                                        int other_w, int other_h,
    45                                        int this_w, int this_h);
    47 static int vp9_is_valid_scale(const struct scale_factors_common *sfc) {
    48   return sfc->x_scale_fp != REF_INVALID_SCALE &&
    49          sfc->y_scale_fp != REF_INVALID_SCALE;
    50 }
    52 static int vp9_is_scaled(const struct scale_factors_common *sfc) {
    53   return sfc->x_scale_fp != REF_NO_SCALE ||
    54          sfc->y_scale_fp != REF_NO_SCALE;
    55 }
    57 #endif  // VP9_COMMON_VP9_SCALE_H_

mercurial