tor-browser

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

txfm_graph.h (7297B)


      1 /*
      2 * Copyright (c) 2018, Alliance for Open Media. All rights reserved.
      3 *
      4 * This source code is subject to the terms of the BSD 2 Clause License and
      5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
      6 * was not distributed with this source code in the LICENSE file, you can
      7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
      8 * Media Patent License 1.0 was not distributed with this source code in the
      9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
     10 */
     11 
     12 #ifndef AOM_TOOLS_TXFM_ANALYZER_TXFM_GRAPH_H_
     13 #define AOM_TOOLS_TXFM_ANALYZER_TXFM_GRAPH_H_
     14 
     15 struct Node {
     16  Node *inNode[2];
     17  int inNodeNum;
     18  int inNodeIdx[2];
     19  double inWeight[2];
     20  double value;
     21  int nodeIdx;
     22  int stageIdx;
     23  int visited;
     24 };
     25 
     26 #define STAGENUM (10)
     27 #define NODENUM (32)
     28 #define COS_MOD (128)
     29 
     30 typedef enum {
     31  TYPE_DCT = 0,
     32  TYPE_ADST,
     33  TYPE_IDCT,
     34  TYPE_IADST,
     35  TYPE_LAST
     36 } TYPE_TXFM;
     37 
     38 TYPE_TXFM get_inv_type(TYPE_TXFM type);
     39 void get_fun_name(char *str_fun_name, int str_buf_size, const TYPE_TXFM type,
     40                  const int txfm_size);
     41 
     42 void get_txfm_type_name(char *str_fun_name, int str_buf_size,
     43                        const TYPE_TXFM type, const int txfm_size);
     44 void get_hybrid_2d_type_name(char *buf, int buf_size, const TYPE_TXFM type0,
     45                             const TYPE_TXFM type1, const int txfm_size0,
     46                             const int txfm_size1);
     47 unsigned int get_max_bit(unsigned int x);
     48 unsigned int bitwise_reverse(unsigned int x, int max_bit);
     49 int get_idx(int ri, int ci, int cSize);
     50 
     51 int get_dct_stage_num(int size);
     52 void reference_dct_1d(double *in, double *out, int size);
     53 void reference_dct_2d(double *in, double *out, int size);
     54 void connect_node(Node *node, int stage_num, int node_num, int stage_idx,
     55                  int node_idx, int in0, double w0, int in1, double w1);
     56 void propagate(Node *node, int stage_num, int node_num, int stage);
     57 void init_graph(Node *node, int stage_num, int node_num);
     58 void graph_reset_visited(Node *node, int stage_num, int node_num);
     59 void gen_B_graph(Node *node, int stage_num, int node_num, int stage_idx,
     60                 int node_idx, int N, int star);
     61 void gen_P_graph(Node *node, int stage_num, int node_num, int stage_idx,
     62                 int node_idx, int N);
     63 
     64 void gen_type1_graph(Node *node, int stage_num, int node_num, int stage_idx,
     65                     int node_idx, int N);
     66 void gen_type2_graph(Node *node, int stage_num, int node_num, int stage_idx,
     67                     int node_idx, int N);
     68 void gen_type3_graph(Node *node, int stage_num, int node_num, int stage_idx,
     69                     int node_idx, int idx, int N);
     70 void gen_type4_graph(Node *node, int stage_num, int node_num, int stage_idx,
     71                     int node_idx, int idx, int N);
     72 
     73 void gen_R_graph(Node *node, int stage_num, int node_num, int stage_idx,
     74                 int node_idx, int N);
     75 
     76 void gen_DCT_graph(Node *node, int stage_num, int node_num, int stage_idx,
     77                   int node_idx, int N);
     78 
     79 void gen_DCT_graph_1d(Node *node, int stage_num, int node_num, int stage_idx,
     80                      int node_idx, int dct_node_num);
     81 void connect_layer_2d(Node *node, int stage_num, int node_num, int stage_idx,
     82                      int node_idx, int dct_node_num);
     83 
     84 void gen_DCT_graph_2d(Node *node, int stage_num, int node_num, int stage_idx,
     85                      int node_idx, int dct_node_num);
     86 
     87 void gen_adst_B_graph(Node *node, int stage_num, int node_num, int stage_idx,
     88                      int node_idx, int adst_idx);
     89 
     90 void gen_adst_U_graph(Node *node, int stage_num, int node_num, int stage_idx,
     91                      int node_idx, int adst_idx, int adst_node_num);
     92 void gen_adst_T_graph(Node *node, int stage_num, int node_num, int stage_idx,
     93                      int node_idx, double freq);
     94 
     95 void gen_adst_E_graph(Node *node, int stage_num, int node_num, int stage_idx,
     96                      int node_idx, int adst_idx);
     97 
     98 void gen_adst_V_graph(Node *node, int stage_num, int node_num, int stage_idx,
     99                      int node_idx, int adst_idx, int adst_node_num);
    100 
    101 void gen_adst_VJ_graph(Node *node, int stage_num, int node_num, int stage_idx,
    102                       int node_idx, int adst_node_num);
    103 void gen_adst_Q_graph(Node *node, int stage_num, int node_num, int stage_idx,
    104                      int node_idx, int adst_node_num);
    105 void gen_adst_Ibar_graph(Node *node, int stage_num, int node_num, int stage_idx,
    106                         int node_idx, int adst_node_num);
    107 
    108 void gen_adst_D_graph(Node *node, int stage_num, int node_num, int stage_idx,
    109                      int node_idx, int adst_node_num);
    110 
    111 int get_hadamard_idx(int x, int adst_node_num);
    112 void gen_adst_Ht_graph(Node *node, int stage_num, int node_num, int stage_idx,
    113                       int node_idx, int adst_node_num);
    114 
    115 int gen_adst_graph(Node *node, int stage_num, int node_num, int stage_idx,
    116                   int node_idx, int adst_node_num);
    117 int gen_iadst_graph(Node *node, int stage_num, int node_num, int stage_idx,
    118                    int node_idx, int adst_node_num);
    119 void reference_adst_1d(double *in, double *out, int size);
    120 
    121 int get_adst_stage_num(int adst_node_num);
    122 int get_hybrid_stage_num(int type, int hybrid_node_num);
    123 int get_hybrid_2d_stage_num(int type0, int type1, int hybrid_node_num);
    124 int get_hybrid_2d_stage_num_new(int type0, int type1, int hybrid_node_num0,
    125                                int hybrid_node_num1);
    126 int get_hybrid_amplify_factor(int type, int hybrid_node_num);
    127 void gen_hybrid_graph_1d(Node *node, int stage_num, int node_num, int stage_idx,
    128                         int node_idx, int hybrid_node_num, int type);
    129 void gen_hybrid_graph_2d(Node *node, int stage_num, int node_num, int stage_idx,
    130                         int node_idx, int hybrid_node_num, int type0,
    131                         int type1);
    132 void gen_hybrid_graph_2d_new(Node *node, int stage_num, int node_num,
    133                             int stage_idx, int node_idx, int hybrid_node_num0,
    134                             int hybrid_node_num1, int type0, int type1);
    135 
    136 void reference_hybrid_2d(double *in, double *out, int size, int type0,
    137                         int type1);
    138 
    139 void reference_hybrid_2d_new(double *in, double *out, int size0, int size1,
    140                             int type0, int type1);
    141 void reference_adst_dct_2d(double *in, double *out, int size);
    142 
    143 void gen_code(Node *node, int stage_num, int node_num, TYPE_TXFM type);
    144 
    145 void gen_inv_graph(Node *node, int stage_num, int node_num, Node *invNode,
    146                   int inv_stage_num, int inv_node_num, int inv_stage_idx,
    147                   int inv_node_idx);
    148 
    149 TYPE_TXFM hybrid_char_to_int(char ctype);
    150 
    151 int64_t round_shift(int64_t value, int bit);
    152 void round_shift_array(int32_t *arr, int size, int bit);
    153 void estimate_value(Node *node, int stage_num, int node_num, int stage_idx,
    154                    int node_idx, int estimate_bit);
    155 void amplify_value(Node *node, int stage_num, int node_num, int stage_idx,
    156                   int node_idx, int estimate_bit);
    157 void propagate_estimate_amlify(Node *node, int stage_num, int node_num,
    158                               int stage_idx, int amplify_bit,
    159                               int estimate_bit);
    160 #endif  // AOM_TOOLS_TXFM_ANALYZER_TXFM_GRAPH_H_