media/libvpx/vp9/encoder/vp9_write_bit_buffer.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_BIT_WRITE_BUFFER_H_
    12 #define VP9_BIT_WRITE_BUFFER_H_
    14 #include <limits.h>
    16 #include "vpx/vpx_integer.h"
    18 struct vp9_write_bit_buffer {
    19   uint8_t *bit_buffer;
    20   size_t bit_offset;
    21 };
    23 static size_t vp9_rb_bytes_written(struct vp9_write_bit_buffer *wb) {
    24   return wb->bit_offset / CHAR_BIT + (wb->bit_offset % CHAR_BIT > 0);
    25 }
    27 static void vp9_wb_write_bit(struct vp9_write_bit_buffer *wb, int bit) {
    28   const int off = wb->bit_offset;
    29   const int p = off / CHAR_BIT;
    30   const int q = CHAR_BIT - 1 - off % CHAR_BIT;
    31   if (q == CHAR_BIT -1) {
    32     wb->bit_buffer[p] = bit << q;
    33   } else {
    34     wb->bit_buffer[p] &= ~(1 << q);
    35     wb->bit_buffer[p] |= bit << q;
    36   }
    37   wb->bit_offset = off + 1;
    38 }
    40 static void vp9_wb_write_literal(struct vp9_write_bit_buffer *wb,
    41                               int data, int bits) {
    42   int bit;
    43   for (bit = bits - 1; bit >= 0; bit--)
    44     vp9_wb_write_bit(wb, (data >> bit) & 1);
    45 }
    48 #endif  // VP9_BIT_WRITE_BUFFER_H_

mercurial