Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: source/libvpx/vp9/common/vp9_entropy.h

Issue 168343002: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: libvpx: Pull from upstream Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp9/common/vp9_debugmodes.c ('k') | source/libvpx/vp9/common/vp9_entropymode.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 } 112 }
113 113
114 // This is the index in the scan order beyond which all coefficients for 114 // This is the index in the scan order beyond which all coefficients for
115 // 8x8 transform and above are in the top band. 115 // 8x8 transform and above are in the top band.
116 // This macro is currently unused but may be used by certain implementations 116 // This macro is currently unused but may be used by certain implementations
117 #define MAXBAND_INDEX 21 117 #define MAXBAND_INDEX 21
118 118
119 extern DECLARE_ALIGNED(16, const uint8_t, vp9_coefband_trans_8x8plus[1024]); 119 extern DECLARE_ALIGNED(16, const uint8_t, vp9_coefband_trans_8x8plus[1024]);
120 extern DECLARE_ALIGNED(16, const uint8_t, vp9_coefband_trans_4x4[16]); 120 extern DECLARE_ALIGNED(16, const uint8_t, vp9_coefband_trans_4x4[16]);
121 121
122 static const uint8_t *get_band_translate(TX_SIZE tx_size) { 122 static INLINE const uint8_t *get_band_translate(TX_SIZE tx_size) {
123 return tx_size == TX_4X4 ? vp9_coefband_trans_4x4 123 return tx_size == TX_4X4 ? vp9_coefband_trans_4x4
124 : vp9_coefband_trans_8x8plus; 124 : vp9_coefband_trans_8x8plus;
125 } 125 }
126 126
127 // 128 lists of probabilities are stored for the following ONE node probs: 127 // 128 lists of probabilities are stored for the following ONE node probs:
128 // 1, 3, 5, 7, ..., 253, 255 128 // 1, 3, 5, 7, ..., 253, 255
129 // In between probabilities are interpolated linearly 129 // In between probabilities are interpolated linearly
130 130
131 #define COEFF_PROB_MODELS 256 131 #define COEFF_PROB_MODELS 256
132 132
133 #define UNCONSTRAINED_NODES 3 133 #define UNCONSTRAINED_NODES 3
134 134
135 #define PIVOT_NODE 2 // which node is pivot 135 #define PIVOT_NODE 2 // which node is pivot
136 136
137 #define MODEL_NODES (ENTROPY_NODES - UNCONSTRAINED_NODES) 137 #define MODEL_NODES (ENTROPY_NODES - UNCONSTRAINED_NODES)
138 extern const vp9_prob vp9_pareto8_full[COEFF_PROB_MODELS][MODEL_NODES]; 138 extern const vp9_prob vp9_pareto8_full[COEFF_PROB_MODELS][MODEL_NODES];
139 139
140 typedef vp9_prob vp9_coeff_probs_model[REF_TYPES][COEF_BANDS] 140 typedef vp9_prob vp9_coeff_probs_model[REF_TYPES][COEF_BANDS]
141 [COEFF_CONTEXTS][UNCONSTRAINED_NODES]; 141 [COEFF_CONTEXTS][UNCONSTRAINED_NODES];
142 142
143 typedef unsigned int vp9_coeff_count_model[REF_TYPES][COEF_BANDS] 143 typedef unsigned int vp9_coeff_count_model[REF_TYPES][COEF_BANDS]
144 [COEFF_CONTEXTS] 144 [COEFF_CONTEXTS]
145 [UNCONSTRAINED_NODES + 1]; 145 [UNCONSTRAINED_NODES + 1];
146 146
147 void vp9_model_to_full_probs(const vp9_prob *model, vp9_prob *full); 147 void vp9_model_to_full_probs(const vp9_prob *model, vp9_prob *full);
148 148
149 static int get_entropy_context(TX_SIZE tx_size, const ENTROPY_CONTEXT *a, 149 static INLINE int get_entropy_context(TX_SIZE tx_size, const ENTROPY_CONTEXT *a,
150 const ENTROPY_CONTEXT *l) { 150 const ENTROPY_CONTEXT *l) {
151 ENTROPY_CONTEXT above_ec = 0, left_ec = 0; 151 ENTROPY_CONTEXT above_ec = 0, left_ec = 0;
152 152
153 switch (tx_size) { 153 switch (tx_size) {
154 case TX_4X4: 154 case TX_4X4:
155 above_ec = a[0] != 0; 155 above_ec = a[0] != 0;
156 left_ec = l[0] != 0; 156 left_ec = l[0] != 0;
157 break; 157 break;
158 case TX_8X8: 158 case TX_8X8:
159 above_ec = !!*(const uint16_t *)a; 159 above_ec = !!*(const uint16_t *)a;
160 left_ec = !!*(const uint16_t *)l; 160 left_ec = !!*(const uint16_t *)l;
161 break; 161 break;
162 case TX_16X16: 162 case TX_16X16:
163 above_ec = !!*(const uint32_t *)a; 163 above_ec = !!*(const uint32_t *)a;
164 left_ec = !!*(const uint32_t *)l; 164 left_ec = !!*(const uint32_t *)l;
165 break; 165 break;
166 case TX_32X32: 166 case TX_32X32:
167 above_ec = !!*(const uint64_t *)a; 167 above_ec = !!*(const uint64_t *)a;
168 left_ec = !!*(const uint64_t *)l; 168 left_ec = !!*(const uint64_t *)l;
169 break; 169 break;
170 default: 170 default:
171 assert(0 && "Invalid transform size."); 171 assert(0 && "Invalid transform size.");
172 } 172 }
173 173
174 return combine_entropy_contexts(above_ec, left_ec); 174 return combine_entropy_contexts(above_ec, left_ec);
175 } 175 }
176 176
177 static const scan_order *get_scan(const MACROBLOCKD *xd, TX_SIZE tx_size, 177 static const INLINE scan_order *get_scan(const MACROBLOCKD *xd, TX_SIZE tx_size,
178 PLANE_TYPE type, int block_idx) { 178 PLANE_TYPE type, int block_idx) {
179 const MODE_INFO *const mi = xd->mi_8x8[0]; 179 const MODE_INFO *const mi = xd->mi_8x8[0];
180 const MB_MODE_INFO *const mbmi = &mi->mbmi; 180 const MB_MODE_INFO *const mbmi = &mi->mbmi;
181 181
182 if (is_inter_block(mbmi) || type != PLANE_TYPE_Y || xd->lossless) { 182 if (is_inter_block(mbmi) || type != PLANE_TYPE_Y || xd->lossless) {
183 return &vp9_default_scan_orders[tx_size]; 183 return &vp9_default_scan_orders[tx_size];
184 } else { 184 } else {
185 const MB_PREDICTION_MODE mode = 185 const MB_PREDICTION_MODE mode =
186 mbmi->sb_type < BLOCK_8X8 ? mi->bmi[block_idx].as_mode : mbmi->mode; 186 mbmi->sb_type < BLOCK_8X8 ? mi->bmi[block_idx].as_mode : mbmi->mode;
187 return &vp9_scan_orders[tx_size][mode2txfm_map[mode]]; 187 return &vp9_scan_orders[tx_size][mode2txfm_map[mode]];
188 } 188 }
189 } 189 }
190 190
191 #ifdef __cplusplus 191 #ifdef __cplusplus
192 } // extern "C" 192 } // extern "C"
193 #endif 193 #endif
194 194
195 #endif // VP9_COMMON_VP9_ENTROPY_H_ 195 #endif // VP9_COMMON_VP9_ENTROPY_H_
OLDNEW
« no previous file with comments | « source/libvpx/vp9/common/vp9_debugmodes.c ('k') | source/libvpx/vp9/common/vp9_entropymode.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698