media/libvorbis/lib/backends.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /********************************************************************
     2  *                                                                  *
     3  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
     4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
     5  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
     6  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
     7  *                                                                  *
     8  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
     9  * by the Xiph.Org Foundation http://www.xiph.org/                  *
    10  *                                                                  *
    11  ********************************************************************
    13  function: libvorbis backend and mapping structures; needed for
    14            static mode headers
    15  last mod: $Id: backends.h 16962 2010-03-11 07:30:34Z xiphmont $
    17  ********************************************************************/
    19 /* this is exposed up here because we need it for static modes.
    20    Lookups for each backend aren't exposed because there's no reason
    21    to do so */
    23 #ifndef _vorbis_backend_h_
    24 #define _vorbis_backend_h_
    26 #include "codec_internal.h"
    28 /* this would all be simpler/shorter with templates, but.... */
    29 /* Floor backend generic *****************************************/
    30 typedef struct{
    31   void                   (*pack)  (vorbis_info_floor *,oggpack_buffer *);
    32   vorbis_info_floor     *(*unpack)(vorbis_info *,oggpack_buffer *);
    33   vorbis_look_floor     *(*look)  (vorbis_dsp_state *,vorbis_info_floor *);
    34   void (*free_info) (vorbis_info_floor *);
    35   void (*free_look) (vorbis_look_floor *);
    36   void *(*inverse1)  (struct vorbis_block *,vorbis_look_floor *);
    37   int   (*inverse2)  (struct vorbis_block *,vorbis_look_floor *,
    38                      void *buffer,float *);
    39 } vorbis_func_floor;
    41 typedef struct{
    42   int   order;
    43   long  rate;
    44   long  barkmap;
    46   int   ampbits;
    47   int   ampdB;
    49   int   numbooks; /* <= 16 */
    50   int   books[16];
    52   float lessthan;     /* encode-only config setting hacks for libvorbis */
    53   float greaterthan;  /* encode-only config setting hacks for libvorbis */
    55 } vorbis_info_floor0;
    58 #define VIF_POSIT 63
    59 #define VIF_CLASS 16
    60 #define VIF_PARTS 31
    61 typedef struct{
    62   int   partitions;                /* 0 to 31 */
    63   int   partitionclass[VIF_PARTS]; /* 0 to 15 */
    65   int   class_dim[VIF_CLASS];        /* 1 to 8 */
    66   int   class_subs[VIF_CLASS];       /* 0,1,2,3 (bits: 1<<n poss) */
    67   int   class_book[VIF_CLASS];       /* subs ^ dim entries */
    68   int   class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
    71   int   mult;                      /* 1 2 3 or 4 */
    72   int   postlist[VIF_POSIT+2];    /* first two implicit */
    75   /* encode side analysis parameters */
    76   float maxover;
    77   float maxunder;
    78   float maxerr;
    80   float twofitweight;
    81   float twofitatten;
    83   int   n;
    85 } vorbis_info_floor1;
    87 /* Residue backend generic *****************************************/
    88 typedef struct{
    89   void                 (*pack)  (vorbis_info_residue *,oggpack_buffer *);
    90   vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
    91   vorbis_look_residue *(*look)  (vorbis_dsp_state *,
    92                                  vorbis_info_residue *);
    93   void (*free_info)    (vorbis_info_residue *);
    94   void (*free_look)    (vorbis_look_residue *);
    95   long **(*class)      (struct vorbis_block *,vorbis_look_residue *,
    96                         int **,int *,int);
    97   int  (*forward)      (oggpack_buffer *,struct vorbis_block *,
    98                         vorbis_look_residue *,
    99                         int **,int *,int,long **,int);
   100   int  (*inverse)      (struct vorbis_block *,vorbis_look_residue *,
   101                         float **,int *,int);
   102 } vorbis_func_residue;
   104 typedef struct vorbis_info_residue0{
   105 /* block-partitioned VQ coded straight residue */
   106   long  begin;
   107   long  end;
   109   /* first stage (lossless partitioning) */
   110   int    grouping;         /* group n vectors per partition */
   111   int    partitions;       /* possible codebooks for a partition */
   112   int    partvals;         /* partitions ^ groupbook dim */
   113   int    groupbook;        /* huffbook for partitioning */
   114   int    secondstages[64]; /* expanded out to pointers in lookup */
   115   int    booklist[512];    /* list of second stage books */
   117   const int classmetric1[64];
   118   const int classmetric2[64];
   119 } vorbis_info_residue0;
   121 /* Mapping backend generic *****************************************/
   122 typedef struct{
   123   void                 (*pack)  (vorbis_info *,vorbis_info_mapping *,
   124                                  oggpack_buffer *);
   125   vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
   126   void (*free_info)    (vorbis_info_mapping *);
   127   int  (*forward)      (struct vorbis_block *vb);
   128   int  (*inverse)      (struct vorbis_block *vb,vorbis_info_mapping *);
   129 } vorbis_func_mapping;
   131 typedef struct vorbis_info_mapping0{
   132   int   submaps;  /* <= 16 */
   133   int   chmuxlist[256];   /* up to 256 channels in a Vorbis stream */
   135   int   floorsubmap[16];   /* [mux] submap to floors */
   136   int   residuesubmap[16]; /* [mux] submap to residue */
   138   int   coupling_steps;
   139   int   coupling_mag[256];
   140   int   coupling_ang[256];
   142 } vorbis_info_mapping0;
   144 #endif

mercurial