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

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

Issue 111463005: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years 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_sadmxn.h ('k') | source/libvpx/vp9/common/vp9_scan.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) 2013 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2013 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
11 #ifndef VP9_COMMON_VP9_SCAN_H_ 11 #ifndef VP9_COMMON_VP9_SCAN_H_
12 #define VP9_COMMON_VP9_SCAN_H_ 12 #define VP9_COMMON_VP9_SCAN_H_
13 13
14 #include "vpx/vpx_integer.h" 14 #include "vpx/vpx_integer.h"
15 #include "vpx_ports/mem.h" 15 #include "vpx_ports/mem.h"
16 16
17 #include "vp9/common/vp9_enums.h" 17 #include "vp9/common/vp9_enums.h"
18 #include "vp9/common/vp9_blockd.h"
18 19
19 #define MAX_NEIGHBORS 2 20 #define MAX_NEIGHBORS 2
20 21
21 extern DECLARE_ALIGNED(16, const int16_t, vp9_default_scan_4x4[16]);
22 extern DECLARE_ALIGNED(16, const int16_t, vp9_col_scan_4x4[16]);
23 extern DECLARE_ALIGNED(16, const int16_t, vp9_row_scan_4x4[16]);
24
25 extern DECLARE_ALIGNED(16, const int16_t, vp9_default_scan_8x8[64]);
26 extern DECLARE_ALIGNED(16, const int16_t, vp9_col_scan_8x8[64]);
27 extern DECLARE_ALIGNED(16, const int16_t, vp9_row_scan_8x8[64]);
28
29 extern DECLARE_ALIGNED(16, const int16_t, vp9_default_scan_16x16[256]);
30 extern DECLARE_ALIGNED(16, const int16_t, vp9_col_scan_16x16[256]);
31 extern DECLARE_ALIGNED(16, const int16_t, vp9_row_scan_16x16[256]);
32
33 extern DECLARE_ALIGNED(16, const int16_t, vp9_default_scan_32x32[1024]);
34
35 extern DECLARE_ALIGNED(16, int16_t, vp9_default_iscan_4x4[16]);
36 extern DECLARE_ALIGNED(16, int16_t, vp9_col_iscan_4x4[16]);
37 extern DECLARE_ALIGNED(16, int16_t, vp9_row_iscan_4x4[16]);
38
39 extern DECLARE_ALIGNED(16, int16_t, vp9_default_iscan_8x8[64]);
40 extern DECLARE_ALIGNED(16, int16_t, vp9_col_iscan_8x8[64]);
41 extern DECLARE_ALIGNED(16, int16_t, vp9_row_iscan_8x8[64]);
42
43 extern DECLARE_ALIGNED(16, int16_t, vp9_default_iscan_16x16[256]);
44 extern DECLARE_ALIGNED(16, int16_t, vp9_col_iscan_16x16[256]);
45 extern DECLARE_ALIGNED(16, int16_t, vp9_row_iscan_16x16[256]);
46
47 extern DECLARE_ALIGNED(16, int16_t, vp9_default_iscan_32x32[1024]);
48
49 extern DECLARE_ALIGNED(16, int16_t,
50 vp9_default_scan_4x4_neighbors[17 * MAX_NEIGHBORS]);
51 extern DECLARE_ALIGNED(16, int16_t,
52 vp9_col_scan_4x4_neighbors[17 * MAX_NEIGHBORS]);
53 extern DECLARE_ALIGNED(16, int16_t,
54 vp9_row_scan_4x4_neighbors[17 * MAX_NEIGHBORS]);
55 extern DECLARE_ALIGNED(16, int16_t,
56 vp9_col_scan_8x8_neighbors[65 * MAX_NEIGHBORS]);
57 extern DECLARE_ALIGNED(16, int16_t,
58 vp9_row_scan_8x8_neighbors[65 * MAX_NEIGHBORS]);
59 extern DECLARE_ALIGNED(16, int16_t,
60 vp9_default_scan_8x8_neighbors[65 * MAX_NEIGHBORS]);
61 extern DECLARE_ALIGNED(16, int16_t,
62 vp9_col_scan_16x16_neighbors[257 * MAX_NEIGHBORS]);
63 extern DECLARE_ALIGNED(16, int16_t,
64 vp9_row_scan_16x16_neighbors[257 * MAX_NEIGHBORS]);
65 extern DECLARE_ALIGNED(16, int16_t,
66 vp9_default_scan_16x16_neighbors[257 * MAX_NEIGHBORS]);
67 extern DECLARE_ALIGNED(16, int16_t,
68 vp9_default_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]);
69
70
71 void vp9_init_neighbors(); 22 void vp9_init_neighbors();
72 23
73 static INLINE const int16_t* get_scan_4x4(TX_TYPE tx_type) { 24 typedef struct {
74 switch (tx_type) { 25 const int16_t *scan;
75 case ADST_DCT: 26 const int16_t *iscan;
76 return vp9_row_scan_4x4; 27 const int16_t *neighbors;
77 case DCT_ADST: 28 } scan_order;
78 return vp9_col_scan_4x4;
79 default:
80 return vp9_default_scan_4x4;
81 }
82 }
83 29
84 static INLINE void get_scan_nb_4x4(TX_TYPE tx_type, 30 extern const scan_order vp9_default_scan_orders[TX_SIZES];
85 const int16_t **scan, const int16_t **nb) { 31 extern const scan_order vp9_scan_orders[TX_SIZES][TX_TYPES];
86 switch (tx_type) {
87 case ADST_DCT:
88 *scan = vp9_row_scan_4x4;
89 *nb = vp9_row_scan_4x4_neighbors;
90 break;
91 case DCT_ADST:
92 *scan = vp9_col_scan_4x4;
93 *nb = vp9_col_scan_4x4_neighbors;
94 break;
95 default:
96 *scan = vp9_default_scan_4x4;
97 *nb = vp9_default_scan_4x4_neighbors;
98 break;
99 }
100 }
101
102 static INLINE const int16_t* get_iscan_4x4(TX_TYPE tx_type) {
103 switch (tx_type) {
104 case ADST_DCT:
105 return vp9_row_iscan_4x4;
106 case DCT_ADST:
107 return vp9_col_iscan_4x4;
108 default:
109 return vp9_default_iscan_4x4;
110 }
111 }
112
113 static INLINE const int16_t* get_scan_8x8(TX_TYPE tx_type) {
114 switch (tx_type) {
115 case ADST_DCT:
116 return vp9_row_scan_8x8;
117 case DCT_ADST:
118 return vp9_col_scan_8x8;
119 default:
120 return vp9_default_scan_8x8;
121 }
122 }
123
124 static INLINE void get_scan_nb_8x8(TX_TYPE tx_type,
125 const int16_t **scan, const int16_t **nb) {
126 switch (tx_type) {
127 case ADST_DCT:
128 *scan = vp9_row_scan_8x8;
129 *nb = vp9_row_scan_8x8_neighbors;
130 break;
131 case DCT_ADST:
132 *scan = vp9_col_scan_8x8;
133 *nb = vp9_col_scan_8x8_neighbors;
134 break;
135 default:
136 *scan = vp9_default_scan_8x8;
137 *nb = vp9_default_scan_8x8_neighbors;
138 break;
139 }
140 }
141
142 static INLINE const int16_t* get_iscan_8x8(TX_TYPE tx_type) {
143 switch (tx_type) {
144 case ADST_DCT:
145 return vp9_row_iscan_8x8;
146 case DCT_ADST:
147 return vp9_col_iscan_8x8;
148 default:
149 return vp9_default_iscan_8x8;
150 }
151 }
152
153 static INLINE const int16_t* get_scan_16x16(TX_TYPE tx_type) {
154 switch (tx_type) {
155 case ADST_DCT:
156 return vp9_row_scan_16x16;
157 case DCT_ADST:
158 return vp9_col_scan_16x16;
159 default:
160 return vp9_default_scan_16x16;
161 }
162 }
163
164 static INLINE void get_scan_nb_16x16(TX_TYPE tx_type,
165 const int16_t **scan, const int16_t **nb) {
166 switch (tx_type) {
167 case ADST_DCT:
168 *scan = vp9_row_scan_16x16;
169 *nb = vp9_row_scan_16x16_neighbors;
170 break;
171 case DCT_ADST:
172 *scan = vp9_col_scan_16x16;
173 *nb = vp9_col_scan_16x16_neighbors;
174 break;
175 default:
176 *scan = vp9_default_scan_16x16;
177 *nb = vp9_default_scan_16x16_neighbors;
178 break;
179 }
180 }
181
182 static INLINE const int16_t* get_iscan_16x16(TX_TYPE tx_type) {
183 switch (tx_type) {
184 case ADST_DCT:
185 return vp9_row_iscan_16x16;
186 case DCT_ADST:
187 return vp9_col_iscan_16x16;
188 default:
189 return vp9_default_iscan_16x16;
190 }
191 }
192 32
193 static INLINE int get_coef_context(const int16_t *neighbors, 33 static INLINE int get_coef_context(const int16_t *neighbors,
194 uint8_t *token_cache, 34 const uint8_t *token_cache, int c) {
195 int c) {
196 return (1 + token_cache[neighbors[MAX_NEIGHBORS * c + 0]] + 35 return (1 + token_cache[neighbors[MAX_NEIGHBORS * c + 0]] +
197 token_cache[neighbors[MAX_NEIGHBORS * c + 1]]) >> 1; 36 token_cache[neighbors[MAX_NEIGHBORS * c + 1]]) >> 1;
198 } 37 }
199 38
200 #endif // VP9_COMMON_VP9_SCAN_H_ 39 #endif // VP9_COMMON_VP9_SCAN_H_
OLDNEW
« no previous file with comments | « source/libvpx/vp9/common/vp9_sadmxn.h ('k') | source/libvpx/vp9/common/vp9_scan.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698