tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

backends.h (5151B)


      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 https://xiph.org/                     *
     10 *                                                                  *
     11 ********************************************************************
     12 
     13 function: libvorbis backend and mapping structures; needed for
     14           static mode headers
     15 
     16 ********************************************************************/
     17 
     18 /* this is exposed up here because we need it for static modes.
     19   Lookups for each backend aren't exposed because there's no reason
     20   to do so */
     21 
     22 #ifndef _vorbis_backend_h_
     23 #define _vorbis_backend_h_
     24 
     25 #include "codec_internal.h"
     26 
     27 /* this would all be simpler/shorter with templates, but.... */
     28 /* Floor backend generic *****************************************/
     29 typedef struct{
     30  void                   (*pack)  (vorbis_info_floor *,oggpack_buffer *);
     31  vorbis_info_floor     *(*unpack)(vorbis_info *,oggpack_buffer *);
     32  vorbis_look_floor     *(*look)  (vorbis_dsp_state *,vorbis_info_floor *);
     33  void (*free_info) (vorbis_info_floor *);
     34  void (*free_look) (vorbis_look_floor *);
     35  void *(*inverse1)  (struct vorbis_block *,vorbis_look_floor *);
     36  int   (*inverse2)  (struct vorbis_block *,vorbis_look_floor *,
     37                     void *buffer,float *);
     38 } vorbis_func_floor;
     39 
     40 typedef struct{
     41  int   order;
     42  long  rate;
     43  long  barkmap;
     44 
     45  int   ampbits;
     46  int   ampdB;
     47 
     48  int   numbooks; /* <= 16 */
     49  int   books[16];
     50 
     51  float lessthan;     /* encode-only config setting hacks for libvorbis */
     52  float greaterthan;  /* encode-only config setting hacks for libvorbis */
     53 
     54 } vorbis_info_floor0;
     55 
     56 
     57 #define VIF_POSIT 63
     58 #define VIF_CLASS 16
     59 #define VIF_PARTS 31
     60 typedef struct{
     61  int   partitions;                /* 0 to 31 */
     62  int   partitionclass[VIF_PARTS]; /* 0 to 15 */
     63 
     64  int   class_dim[VIF_CLASS];        /* 1 to 8 */
     65  int   class_subs[VIF_CLASS];       /* 0,1,2,3 (bits: 1<<n poss) */
     66  int   class_book[VIF_CLASS];       /* subs ^ dim entries */
     67  int   class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
     68 
     69 
     70  int   mult;                      /* 1 2 3 or 4 */
     71  int   postlist[VIF_POSIT+2];    /* first two implicit */
     72 
     73 
     74  /* encode side analysis parameters */
     75  float maxover;
     76  float maxunder;
     77  float maxerr;
     78 
     79  float twofitweight;
     80  float twofitatten;
     81 
     82  int   n;
     83 
     84 } vorbis_info_floor1;
     85 
     86 /* Residue backend generic *****************************************/
     87 typedef struct{
     88  void                 (*pack)  (vorbis_info_residue *,oggpack_buffer *);
     89  vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
     90  vorbis_look_residue *(*look)  (vorbis_dsp_state *,
     91                                 vorbis_info_residue *);
     92  void (*free_info)    (vorbis_info_residue *);
     93  void (*free_look)    (vorbis_look_residue *);
     94  long **(*class)      (struct vorbis_block *,vorbis_look_residue *,
     95                        int **,int *,int);
     96  int  (*forward)      (oggpack_buffer *,struct vorbis_block *,
     97                        vorbis_look_residue *,
     98                        int **,int *,int,long **,int);
     99  int  (*inverse)      (struct vorbis_block *,vorbis_look_residue *,
    100                        float **,int *,int);
    101 } vorbis_func_residue;
    102 
    103 typedef struct vorbis_info_residue0{
    104 /* block-partitioned VQ coded straight residue */
    105  long  begin;
    106  long  end;
    107 
    108  /* first stage (lossless partitioning) */
    109  int    grouping;         /* group n vectors per partition */
    110  int    partitions;       /* possible codebooks for a partition */
    111  int    partvals;         /* partitions ^ groupbook dim */
    112  int    groupbook;        /* huffbook for partitioning */
    113  int    secondstages[64]; /* expanded out to pointers in lookup */
    114  int    booklist[512];    /* list of second stage books */
    115 
    116  const int classmetric1[64];
    117  const int classmetric2[64];
    118 } vorbis_info_residue0;
    119 
    120 /* Mapping backend generic *****************************************/
    121 typedef struct{
    122  void                 (*pack)  (vorbis_info *,vorbis_info_mapping *,
    123                                 oggpack_buffer *);
    124  vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
    125  void (*free_info)    (vorbis_info_mapping *);
    126  int  (*forward)      (struct vorbis_block *vb);
    127  int  (*inverse)      (struct vorbis_block *vb,vorbis_info_mapping *);
    128 } vorbis_func_mapping;
    129 
    130 typedef struct vorbis_info_mapping0{
    131  int   submaps;  /* <= 16 */
    132  int   chmuxlist[256];   /* up to 256 channels in a Vorbis stream */
    133 
    134  int   floorsubmap[16];   /* [mux] submap to floors */
    135  int   residuesubmap[16]; /* [mux] submap to residue */
    136 
    137  int   coupling_steps;
    138  int   coupling_mag[256];
    139  int   coupling_ang[256];
    140 
    141 } vorbis_info_mapping0;
    142 
    143 #endif