hardware/intel/intel-driver
修订版 | 6a4cb72bf6ba65789c72015c06657f4e0ce530fe (tree) |
---|---|
时间 | 2016-05-27 14:24:35 |
作者 | Zhao Yakui <yakui.zhao@inte...> |
Commiter | Xiang, Haihao |
Add the low-level implementation of VP9 encoding
The following are includes:
a. The definition of data structure related with VP9 encoding
b. VME/PAK pipeline related with VP9 encoding
c. The required helper function
Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewed-by: Sean V Kelley <sean.v.kelley@intel.com>
@@ -98,6 +98,9 @@ source_c = \ | ||
98 | 98 | object_heap.c \ |
99 | 99 | intel_media_common.c \ |
100 | 100 | vp9_probs.c \ |
101 | + gen9_vp9_encoder_kernels.c \ | |
102 | + gen9_vp9_const_def.c \ | |
103 | + gen9_vp9_encoder.c \ | |
101 | 104 | $(NULL) |
102 | 105 | |
103 | 106 | source_h = \ |
@@ -146,6 +149,10 @@ source_h = \ | ||
146 | 149 | sysdeps.h \ |
147 | 150 | va_backend_compat.h \ |
148 | 151 | i965_fourcc.h \ |
152 | + gen9_vp9_encoder.h \ | |
153 | + gen9_vp9_encapi.h \ | |
154 | + gen9_vp9_const_def.h \ | |
155 | + gen9_vp9_encoder_kernels.h \ | |
149 | 156 | $(NULL) |
150 | 157 | |
151 | 158 | i965_drv_video_la_LTLIBRARIES = i965_drv_video.la |
@@ -0,0 +1,1716 @@ | ||
1 | +/* | |
2 | + * * Copyright (c) 2016, Intel Corporation | |
3 | + * | |
4 | + * All rights reserved. | |
5 | + * Redistribution. Redistribution and use in binary form, without modification, are | |
6 | + * permitted provided that the following conditions are met: | |
7 | + * Redistributions must reproduce the above copyright notice and the following | |
8 | + * disclaimer in the documentation and/or other materials provided with the | |
9 | + * distribution. | |
10 | + * Neither the name of Intel Corporation nor the names of its suppliers may be used | |
11 | + * to endorse or promote products derived from this software without specific prior | |
12 | + * written permission. | |
13 | + * No reverse engineering, decompilation, or disassembly of this software is permitted. | |
14 | + * Limited patent license. Intel Corporation grants a world-wide, royalty-free, | |
15 | + * nonexclusive license under patents it now or hereafter owns or controls to make, have made, | |
16 | + * use, import, offer to sell and sell (.Utilize.) this software, but solely to the extent that any | |
17 | + * such patent is necessary to Utilize the software alone. The patent license shall not apply | |
18 | + * to any combinations which include this software. No hardware per se is licensed here under. | |
19 | + | |
20 | + * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT | |
21 | + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED | |
22 | + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
23 | + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
24 | + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER | |
25 | + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
26 | + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
27 | + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
28 | + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
29 | + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |
30 | + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
31 | + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |
32 | + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
33 | + */ | |
34 | + | |
35 | +#include <stdio.h> | |
36 | +#include <stdlib.h> | |
37 | +#include <stdint.h> | |
38 | + | |
39 | +const unsigned int vp9_fullspiral_ime_search_path_delta[14] = { | |
40 | + 0x0101F00F, 0x0F0F1010, 0xF0F0F00F, 0x01010101, 0x10101010, 0x0F0F0F0F, 0xF0F0F00F, 0x0101F0F0, 0x01010101, 0x10101010, 0x0F0F1010, 0x0F0F0F0F, 0xF0F0F00F, 0xF0F0F0F0 | |
41 | +}; | |
42 | + | |
43 | +const unsigned int vp9_diamond_ime_search_path_delta[14] = { | |
44 | + 0x120FF10F, 0x1E22E20D, 0x20E2FF10, 0x2EDD06FC, 0x11D33FF1, 0xEB1FF33D, 0x4EF1F1F1, 0xF1F21211, 0x0DFFFFE0, 0x11201F1F, 0x1105F1CF, 0x00000000, 0x00000000, 0x00000000 | |
45 | +}; | |
46 | + | |
47 | +const unsigned int vp9_brc_const_data_i_g9[4448] = { | |
48 | + 0x0032000A, 0x00960064, 0x67614B28, 0xFCFAA07D, 0x040200FE, 0x03010106, 0x05280102, 0x04010305, | |
49 | + 0x78503C1E, 0x04FFC88C, 0x78503C1E, 0x28FFC88C, 0x02B47850, 0x120E0A06, 0x0A060402, 0x0200000E, | |
50 | + 0x00000804, 0xFE040200, 0x02000000, 0x00FEFCFA, 0xFCF8F600, 0xF4F200FE, 0xEEFEFCF8, 0xFEFCF6F2, | |
51 | + 0x100A0402, 0x08040214, 0x0200100C, 0x000C0804, 0x04020000, 0x000000FE, 0xFEFEFC02, 0xFCFA0000, | |
52 | + 0xF600FEFE, 0x00FEFCFA, 0xFCF8F4F2, 0x000000FE, 0x0C080000, 0x00001410, 0x06000000, 0xFE120E0A, | |
53 | + 0x00000000, 0x0E0C0806, 0x0000FEFC, 0x06040200, 0xFEFCFA0A, 0x02000000, 0xFCF80A06, 0x000000FE, | |
54 | + 0xF60A0602, 0x00FEFCFA, 0x0A060200, 0xFEFCF8F4, 0x06020000, 0xFCF8F40A, 0x020000FE, 0x00000A06, | |
55 | + 0x06000000, 0x00120E0A, 0x00000000, 0x100C0A06, 0x000000FE, 0x0E0A0600, 0x00FEFC10, 0x08040000, | |
56 | + 0xFCFA0C0A, 0x000000FE, 0xF80A0802, 0x0000FEFC, 0x0A080200, 0xFEFEFCF8, 0x08000000, 0xFCFAF80A, | |
57 | + 0x000000FE, 0xF8F60A02, 0x0000FEFC, 0x00080200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
58 | + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
59 | + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
60 | + 0x02061200, 0x00000036, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
61 | + 0x00000000, 0x00000000, 0x28190702, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010002, | |
62 | + 0x050D2501, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
63 | + 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, | |
64 | + 0x050D2502, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
65 | + 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, | |
66 | + 0x050D2503, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
67 | + 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, | |
68 | + 0x06102E04, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
69 | + 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, | |
70 | + 0x06102E05, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
71 | + 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, | |
72 | + 0x07133706, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
73 | + 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, | |
74 | + 0x07133707, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
75 | + 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, | |
76 | + 0x07133708, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
77 | + 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, | |
78 | + 0x08164009, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
79 | + 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, | |
80 | + 0x0816400A, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
81 | + 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, | |
82 | + 0x0A1A4A0B, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
83 | + 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, | |
84 | + 0x0A1A4A0C, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
85 | + 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, | |
86 | + 0x0B1D530D, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
87 | + 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, | |
88 | + 0x0B1D530E, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
89 | + 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, | |
90 | + 0x0B1D530F, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
91 | + 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, | |
92 | + 0x0C205C10, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
93 | + 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, | |
94 | + 0x0C205C11, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
95 | + 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, | |
96 | + 0x0D236512, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
97 | + 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, | |
98 | + 0x0D236513, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
99 | + 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, | |
100 | + 0x0E266E14, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
101 | + 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, | |
102 | + 0x0E266E15, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
103 | + 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, | |
104 | + 0x102A7816, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
105 | + 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, | |
106 | + 0x102A7817, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
107 | + 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, | |
108 | + 0x102A7818, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
109 | + 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, | |
110 | + 0x112D8119, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
111 | + 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, | |
112 | + 0x112D811A, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
113 | + 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, | |
114 | + 0x12308A1B, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
115 | + 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, | |
116 | + 0x12308A1C, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
117 | + 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, | |
118 | + 0x1333931D, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
119 | + 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, | |
120 | + 0x1333931E, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
121 | + 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, | |
122 | + 0x1333931F, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
123 | + 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, | |
124 | + 0x14369C20, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
125 | + 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, | |
126 | + 0x14369C21, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
127 | + 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, | |
128 | + 0x163AA622, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
129 | + 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, | |
130 | + 0x163AA623, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
131 | + 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, | |
132 | + 0x173DAF24, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
133 | + 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, | |
134 | + 0x173DAF25, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
135 | + 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, | |
136 | + 0x173DAF26, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
137 | + 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, | |
138 | + 0x1840B827, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
139 | + 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, | |
140 | + 0x1840B828, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
141 | + 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, | |
142 | + 0x1943C129, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
143 | + 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, | |
144 | + 0x1943C12A, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
145 | + 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, | |
146 | + 0x1943C12B, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
147 | + 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, | |
148 | + 0x1A46CA2C, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
149 | + 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, | |
150 | + 0x1A46CA2D, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
151 | + 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, | |
152 | + 0x1B49D32E, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
153 | + 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, | |
154 | + 0x1B49D32F, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
155 | + 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, | |
156 | + 0x1D4DDD30, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
157 | + 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, | |
158 | + 0x1D4DDD31, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
159 | + 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, | |
160 | + 0x1D4DDD32, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
161 | + 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, | |
162 | + 0x1E50E633, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
163 | + 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, | |
164 | + 0x1E50E634, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
165 | + 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, | |
166 | + 0x1F53EF35, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
167 | + 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, | |
168 | + 0x1F53EF36, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
169 | + 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, | |
170 | + 0x1F53EF37, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
171 | + 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, | |
172 | + 0x2056F838, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
173 | + 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, | |
174 | + 0x2056F839, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
175 | + 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, | |
176 | + 0x2159FF3A, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
177 | + 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, | |
178 | + 0x2159FF3B, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
179 | + 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, | |
180 | + 0x2159FF3C, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
181 | + 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, | |
182 | + 0x235DFF3D, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
183 | + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, | |
184 | + 0x235DFF3E, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
185 | + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, | |
186 | + 0x2460FF3F, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
187 | + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, | |
188 | + 0x2460FF40, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
189 | + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, | |
190 | + 0x2563FF41, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
191 | + 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, | |
192 | + 0x2563FF42, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
193 | + 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, | |
194 | + 0x2563FF43, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
195 | + 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, | |
196 | + 0x2666FF44, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
197 | + 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, | |
198 | + 0x2666FF45, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
199 | + 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, | |
200 | + 0x2769FF46, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
201 | + 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, | |
202 | + 0x2769FF47, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
203 | + 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, | |
204 | + 0x2769FF48, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
205 | + 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, | |
206 | + 0x296DFF49, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
207 | + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, | |
208 | + 0x296DFF4A, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
209 | + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, | |
210 | + 0x2A70FF4B, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
211 | + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, | |
212 | + 0x2A70FF4C, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
213 | + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, | |
214 | + 0x2A70FF4D, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
215 | + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, | |
216 | + 0x2B73FF4E, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
217 | + 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, | |
218 | + 0x2B73FF4F, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
219 | + 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, | |
220 | + 0x2C76FF50, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
221 | + 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, | |
222 | + 0x2C76FF51, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
223 | + 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, | |
224 | + 0x2C76FF52, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
225 | + 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, | |
226 | + 0x2D79FF53, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
227 | + 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, | |
228 | + 0x2D79FF54, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
229 | + 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, | |
230 | + 0x2F7DFF55, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
231 | + 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, | |
232 | + 0x2F7DFF56, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
233 | + 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, | |
234 | + 0x2F7DFF57, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
235 | + 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, | |
236 | + 0x3080FF58, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
237 | + 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, | |
238 | + 0x3080FF59, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
239 | + 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, | |
240 | + 0x3080FF5A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
241 | + 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, | |
242 | + 0x3183FF5B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
243 | + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, | |
244 | + 0x3183FF5C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
245 | + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, | |
246 | + 0x3286FF5D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
247 | + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, | |
248 | + 0x3286FF5E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
249 | + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, | |
250 | + 0x3286FF5F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
251 | + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, | |
252 | + 0x3389FF60, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
253 | + 0x00000000, 0x00000000, 0x6B5C4929, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002B, | |
254 | + 0x358DFF61, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
255 | + 0x00000000, 0x00000000, 0x6B5C4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002C, | |
256 | + 0x3690FF62, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
257 | + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002D, | |
258 | + 0x3793FF63, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
259 | + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, | |
260 | + 0x3793FF64, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
261 | + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, | |
262 | + 0x3896FF65, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
263 | + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002F, | |
264 | + 0x3999FF66, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
265 | + 0x00000000, 0x00000000, 0x6C5D4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180030, | |
266 | + 0x3B9DFF67, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
267 | + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, | |
268 | + 0x3B9DFF68, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
269 | + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, | |
270 | + 0x3CA0FF69, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
271 | + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190032, | |
272 | + 0x3DA3FF6A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
273 | + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190033, | |
274 | + 0x3EA6FF6B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
275 | + 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, | |
276 | + 0x3EA6FF6C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
277 | + 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, | |
278 | + 0x3FA9FF6D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
279 | + 0x00000000, 0x00000000, 0x6E5F4C2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0035, | |
280 | + 0x41ADFF6E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
281 | + 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0036, | |
282 | + 0x42B0FF6F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
283 | + 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, | |
284 | + 0x42B0FF70, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
285 | + 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, | |
286 | + 0x43B3FF71, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
287 | + 0x00000000, 0x00000000, 0x6E684C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0038, | |
288 | + 0x44B6FF72, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
289 | + 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0039, | |
290 | + 0x45B9FF73, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
291 | + 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, | |
292 | + 0x45B9FF74, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
293 | + 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, | |
294 | + 0x47BDFF75, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
295 | + 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003B, | |
296 | + 0x48C0FF76, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
297 | + 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, | |
298 | + 0x48C0FF77, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
299 | + 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, | |
300 | + 0x49C3FF78, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
301 | + 0x00000000, 0x00000000, 0x78694D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003D, | |
302 | + 0x4AC6FF79, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
303 | + 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003E, | |
304 | + 0x4BC9FF7A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
305 | + 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003F, | |
306 | + 0x4DCDFF7B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
307 | + 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200040, | |
308 | + 0x4ED0FF7C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
309 | + 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200041, | |
310 | + 0x50D6FF7D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
311 | + 0x00000000, 0x00000000, 0x79694F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00210043, | |
312 | + 0x51D9FF7E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
313 | + 0x00000000, 0x00000000, 0x796A4F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220044, | |
314 | + 0x52DCFF7F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
315 | + 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220045, | |
316 | + 0x54E0FF80, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
317 | + 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230046, | |
318 | + 0x55E3FF81, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
319 | + 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230047, | |
320 | + 0x56E6FF82, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
321 | + 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240048, | |
322 | + 0x57E9FF83, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
323 | + 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240049, | |
324 | + 0x58ECFF84, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
325 | + 0x00000000, 0x00000000, 0x796A582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004A, | |
326 | + 0x5AF0FF85, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
327 | + 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004B, | |
328 | + 0x5BF3FF86, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
329 | + 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004C, | |
330 | + 0x5CF6FF87, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
331 | + 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004D, | |
332 | + 0x5DF9FF88, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
333 | + 0x00000000, 0x00000000, 0x7A6B592F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004E, | |
334 | + 0x5EFCFF89, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
335 | + 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004F, | |
336 | + 0x60FFFF8A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
337 | + 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280050, | |
338 | + 0x62FFFF8B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
339 | + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290052, | |
340 | + 0x63FFFF8C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
341 | + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290053, | |
342 | + 0x64FFFF8D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
343 | + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002A0054, | |
344 | + 0x67FFFF8E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
345 | + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0056, | |
346 | + 0x68FFFF8F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
347 | + 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0057, | |
348 | + 0x69FFFF90, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
349 | + 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002C0058, | |
350 | + 0x6CFFFF91, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
351 | + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005A, | |
352 | + 0x6DFFFF92, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
353 | + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005B, | |
354 | + 0x6EFFFF93, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
355 | + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005C, | |
356 | + 0x6FFFFF94, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
357 | + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005D, | |
358 | + 0x72FFFF95, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
359 | + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002F005F, | |
360 | + 0x73FFFF96, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
361 | + 0x00000000, 0x00000000, 0x7C6D5B39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300060, | |
362 | + 0x74FFFF97, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
363 | + 0x00000000, 0x00000000, 0x7C6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300061, | |
364 | + 0x76FFFF98, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
365 | + 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00310063, | |
366 | + 0x79FFFF99, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
367 | + 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00320065, | |
368 | + 0x7AFFFF9A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
369 | + 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00330066, | |
370 | + 0x7CFFFF9B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
371 | + 0x00000000, 0x00000000, 0x7D6F5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340068, | |
372 | + 0x7EFFFF9C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
373 | + 0x00000000, 0x00000000, 0x7D6F5C3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340069, | |
374 | + 0x80FFFF9D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
375 | + 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0035006B, | |
376 | + 0x81FFFF9E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
377 | + 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0036006C, | |
378 | + 0x83FFFF9F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
379 | + 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006E, | |
380 | + 0x85FFFFA0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
381 | + 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006F, | |
382 | + 0x87FFFFA1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
383 | + 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380071, | |
384 | + 0x89FFFFA2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
385 | + 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390073, | |
386 | + 0x8BFFFFA3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
387 | + 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A0074, | |
388 | + 0x8DFFFFA4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
389 | + 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003B0076, | |
390 | + 0x8FFFFFA5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
391 | + 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0078, | |
392 | + 0x91FFFFA6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
393 | + 0x00000000, 0x00000000, 0x88785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0079, | |
394 | + 0x93FFFFA7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
395 | + 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003D007B, | |
396 | + 0x95FFFFA8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
397 | + 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003E007D, | |
398 | + 0x97FFFFA9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
399 | + 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003F007E, | |
400 | + 0x99FFFFAA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
401 | + 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00400080, | |
402 | + 0x9BFFFFAB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
403 | + 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00410082, | |
404 | + 0x9EFFFFAC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
405 | + 0x00000000, 0x00000000, 0x88795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00420084, | |
406 | + 0xA0FFFFAD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
407 | + 0x00000000, 0x00000000, 0x89795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00430086, | |
408 | + 0xA3FFFFAE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
409 | + 0x00000000, 0x00000000, 0x897A5F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440088, | |
410 | + 0xA5FFFFAF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
411 | + 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0045008A, | |
412 | + 0xA7FFFFB0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
413 | + 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0046008C, | |
414 | + 0xAAFFFFB1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
415 | + 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0047008E, | |
416 | + 0xACFFFFB2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
417 | + 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00480090, | |
418 | + 0xAFFFFFB3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
419 | + 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00490092, | |
420 | + 0xB1FFFFB4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
421 | + 0x00000000, 0x00000000, 0x897A683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004A0094, | |
422 | + 0xB3FFFFB5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
423 | + 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004B0096, | |
424 | + 0xB6FFFFB6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
425 | + 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004C0098, | |
426 | + 0xB8FFFFB7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
427 | + 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004D009A, | |
428 | + 0xBAFFFFB8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
429 | + 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E009C, | |
430 | + 0xBDFFFFB9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
431 | + 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F009E, | |
432 | + 0xC0FFFFBA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
433 | + 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005000A1, | |
434 | + 0xC3FFFFBB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
435 | + 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005100A3, | |
436 | + 0xC5FFFFBC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
437 | + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005200A5, | |
438 | + 0xC8FFFFBD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
439 | + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005300A7, | |
440 | + 0xCBFFFFBE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
441 | + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005500AA, | |
442 | + 0xCEFFFFBF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
443 | + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005600AC, | |
444 | + 0xD0FFFFC0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
445 | + 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005700AE, | |
446 | + 0xD4FFFFC1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
447 | + 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005800B1, | |
448 | + 0xD6FFFFC2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
449 | + 0x00000000, 0x00000000, 0x8B7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005900B3, | |
450 | + 0xDAFFFFC3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
451 | + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005B00B6, | |
452 | + 0xDCFFFFC4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
453 | + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005C00B8, | |
454 | + 0xE0FFFFC5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
455 | + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005D00BB, | |
456 | + 0xE2FFFFC6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
457 | + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005E00BD, | |
458 | + 0xE6FFFFC7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
459 | + 0x00000000, 0x00000000, 0x8C7D6B49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006000C0, | |
460 | + 0xE8FFFFC8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
461 | + 0x00000000, 0x00000000, 0x8C7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006100C2, | |
462 | + 0xEBFFFFC9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
463 | + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006200C5, | |
464 | + 0xEFFFFFCA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
465 | + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006400C8, | |
466 | + 0xF3FFFFCB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
467 | + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006500CB, | |
468 | + 0xF5FFFFCC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
469 | + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006600CD, | |
470 | + 0xF9FFFFCD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
471 | + 0x00000000, 0x00000000, 0x8D7F6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006800D0, | |
472 | + 0xFCFFFFCE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
473 | + 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006900D3, | |
474 | + 0xFFFFFFCF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
475 | + 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006B00D6, | |
476 | + 0xFFFFFFD0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
477 | + 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006C00D9, | |
478 | + 0xFFFFFFD1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
479 | + 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006E00DC, | |
480 | + 0xFFFFFFD2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
481 | + 0x00000000, 0x00000000, 0x8E886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006F00DF, | |
482 | + 0xFFFFFFD3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
483 | + 0x00000000, 0x00000000, 0x8F886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007100E3, | |
484 | + 0xFFFFFFD4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
485 | + 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007300E6, | |
486 | + 0xFFFFFFD5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
487 | + 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007400E9, | |
488 | + 0xFFFFFFD6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
489 | + 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007600ED, | |
490 | + 0xFFFFFFD7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
491 | + 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007800F1, | |
492 | + 0xFFFFFFD8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
493 | + 0x00000000, 0x00000000, 0x8F896D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007A00F4, | |
494 | + 0xFFFFFFD9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
495 | + 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007C00F8, | |
496 | + 0xFFFFFFDA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
497 | + 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007E00FC, | |
498 | + 0xFFFFFFDB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
499 | + 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800100, | |
500 | + 0xFFFFFFDC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
501 | + 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00820105, | |
502 | + 0xFFFFFFDD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
503 | + 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00840109, | |
504 | + 0xFFFFFFDE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
505 | + 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0086010D, | |
506 | + 0xFFFFFFDF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
507 | + 0x00000000, 0x00000000, 0x8F8A6F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00890112, | |
508 | + 0xFFFFFFE0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
509 | + 0x00000000, 0x00000000, 0x8F8A6F4E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008B0117, | |
510 | + 0xFFFFFFE1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
511 | + 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008E011C, | |
512 | + 0xFFFFFFE2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
513 | + 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00900121, | |
514 | + 0xFFFFFFE3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
515 | + 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00930127, | |
516 | + 0xFFFFFFE4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
517 | + 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0096012D, | |
518 | + 0xFFFFFFE5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
519 | + 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00990133, | |
520 | + 0xFFFFFFE6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
521 | + 0x00000000, 0x00000000, 0x8F8B794F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C0139, | |
522 | + 0xFFFFFFE7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
523 | + 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A00140, | |
524 | + 0xFFFFFFE8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
525 | + 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A30147, | |
526 | + 0xFFFFFFE9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
527 | + 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A7014E, | |
528 | + 0xFFFFFFEA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
529 | + 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AB0156, | |
530 | + 0xFFFFFFEB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
531 | + 0x00000000, 0x00000000, 0x8F8C7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AF015E, | |
532 | + 0xFFFFFFEC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
533 | + 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B30166, | |
534 | + 0xFFFFFFED, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
535 | + 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B80170, | |
536 | + 0xFFFFFFEE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
537 | + 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00BC0179, | |
538 | + 0xFFFFFFEF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
539 | + 0x00000000, 0x00000000, 0x8F8E7B59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C10183, | |
540 | + 0xFFFFFFF0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
541 | + 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C7018E, | |
542 | + 0xFFFFFFF1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
543 | + 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00CC0199, | |
544 | + 0xFFFFFFF2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
545 | + 0x00000000, 0x00000000, 0x8F8F7C5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D201A5, | |
546 | + 0xFFFFFFF3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
547 | + 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D901B2, | |
548 | + 0xFFFFFFF4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
549 | + 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E001C0, | |
550 | + 0xFFFFFFF5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
551 | + 0x00000000, 0x00000000, 0x8F8F7D5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E701CE, | |
552 | + 0xFFFFFFF6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
553 | + 0x00000000, 0x00000000, 0x8F8F7D5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00EE01DD, | |
554 | + 0xFFFFFFF7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
555 | + 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00F701EE, | |
556 | + 0xFFFFFFF8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
557 | + 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00FF01FF, | |
558 | + 0xFFFFFFF9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
559 | + 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01080211, | |
560 | + 0xFFFFFFFA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
561 | + 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01120225, | |
562 | + 0xFFFFFFFB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
563 | + 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x011C0239, | |
564 | + 0xFFFFFFFC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
565 | + 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01280250, | |
566 | + 0xFFFFFFFD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
567 | + 0x00000000, 0x00000000, 0x8F8F885F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01340268, | |
568 | + 0xFFFFFFFE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
569 | + 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01400281, | |
570 | + 0xFFFFFFFF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
571 | + 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x014E029C, | |
572 | + 0x00080004, 0x00090008, 0x000B000A, 0x000C000C, 0x000E000D, 0x0010000F, 0x00120011, 0x00130013, | |
573 | + 0x00150014, 0x00170016, 0x00190018, 0x001A001A, 0x001C001B, 0x001E001D, 0x0020001F, 0x00210020, | |
574 | + 0x00230022, 0x00250024, 0x00260026, 0x00280027, 0x002A0029, 0x002B002B, 0x002D002C, 0x002F002E, | |
575 | + 0x00300030, 0x00320031, 0x00340033, 0x00350035, 0x00370036, 0x00390038, 0x003A0039, 0x003C003B, | |
576 | + 0x003E003D, 0x003F003E, 0x00410040, 0x00420042, 0x00440043, 0x00460045, 0x00470046, 0x00490048, | |
577 | + 0x004A004A, 0x004C004B, 0x004E004D, 0x004F004E, 0x00510050, 0x00520051, 0x00540053, 0x00550055, | |
578 | + 0x00580057, 0x005C005A, 0x005F005D, 0x00620060, 0x00650063, 0x00680066, 0x006B0069, 0x006E006C, | |
579 | + 0x0071006F, 0x00740072, 0x00760075, 0x00790078, 0x007D007B, 0x0081007F, 0x00860083, 0x008A0088, | |
580 | + 0x008E008C, 0x00920090, 0x00960094, 0x009A0098, 0x009E009C, 0x00A400A1, 0x00A900A6, 0x00AE00AC, | |
581 | + 0x00B400B1, 0x00B900B6, 0x00BE00BB, 0x00C300C0, 0x00CA00C7, 0x00D000CD, 0x00D600D3, 0x00DC00D9, | |
582 | + 0x00E200DF, 0x00E900E6, 0x00F000ED, 0x00F700F3, 0x00FD00FA, 0x01050101, 0x010D0109, 0x01140110, | |
583 | + 0x011C0118, 0x01240120, 0x012C0128, 0x01350130, 0x013D0139, 0x01460142, 0x014F014A, 0x01580154, | |
584 | + 0x0162015D, 0x016C0167, 0x01760171, 0x0180017B, 0x018B0185, 0x01960190, 0x01A1019B, 0x01AD01A7, | |
585 | + 0x01B901B3, 0x01C601BF, 0x01D301CD, 0x01E201DB, 0x01F101E9, 0x020101F9, 0x0212020A, 0x0225021B, | |
586 | + 0x0239022F, 0x024E0243, 0x0266025A, 0x02800272, 0x029C028E, 0x02BC02AC, 0x02E002CD, 0x030702F3, | |
587 | + 0x0333031C, 0x0365034B, 0x039D0380, 0x03DC03BB, 0x042203FE, 0x0473044A, 0x04D004A0, 0x05380502, | |
588 | + 0x00080004, 0x000A0009, 0x000C000B, 0x000E000D, 0x0010000F, 0x00120011, 0x00140013, 0x00160015, | |
589 | + 0x00180017, 0x001A0019, 0x001C001B, 0x001E001D, 0x0020001F, 0x00220021, 0x00240023, 0x00260025, | |
590 | + 0x00280027, 0x002A0029, 0x002C002B, 0x002E002D, 0x0030002F, 0x00320031, 0x00340033, 0x00360035, | |
591 | + 0x00380037, 0x003A0039, 0x003C003B, 0x003E003D, 0x0040003F, 0x00420041, 0x00440043, 0x00460045, | |
592 | + 0x00480047, 0x004A0049, 0x004C004B, 0x004E004D, 0x0050004F, 0x00520051, 0x00540053, 0x00560055, | |
593 | + 0x00580057, 0x005A0059, 0x005C005B, 0x005E005D, 0x0060005F, 0x00620061, 0x00640063, 0x00660065, | |
594 | + 0x006A0068, 0x006E006C, 0x00720070, 0x00760074, 0x007A0078, 0x007E007C, 0x00820080, 0x00860084, | |
595 | + 0x008A0088, 0x008E008C, 0x00920090, 0x00960094, 0x009B0098, 0x00A1009E, 0x00A700A4, 0x00AD00AA, | |
596 | + 0x00B300B0, 0x00B900B6, 0x00BF00BC, 0x00C500C2, 0x00CB00C8, 0x00D300CF, 0x00DB00D7, 0x00E300DF, | |
597 | + 0x00EB00E7, 0x00F300EF, 0x00FB00F7, 0x010400FF, 0x010E0109, 0x01180113, 0x0122011D, 0x012C0127, | |
598 | + 0x01370131, 0x0143013D, 0x014F0149, 0x015B0155, 0x01670161, 0x0175016E, 0x0183017C, 0x0191018A, | |
599 | + 0x01A00198, 0x01B001A8, 0x01C001B8, 0x01D101C8, 0x01E301DA, 0x01F501EC, 0x020801FE, 0x021C0212, | |
600 | + 0x02300226, 0x0246023B, 0x025C0251, 0x02730267, 0x028B027F, 0x02A40297, 0x02BE02B1, 0x02D902CB, | |
601 | + 0x02F502E7, 0x03120303, 0x03300321, 0x03500340, 0x03710360, 0x03930382, 0x03B703A5, 0x03DC03C9, | |
602 | + 0x040203EF, 0x042A0416, 0x0454043F, 0x047F0469, 0x04AC0495, 0x04DB04C3, 0x050C04F3, 0x053F0525, | |
603 | + 0x05740559, 0x05AB058F, 0x05E405C7, 0x061F0601, 0x065C063D, 0x069C067C, 0x06DF06BD, 0x07240701 | |
604 | +}; | |
605 | + | |
606 | +const unsigned int vp9_brc_const_data_p_g9[4448] = { | |
607 | + 0x0032000A, 0x00960064, 0x67614B28, 0xFCFAA07D, 0x040200FE, 0x03010106, 0x05280102, 0x04010305, | |
608 | + 0x78503C1E, 0x04FFC88C, 0x78503C1E, 0x28FFC88C, 0x02B47850, 0x120E0A06, 0x0A060402, 0x0200000E, | |
609 | + 0x00000804, 0xFE040200, 0x02000000, 0x00FEFCFA, 0xFCF8F600, 0xF4F200FE, 0xEEFEFCF8, 0xFEFCF6F2, | |
610 | + 0x100A0402, 0x08040214, 0x0200100C, 0x000C0804, 0x04020000, 0x000000FE, 0xFEFEFC02, 0xFCFA0000, | |
611 | + 0xF600FEFE, 0x00FEFCFA, 0xFCF8F4F2, 0x000000FE, 0x0C080000, 0x00001410, 0x06000000, 0xFE120E0A, | |
612 | + 0x00000000, 0x0E0C0806, 0x0000FEFC, 0x06040200, 0xFEFCFA0A, 0x02000000, 0xFCF80A06, 0x000000FE, | |
613 | + 0xF60A0602, 0x00FEFCFA, 0x0A060200, 0xFEFCF8F4, 0x06020000, 0xFCF8F40A, 0x020000FE, 0x00000A06, | |
614 | + 0x06000000, 0x00120E0A, 0x00000000, 0x100C0A06, 0x000000FE, 0x0E0A0600, 0x00FEFC10, 0x08040000, | |
615 | + 0xFCFA0C0A, 0x000000FE, 0xF80A0802, 0x0000FEFC, 0x0A080200, 0xFEFEFCF8, 0x08000000, 0xFCFAF80A, | |
616 | + 0x000000FE, 0xF8F60A02, 0x0000FEFC, 0x00080200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
617 | + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
618 | + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
619 | + 0x040C2400, 0x00000000, 0x00010001, 0x00010000, 0x00010000, 0x00020002, 0x00030002, 0x00040003, | |
620 | + 0x02020100, 0x04030302, 0x39070402, 0x6F6F0103, 0x00010001, 0x00000000, 0x00000004, 0x00010004, | |
621 | + 0x08184801, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, | |
622 | + 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, | |
623 | + 0x08184802, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, | |
624 | + 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, | |
625 | + 0x091B5103, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, | |
626 | + 0x04030200, 0x08070605, 0x4A0F0A04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020009, | |
627 | + 0x0A1E5A04, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, | |
628 | + 0x04030200, 0x08070605, 0x4B180B04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000A, | |
629 | + 0x0B216305, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, | |
630 | + 0x04030200, 0x08070605, 0x4D190C04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000B, | |
631 | + 0x0C246C06, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, | |
632 | + 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, | |
633 | + 0x0C246C07, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, | |
634 | + 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, | |
635 | + 0x0D277508, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, | |
636 | + 0x06050400, 0x0C0A0807, 0x4F1B0E05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000D, | |
637 | + 0x0E2A7E09, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, | |
638 | + 0x06050400, 0x0C0A0807, 0x581C0F05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000E, | |
639 | + 0x0F2D870A, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, | |
640 | + 0x06050400, 0x0C0A0807, 0x591D1806, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000F, | |
641 | + 0x1030900B, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, | |
642 | + 0x08060500, 0x180D0B0A, 0x591D1906, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040010, | |
643 | + 0x1133990C, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, | |
644 | + 0x08060500, 0x180D0B0A, 0x5A1E1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040011, | |
645 | + 0x1236A20D, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, | |
646 | + 0x08060500, 0x180D0B0A, 0x5A1F1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040012, | |
647 | + 0x1339AB0E, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, | |
648 | + 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, | |
649 | + 0x1339AB0F, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, | |
650 | + 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, | |
651 | + 0x143CB410, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, | |
652 | + 0x0A080600, 0x1A190E0C, 0x5B281B08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050014, | |
653 | + 0x153FBD11, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, | |
654 | + 0x0A080600, 0x1A190E0C, 0x5C291C08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050015, | |
655 | + 0x1642C612, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, | |
656 | + 0x0A080600, 0x1A190E0C, 0x5D291C09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050016, | |
657 | + 0x1745CF13, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, | |
658 | + 0x0A080600, 0x1A190E0C, 0x5D2A1D09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050017, | |
659 | + 0x1848D814, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, | |
660 | + 0x0C090700, 0x1C1A190F, 0x5E2A1D09, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060018, | |
661 | + 0x194BE115, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, | |
662 | + 0x0C090700, 0x1C1A190F, 0x5E2A1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060019, | |
663 | + 0x1A4EEA16, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, | |
664 | + 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, | |
665 | + 0x1A4EEA17, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, | |
666 | + 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, | |
667 | + 0x1B51F318, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, | |
668 | + 0x0C090700, 0x1C1A190F, 0x5F2B1F0B, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001B, | |
669 | + 0x1C54FC19, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, | |
670 | + 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001C, | |
671 | + 0x1D57FF1A, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, | |
672 | + 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001D, | |
673 | + 0x1E5AFF1B, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, | |
674 | + 0x0E0B0800, 0x1E1C1A19, 0x692C280C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001E, | |
675 | + 0x1F5DFF1C, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, | |
676 | + 0x0E0B0800, 0x1E1C1A19, 0x692D290C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001F, | |
677 | + 0x2060FF1D, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, | |
678 | + 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, | |
679 | + 0x2060FF1E, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, | |
680 | + 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, | |
681 | + 0x2163FF1F, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, | |
682 | + 0x180D0900, 0x281E1C1A, 0x692E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080021, | |
683 | + 0x2266FF20, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, | |
684 | + 0x180D0900, 0x281E1C1A, 0x6A2E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080022, | |
685 | + 0x2369FF21, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, | |
686 | + 0x180D0900, 0x281E1C1A, 0x6A2E2A0E, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080023, | |
687 | + 0x246CFF22, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, | |
688 | + 0x190E0B00, 0x291F1D1B, 0x6A2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090024, | |
689 | + 0x256FFF23, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, | |
690 | + 0x190E0B00, 0x291F1D1B, 0x6B2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090025, | |
691 | + 0x2672FF24, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, | |
692 | + 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, | |
693 | + 0x2672FF25, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, | |
694 | + 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, | |
695 | + 0x2775FF26, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, | |
696 | + 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090027, | |
697 | + 0x2878FF27, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, | |
698 | + 0x1A180C00, 0x2A281E1C, 0x6B382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0028, | |
699 | + 0x297BFF28, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, | |
700 | + 0x1A180C00, 0x2A281E1C, 0x6C382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0029, | |
701 | + 0x2A7EFF29, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, | |
702 | + 0x1A180C00, 0x2A281E1C, 0x6C392C18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002A, | |
703 | + 0x2B81FF2A, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, | |
704 | + 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, | |
705 | + 0x2B81FF2B, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, | |
706 | + 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, | |
707 | + 0x2C84FF2C, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, | |
708 | + 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002C, | |
709 | + 0x2D87FF2D, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, | |
710 | + 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002D, | |
711 | + 0x2E8AFF2E, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, | |
712 | + 0x1B190D00, 0x2B29281E, 0x6D392D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002E, | |
713 | + 0x2F8DFF2F, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, | |
714 | + 0x1B190D00, 0x2B29281E, 0x6D3A2D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002F, | |
715 | + 0x3090FF30, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, | |
716 | + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, | |
717 | + 0x3090FF31, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, | |
718 | + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, | |
719 | + 0x3193FF32, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, | |
720 | + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0031, | |
721 | + 0x3296FF33, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, | |
722 | + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0032, | |
723 | + 0x3399FF34, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, | |
724 | + 0x1C1A0E00, 0x2C2A291F, 0x6F3B2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0033, | |
725 | + 0x349CFF35, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, | |
726 | + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2E1A, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0034, | |
727 | + 0x359FFF36, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, | |
728 | + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, | |
729 | + 0x359FFF37, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, | |
730 | + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, | |
731 | + 0x36A2FF38, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, | |
732 | + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0036, | |
733 | + 0x37A5FF39, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, | |
734 | + 0x1D1A0F00, 0x2D2B2928, 0x783B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0037, | |
735 | + 0x38A8FF3A, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, | |
736 | + 0x1E1B1800, 0x2E2C2A29, 0x783C2F1B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0038, | |
737 | + 0x39ABFF3B, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, | |
738 | + 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, | |
739 | + 0x39ABFF3C, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, | |
740 | + 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, | |
741 | + 0x3AAEFF3D, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, | |
742 | + 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003A, | |
743 | + 0x3BB1FF3E, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, | |
744 | + 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003B, | |
745 | + 0x3CB4FF3F, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, | |
746 | + 0x1F1C1900, 0x2F2D2B29, 0x793C381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003C, | |
747 | + 0x3DB7FF40, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, | |
748 | + 0x1F1C1900, 0x2F2D2B29, 0x793D381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003D, | |
749 | + 0x3EBAFF41, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, | |
750 | + 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, | |
751 | + 0x3EBAFF42, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, | |
752 | + 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, | |
753 | + 0x3FBDFF43, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, | |
754 | + 0x1F1C1900, 0x2F2D2B29, 0x793D391D, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003F, | |
755 | + 0x40C0FF44, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, | |
756 | + 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100040, | |
757 | + 0x41C3FF45, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, | |
758 | + 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100041, | |
759 | + 0x42C6FF46, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, | |
760 | + 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, | |
761 | + 0x42C6FF47, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, | |
762 | + 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, | |
763 | + 0x43C9FF48, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, | |
764 | + 0x281D1A00, 0x382D2B2A, 0x7A3E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100043, | |
765 | + 0x44CCFF49, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, | |
766 | + 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110044, | |
767 | + 0x45CFFF4A, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, | |
768 | + 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110045, | |
769 | + 0x46D2FF4B, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, | |
770 | + 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, | |
771 | + 0x46D2FF4C, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, | |
772 | + 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, | |
773 | + 0x47D5FF4D, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, | |
774 | + 0x291E1A00, 0x382E2C2A, 0x7A3F3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110047, | |
775 | + 0x48D8FF4E, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, | |
776 | + 0x291E1B00, 0x392F2D2B, 0x7A3F3A1E, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120048, | |
777 | + 0x49DBFF4F, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, | |
778 | + 0x291E1B00, 0x392F2D2B, 0x7A3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120049, | |
779 | + 0x4ADEFF50, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, | |
780 | + 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, | |
781 | + 0x4ADEFF51, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, | |
782 | + 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, | |
783 | + 0x4BE1FF52, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, | |
784 | + 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004B, | |
785 | + 0x4CE4FF53, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, | |
786 | + 0x2A1F1B00, 0x39382D2C, 0x7B483A1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004C, | |
787 | + 0x4DE7FF54, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, | |
788 | + 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004D, | |
789 | + 0x4EEAFF55, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, | |
790 | + 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, | |
791 | + 0x4EEAFF56, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, | |
792 | + 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, | |
793 | + 0x4FEDFF57, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, | |
794 | + 0x2A1F1B00, 0x39382D2C, 0x7B483B28, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004F, | |
795 | + 0x50F0FF58, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, | |
796 | + 0x2A281C00, 0x3A382E2C, 0x7B483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140050, | |
797 | + 0x51F3FF59, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, | |
798 | + 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, | |
799 | + 0x51F3FF5A, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, | |
800 | + 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, | |
801 | + 0x52F6FF5B, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, | |
802 | + 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140052, | |
803 | + 0x53F9FF5C, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, | |
804 | + 0x2A281C00, 0x3A382E2C, 0x7C493B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140053, | |
805 | + 0x54FCFF5D, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, | |
806 | + 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150054, | |
807 | + 0x55FFFF5E, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, | |
808 | + 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, | |
809 | + 0x55FFFF5F, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, | |
810 | + 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, | |
811 | + 0x57FFFF60, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, | |
812 | + 0x2B281D00, 0x3A392F2D, 0x7C493C29, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150057, | |
813 | + 0x58FFFF61, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, | |
814 | + 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x00160058, | |
815 | + 0x5AFFFF62, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, | |
816 | + 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x0016005A, | |
817 | + 0x5CFFFF63, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, | |
818 | + 0x2C291E00, 0x3B3A382E, 0x7D493D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005C, | |
819 | + 0x5DFFFF64, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, | |
820 | + 0x2C291E00, 0x3B3A382E, 0x7D4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005D, | |
821 | + 0x5FFFFF65, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, | |
822 | + 0x2C291E00, 0x3B3A382E, 0x7E4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005F, | |
823 | + 0x60FFFF66, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, | |
824 | + 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180060, | |
825 | + 0x62FFFF67, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, | |
826 | + 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180062, | |
827 | + 0x63FFFF68, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, | |
828 | + 0x2C2A1E00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180063, | |
829 | + 0x65FFFF69, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, | |
830 | + 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190065, | |
831 | + 0x66FFFF6A, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, | |
832 | + 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190066, | |
833 | + 0x68FFFF6B, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, | |
834 | + 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0068, | |
835 | + 0x69FFFF6C, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, | |
836 | + 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0069, | |
837 | + 0x6BFFFF6D, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, | |
838 | + 0x2D2A1F00, 0x3D3B3938, 0x7F4B3F2B, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A006B, | |
839 | + 0x6CFFFF6E, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, | |
840 | + 0x2E2B2800, 0x3D3B3A38, 0x7F4B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006C, | |
841 | + 0x6EFFFF6F, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, | |
842 | + 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006E, | |
843 | + 0x6FFFFF70, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, | |
844 | + 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006F, | |
845 | + 0x71FFFF71, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, | |
846 | + 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0071, | |
847 | + 0x72FFFF72, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, | |
848 | + 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0072, | |
849 | + 0x74FFFF73, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, | |
850 | + 0x2F2B2900, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0074, | |
851 | + 0x75FFFF74, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, | |
852 | + 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0075, | |
853 | + 0x76FFFF75, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, | |
854 | + 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0076, | |
855 | + 0x78FFFF76, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, | |
856 | + 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0078, | |
857 | + 0x79FFFF77, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, | |
858 | + 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0079, | |
859 | + 0x7BFFFF78, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, | |
860 | + 0x2F2C2900, 0x3F3D3B39, 0x894D482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E007B, | |
861 | + 0x7DFFFF79, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, | |
862 | + 0x382C2900, 0x3F3D3B39, 0x894D492C, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007D, | |
863 | + 0x7FFFFF7A, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, | |
864 | + 0x382C2900, 0x3F3D3B39, 0x894D492D, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007F, | |
865 | + 0x81FFFF7B, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, | |
866 | + 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200081, | |
867 | + 0x83FFFF7C, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, | |
868 | + 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200083, | |
869 | + 0x86FFFF7D, 0x00000000, 0x001A0027, 0x0020000D, 0x00270000, 0x00430034, 0x005D0050, 0x0081006E, | |
870 | + 0x382D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x00000081, 0x00210086, | |
871 | + 0x88FFFF7E, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, | |
872 | + 0x392D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x00220088, | |
873 | + 0x8AFFFF7F, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, | |
874 | + 0x392D2A00, 0x483E3C3A, 0x8A4E492E, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x0022008A, | |
875 | + 0x8CFFFF80, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, | |
876 | + 0x392E2A00, 0x493F3C3B, 0x8A4E4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008C, | |
877 | + 0x8EFFFF81, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, | |
878 | + 0x392E2A00, 0x493F3C3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008E, | |
879 | + 0x90FFFF82, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, | |
880 | + 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240090, | |
881 | + 0x92FFFF83, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, | |
882 | + 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240092, | |
883 | + 0x94FFFF84, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, | |
884 | + 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250094, | |
885 | + 0x96FFFF85, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, | |
886 | + 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250096, | |
887 | + 0x98FFFF86, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, | |
888 | + 0x3A2F2B00, 0x49483D3C, 0x8B584A2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x00260098, | |
889 | + 0x9AFFFF87, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, | |
890 | + 0x3A2F2B00, 0x49483D3C, 0x8B584B2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x0026009A, | |
891 | + 0x9CFFFF88, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, | |
892 | + 0x3A2F2C00, 0x4A483E3C, 0x8B584B2F, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009C, | |
893 | + 0x9EFFFF89, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, | |
894 | + 0x3A2F2C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009E, | |
895 | + 0xA1FFFF8A, 0x00000000, 0x001F002F, 0x00270010, 0x002F0000, 0x0051003F, 0x00710061, 0x009C0085, | |
896 | + 0x3A382C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x0000009C, 0x002800A1, | |
897 | + 0xA4FFFF8B, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, | |
898 | + 0x3A382C00, 0x4A493E3C, 0x8C584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A4, | |
899 | + 0xA6FFFF8C, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, | |
900 | + 0x3A382C00, 0x4A493E3C, 0x8C594B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A6, | |
901 | + 0xA9FFFF8D, 0x00000000, 0x00210031, 0x00290010, 0x00310000, 0x00550042, 0x00760066, 0x00A4008B, | |
902 | + 0x3B382C00, 0x4A493F3D, 0x8C594C38, 0x6F6F2E3E, 0x002A001C, 0x00000000, 0x000000A4, 0x002A00A9, | |
903 | + 0xACFFFF8E, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, | |
904 | + 0x3B382D00, 0x4B493F3D, 0x8C594C38, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AC, | |
905 | + 0xAEFFFF8F, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, | |
906 | + 0x3B382D00, 0x4B493F3D, 0x8C594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AE, | |
907 | + 0xB1FFFF90, 0x00000000, 0x00220034, 0x002B0011, 0x00340000, 0x00590045, 0x007C006B, 0x00AC0092, | |
908 | + 0x3B392D00, 0x4B49483D, 0x8D594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000AC, 0x002C00B1, | |
909 | + 0xB4FFFF91, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, | |
910 | + 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B4, | |
911 | + 0xB6FFFF92, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, | |
912 | + 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B6, | |
913 | + 0xB9FFFF93, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, | |
914 | + 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00B9, | |
915 | + 0xBBFFFF94, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, | |
916 | + 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00BB, | |
917 | + 0xBEFFFF95, 0x00000000, 0x00250037, 0x002E0012, 0x00370000, 0x005F0049, 0x00840072, 0x00B8009C, | |
918 | + 0x3C392E00, 0x4C4A483E, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000B8, 0x002F00BE, | |
919 | + 0xC0FFFF96, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, | |
920 | + 0x3C392E00, 0x4C4A483F, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C0, | |
921 | + 0xC3FFFF97, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, | |
922 | + 0x3C392E00, 0x4C4A483F, 0x8E5A4D3A, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C3, | |
923 | + 0xC7FFFF98, 0x00000000, 0x00260039, 0x00300013, 0x00390000, 0x0064004D, 0x008A0077, 0x00BF00A3, | |
924 | + 0x3D3A2E00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3848, 0x002C001E, 0x00000000, 0x000000BF, 0x003100C7, | |
925 | + 0xCAFFFF99, 0x00000000, 0x0027003B, 0x00310014, 0x003B0000, 0x0066004E, 0x008D0079, 0x00C300A6, | |
926 | + 0x3D3A2F00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3949, 0x002C001E, 0x00000000, 0x000000C3, 0x003200CA, | |
927 | + 0xCDFFFF9A, 0x00000000, 0x0028003C, 0x00320014, 0x003C0000, 0x00680050, 0x008F007C, 0x00C700A9, | |
928 | + 0x3D3A2F00, 0x4C4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000C7, 0x003300CD, | |
929 | + 0xD0FFFF9B, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, | |
930 | + 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D0, | |
931 | + 0xD3FFFF9C, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, | |
932 | + 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D3, | |
933 | + 0xD6FFFF9D, 0x00000000, 0x0029003E, 0x00340015, 0x003E0000, 0x006C0053, 0x00950080, 0x00CF00B0, | |
934 | + 0x3E3A3800, 0x4D4B4948, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000CF, 0x003500D6, | |
935 | + 0xD9FFFF9E, 0x00000000, 0x002A003F, 0x00350015, 0x003F0000, 0x006E0054, 0x00980083, 0x00D300B3, | |
936 | + 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000D3, 0x003600D9, | |
937 | + 0xDCFFFF9F, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, | |
938 | + 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DC, | |
939 | + 0xDFFFFFA0, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, | |
940 | + 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DF, | |
941 | + 0xE2FFFFA1, 0x00000000, 0x002C0042, 0x00370016, 0x00420000, 0x00720058, 0x009E0088, 0x00DB00BA, | |
942 | + 0x3E3B3800, 0x4E4C4A49, 0x8F5C4F3B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DB, 0x003800E2, | |
943 | + 0xE6FFFFA2, 0x00000000, 0x002D0043, 0x00380016, 0x00430000, 0x00740059, 0x00A0008A, 0x00DF00BD, | |
944 | + 0x3F3B3800, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DF, 0x003900E6, | |
945 | + 0xE9FFFFA3, 0x00000000, 0x002D0044, 0x00390017, 0x00440000, 0x0076005B, 0x00A3008C, 0x00E300C1, | |
946 | + 0x3F3B3900, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000E3, 0x003A00E9, | |
947 | + 0xEDFFFFA4, 0x00000000, 0x002E0045, 0x003A0017, 0x00450000, 0x0078005C, 0x00A6008F, 0x00E600C4, | |
948 | + 0x3F3C3900, 0x4E4C4A49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000E6, 0x003B00ED, | |
949 | + 0xF0FFFFA5, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, | |
950 | + 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F0, | |
951 | + 0xF3FFFFA6, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, | |
952 | + 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F3, | |
953 | + 0xF7FFFFA7, 0x00000000, 0x00300047, 0x003C0018, 0x00470000, 0x007C005F, 0x00AC0094, 0x00EE00CB, | |
954 | + 0x483C3900, 0x4F4D4B49, 0x8F5D583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EE, 0x003D00F7, | |
955 | + 0xFAFFFFA8, 0x00000000, 0x00300049, 0x003D0018, 0x00490000, 0x007E0061, 0x00AE0096, 0x00F200CE, | |
956 | + 0x483C3900, 0x4F4D4B49, 0x8F5D593C, 0x6F6F3B4B, 0x002F0029, 0x00000000, 0x000000F2, 0x003E00FA, | |
957 | + 0xFDFFFFA9, 0x00000000, 0x0031004A, 0x003E0019, 0x004A0000, 0x00800062, 0x00B10099, 0x00F600D1, | |
958 | + 0x483C3900, 0x4F4D4B4A, 0x8F5D593C, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000F6, 0x003F00FD, | |
959 | + 0xFFFFFFAA, 0x00000000, 0x0032004B, 0x003F0019, 0x004B0000, 0x00820064, 0x00B4009B, 0x00FA00D5, | |
960 | + 0x483D3900, 0x584D4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FA, 0x00400101, | |
961 | + 0xFFFFFFAB, 0x00000000, 0x0033004C, 0x003F0019, 0x004C0000, 0x00840066, 0x00B7009D, 0x00FE00D8, | |
962 | + 0x483D3A00, 0x584E4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FE, 0x00410105, | |
963 | + 0xFFFFFFAC, 0x00000000, 0x0034004D, 0x0040001A, 0x004D0000, 0x00860067, 0x00BA00A0, 0x010200DB, | |
964 | + 0x483D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x00000102, 0x00420109, | |
965 | + 0xFFFFFFAD, 0x00000000, 0x0034004F, 0x0041001A, 0x004F0000, 0x00880069, 0x00BC00A2, 0x010600DE, | |
966 | + 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4B, 0x00380029, 0x00000000, 0x00000106, 0x0043010D, | |
967 | + 0xFFFFFFAE, 0x00000000, 0x00350050, 0x0042001B, 0x00500000, 0x008A006A, 0x00BF00A5, 0x010A00E2, | |
968 | + 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4C, 0x00380029, 0x00000000, 0x0000010A, 0x00440110, | |
969 | + 0xFFFFFFAF, 0x00000000, 0x00360051, 0x0043001B, 0x00510000, 0x008C006C, 0x00C200A7, 0x010E00E5, | |
970 | + 0x493E3A00, 0x584E4C4A, 0x8F5E593E, 0x6F6F3C4C, 0x0038002A, 0x00000000, 0x0000010E, 0x00450114, | |
971 | + 0xFFFFFFB0, 0x00000000, 0x00370052, 0x0044001B, 0x00520000, 0x008E006D, 0x00C500AA, 0x011100E8, | |
972 | + 0x493E3A00, 0x594F4C4B, 0x8F5E5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000111, 0x00460118, | |
973 | + 0xFFFFFFB1, 0x00000000, 0x00370053, 0x0045001C, 0x00530000, 0x0090006F, 0x00C800AC, 0x011500EC, | |
974 | + 0x493E3A00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000115, 0x0047011C, | |
975 | + 0xFFFFFFB2, 0x00000000, 0x00380054, 0x0046001C, 0x00540000, 0x00920071, 0x00CB00AE, 0x011900EF, | |
976 | + 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000119, 0x00480120, | |
977 | + 0xFFFFFFB3, 0x00000000, 0x00390056, 0x0047001D, 0x00560000, 0x00940072, 0x00CD00B1, 0x011D00F2, | |
978 | + 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x0000011D, 0x00490124, | |
979 | + 0xFFFFFFB4, 0x00000000, 0x003A0057, 0x0048001D, 0x00570000, 0x00960074, 0x00D000B3, 0x012100F6, | |
980 | + 0x493F3B00, 0x594F4D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000121, 0x004A0128, | |
981 | + 0xFFFFFFB5, 0x00000000, 0x003B0058, 0x0049001D, 0x00580000, 0x00980075, 0x00D300B6, 0x012500F9, | |
982 | + 0x4A3F3B00, 0x59584D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000125, 0x004B012C, | |
983 | + 0xFFFFFFB6, 0x00000000, 0x003B0059, 0x004A001E, 0x00590000, 0x009A0077, 0x00D600B8, 0x012900FC, | |
984 | + 0x4A3F3B00, 0x59584D4C, 0x8F685A3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x00000129, 0x004C0130, | |
985 | + 0xFFFFFFB7, 0x00000000, 0x003C005A, 0x004B001E, 0x005A0000, 0x009C0078, 0x00D900BA, 0x012D0100, | |
986 | + 0x4A3F3B00, 0x59584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x0000012D, 0x004D0135, | |
987 | + 0xFFFFFFB8, 0x00000000, 0x003D005B, 0x004C001E, 0x005B0000, 0x009E007A, 0x00DB00BD, 0x01310103, | |
988 | + 0x4A3F3B00, 0x5A584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x003A002B, 0x00000000, 0x00000131, 0x004E0139, | |
989 | + 0xFFFFFFB9, 0x00000000, 0x003E005D, 0x004D001F, 0x005D0000, 0x00A0007B, 0x00DE00BF, 0x01350106, | |
990 | + 0x4A3F3C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000135, 0x004F013D, | |
991 | + 0xFFFFFFBA, 0x00000000, 0x003F005E, 0x004E001F, 0x005E0000, 0x00A3007D, 0x00E100C2, 0x0139010A, | |
992 | + 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000139, 0x00500142, | |
993 | + 0xFFFFFFBB, 0x00000000, 0x003F005F, 0x004F0020, 0x005F0000, 0x00A5007F, 0x00E400C4, 0x013C010D, | |
994 | + 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x0000013C, 0x00510146, | |
995 | + 0xFFFFFFBC, 0x00000000, 0x00400060, 0x00500020, 0x00600000, 0x00A70080, 0x00E700C7, 0x01400110, | |
996 | + 0x4A483C00, 0x5A594E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000140, 0x0052014A, | |
997 | + 0xFFFFFFBD, 0x00000000, 0x00410061, 0x00510020, 0x00610000, 0x00A90082, 0x00E900C9, 0x01440114, | |
998 | + 0x4B483C00, 0x5A594F4D, 0x8F695B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000144, 0x0053014F, | |
999 | + 0xFFFFFFBE, 0x00000000, 0x00420064, 0x00530021, 0x00640000, 0x00AD0085, 0x00EF00CE, 0x014C011A, | |
1000 | + 0x4B483D00, 0x5A594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003A002C, 0x00000000, 0x0000014C, 0x00550154, | |
1001 | + 0xFFFFFFBF, 0x00000000, 0x00430065, 0x00540022, 0x00650000, 0x00AF0086, 0x00F200D0, 0x0150011E, | |
1002 | + 0x4B483D00, 0x5B594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000150, 0x00560158, | |
1003 | + 0xFFFFFFC0, 0x00000000, 0x00440066, 0x00550022, 0x00660000, 0x00B10088, 0x00F500D3, 0x01540121, | |
1004 | + 0x4B493D00, 0x5B594F4D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000154, 0x0057015D, | |
1005 | + 0xFFFFFFC1, 0x00000000, 0x00450067, 0x00560022, 0x00670000, 0x00B3008A, 0x00F800D5, 0x01580124, | |
1006 | + 0x4B493D00, 0x5B59584D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000158, 0x00580162, | |
1007 | + 0xFFFFFFC2, 0x00000000, 0x00460068, 0x00570023, 0x00680000, 0x00B5008B, 0x00FA00D8, 0x015C0128, | |
1008 | + 0x4B493D00, 0x5B59584E, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x0000015C, 0x00590167, | |
1009 | + 0xFFFFFFC3, 0x00000000, 0x0047006B, 0x00590024, 0x006B0000, 0x00B9008E, 0x010000DC, 0x0163012E, | |
1010 | + 0x4C493D00, 0x5B59584E, 0x8F695C49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000163, 0x005B016C, | |
1011 | + 0xFFFFFFC4, 0x00000000, 0x0048006C, 0x005A0024, 0x006C0000, 0x00BB0090, 0x010300DF, 0x01670131, | |
1012 | + 0x4C493E00, 0x5B5A584E, 0x8F695D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000167, 0x005C0171, | |
1013 | + 0xFFFFFFC5, 0x00000000, 0x0049006D, 0x005B0024, 0x006D0000, 0x00BD0091, 0x010600E1, 0x016B0135, | |
1014 | + 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x0000016B, 0x005D0176, | |
1015 | + 0xFFFFFFC6, 0x00000000, 0x0049006E, 0x005C0025, 0x006E0000, 0x00BF0093, 0x010800E4, 0x016F0138, | |
1016 | + 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000016F, 0x005E017B, | |
1017 | + 0xFFFFFFC7, 0x00000000, 0x004B0071, 0x005E0026, 0x00710000, 0x00C30096, 0x010E00E9, 0x0177013F, | |
1018 | + 0x4C493E00, 0x5C5A584F, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x00000177, 0x00600180, | |
1019 | + 0xFFFFFFC8, 0x00000000, 0x004C0072, 0x005F0026, 0x00720000, 0x00C50098, 0x011100EB, 0x017B0142, | |
1020 | + 0x4C4A3E00, 0x5C5A594F, 0x8F6A5D4A, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000017B, 0x00610185, | |
1021 | + 0xFFFFFFC9, 0x00000000, 0x004D0073, 0x00600026, 0x00730000, 0x00C70099, 0x011400ED, 0x017F0145, | |
1022 | + 0x4C4A3E00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4858, 0x003C002E, 0x00000000, 0x0000017F, 0x0062018B, | |
1023 | + 0xFFFFFFCA, 0x00000000, 0x004E0075, 0x00620027, 0x00750000, 0x00CB009C, 0x011900F2, 0x0187014C, | |
1024 | + 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x00000187, 0x00640190, | |
1025 | + 0xFFFFFFCB, 0x00000000, 0x004F0076, 0x00630027, 0x00760000, 0x00CD009E, 0x011C00F5, 0x018B014F, | |
1026 | + 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x0000018B, 0x00650196, | |
1027 | + 0xFFFFFFCC, 0x00000000, 0x00500078, 0x00640028, 0x00780000, 0x00CF009F, 0x011F00F7, 0x018E0153, | |
1028 | + 0x4D4A3F00, 0x5C5B594F, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000018E, 0x0066019B, | |
1029 | + 0xFFFFFFCD, 0x00000000, 0x0051007A, 0x00660029, 0x007A0000, 0x00D300A3, 0x012500FC, 0x01960159, | |
1030 | + 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x00000196, 0x006801A1, | |
1031 | + 0xFFFFFFCE, 0x00000000, 0x0052007B, 0x00670029, 0x007B0000, 0x00D500A4, 0x012700FE, 0x019A015D, | |
1032 | + 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000019A, 0x006901A7, | |
1033 | + 0xFFFFFFCF, 0x00000000, 0x0054007D, 0x0068002A, 0x007D0000, 0x00D900A7, 0x012D0103, 0x01A20163, | |
1034 | + 0x4E4A4800, 0x5D5B5958, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A2, 0x006B01AD, | |
1035 | + 0xFFFFFFD0, 0x00000000, 0x0054007F, 0x0069002A, 0x007F0000, 0x00DB00A9, 0x01300106, 0x01A60167, | |
1036 | + 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A6, 0x006C01B3, | |
1037 | + 0xFFFFFFD1, 0x00000000, 0x00560081, 0x006B002B, 0x00810000, 0x00DF00AC, 0x0135010A, 0x01AE016D, | |
1038 | + 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001AE, 0x006E01B9, | |
1039 | + 0xFFFFFFD2, 0x00000000, 0x00570082, 0x006C002B, 0x00820000, 0x00E100AD, 0x0138010D, 0x01B20171, | |
1040 | + 0x4E4B4800, 0x5E5C5A58, 0x8F6B5F4B, 0x6F6F4A5A, 0x003E002F, 0x00000000, 0x000001B2, 0x006F01BF, | |
1041 | + 0xFFFFFFD3, 0x00000000, 0x00580084, 0x006E002C, 0x00840000, 0x00E600B1, 0x013E0112, 0x01B90177, | |
1042 | + 0x4E4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001B9, 0x007101C6, | |
1043 | + 0xFFFFFFD4, 0x00000000, 0x005A0087, 0x0070002D, 0x00870000, 0x00EA00B4, 0x01430117, 0x01C1017E, | |
1044 | + 0x4F4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C1, 0x007301CD, | |
1045 | + 0xFFFFFFD5, 0x00000000, 0x005B0088, 0x0071002D, 0x00880000, 0x00EC00B5, 0x01460119, 0x01C50181, | |
1046 | + 0x4F4B4900, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C5, 0x007401D3, | |
1047 | + 0xFFFFFFD6, 0x00000000, 0x005C008A, 0x0073002E, 0x008A0000, 0x00F000B8, 0x014C011E, 0x01CD0188, | |
1048 | + 0x4F4C4900, 0x5E5C5A59, 0x8F6C684C, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001CD, 0x007601DB, | |
1049 | + 0xFFFFFFD7, 0x00000000, 0x005E008D, 0x0075002F, 0x008D0000, 0x00F400BC, 0x01520123, 0x01D5018E, | |
1050 | + 0x4F4C4900, 0x5F5C5B59, 0x8F6C684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001D5, 0x007801E2, | |
1051 | + 0xFFFFFFD8, 0x00000000, 0x005F008F, 0x00770030, 0x008F0000, 0x00F800BF, 0x01570127, 0x01DD0195, | |
1052 | + 0x584C4900, 0x5F5D5B59, 0x8F6D684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001DD, 0x007A01E9, | |
1053 | + 0xFFFFFFD9, 0x00000000, 0x00610091, 0x00790030, 0x00910000, 0x00FC00C2, 0x015D012C, 0x01E4019C, | |
1054 | + 0x584C4900, 0x5F5D5B59, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001E4, 0x007C01F1, | |
1055 | + 0xFFFFFFDA, 0x00000000, 0x00620094, 0x007B0031, 0x00940000, 0x010000C5, 0x01620131, 0x01EC01A2, | |
1056 | + 0x584C4900, 0x5F5D5B5A, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001EC, 0x007E01F9, | |
1057 | + 0xFFFFFFDB, 0x00000000, 0x00640096, 0x007D0032, 0x00960000, 0x010400C8, 0x01680136, 0x01F401A9, | |
1058 | + 0x584D4900, 0x685D5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001F4, 0x00800201, | |
1059 | + 0xFFFFFFDC, 0x00000000, 0x00660098, 0x007F0033, 0x00980000, 0x010800CB, 0x016E013B, 0x01FC01B0, | |
1060 | + 0x584D4A00, 0x685E5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001FC, 0x0082020A, | |
1061 | + 0xFFFFFFDD, 0x00000000, 0x0067009B, 0x00810034, 0x009B0000, 0x010C00CE, 0x01730140, 0x020401B6, | |
1062 | + 0x584D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x00000204, 0x00840212, | |
1063 | + 0xFFFFFFDE, 0x00000000, 0x0069009D, 0x00830034, 0x009D0000, 0x011000D1, 0x01790145, 0x020B01BD, | |
1064 | + 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x0000020B, 0x0086021B, | |
1065 | + 0xFFFFFFDF, 0x00000000, 0x006B00A1, 0x00860036, 0x00A10000, 0x011600D6, 0x0181014C, 0x021701C7, | |
1066 | + 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4C5C, 0x00480039, 0x00000000, 0x00000217, 0x00890225, | |
1067 | + 0xFFFFFFE0, 0x00000000, 0x006D00A3, 0x00880036, 0x00A30000, 0x011A00D9, 0x01870151, 0x021F01CE, | |
1068 | + 0x594E4A00, 0x685E5C5B, 0x8F6E6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000021F, 0x008B022F, | |
1069 | + 0xFFFFFFE1, 0x00000000, 0x006F00A6, 0x008B0037, 0x00A60000, 0x012000DE, 0x018F0158, 0x022B01D7, | |
1070 | + 0x594E4A00, 0x695F5C5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000022B, 0x008E0239, | |
1071 | + 0xFFFFFFE2, 0x00000000, 0x007100A9, 0x008D0038, 0x00A90000, 0x012500E1, 0x0195015D, 0x023301DE, | |
1072 | + 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x00000233, 0x00900243, | |
1073 | + 0xFFFFFFE3, 0x00000000, 0x007300AC, 0x00900039, 0x00AC0000, 0x012B00E6, 0x019D0164, 0x023E01E8, | |
1074 | + 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000023E, 0x0093024E, | |
1075 | + 0xFFFFFFE4, 0x00000000, 0x007500B0, 0x0092003B, 0x00B00000, 0x013100EA, 0x01A6016B, 0x024A01F2, | |
1076 | + 0x5A4F4B00, 0x69685D5B, 0x8F6F6A4F, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000024A, 0x0096025A, | |
1077 | + 0xFFFFFFE5, 0x00000000, 0x007800B3, 0x0095003C, 0x00B30000, 0x013700EF, 0x01AE0173, 0x025601FC, | |
1078 | + 0x5A4F4B00, 0x69685D5C, 0x8F786B4F, 0x6F6F4D5D, 0x0049003B, 0x00000000, 0x00000256, 0x00990266, | |
1079 | + 0xFFFFFFE6, 0x00000000, 0x007A00B7, 0x0098003D, 0x00B70000, 0x013D00F4, 0x01B7017A, 0x02610206, | |
1080 | + 0x5A4F4B00, 0x6A685E5C, 0x8F786B4F, 0x6F6F4D5D, 0x004A003B, 0x00000000, 0x00000261, 0x009C0272, | |
1081 | + 0xFFFFFFE7, 0x00000000, 0x007D00BC, 0x009C003F, 0x00BC0000, 0x014500FA, 0x01C20184, 0x02710213, | |
1082 | + 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x00000271, 0x00A00280, | |
1083 | + 0xFFFFFFE8, 0x00000000, 0x007F00BF, 0x009F0040, 0x00BF0000, 0x014B00FF, 0x01CA018B, 0x027D021D, | |
1084 | + 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000027D, 0x00A3028E, | |
1085 | + 0xFFFFFFE9, 0x00000000, 0x008200C4, 0x00A30041, 0x00C40000, 0x01530105, 0x01D60194, 0x028C022A, | |
1086 | + 0x5B584C00, 0x6A695F5D, 0x8F796B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000028C, 0x00A7029C, | |
1087 | + 0xFFFFFFEA, 0x00000000, 0x008600C8, 0x00A70043, 0x00C80000, 0x015B010B, 0x01E1019E, 0x029C0238, | |
1088 | + 0x5B584D00, 0x6A695F5D, 0x8F796C58, 0x6F6F4F5F, 0x004A003C, 0x00000000, 0x0000029C, 0x00AB02AC, | |
1089 | + 0xFFFFFFEB, 0x00000000, 0x008900CD, 0x00AB0044, 0x00CD0000, 0x01630111, 0x01EC01A8, 0x02AC0245, | |
1090 | + 0x5B594D00, 0x6B695F5D, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002AC, 0x00AF02BC, | |
1091 | + 0xFFFFFFEC, 0x00000000, 0x008C00D2, 0x00AF0046, 0x00D20000, 0x016C0118, 0x01F701B2, 0x02BB0252, | |
1092 | + 0x5B594D00, 0x6B69685E, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002BB, 0x00B302CD, | |
1093 | + 0xFFFFFFED, 0x00000000, 0x009000D8, 0x00B40048, 0x00D80000, 0x01760120, 0x020601BE, 0x02CF0263, | |
1094 | + 0x5C594E00, 0x6B6A685E, 0x8F796D59, 0x6F6F5868, 0x004B003D, 0x00000000, 0x000002CF, 0x00B802E0, | |
1095 | + 0xFFFFFFEE, 0x00000000, 0x009300DC, 0x00B80049, 0x00DC0000, 0x017E0126, 0x021101C7, 0x02DE0270, | |
1096 | + 0x5C594E00, 0x6B6A685E, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002DE, 0x00BC02F3, | |
1097 | + 0xFFFFFFEF, 0x00000000, 0x009700E2, 0x00BC004B, 0x00E20000, 0x0188012E, 0x021F01D3, 0x02F20281, | |
1098 | + 0x5C594E00, 0x6C6A685F, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002F2, 0x00C10307, | |
1099 | + 0xFFFFFFF0, 0x00000000, 0x009B00E9, 0x00C2004E, 0x00E90000, 0x01940137, 0x023001E2, 0x03090295, | |
1100 | + 0x5D5A4F00, 0x6C6A695F, 0x8F7A6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x00000309, 0x00C7031C, | |
1101 | + 0xFFFFFFF1, 0x00000000, 0x009F00EF, 0x00C70050, 0x00EF0000, 0x019E013F, 0x023E01EE, 0x031D02A5, | |
1102 | + 0x5D5A4F00, 0x6C6B695F, 0x8F7B6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x0000031D, 0x00CC0333, | |
1103 | + 0xFFFFFFF2, 0x00000000, 0x00A400F6, 0x00CD0052, 0x00F60000, 0x01AB0148, 0x024F01FD, 0x033402B9, | |
1104 | + 0x5D5A4F00, 0x6D6B6968, 0x8F7B6E5A, 0x6F6F5969, 0x004D003E, 0x00000000, 0x00000334, 0x00D2034B, | |
1105 | + 0xFFFFFFF3, 0x00000000, 0x00AA00FE, 0x00D40055, 0x00FE0000, 0x01B90153, 0x0262020E, 0x035002D1, | |
1106 | + 0x5E5B5800, 0x6D6B6A68, 0x8F7B6F5B, 0x6F6F5969, 0x004D003F, 0x00000000, 0x00000350, 0x00D90365, | |
1107 | + 0xFFFFFFF4, 0x00000000, 0x00AF0107, 0x00DB0058, 0x01070000, 0x01C7015E, 0x0276021F, 0x036B02E8, | |
1108 | + 0x5E5B5800, 0x6E6C6A68, 0x8F7B6F5B, 0x6F6F5A6A, 0x004E003F, 0x00000000, 0x0000036B, 0x00E00380, | |
1109 | + 0xFFFFFFF5, 0x00000000, 0x00B4010F, 0x00E2005A, 0x010F0000, 0x01D50169, 0x028A022F, 0x038602FF, | |
1110 | + 0x5F5B5800, 0x6E6C6A69, 0x8F7C785B, 0x6F6F5A6A, 0x004E0048, 0x00000000, 0x00000386, 0x00E7039D, | |
1111 | + 0xFFFFFFF6, 0x00000000, 0x00BA0117, 0x00E8005D, 0x01170000, 0x01E30174, 0x029D0240, 0x03A20316, | |
1112 | + 0x5F5C5900, 0x6F6C6A69, 0x8F7C785C, 0x6F6F5A6A, 0x004F0048, 0x00000000, 0x000003A2, 0x00EE03BB, | |
1113 | + 0xFFFFFFF7, 0x00000000, 0x00C10121, 0x00F10060, 0x01210000, 0x01F60182, 0x02B70256, 0x03C50334, | |
1114 | + 0x685C5900, 0x6F6D6B69, 0x8F7D785C, 0x6F6F5B6B, 0x004F0048, 0x00000000, 0x000003C5, 0x00F703DC, | |
1115 | + 0xFFFFFFF8, 0x00000000, 0x00C7012B, 0x00F90064, 0x012B0000, 0x0206018E, 0x02CD026A, 0x03E4034F, | |
1116 | + 0x685C5900, 0x6F6D6B6A, 0x8F7D795C, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x000003E4, 0x00FF03FE, | |
1117 | + 0xFFFFFFF9, 0x00000000, 0x00CE0135, 0x01020067, 0x01350000, 0x0218019D, 0x02E7027F, 0x0407036D, | |
1118 | + 0x685D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x00000407, 0x01080422, | |
1119 | + 0xFFFFFFFA, 0x00000000, 0x00D60141, 0x010C006B, 0x01410000, 0x022D01AC, 0x03030298, 0x042E038E, | |
1120 | + 0x695D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5C6C, 0x00580049, 0x00000000, 0x0000042E, 0x0112044A, | |
1121 | + 0xFFFFFFFB, 0x00000000, 0x00DE014D, 0x0115006F, 0x014D0000, 0x024101BC, 0x031F02B0, 0x045503AF, | |
1122 | + 0x695E5A00, 0x6F6F6C6B, 0x8F7F7A5E, 0x6F6F5C6C, 0x0059004A, 0x00000000, 0x00000455, 0x011C0473, | |
1123 | + 0xFFFFFFFC, 0x00000000, 0x00E7015B, 0x01210074, 0x015B0000, 0x025901CF, 0x034102CD, 0x048403D7, | |
1124 | + 0x695E5B00, 0x6F6F6D6B, 0x8F7F7A5E, 0x6F6F5D6D, 0x0059004A, 0x00000000, 0x00000484, 0x012804A0, | |
1125 | + 0xFFFFFFFD, 0x00000000, 0x00F10169, 0x012D0078, 0x01690000, 0x027201E1, 0x036202EA, 0x04B303FF, | |
1126 | + 0x6A5F5B00, 0x6F6F6E6C, 0x8F887B5F, 0x6F6F5D6D, 0x0059004B, 0x00000000, 0x000004B3, 0x013404D0, | |
1127 | + 0xFFFFFFFE, 0x00000000, 0x00FA0177, 0x0139007D, 0x01770000, 0x028A01F4, 0x03840307, 0x04E20427, | |
1128 | + 0x6A685C00, 0x6F6F6E6C, 0x8F887B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x000004E2, 0x01400502, | |
1129 | + 0xFFFFFFFF, 0x00000000, 0x01050187, 0x01460082, 0x01870000, 0x02A6020A, 0x03AB0329, 0x05190455, | |
1130 | + 0x6B685C00, 0x6F6F6F6D, 0x8F897B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x00000519, 0x014E0538, | |
1131 | + 0x00080004, 0x00090008, 0x000B000A, 0x000C000C, 0x000E000D, 0x0010000F, 0x00120011, 0x00130013, | |
1132 | + 0x00150014, 0x00170016, 0x00190018, 0x001A001A, 0x001C001B, 0x001E001D, 0x0020001F, 0x00210020, | |
1133 | + 0x00230022, 0x00250024, 0x00260026, 0x00280027, 0x002A0029, 0x002B002B, 0x002D002C, 0x002F002E, | |
1134 | + 0x00300030, 0x00320031, 0x00340033, 0x00350035, 0x00370036, 0x00390038, 0x003A0039, 0x003C003B, | |
1135 | + 0x003E003D, 0x003F003E, 0x00410040, 0x00420042, 0x00440043, 0x00460045, 0x00470046, 0x00490048, | |
1136 | + 0x004A004A, 0x004C004B, 0x004E004D, 0x004F004E, 0x00510050, 0x00520051, 0x00540053, 0x00550055, | |
1137 | + 0x00580057, 0x005C005A, 0x005F005D, 0x00620060, 0x00650063, 0x00680066, 0x006B0069, 0x006E006C, | |
1138 | + 0x0071006F, 0x00740072, 0x00760075, 0x00790078, 0x007D007B, 0x0081007F, 0x00860083, 0x008A0088, | |
1139 | + 0x008E008C, 0x00920090, 0x00960094, 0x009A0098, 0x009E009C, 0x00A400A1, 0x00A900A6, 0x00AE00AC, | |
1140 | + 0x00B400B1, 0x00B900B6, 0x00BE00BB, 0x00C300C0, 0x00CA00C7, 0x00D000CD, 0x00D600D3, 0x00DC00D9, | |
1141 | + 0x00E200DF, 0x00E900E6, 0x00F000ED, 0x00F700F3, 0x00FD00FA, 0x01050101, 0x010D0109, 0x01140110, | |
1142 | + 0x011C0118, 0x01240120, 0x012C0128, 0x01350130, 0x013D0139, 0x01460142, 0x014F014A, 0x01580154, | |
1143 | + 0x0162015D, 0x016C0167, 0x01760171, 0x0180017B, 0x018B0185, 0x01960190, 0x01A1019B, 0x01AD01A7, | |
1144 | + 0x01B901B3, 0x01C601BF, 0x01D301CD, 0x01E201DB, 0x01F101E9, 0x020101F9, 0x0212020A, 0x0225021B, | |
1145 | + 0x0239022F, 0x024E0243, 0x0266025A, 0x02800272, 0x029C028E, 0x02BC02AC, 0x02E002CD, 0x030702F3, | |
1146 | + 0x0333031C, 0x0365034B, 0x039D0380, 0x03DC03BB, 0x042203FE, 0x0473044A, 0x04D004A0, 0x05380502, | |
1147 | + 0x00080004, 0x000A0009, 0x000C000B, 0x000E000D, 0x0010000F, 0x00120011, 0x00140013, 0x00160015, | |
1148 | + 0x00180017, 0x001A0019, 0x001C001B, 0x001E001D, 0x0020001F, 0x00220021, 0x00240023, 0x00260025, | |
1149 | + 0x00280027, 0x002A0029, 0x002C002B, 0x002E002D, 0x0030002F, 0x00320031, 0x00340033, 0x00360035, | |
1150 | + 0x00380037, 0x003A0039, 0x003C003B, 0x003E003D, 0x0040003F, 0x00420041, 0x00440043, 0x00460045, | |
1151 | + 0x00480047, 0x004A0049, 0x004C004B, 0x004E004D, 0x0050004F, 0x00520051, 0x00540053, 0x00560055, | |
1152 | + 0x00580057, 0x005A0059, 0x005C005B, 0x005E005D, 0x0060005F, 0x00620061, 0x00640063, 0x00660065, | |
1153 | + 0x006A0068, 0x006E006C, 0x00720070, 0x00760074, 0x007A0078, 0x007E007C, 0x00820080, 0x00860084, | |
1154 | + 0x008A0088, 0x008E008C, 0x00920090, 0x00960094, 0x009B0098, 0x00A1009E, 0x00A700A4, 0x00AD00AA, | |
1155 | + 0x00B300B0, 0x00B900B6, 0x00BF00BC, 0x00C500C2, 0x00CB00C8, 0x00D300CF, 0x00DB00D7, 0x00E300DF, | |
1156 | + 0x00EB00E7, 0x00F300EF, 0x00FB00F7, 0x010400FF, 0x010E0109, 0x01180113, 0x0122011D, 0x012C0127, | |
1157 | + 0x01370131, 0x0143013D, 0x014F0149, 0x015B0155, 0x01670161, 0x0175016E, 0x0183017C, 0x0191018A, | |
1158 | + 0x01A00198, 0x01B001A8, 0x01C001B8, 0x01D101C8, 0x01E301DA, 0x01F501EC, 0x020801FE, 0x021C0212, | |
1159 | + 0x02300226, 0x0246023B, 0x025C0251, 0x02730267, 0x028B027F, 0x02A40297, 0x02BE02B1, 0x02D902CB, | |
1160 | + 0x02F502E7, 0x03120303, 0x03300321, 0x03500340, 0x03710360, 0x03930382, 0x03B703A5, 0x03DC03C9, | |
1161 | + 0x040203EF, 0x042A0416, 0x0454043F, 0x047F0469, 0x04AC0495, 0x04DB04C3, 0x050C04F3, 0x053F0525, | |
1162 | + 0x05740559, 0x05AB058F, 0x05E405C7, 0x061F0601, 0x065C063D, 0x069C067C, 0x06DF06BD, 0x07240701 | |
1163 | +}; | |
1164 | + | |
1165 | +const unsigned int gen9_vp9_avs_coeffs[256] = { | |
1166 | + 0x00000000, 0x40400000, 0x00000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, | |
1167 | + 0x0101FFFF, 0x4040FEFE, 0xFFFF0202, 0x00000101, 0x40FF0000, 0x00000001, 0x40FF0000, 0x00000001, | |
1168 | + 0x0202FFFF, 0x4141FCFC, 0xFEFE0404, 0xFFFF0101, 0x3FFE0000, 0x00000003, 0x3FFE0000, 0x00000003, | |
1169 | + 0x0303FFFF, 0x3F3FFBFB, 0xFDFD0606, 0xFFFF0202, 0x3EFD0000, 0x00000005, 0x3EFD0000, 0x00000005, | |
1170 | + 0x0303FEFE, 0x4040F9F9, 0xFCFC0909, 0xFFFF0202, 0x3EFC0000, 0x00000006, 0x3EFC0000, 0x00000006, | |
1171 | + 0x0404FEFE, 0x3F3FF8F8, 0xFBFB0B0B, 0xFEFE0303, 0x3CFC0000, 0x00000008, 0x3CFC0000, 0x00000008, | |
1172 | + 0x0505FDFD, 0x3E3EF7F7, 0xFAFA0E0E, 0xFEFE0303, 0x3CFB0000, 0x0000FF0A, 0x3CFB0000, 0x0000FF0A, | |
1173 | + 0x0505FDFD, 0x3D3DF5F5, 0xF9F91111, 0xFEFE0404, 0x39FB0000, 0x0000FF0D, 0x39FB0000, 0x0000FF0D, | |
1174 | + 0x0606FDFD, 0x3B3BF5F5, 0xF8F81414, 0xFDFD0404, 0x37FB0000, 0x0000FF0F, 0x37FB0000, 0x0000FF0F, | |
1175 | + 0x0606FCFC, 0x3B3BF4F4, 0xF7F71616, 0xFDFD0505, 0x35FB0000, 0x0000FF11, 0x35FB0000, 0x0000FF11, | |
1176 | + 0x0707FCFC, 0x3939F3F3, 0xF6F61919, 0xFDFD0505, 0x33FB0000, 0x0000FE14, 0x33FB0000, 0x0000FE14, | |
1177 | + 0x0707FCFC, 0x3737F3F3, 0xF5F51C1C, 0xFCFC0606, 0x31FB0000, 0x0000FE16, 0x31FB0000, 0x0000FE16, | |
1178 | + 0x0707FCFC, 0x3535F2F2, 0xF5F51F1F, 0xFCFC0606, 0x2EFB0000, 0x0000FE19, 0x2EFB0000, 0x0000FE19, | |
1179 | + 0x0707FCFC, 0x3232F2F2, 0xF4F42222, 0xFCFC0707, 0x2CFB0000, 0x0000FD1C, 0x2CFB0000, 0x0000FD1C, | |
1180 | + 0x0707FCFC, 0x3030F2F2, 0xF3F32525, 0xFCFC0707, 0x29FB0000, 0x0000FD1F, 0x29FB0000, 0x0000FD1F, | |
1181 | + 0x0707FCFC, 0x2D2DF2F2, 0xF3F32828, 0xFCFC0707, 0x27FC0000, 0x0000FC21, 0x27FC0000, 0x0000FC21, | |
1182 | + 0x0707FCFC, 0x2929F3F3, 0xF3F32B2B, 0xFCFC0707, 0x24FC0000, 0x0000FC24, 0x24FC0000, 0x0000FC24, | |
1183 | + 0x0707FCFC, 0x2828F3F3, 0xF2F22D2D, 0xFCFC0707, 0x21FC0000, 0x0000FC27, 0x21FC0000, 0x0000FC27, | |
1184 | + 0x0707FCFC, 0x2525F3F3, 0xF2F23030, 0xFCFC0707, 0x1FFD0000, 0x0000FB29, 0x1FFD0000, 0x0000FB29, | |
1185 | + 0x0707FCFC, 0x2222F4F4, 0xF2F23232, 0xFCFC0707, 0x1CFD0000, 0x0000FB2C, 0x1CFD0000, 0x0000FB2C, | |
1186 | + 0x0606FCFC, 0x1F1FF5F5, 0xF2F23535, 0xFCFC0707, 0x19FE0000, 0x0000FB2E, 0x19FE0000, 0x0000FB2E, | |
1187 | + 0x0606FCFC, 0x1C1CF5F5, 0xF3F33737, 0xFCFC0707, 0x16FE0000, 0x0000FB31, 0x16FE0000, 0x0000FB31, | |
1188 | + 0x0505FDFD, 0x1919F6F6, 0xF3F33939, 0xFCFC0707, 0x14FE0000, 0x0000FB33, 0x14FE0000, 0x0000FB33, | |
1189 | + 0x0505FDFD, 0x1616F7F7, 0xF4F43B3B, 0xFCFC0606, 0x11FF0000, 0x0000FB35, 0x11FF0000, 0x0000FB35, | |
1190 | + 0x0404FDFD, 0x1414F8F8, 0xF5F53B3B, 0xFDFD0606, 0x0FFF0000, 0x0000FB37, 0x0FFF0000, 0x0000FB37, | |
1191 | + 0x0404FEFE, 0x1111F9F9, 0xF5F53D3D, 0xFDFD0505, 0x0DFF0000, 0x0000FB39, 0x0DFF0000, 0x0000FB39, | |
1192 | + 0x0303FEFE, 0x0E0EFAFA, 0xF7F73E3E, 0xFDFD0505, 0x0AFF0000, 0x0000FB3C, 0x0AFF0000, 0x0000FB3C, | |
1193 | + 0x0303FEFE, 0x0B0BFBFB, 0xF8F83F3F, 0xFEFE0404, 0x08000000, 0x0000FC3C, 0x08000000, 0x0000FC3C, | |
1194 | + 0x0202FFFF, 0x0909FCFC, 0xF9F94040, 0xFEFE0303, 0x06000000, 0x0000FC3E, 0x06000000, 0x0000FC3E, | |
1195 | + 0x0202FFFF, 0x0606FDFD, 0xFBFB3F3F, 0xFFFF0303, 0x05000000, 0x0000FD3E, 0x05000000, 0x0000FD3E, | |
1196 | + 0x0101FFFF, 0x0404FEFE, 0xFCFC4141, 0xFFFF0202, 0x03000000, 0x0000FE3F, 0x03000000, 0x0000FE3F, | |
1197 | + 0x01010000, 0x0202FFFF, 0xFEFE4040, 0xFFFF0101, 0x01000000, 0x0000FF40, 0x01000000, 0x0000FF40, | |
1198 | +}; | |
1199 | + | |
1200 | +const unsigned int intel_vp9_costlut_key[4096] = { | |
1201 | + 0x02061200, 0x00000036, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x28190702, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010002, | |
1202 | + 0x050D2501, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, | |
1203 | + 0x050D2502, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, | |
1204 | + 0x050D2503, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, | |
1205 | + 0x06102E04, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, | |
1206 | + 0x06102E05, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, | |
1207 | + 0x07133706, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, | |
1208 | + 0x07133707, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, | |
1209 | + 0x07133708, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, | |
1210 | + 0x08164009, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, | |
1211 | + 0x0816400A, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, | |
1212 | + 0x0A1A4A0B, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, | |
1213 | + 0x0A1A4A0C, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, | |
1214 | + 0x0B1D530D, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, | |
1215 | + 0x0B1D530E, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, | |
1216 | + 0x0B1D530F, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, | |
1217 | + 0x0C205C10, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, | |
1218 | + 0x0C205C11, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, | |
1219 | + 0x0D236512, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, | |
1220 | + 0x0D236513, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, | |
1221 | + 0x0E266E14, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, | |
1222 | + 0x0E266E15, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, | |
1223 | + 0x102A7816, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, | |
1224 | + 0x102A7817, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, | |
1225 | + 0x102A7818, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, | |
1226 | + 0x112D8119, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, | |
1227 | + 0x112D811A, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, | |
1228 | + 0x12308A1B, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, | |
1229 | + 0x12308A1C, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, | |
1230 | + 0x1333931D, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, | |
1231 | + 0x1333931E, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, | |
1232 | + 0x1333931F, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, | |
1233 | + 0x14369C20, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, | |
1234 | + 0x14369C21, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, | |
1235 | + 0x163AA622, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, | |
1236 | + 0x163AA623, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, | |
1237 | + 0x173DAF24, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, | |
1238 | + 0x173DAF25, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, | |
1239 | + 0x173DAF26, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, | |
1240 | + 0x1840B827, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, | |
1241 | + 0x1840B828, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, | |
1242 | + 0x1943C129, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, | |
1243 | + 0x1943C12A, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, | |
1244 | + 0x1943C12B, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, | |
1245 | + 0x1A46CA2C, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, | |
1246 | + 0x1A46CA2D, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, | |
1247 | + 0x1B49D32E, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, | |
1248 | + 0x1B49D32F, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, | |
1249 | + 0x1D4DDD30, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, | |
1250 | + 0x1D4DDD31, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, | |
1251 | + 0x1D4DDD32, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, | |
1252 | + 0x1E50E633, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, | |
1253 | + 0x1E50E634, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, | |
1254 | + 0x1F53EF35, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, | |
1255 | + 0x1F53EF36, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, | |
1256 | + 0x1F53EF37, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, | |
1257 | + 0x2056F838, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, | |
1258 | + 0x2056F839, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, | |
1259 | + 0x2159FF3A, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, | |
1260 | + 0x2159FF3B, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, | |
1261 | + 0x2159FF3C, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, | |
1262 | + 0x235DFF3D, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, | |
1263 | + 0x235DFF3E, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, | |
1264 | + 0x2460FF3F, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, | |
1265 | + 0x2460FF40, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, | |
1266 | + 0x2563FF41, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, | |
1267 | + 0x2563FF42, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, | |
1268 | + 0x2563FF43, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, | |
1269 | + 0x2666FF44, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, | |
1270 | + 0x2666FF45, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, | |
1271 | + 0x2769FF46, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, | |
1272 | + 0x2769FF47, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, | |
1273 | + 0x2769FF48, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, | |
1274 | + 0x296DFF49, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, | |
1275 | + 0x296DFF4A, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, | |
1276 | + 0x2A70FF4B, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, | |
1277 | + 0x2A70FF4C, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, | |
1278 | + 0x2A70FF4D, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, | |
1279 | + 0x2B73FF4E, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, | |
1280 | + 0x2B73FF4F, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, | |
1281 | + 0x2C76FF50, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, | |
1282 | + 0x2C76FF51, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, | |
1283 | + 0x2C76FF52, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, | |
1284 | + 0x2D79FF53, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, | |
1285 | + 0x2D79FF54, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, | |
1286 | + 0x2F7DFF55, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, | |
1287 | + 0x2F7DFF56, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, | |
1288 | + 0x2F7DFF57, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, | |
1289 | + 0x3080FF58, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, | |
1290 | + 0x3080FF59, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, | |
1291 | + 0x3080FF5A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, | |
1292 | + 0x3183FF5B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, | |
1293 | + 0x3183FF5C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, | |
1294 | + 0x3286FF5D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, | |
1295 | + 0x3286FF5E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, | |
1296 | + 0x3286FF5F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, | |
1297 | + 0x3389FF60, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4929, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002B, | |
1298 | + 0x358DFF61, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002C, | |
1299 | + 0x3690FF62, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002D, | |
1300 | + 0x3793FF63, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, | |
1301 | + 0x3793FF64, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, | |
1302 | + 0x3896FF65, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002F, | |
1303 | + 0x3999FF66, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180030, | |
1304 | + 0x3B9DFF67, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, | |
1305 | + 0x3B9DFF68, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, | |
1306 | + 0x3CA0FF69, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190032, | |
1307 | + 0x3DA3FF6A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190033, | |
1308 | + 0x3EA6FF6B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, | |
1309 | + 0x3EA6FF6C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, | |
1310 | + 0x3FA9FF6D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0035, | |
1311 | + 0x41ADFF6E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0036, | |
1312 | + 0x42B0FF6F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, | |
1313 | + 0x42B0FF70, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, | |
1314 | + 0x43B3FF71, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E684C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0038, | |
1315 | + 0x44B6FF72, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0039, | |
1316 | + 0x45B9FF73, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, | |
1317 | + 0x45B9FF74, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, | |
1318 | + 0x47BDFF75, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003B, | |
1319 | + 0x48C0FF76, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, | |
1320 | + 0x48C0FF77, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, | |
1321 | + 0x49C3FF78, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003D, | |
1322 | + 0x4AC6FF79, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003E, | |
1323 | + 0x4BC9FF7A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003F, | |
1324 | + 0x4DCDFF7B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200040, | |
1325 | + 0x4ED0FF7C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200041, | |
1326 | + 0x50D6FF7D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x79694F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00210043, | |
1327 | + 0x51D9FF7E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220044, | |
1328 | + 0x52DCFF7F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220045, | |
1329 | + 0x54E0FF80, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230046, | |
1330 | + 0x55E3FF81, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230047, | |
1331 | + 0x56E6FF82, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240048, | |
1332 | + 0x57E9FF83, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240049, | |
1333 | + 0x58ECFF84, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004A, | |
1334 | + 0x5AF0FF85, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004B, | |
1335 | + 0x5BF3FF86, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004C, | |
1336 | + 0x5CF6FF87, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004D, | |
1337 | + 0x5DF9FF88, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B592F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004E, | |
1338 | + 0x5EFCFF89, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004F, | |
1339 | + 0x60FFFF8A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280050, | |
1340 | + 0x62FFFF8B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290052, | |
1341 | + 0x63FFFF8C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290053, | |
1342 | + 0x64FFFF8D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002A0054, | |
1343 | + 0x67FFFF8E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0056, | |
1344 | + 0x68FFFF8F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0057, | |
1345 | + 0x69FFFF90, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002C0058, | |
1346 | + 0x6CFFFF91, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005A, | |
1347 | + 0x6DFFFF92, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005B, | |
1348 | + 0x6EFFFF93, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005C, | |
1349 | + 0x6FFFFF94, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005D, | |
1350 | + 0x72FFFF95, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002F005F, | |
1351 | + 0x73FFFF96, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5B39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300060, | |
1352 | + 0x74FFFF97, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300061, | |
1353 | + 0x76FFFF98, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00310063, | |
1354 | + 0x79FFFF99, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00320065, | |
1355 | + 0x7AFFFF9A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00330066, | |
1356 | + 0x7CFFFF9B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6F5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340068, | |
1357 | + 0x7EFFFF9C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6F5C3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340069, | |
1358 | + 0x80FFFF9D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0035006B, | |
1359 | + 0x81FFFF9E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0036006C, | |
1360 | + 0x83FFFF9F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006E, | |
1361 | + 0x85FFFFA0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006F, | |
1362 | + 0x87FFFFA1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380071, | |
1363 | + 0x89FFFFA2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390073, | |
1364 | + 0x8BFFFFA3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A0074, | |
1365 | + 0x8DFFFFA4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003B0076, | |
1366 | + 0x8FFFFFA5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0078, | |
1367 | + 0x91FFFFA6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0079, | |
1368 | + 0x93FFFFA7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003D007B, | |
1369 | + 0x95FFFFA8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003E007D, | |
1370 | + 0x97FFFFA9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003F007E, | |
1371 | + 0x99FFFFAA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00400080, | |
1372 | + 0x9BFFFFAB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00410082, | |
1373 | + 0x9EFFFFAC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00420084, | |
1374 | + 0xA0FFFFAD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x89795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00430086, | |
1375 | + 0xA3FFFFAE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440088, | |
1376 | + 0xA5FFFFAF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0045008A, | |
1377 | + 0xA7FFFFB0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0046008C, | |
1378 | + 0xAAFFFFB1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0047008E, | |
1379 | + 0xACFFFFB2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00480090, | |
1380 | + 0xAFFFFFB3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00490092, | |
1381 | + 0xB1FFFFB4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004A0094, | |
1382 | + 0xB3FFFFB5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004B0096, | |
1383 | + 0xB6FFFFB6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004C0098, | |
1384 | + 0xB8FFFFB7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004D009A, | |
1385 | + 0xBAFFFFB8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E009C, | |
1386 | + 0xBDFFFFB9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F009E, | |
1387 | + 0xC0FFFFBA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005000A1, | |
1388 | + 0xC3FFFFBB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005100A3, | |
1389 | + 0xC5FFFFBC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005200A5, | |
1390 | + 0xC8FFFFBD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005300A7, | |
1391 | + 0xCBFFFFBE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005500AA, | |
1392 | + 0xCEFFFFBF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005600AC, | |
1393 | + 0xD0FFFFC0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005700AE, | |
1394 | + 0xD4FFFFC1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005800B1, | |
1395 | + 0xD6FFFFC2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005900B3, | |
1396 | + 0xDAFFFFC3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005B00B6, | |
1397 | + 0xDCFFFFC4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005C00B8, | |
1398 | + 0xE0FFFFC5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005D00BB, | |
1399 | + 0xE2FFFFC6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005E00BD, | |
1400 | + 0xE6FFFFC7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6B49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006000C0, | |
1401 | + 0xE8FFFFC8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006100C2, | |
1402 | + 0xEBFFFFC9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006200C5, | |
1403 | + 0xEFFFFFCA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006400C8, | |
1404 | + 0xF3FFFFCB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006500CB, | |
1405 | + 0xF5FFFFCC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006600CD, | |
1406 | + 0xF9FFFFCD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7F6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006800D0, | |
1407 | + 0xFCFFFFCE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006900D3, | |
1408 | + 0xFFFFFFCF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006B00D6, | |
1409 | + 0xFFFFFFD0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006C00D9, | |
1410 | + 0xFFFFFFD1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006E00DC, | |
1411 | + 0xFFFFFFD2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006F00DF, | |
1412 | + 0xFFFFFFD3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007100E3, | |
1413 | + 0xFFFFFFD4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007300E6, | |
1414 | + 0xFFFFFFD5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007400E9, | |
1415 | + 0xFFFFFFD6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007600ED, | |
1416 | + 0xFFFFFFD7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007800F1, | |
1417 | + 0xFFFFFFD8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007A00F4, | |
1418 | + 0xFFFFFFD9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007C00F8, | |
1419 | + 0xFFFFFFDA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007E00FC, | |
1420 | + 0xFFFFFFDB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800100, | |
1421 | + 0xFFFFFFDC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00820105, | |
1422 | + 0xFFFFFFDD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00840109, | |
1423 | + 0xFFFFFFDE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0086010D, | |
1424 | + 0xFFFFFFDF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A6F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00890112, | |
1425 | + 0xFFFFFFE0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A6F4E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008B0117, | |
1426 | + 0xFFFFFFE1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008E011C, | |
1427 | + 0xFFFFFFE2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00900121, | |
1428 | + 0xFFFFFFE3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00930127, | |
1429 | + 0xFFFFFFE4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0096012D, | |
1430 | + 0xFFFFFFE5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00990133, | |
1431 | + 0xFFFFFFE6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B794F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C0139, | |
1432 | + 0xFFFFFFE7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A00140, | |
1433 | + 0xFFFFFFE8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A30147, | |
1434 | + 0xFFFFFFE9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A7014E, | |
1435 | + 0xFFFFFFEA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AB0156, | |
1436 | + 0xFFFFFFEB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AF015E, | |
1437 | + 0xFFFFFFEC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B30166, | |
1438 | + 0xFFFFFFED, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B80170, | |
1439 | + 0xFFFFFFEE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00BC0179, | |
1440 | + 0xFFFFFFEF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C10183, | |
1441 | + 0xFFFFFFF0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C7018E, | |
1442 | + 0xFFFFFFF1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00CC0199, | |
1443 | + 0xFFFFFFF2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D201A5, | |
1444 | + 0xFFFFFFF3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D901B2, | |
1445 | + 0xFFFFFFF4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E001C0, | |
1446 | + 0xFFFFFFF5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7D5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E701CE, | |
1447 | + 0xFFFFFFF6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7D5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00EE01DD, | |
1448 | + 0xFFFFFFF7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00F701EE, | |
1449 | + 0xFFFFFFF8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00FF01FF, | |
1450 | + 0xFFFFFFF9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01080211, | |
1451 | + 0xFFFFFFFA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01120225, | |
1452 | + 0xFFFFFFFB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x011C0239, | |
1453 | + 0xFFFFFFFC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01280250, | |
1454 | + 0xFFFFFFFD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01340268, | |
1455 | + 0xFFFFFFFE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01400281, | |
1456 | + 0xFFFFFFFF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x014E029C, | |
1457 | +}; | |
1458 | + | |
1459 | +const unsigned int intel_vp9_costlut_p[4096] = { | |
1460 | + 0x040C2400, 0x00000010, 0x00010001, 0x00010000, 0x00010000, 0x00020002, 0x00030002, 0x00040003, 0x02020100, 0x04030302, 0x39070402, 0x6F6F0103, 0x00010001, 0x00000000, 0x00000004, 0x00010004, | |
1461 | + 0x08184801, 0x00000001, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, | |
1462 | + 0x08184802, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, | |
1463 | + 0x091B5103, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4A0F0A04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020009, | |
1464 | + 0x0A1E5A04, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4B180B04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000A, | |
1465 | + 0x0B216305, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4D190C04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000B, | |
1466 | + 0x0C246C06, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, | |
1467 | + 0x0C246C07, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, | |
1468 | + 0x0D277508, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4F1B0E05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000D, | |
1469 | + 0x0E2A7E09, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x581C0F05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000E, | |
1470 | + 0x0F2D870A, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x591D1806, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000F, | |
1471 | + 0x1030900B, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x591D1906, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040010, | |
1472 | + 0x1133990C, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5A1E1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040011, | |
1473 | + 0x1236A20D, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5A1F1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040012, | |
1474 | + 0x1339AB0E, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, | |
1475 | + 0x1339AB0F, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, | |
1476 | + 0x143CB410, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5B281B08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050014, | |
1477 | + 0x153FBD11, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5C291C08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050015, | |
1478 | + 0x1642C612, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5D291C09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050016, | |
1479 | + 0x1745CF13, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5D2A1D09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050017, | |
1480 | + 0x1848D814, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5E2A1D09, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060018, | |
1481 | + 0x194BE115, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5E2A1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060019, | |
1482 | + 0x1A4EEA16, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, | |
1483 | + 0x1A4EEA17, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, | |
1484 | + 0x1B51F318, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1F0B, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001B, | |
1485 | + 0x1C54FC19, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001C, | |
1486 | + 0x1D57FF1A, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001D, | |
1487 | + 0x1E5AFF1B, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x692C280C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001E, | |
1488 | + 0x1F5DFF1C, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x692D290C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001F, | |
1489 | + 0x2060FF1D, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, | |
1490 | + 0x2060FF1E, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, | |
1491 | + 0x2163FF1F, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080021, | |
1492 | + 0x2266FF20, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x6A2E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080022, | |
1493 | + 0x2369FF21, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x6A2E2A0E, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080023, | |
1494 | + 0x246CFF22, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6A2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090024, | |
1495 | + 0x256FFF23, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090025, | |
1496 | + 0x2672FF24, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, | |
1497 | + 0x2672FF25, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, | |
1498 | + 0x2775FF26, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090027, | |
1499 | + 0x2878FF27, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6B382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0028, | |
1500 | + 0x297BFF28, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0029, | |
1501 | + 0x2A7EFF29, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002A, | |
1502 | + 0x2B81FF2A, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, | |
1503 | + 0x2B81FF2B, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, | |
1504 | + 0x2C84FF2C, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002C, | |
1505 | + 0x2D87FF2D, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002D, | |
1506 | + 0x2E8AFF2E, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002E, | |
1507 | + 0x2F8DFF2F, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D3A2D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002F, | |
1508 | + 0x3090FF30, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, | |
1509 | + 0x3090FF31, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, | |
1510 | + 0x3193FF32, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0031, | |
1511 | + 0x3296FF33, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0032, | |
1512 | + 0x3399FF34, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6F3B2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0033, | |
1513 | + 0x349CFF35, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2E1A, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0034, | |
1514 | + 0x359FFF36, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, | |
1515 | + 0x359FFF37, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, | |
1516 | + 0x36A2FF38, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0036, | |
1517 | + 0x37A5FF39, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x783B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0037, | |
1518 | + 0x38A8FF3A, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C2F1B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0038, | |
1519 | + 0x39ABFF3B, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, | |
1520 | + 0x39ABFF3C, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, | |
1521 | + 0x3AAEFF3D, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003A, | |
1522 | + 0x3BB1FF3E, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003B, | |
1523 | + 0x3CB4FF3F, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793C381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003C, | |
1524 | + 0x3DB7FF40, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003D, | |
1525 | + 0x3EBAFF41, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, | |
1526 | + 0x3EBAFF42, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, | |
1527 | + 0x3FBDFF43, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391D, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003F, | |
1528 | + 0x40C0FF44, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100040, | |
1529 | + 0x41C3FF45, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100041, | |
1530 | + 0x42C6FF46, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, | |
1531 | + 0x42C6FF47, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, | |
1532 | + 0x43C9FF48, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x7A3E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100043, | |
1533 | + 0x44CCFF49, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110044, | |
1534 | + 0x45CFFF4A, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110045, | |
1535 | + 0x46D2FF4B, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, | |
1536 | + 0x46D2FF4C, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, | |
1537 | + 0x47D5FF4D, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3F3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110047, | |
1538 | + 0x48D8FF4E, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7A3F3A1E, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120048, | |
1539 | + 0x49DBFF4F, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7A3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120049, | |
1540 | + 0x4ADEFF50, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, | |
1541 | + 0x4ADEFF51, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, | |
1542 | + 0x4BE1FF52, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004B, | |
1543 | + 0x4CE4FF53, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483A1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004C, | |
1544 | + 0x4DE7FF54, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004D, | |
1545 | + 0x4EEAFF55, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, | |
1546 | + 0x4EEAFF56, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, | |
1547 | + 0x4FEDFF57, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B28, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004F, | |
1548 | + 0x50F0FF58, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7B483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140050, | |
1549 | + 0x51F3FF59, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, | |
1550 | + 0x51F3FF5A, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, | |
1551 | + 0x52F6FF5B, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140052, | |
1552 | + 0x53F9FF5C, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C493B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140053, | |
1553 | + 0x54FCFF5D, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150054, | |
1554 | + 0x55FFFF5E, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, | |
1555 | + 0x55FFFF5F, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, | |
1556 | + 0x57FFFF60, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C29, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150057, | |
1557 | + 0x58FFFF61, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x00160058, | |
1558 | + 0x5AFFFF62, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x0016005A, | |
1559 | + 0x5CFFFF63, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7D493D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005C, | |
1560 | + 0x5DFFFF64, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7D4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005D, | |
1561 | + 0x5FFFFF65, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7E4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005F, | |
1562 | + 0x60FFFF66, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180060, | |
1563 | + 0x62FFFF67, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180062, | |
1564 | + 0x63FFFF68, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180063, | |
1565 | + 0x65FFFF69, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190065, | |
1566 | + 0x66FFFF6A, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190066, | |
1567 | + 0x68FFFF6B, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0068, | |
1568 | + 0x69FFFF6C, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0069, | |
1569 | + 0x6BFFFF6D, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3F2B, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A006B, | |
1570 | + 0x6CFFFF6E, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x7F4B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006C, | |
1571 | + 0x6EFFFF6F, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006E, | |
1572 | + 0x6FFFFF70, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006F, | |
1573 | + 0x71FFFF71, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0071, | |
1574 | + 0x72FFFF72, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0072, | |
1575 | + 0x74FFFF73, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0074, | |
1576 | + 0x75FFFF74, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0075, | |
1577 | + 0x76FFFF75, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0076, | |
1578 | + 0x78FFFF76, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0078, | |
1579 | + 0x79FFFF77, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0079, | |
1580 | + 0x7BFFFF78, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894D482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E007B, | |
1581 | + 0x7DFFFF79, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, 0x382C2900, 0x3F3D3B39, 0x894D492C, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007D, | |
1582 | + 0x7FFFFF7A, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, 0x382C2900, 0x3F3D3B39, 0x894D492D, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007F, | |
1583 | + 0x81FFFF7B, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200081, | |
1584 | + 0x83FFFF7C, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200083, | |
1585 | + 0x86FFFF7D, 0x00000000, 0x001A0027, 0x0020000D, 0x00270000, 0x00430034, 0x005D0050, 0x0081006E, 0x382D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x00000081, 0x00210086, | |
1586 | + 0x88FFFF7E, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, 0x392D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x00220088, | |
1587 | + 0x8AFFFF7F, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, 0x392D2A00, 0x483E3C3A, 0x8A4E492E, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x0022008A, | |
1588 | + 0x8CFFFF80, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, 0x392E2A00, 0x493F3C3B, 0x8A4E4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008C, | |
1589 | + 0x8EFFFF81, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, 0x392E2A00, 0x493F3C3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008E, | |
1590 | + 0x90FFFF82, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240090, | |
1591 | + 0x92FFFF83, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240092, | |
1592 | + 0x94FFFF84, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250094, | |
1593 | + 0x96FFFF85, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250096, | |
1594 | + 0x98FFFF86, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, 0x3A2F2B00, 0x49483D3C, 0x8B584A2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x00260098, | |
1595 | + 0x9AFFFF87, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, 0x3A2F2B00, 0x49483D3C, 0x8B584B2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x0026009A, | |
1596 | + 0x9CFFFF88, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, 0x3A2F2C00, 0x4A483E3C, 0x8B584B2F, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009C, | |
1597 | + 0x9EFFFF89, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, 0x3A2F2C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009E, | |
1598 | + 0xA1FFFF8A, 0x00000000, 0x001F002F, 0x00270010, 0x002F0000, 0x0051003F, 0x00710061, 0x009C0085, 0x3A382C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x0000009C, 0x002800A1, | |
1599 | + 0xA4FFFF8B, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, 0x3A382C00, 0x4A493E3C, 0x8C584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A4, | |
1600 | + 0xA6FFFF8C, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, 0x3A382C00, 0x4A493E3C, 0x8C594B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A6, | |
1601 | + 0xA9FFFF8D, 0x00000000, 0x00210031, 0x00290010, 0x00310000, 0x00550042, 0x00760066, 0x00A4008B, 0x3B382C00, 0x4A493F3D, 0x8C594C38, 0x6F6F2E3E, 0x002A001C, 0x00000000, 0x000000A4, 0x002A00A9, | |
1602 | + 0xACFFFF8E, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, 0x3B382D00, 0x4B493F3D, 0x8C594C38, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AC, | |
1603 | + 0xAEFFFF8F, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, 0x3B382D00, 0x4B493F3D, 0x8C594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AE, | |
1604 | + 0xB1FFFF90, 0x00000000, 0x00220034, 0x002B0011, 0x00340000, 0x00590045, 0x007C006B, 0x00AC0092, 0x3B392D00, 0x4B49483D, 0x8D594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000AC, 0x002C00B1, | |
1605 | + 0xB4FFFF91, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B4, | |
1606 | + 0xB6FFFF92, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B6, | |
1607 | + 0xB9FFFF93, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00B9, | |
1608 | + 0xBBFFFF94, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00BB, | |
1609 | + 0xBEFFFF95, 0x00000000, 0x00250037, 0x002E0012, 0x00370000, 0x005F0049, 0x00840072, 0x00B8009C, 0x3C392E00, 0x4C4A483E, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000B8, 0x002F00BE, | |
1610 | + 0xC0FFFF96, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, 0x3C392E00, 0x4C4A483F, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C0, | |
1611 | + 0xC3FFFF97, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, 0x3C392E00, 0x4C4A483F, 0x8E5A4D3A, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C3, | |
1612 | + 0xC7FFFF98, 0x00000000, 0x00260039, 0x00300013, 0x00390000, 0x0064004D, 0x008A0077, 0x00BF00A3, 0x3D3A2E00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3848, 0x002C001E, 0x00000000, 0x000000BF, 0x003100C7, | |
1613 | + 0xCAFFFF99, 0x00000000, 0x0027003B, 0x00310014, 0x003B0000, 0x0066004E, 0x008D0079, 0x00C300A6, 0x3D3A2F00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3949, 0x002C001E, 0x00000000, 0x000000C3, 0x003200CA, | |
1614 | + 0xCDFFFF9A, 0x00000000, 0x0028003C, 0x00320014, 0x003C0000, 0x00680050, 0x008F007C, 0x00C700A9, 0x3D3A2F00, 0x4C4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000C7, 0x003300CD, | |
1615 | + 0xD0FFFF9B, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D0, | |
1616 | + 0xD3FFFF9C, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D3, | |
1617 | + 0xD6FFFF9D, 0x00000000, 0x0029003E, 0x00340015, 0x003E0000, 0x006C0053, 0x00950080, 0x00CF00B0, 0x3E3A3800, 0x4D4B4948, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000CF, 0x003500D6, | |
1618 | + 0xD9FFFF9E, 0x00000000, 0x002A003F, 0x00350015, 0x003F0000, 0x006E0054, 0x00980083, 0x00D300B3, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000D3, 0x003600D9, | |
1619 | + 0xDCFFFF9F, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DC, | |
1620 | + 0xDFFFFFA0, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DF, | |
1621 | + 0xE2FFFFA1, 0x00000000, 0x002C0042, 0x00370016, 0x00420000, 0x00720058, 0x009E0088, 0x00DB00BA, 0x3E3B3800, 0x4E4C4A49, 0x8F5C4F3B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DB, 0x003800E2, | |
1622 | + 0xE6FFFFA2, 0x00000000, 0x002D0043, 0x00380016, 0x00430000, 0x00740059, 0x00A0008A, 0x00DF00BD, 0x3F3B3800, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DF, 0x003900E6, | |
1623 | + 0xE9FFFFA3, 0x00000000, 0x002D0044, 0x00390017, 0x00440000, 0x0076005B, 0x00A3008C, 0x00E300C1, 0x3F3B3900, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000E3, 0x003A00E9, | |
1624 | + 0xEDFFFFA4, 0x00000000, 0x002E0045, 0x003A0017, 0x00450000, 0x0078005C, 0x00A6008F, 0x00E600C4, 0x3F3C3900, 0x4E4C4A49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000E6, 0x003B00ED, | |
1625 | + 0xF0FFFFA5, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F0, | |
1626 | + 0xF3FFFFA6, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F3, | |
1627 | + 0xF7FFFFA7, 0x00000000, 0x00300047, 0x003C0018, 0x00470000, 0x007C005F, 0x00AC0094, 0x00EE00CB, 0x483C3900, 0x4F4D4B49, 0x8F5D583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EE, 0x003D00F7, | |
1628 | + 0xFAFFFFA8, 0x00000000, 0x00300049, 0x003D0018, 0x00490000, 0x007E0061, 0x00AE0096, 0x00F200CE, 0x483C3900, 0x4F4D4B49, 0x8F5D593C, 0x6F6F3B4B, 0x002F0029, 0x00000000, 0x000000F2, 0x003E00FA, | |
1629 | + 0xFDFFFFA9, 0x00000000, 0x0031004A, 0x003E0019, 0x004A0000, 0x00800062, 0x00B10099, 0x00F600D1, 0x483C3900, 0x4F4D4B4A, 0x8F5D593C, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000F6, 0x003F00FD, | |
1630 | + 0xFFFFFFAA, 0x00000000, 0x0032004B, 0x003F0019, 0x004B0000, 0x00820064, 0x00B4009B, 0x00FA00D5, 0x483D3900, 0x584D4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FA, 0x00400101, | |
1631 | + 0xFFFFFFAB, 0x00000000, 0x0033004C, 0x003F0019, 0x004C0000, 0x00840066, 0x00B7009D, 0x00FE00D8, 0x483D3A00, 0x584E4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FE, 0x00410105, | |
1632 | + 0xFFFFFFAC, 0x00000000, 0x0034004D, 0x0040001A, 0x004D0000, 0x00860067, 0x00BA00A0, 0x010200DB, 0x483D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x00000102, 0x00420109, | |
1633 | + 0xFFFFFFAD, 0x00000000, 0x0034004F, 0x0041001A, 0x004F0000, 0x00880069, 0x00BC00A2, 0x010600DE, 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4B, 0x00380029, 0x00000000, 0x00000106, 0x0043010D, | |
1634 | + 0xFFFFFFAE, 0x00000000, 0x00350050, 0x0042001B, 0x00500000, 0x008A006A, 0x00BF00A5, 0x010A00E2, 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4C, 0x00380029, 0x00000000, 0x0000010A, 0x00440110, | |
1635 | + 0xFFFFFFAF, 0x00000000, 0x00360051, 0x0043001B, 0x00510000, 0x008C006C, 0x00C200A7, 0x010E00E5, 0x493E3A00, 0x584E4C4A, 0x8F5E593E, 0x6F6F3C4C, 0x0038002A, 0x00000000, 0x0000010E, 0x00450114, | |
1636 | + 0xFFFFFFB0, 0x00000000, 0x00370052, 0x0044001B, 0x00520000, 0x008E006D, 0x00C500AA, 0x011100E8, 0x493E3A00, 0x594F4C4B, 0x8F5E5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000111, 0x00460118, | |
1637 | + 0xFFFFFFB1, 0x00000000, 0x00370053, 0x0045001C, 0x00530000, 0x0090006F, 0x00C800AC, 0x011500EC, 0x493E3A00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000115, 0x0047011C, | |
1638 | + 0xFFFFFFB2, 0x00000000, 0x00380054, 0x0046001C, 0x00540000, 0x00920071, 0x00CB00AE, 0x011900EF, 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000119, 0x00480120, | |
1639 | + 0xFFFFFFB3, 0x00000000, 0x00390056, 0x0047001D, 0x00560000, 0x00940072, 0x00CD00B1, 0x011D00F2, 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x0000011D, 0x00490124, | |
1640 | + 0xFFFFFFB4, 0x00000000, 0x003A0057, 0x0048001D, 0x00570000, 0x00960074, 0x00D000B3, 0x012100F6, 0x493F3B00, 0x594F4D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000121, 0x004A0128, | |
1641 | + 0xFFFFFFB5, 0x00000000, 0x003B0058, 0x0049001D, 0x00580000, 0x00980075, 0x00D300B6, 0x012500F9, 0x4A3F3B00, 0x59584D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000125, 0x004B012C, | |
1642 | + 0xFFFFFFB6, 0x00000000, 0x003B0059, 0x004A001E, 0x00590000, 0x009A0077, 0x00D600B8, 0x012900FC, 0x4A3F3B00, 0x59584D4C, 0x8F685A3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x00000129, 0x004C0130, | |
1643 | + 0xFFFFFFB7, 0x00000000, 0x003C005A, 0x004B001E, 0x005A0000, 0x009C0078, 0x00D900BA, 0x012D0100, 0x4A3F3B00, 0x59584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x0000012D, 0x004D0135, | |
1644 | + 0xFFFFFFB8, 0x00000000, 0x003D005B, 0x004C001E, 0x005B0000, 0x009E007A, 0x00DB00BD, 0x01310103, 0x4A3F3B00, 0x5A584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x003A002B, 0x00000000, 0x00000131, 0x004E0139, | |
1645 | + 0xFFFFFFB9, 0x00000000, 0x003E005D, 0x004D001F, 0x005D0000, 0x00A0007B, 0x00DE00BF, 0x01350106, 0x4A3F3C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000135, 0x004F013D, | |
1646 | + 0xFFFFFFBA, 0x00000000, 0x003F005E, 0x004E001F, 0x005E0000, 0x00A3007D, 0x00E100C2, 0x0139010A, 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000139, 0x00500142, | |
1647 | + 0xFFFFFFBB, 0x00000000, 0x003F005F, 0x004F0020, 0x005F0000, 0x00A5007F, 0x00E400C4, 0x013C010D, 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x0000013C, 0x00510146, | |
1648 | + 0xFFFFFFBC, 0x00000000, 0x00400060, 0x00500020, 0x00600000, 0x00A70080, 0x00E700C7, 0x01400110, 0x4A483C00, 0x5A594E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000140, 0x0052014A, | |
1649 | + 0xFFFFFFBD, 0x00000000, 0x00410061, 0x00510020, 0x00610000, 0x00A90082, 0x00E900C9, 0x01440114, 0x4B483C00, 0x5A594F4D, 0x8F695B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000144, 0x0053014F, | |
1650 | + 0xFFFFFFBE, 0x00000000, 0x00420064, 0x00530021, 0x00640000, 0x00AD0085, 0x00EF00CE, 0x014C011A, 0x4B483D00, 0x5A594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003A002C, 0x00000000, 0x0000014C, 0x00550154, | |
1651 | + 0xFFFFFFBF, 0x00000000, 0x00430065, 0x00540022, 0x00650000, 0x00AF0086, 0x00F200D0, 0x0150011E, 0x4B483D00, 0x5B594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000150, 0x00560158, | |
1652 | + 0xFFFFFFC0, 0x00000000, 0x00440066, 0x00550022, 0x00660000, 0x00B10088, 0x00F500D3, 0x01540121, 0x4B493D00, 0x5B594F4D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000154, 0x0057015D, | |
1653 | + 0xFFFFFFC1, 0x00000000, 0x00450067, 0x00560022, 0x00670000, 0x00B3008A, 0x00F800D5, 0x01580124, 0x4B493D00, 0x5B59584D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000158, 0x00580162, | |
1654 | + 0xFFFFFFC2, 0x00000000, 0x00460068, 0x00570023, 0x00680000, 0x00B5008B, 0x00FA00D8, 0x015C0128, 0x4B493D00, 0x5B59584E, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x0000015C, 0x00590167, | |
1655 | + 0xFFFFFFC3, 0x00000000, 0x0047006B, 0x00590024, 0x006B0000, 0x00B9008E, 0x010000DC, 0x0163012E, 0x4C493D00, 0x5B59584E, 0x8F695C49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000163, 0x005B016C, | |
1656 | + 0xFFFFFFC4, 0x00000000, 0x0048006C, 0x005A0024, 0x006C0000, 0x00BB0090, 0x010300DF, 0x01670131, 0x4C493E00, 0x5B5A584E, 0x8F695D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000167, 0x005C0171, | |
1657 | + 0xFFFFFFC5, 0x00000000, 0x0049006D, 0x005B0024, 0x006D0000, 0x00BD0091, 0x010600E1, 0x016B0135, 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x0000016B, 0x005D0176, | |
1658 | + 0xFFFFFFC6, 0x00000000, 0x0049006E, 0x005C0025, 0x006E0000, 0x00BF0093, 0x010800E4, 0x016F0138, 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000016F, 0x005E017B, | |
1659 | + 0xFFFFFFC7, 0x00000000, 0x004B0071, 0x005E0026, 0x00710000, 0x00C30096, 0x010E00E9, 0x0177013F, 0x4C493E00, 0x5C5A584F, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x00000177, 0x00600180, | |
1660 | + 0xFFFFFFC8, 0x00000000, 0x004C0072, 0x005F0026, 0x00720000, 0x00C50098, 0x011100EB, 0x017B0142, 0x4C4A3E00, 0x5C5A594F, 0x8F6A5D4A, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000017B, 0x00610185, | |
1661 | + 0xFFFFFFC9, 0x00000000, 0x004D0073, 0x00600026, 0x00730000, 0x00C70099, 0x011400ED, 0x017F0145, 0x4C4A3E00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4858, 0x003C002E, 0x00000000, 0x0000017F, 0x0062018B, | |
1662 | + 0xFFFFFFCA, 0x00000000, 0x004E0075, 0x00620027, 0x00750000, 0x00CB009C, 0x011900F2, 0x0187014C, 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x00000187, 0x00640190, | |
1663 | + 0xFFFFFFCB, 0x00000000, 0x004F0076, 0x00630027, 0x00760000, 0x00CD009E, 0x011C00F5, 0x018B014F, 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x0000018B, 0x00650196, | |
1664 | + 0xFFFFFFCC, 0x00000000, 0x00500078, 0x00640028, 0x00780000, 0x00CF009F, 0x011F00F7, 0x018E0153, 0x4D4A3F00, 0x5C5B594F, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000018E, 0x0066019B, | |
1665 | + 0xFFFFFFCD, 0x00000000, 0x0051007A, 0x00660029, 0x007A0000, 0x00D300A3, 0x012500FC, 0x01960159, 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x00000196, 0x006801A1, | |
1666 | + 0xFFFFFFCE, 0x00000000, 0x0052007B, 0x00670029, 0x007B0000, 0x00D500A4, 0x012700FE, 0x019A015D, 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000019A, 0x006901A7, | |
1667 | + 0xFFFFFFCF, 0x00000000, 0x0054007D, 0x0068002A, 0x007D0000, 0x00D900A7, 0x012D0103, 0x01A20163, 0x4E4A4800, 0x5D5B5958, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A2, 0x006B01AD, | |
1668 | + 0xFFFFFFD0, 0x00000000, 0x0054007F, 0x0069002A, 0x007F0000, 0x00DB00A9, 0x01300106, 0x01A60167, 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A6, 0x006C01B3, | |
1669 | + 0xFFFFFFD1, 0x00000000, 0x00560081, 0x006B002B, 0x00810000, 0x00DF00AC, 0x0135010A, 0x01AE016D, 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001AE, 0x006E01B9, | |
1670 | + 0xFFFFFFD2, 0x00000000, 0x00570082, 0x006C002B, 0x00820000, 0x00E100AD, 0x0138010D, 0x01B20171, 0x4E4B4800, 0x5E5C5A58, 0x8F6B5F4B, 0x6F6F4A5A, 0x003E002F, 0x00000000, 0x000001B2, 0x006F01BF, | |
1671 | + 0xFFFFFFD3, 0x00000000, 0x00580084, 0x006E002C, 0x00840000, 0x00E600B1, 0x013E0112, 0x01B90177, 0x4E4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001B9, 0x007101C6, | |
1672 | + 0xFFFFFFD4, 0x00000000, 0x005A0087, 0x0070002D, 0x00870000, 0x00EA00B4, 0x01430117, 0x01C1017E, 0x4F4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C1, 0x007301CD, | |
1673 | + 0xFFFFFFD5, 0x00000000, 0x005B0088, 0x0071002D, 0x00880000, 0x00EC00B5, 0x01460119, 0x01C50181, 0x4F4B4900, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C5, 0x007401D3, | |
1674 | + 0xFFFFFFD6, 0x00000000, 0x005C008A, 0x0073002E, 0x008A0000, 0x00F000B8, 0x014C011E, 0x01CD0188, 0x4F4C4900, 0x5E5C5A59, 0x8F6C684C, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001CD, 0x007601DB, | |
1675 | + 0xFFFFFFD7, 0x00000000, 0x005E008D, 0x0075002F, 0x008D0000, 0x00F400BC, 0x01520123, 0x01D5018E, 0x4F4C4900, 0x5F5C5B59, 0x8F6C684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001D5, 0x007801E2, | |
1676 | + 0xFFFFFFD8, 0x00000000, 0x005F008F, 0x00770030, 0x008F0000, 0x00F800BF, 0x01570127, 0x01DD0195, 0x584C4900, 0x5F5D5B59, 0x8F6D684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001DD, 0x007A01E9, | |
1677 | + 0xFFFFFFD9, 0x00000000, 0x00610091, 0x00790030, 0x00910000, 0x00FC00C2, 0x015D012C, 0x01E4019C, 0x584C4900, 0x5F5D5B59, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001E4, 0x007C01F1, | |
1678 | + 0xFFFFFFDA, 0x00000000, 0x00620094, 0x007B0031, 0x00940000, 0x010000C5, 0x01620131, 0x01EC01A2, 0x584C4900, 0x5F5D5B5A, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001EC, 0x007E01F9, | |
1679 | + 0xFFFFFFDB, 0x00000000, 0x00640096, 0x007D0032, 0x00960000, 0x010400C8, 0x01680136, 0x01F401A9, 0x584D4900, 0x685D5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001F4, 0x00800201, | |
1680 | + 0xFFFFFFDC, 0x00000000, 0x00660098, 0x007F0033, 0x00980000, 0x010800CB, 0x016E013B, 0x01FC01B0, 0x584D4A00, 0x685E5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001FC, 0x0082020A, | |
1681 | + 0xFFFFFFDD, 0x00000000, 0x0067009B, 0x00810034, 0x009B0000, 0x010C00CE, 0x01730140, 0x020401B6, 0x584D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x00000204, 0x00840212, | |
1682 | + 0xFFFFFFDE, 0x00000000, 0x0069009D, 0x00830034, 0x009D0000, 0x011000D1, 0x01790145, 0x020B01BD, 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x0000020B, 0x0086021B, | |
1683 | + 0xFFFFFFDF, 0x00000000, 0x006B00A1, 0x00860036, 0x00A10000, 0x011600D6, 0x0181014C, 0x021701C7, 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4C5C, 0x00480039, 0x00000000, 0x00000217, 0x00890225, | |
1684 | + 0xFFFFFFE0, 0x00000000, 0x006D00A3, 0x00880036, 0x00A30000, 0x011A00D9, 0x01870151, 0x021F01CE, 0x594E4A00, 0x685E5C5B, 0x8F6E6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000021F, 0x008B022F, | |
1685 | + 0xFFFFFFE1, 0x00000000, 0x006F00A6, 0x008B0037, 0x00A60000, 0x012000DE, 0x018F0158, 0x022B01D7, 0x594E4A00, 0x695F5C5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000022B, 0x008E0239, | |
1686 | + 0xFFFFFFE2, 0x00000000, 0x007100A9, 0x008D0038, 0x00A90000, 0x012500E1, 0x0195015D, 0x023301DE, 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x00000233, 0x00900243, | |
1687 | + 0xFFFFFFE3, 0x00000000, 0x007300AC, 0x00900039, 0x00AC0000, 0x012B00E6, 0x019D0164, 0x023E01E8, 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000023E, 0x0093024E, | |
1688 | + 0xFFFFFFE4, 0x00000000, 0x007500B0, 0x0092003B, 0x00B00000, 0x013100EA, 0x01A6016B, 0x024A01F2, 0x5A4F4B00, 0x69685D5B, 0x8F6F6A4F, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000024A, 0x0096025A, | |
1689 | + 0xFFFFFFE5, 0x00000000, 0x007800B3, 0x0095003C, 0x00B30000, 0x013700EF, 0x01AE0173, 0x025601FC, 0x5A4F4B00, 0x69685D5C, 0x8F786B4F, 0x6F6F4D5D, 0x0049003B, 0x00000000, 0x00000256, 0x00990266, | |
1690 | + 0xFFFFFFE6, 0x00000000, 0x007A00B7, 0x0098003D, 0x00B70000, 0x013D00F4, 0x01B7017A, 0x02610206, 0x5A4F4B00, 0x6A685E5C, 0x8F786B4F, 0x6F6F4D5D, 0x004A003B, 0x00000000, 0x00000261, 0x009C0272, | |
1691 | + 0xFFFFFFE7, 0x00000000, 0x007D00BC, 0x009C003F, 0x00BC0000, 0x014500FA, 0x01C20184, 0x02710213, 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x00000271, 0x00A00280, | |
1692 | + 0xFFFFFFE8, 0x00000000, 0x007F00BF, 0x009F0040, 0x00BF0000, 0x014B00FF, 0x01CA018B, 0x027D021D, 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000027D, 0x00A3028E, | |
1693 | + 0xFFFFFFE9, 0x00000000, 0x008200C4, 0x00A30041, 0x00C40000, 0x01530105, 0x01D60194, 0x028C022A, 0x5B584C00, 0x6A695F5D, 0x8F796B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000028C, 0x00A7029C, | |
1694 | + 0xFFFFFFEA, 0x00000000, 0x008600C8, 0x00A70043, 0x00C80000, 0x015B010B, 0x01E1019E, 0x029C0238, 0x5B584D00, 0x6A695F5D, 0x8F796C58, 0x6F6F4F5F, 0x004A003C, 0x00000000, 0x0000029C, 0x00AB02AC, | |
1695 | + 0xFFFFFFEB, 0x00000000, 0x008900CD, 0x00AB0044, 0x00CD0000, 0x01630111, 0x01EC01A8, 0x02AC0245, 0x5B594D00, 0x6B695F5D, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002AC, 0x00AF02BC, | |
1696 | + 0xFFFFFFEC, 0x00000000, 0x008C00D2, 0x00AF0046, 0x00D20000, 0x016C0118, 0x01F701B2, 0x02BB0252, 0x5B594D00, 0x6B69685E, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002BB, 0x00B302CD, | |
1697 | + 0xFFFFFFED, 0x00000000, 0x009000D8, 0x00B40048, 0x00D80000, 0x01760120, 0x020601BE, 0x02CF0263, 0x5C594E00, 0x6B6A685E, 0x8F796D59, 0x6F6F5868, 0x004B003D, 0x00000000, 0x000002CF, 0x00B802E0, | |
1698 | + 0xFFFFFFEE, 0x00000000, 0x009300DC, 0x00B80049, 0x00DC0000, 0x017E0126, 0x021101C7, 0x02DE0270, 0x5C594E00, 0x6B6A685E, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002DE, 0x00BC02F3, | |
1699 | + 0xFFFFFFEF, 0x00000000, 0x009700E2, 0x00BC004B, 0x00E20000, 0x0188012E, 0x021F01D3, 0x02F20281, 0x5C594E00, 0x6C6A685F, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002F2, 0x00C10307, | |
1700 | + 0xFFFFFFF0, 0x00000000, 0x009B00E9, 0x00C2004E, 0x00E90000, 0x01940137, 0x023001E2, 0x03090295, 0x5D5A4F00, 0x6C6A695F, 0x8F7A6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x00000309, 0x00C7031C, | |
1701 | + 0xFFFFFFF1, 0x00000000, 0x009F00EF, 0x00C70050, 0x00EF0000, 0x019E013F, 0x023E01EE, 0x031D02A5, 0x5D5A4F00, 0x6C6B695F, 0x8F7B6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x0000031D, 0x00CC0333, | |
1702 | + 0xFFFFFFF2, 0x00000000, 0x00A400F6, 0x00CD0052, 0x00F60000, 0x01AB0148, 0x024F01FD, 0x033402B9, 0x5D5A4F00, 0x6D6B6968, 0x8F7B6E5A, 0x6F6F5969, 0x004D003E, 0x00000000, 0x00000334, 0x00D2034B, | |
1703 | + 0xFFFFFFF3, 0x00000000, 0x00AA00FE, 0x00D40055, 0x00FE0000, 0x01B90153, 0x0262020E, 0x035002D1, 0x5E5B5800, 0x6D6B6A68, 0x8F7B6F5B, 0x6F6F5969, 0x004D003F, 0x00000000, 0x00000350, 0x00D90365, | |
1704 | + 0xFFFFFFF4, 0x00000000, 0x00AF0107, 0x00DB0058, 0x01070000, 0x01C7015E, 0x0276021F, 0x036B02E8, 0x5E5B5800, 0x6E6C6A68, 0x8F7B6F5B, 0x6F6F5A6A, 0x004E003F, 0x00000000, 0x0000036B, 0x00E00380, | |
1705 | + 0xFFFFFFF5, 0x00000000, 0x00B4010F, 0x00E2005A, 0x010F0000, 0x01D50169, 0x028A022F, 0x038602FF, 0x5F5B5800, 0x6E6C6A69, 0x8F7C785B, 0x6F6F5A6A, 0x004E0048, 0x00000000, 0x00000386, 0x00E7039D, | |
1706 | + 0xFFFFFFF6, 0x00000000, 0x00BA0117, 0x00E8005D, 0x01170000, 0x01E30174, 0x029D0240, 0x03A20316, 0x5F5C5900, 0x6F6C6A69, 0x8F7C785C, 0x6F6F5A6A, 0x004F0048, 0x00000000, 0x000003A2, 0x00EE03BB, | |
1707 | + 0xFFFFFFF7, 0x00000000, 0x00C10121, 0x00F10060, 0x01210000, 0x01F60182, 0x02B70256, 0x03C50334, 0x685C5900, 0x6F6D6B69, 0x8F7D785C, 0x6F6F5B6B, 0x004F0048, 0x00000000, 0x000003C5, 0x00F703DC, | |
1708 | + 0xFFFFFFF8, 0x00000000, 0x00C7012B, 0x00F90064, 0x012B0000, 0x0206018E, 0x02CD026A, 0x03E4034F, 0x685C5900, 0x6F6D6B6A, 0x8F7D795C, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x000003E4, 0x00FF03FE, | |
1709 | + 0xFFFFFFF9, 0x00000000, 0x00CE0135, 0x01020067, 0x01350000, 0x0218019D, 0x02E7027F, 0x0407036D, 0x685D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x00000407, 0x01080422, | |
1710 | + 0xFFFFFFFA, 0x00000000, 0x00D60141, 0x010C006B, 0x01410000, 0x022D01AC, 0x03030298, 0x042E038E, 0x695D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5C6C, 0x00580049, 0x00000000, 0x0000042E, 0x0112044A, | |
1711 | + 0xFFFFFFFB, 0x00000000, 0x00DE014D, 0x0115006F, 0x014D0000, 0x024101BC, 0x031F02B0, 0x045503AF, 0x695E5A00, 0x6F6F6C6B, 0x8F7F7A5E, 0x6F6F5C6C, 0x0059004A, 0x00000000, 0x00000455, 0x011C0473, | |
1712 | + 0xFFFFFFFC, 0x00000000, 0x00E7015B, 0x01210074, 0x015B0000, 0x025901CF, 0x034102CD, 0x048403D7, 0x695E5B00, 0x6F6F6D6B, 0x8F7F7A5E, 0x6F6F5D6D, 0x0059004A, 0x00000000, 0x00000484, 0x012804A0, | |
1713 | + 0xFFFFFFFD, 0x00000000, 0x00F10169, 0x012D0078, 0x01690000, 0x027201E1, 0x036202EA, 0x04B303FF, 0x6A5F5B00, 0x6F6F6E6C, 0x8F887B5F, 0x6F6F5D6D, 0x0059004B, 0x00000000, 0x000004B3, 0x013404D0, | |
1714 | + 0xFFFFFFFE, 0x00000000, 0x00FA0177, 0x0139007D, 0x01770000, 0x028A01F4, 0x03840307, 0x04E20427, 0x6A685C00, 0x6F6F6E6C, 0x8F887B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x000004E2, 0x01400502, | |
1715 | + 0xFFFFFFFF, 0x00000000, 0x01050187, 0x01460082, 0x01870000, 0x02A6020A, 0x03AB0329, 0x05190455, 0x6B685C00, 0x6F6F6F6D, 0x8F897B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x00000519, 0x014E0538, | |
1716 | +}; |
@@ -0,0 +1,44 @@ | ||
1 | +/* | |
2 | + * Copyright © 2016 Intel Corporation | |
3 | + * | |
4 | + * Permission is hereby granted, free of charge, to any person obtaining a | |
5 | + * copy of this software and associated documentation files (the | |
6 | + * "Software"), to deal in the Software without restriction, including | |
7 | + * without limitation the rights to use, copy, modify, merge, publish, | |
8 | + * distribute, sub license, and/or sell copies of the Software, and to | |
9 | + * permit persons to whom the Software is furnished to do so, subject to | |
10 | + * the following conditions: | |
11 | + * | |
12 | + * The above copyright notice and this permission notice (including the | |
13 | + * next paragraph) shall be included in all copies or substantial portions | |
14 | + * of the Software. | |
15 | + * | |
16 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
17 | + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
18 | + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | |
19 | + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR | |
20 | + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
21 | + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
22 | + * SOFTWAR | |
23 | + * | |
24 | + * Authors: | |
25 | + * Zhao, Yakui <yakui.zhao@intel.com> | |
26 | + * | |
27 | + */ | |
28 | + | |
29 | +#ifndef _GEN9_VP9_CONST_H | |
30 | +#define _GEN9_VP9_CONST_H | |
31 | + | |
32 | +extern const unsigned int vp9_fullspiral_ime_search_path_delta[14]; | |
33 | + | |
34 | +extern const unsigned int vp9_diamond_ime_search_path_delta[14]; | |
35 | + | |
36 | +extern const int vp9_brc_const_data_p_g9[4448]; | |
37 | +extern const int vp9_brc_const_data_i_g9[4448]; | |
38 | + | |
39 | +extern const unsigned int gen9_vp9_avs_coeffs[256]; | |
40 | + | |
41 | +extern const unsigned int intel_vp9_costlut_key[4096]; | |
42 | +extern const unsigned int intel_vp9_costlut_p[4096]; | |
43 | + | |
44 | +#endif |
@@ -0,0 +1,52 @@ | ||
1 | +/* | |
2 | + * Copyright © 2016 Intel Corporation | |
3 | + * | |
4 | + * Permission is hereby granted, free of charge, to any person obtaining a | |
5 | + * copy of this software and associated documentation files (the | |
6 | + * "Software"), to deal in the Software without restriction, including | |
7 | + * without limitation the rights to use, copy, modify, merge, publish, | |
8 | + * distribute, sub license, and/or sell copies of the Software, and to | |
9 | + * permit persons to whom the Software is furnished to do so, subject to | |
10 | + * the following conditions: | |
11 | + * | |
12 | + * The above copyright notice and this permission notice (including the | |
13 | + * next paragraph) shall be included in all copies or substantial portions | |
14 | + * of the Software. | |
15 | + * | |
16 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
17 | + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
18 | + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | |
19 | + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR | |
20 | + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
21 | + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
22 | + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
23 | + * | |
24 | + * Authors: | |
25 | + * Zhao Yakui <yakui.zhao@intel.com> | |
26 | + * | |
27 | + */ | |
28 | + | |
29 | +#ifndef _INTEL_VP9_ENC_API_H_ | |
30 | +#define _INTEL_VP9_ENC_API_H_ | |
31 | + | |
32 | +#include <va/va.h> | |
33 | + | |
34 | +struct intel_encoder_context; | |
35 | +struct hw_context; | |
36 | + | |
37 | +extern Bool | |
38 | +gen9_vp9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context); | |
39 | + | |
40 | +extern Bool | |
41 | +gen9_vp9_pak_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context); | |
42 | + | |
43 | +/* buffer points to the start address of coded_buffer. It is also | |
44 | + * interpreted as i965_coded_buffer_segment. | |
45 | + */ | |
46 | +extern VAStatus | |
47 | +gen9_vp9_get_coded_status(VADriverContextP ctx, | |
48 | + char *buffer, | |
49 | + struct hw_context *hw_context); | |
50 | + | |
51 | + | |
52 | +#endif // _INTE_VP9_ENC_API_H_ |
@@ -0,0 +1,5836 @@ | ||
1 | +/* | |
2 | + * Copyright © 2016 Intel Corporation | |
3 | + * | |
4 | + * Permission is hereby granted, free of charge, to any person obtaining a | |
5 | + * copy of this software and associated documentation files (the | |
6 | + * "Software"), to deal in the Software without restriction, including | |
7 | + * without limitation the rights to use, copy, modify, merge, publish, | |
8 | + * distribute, sub license, and/or sell copies of the Software, and to | |
9 | + * permit persons to whom the Software is furnished to do so, subject to | |
10 | + * the following conditions: | |
11 | + * | |
12 | + * The above copyright notice and this permission notice (including the | |
13 | + * next paragraph) shall be included in all copies or substantial portions | |
14 | + * of the Software. | |
15 | + * | |
16 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
17 | + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
18 | + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | |
19 | + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR | |
20 | + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
21 | + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
22 | + * SOFTWAR | |
23 | + * | |
24 | + * Authors: | |
25 | + * Zhao, Yakui <yakui.zhao@intel.com> | |
26 | + * | |
27 | + */ | |
28 | + | |
29 | +#include <stdio.h> | |
30 | +#include <stdlib.h> | |
31 | +#include <stdbool.h> | |
32 | +#include <string.h> | |
33 | +#include <math.h> | |
34 | +#include <assert.h> | |
35 | +#include <va/va.h> | |
36 | + | |
37 | +#include "intel_batchbuffer.h" | |
38 | +#include "intel_driver.h" | |
39 | + | |
40 | +#include "i965_defines.h" | |
41 | +#include "i965_drv_video.h" | |
42 | +#include "i965_encoder.h" | |
43 | +#include "gen9_vp9_encapi.h" | |
44 | +#include "gen9_vp9_encoder.h" | |
45 | +#include "gen9_vp9_encoder_kernels.h" | |
46 | +#include "vp9_probs.h" | |
47 | +#include "gen9_vp9_const_def.h" | |
48 | + | |
49 | +#define MAX_VP9_ENCODER_SURFACES 64 | |
50 | + | |
51 | +#define MAX_URB_SIZE 4096 /* In register */ | |
52 | +#define NUM_KERNELS_PER_GPE_CONTEXT 1 | |
53 | + | |
54 | +#define VP9_BRC_KBPS 1000 | |
55 | + | |
56 | +#define BRC_KERNEL_CBR 0x0010 | |
57 | +#define BRC_KERNEL_VBR 0x0020 | |
58 | +#define BRC_KERNEL_AVBR 0x0040 | |
59 | +#define BRC_KERNEL_CQL 0x0080 | |
60 | + | |
61 | +#define DEFAULT_MOCS 0x02 | |
62 | +#define VP9_PIC_STATE_BUFFER_SIZE 192 | |
63 | + | |
64 | +typedef struct _intel_kernel_header_ | |
65 | +{ | |
66 | + uint32_t reserved : 6; | |
67 | + uint32_t kernel_start_pointer : 26; | |
68 | +} intel_kernel_header; | |
69 | + | |
70 | +typedef struct _intel_vp9_kernel_header { | |
71 | + int nKernelCount; | |
72 | + intel_kernel_header PLY_DSCALE; | |
73 | + intel_kernel_header VP9_ME_P; | |
74 | + intel_kernel_header VP9_Enc_I_32x32; | |
75 | + intel_kernel_header VP9_Enc_I_16x16; | |
76 | + intel_kernel_header VP9_Enc_P; | |
77 | + intel_kernel_header VP9_Enc_TX; | |
78 | + intel_kernel_header VP9_DYS; | |
79 | + | |
80 | + intel_kernel_header VP9BRC_Intra_Distortion; | |
81 | + intel_kernel_header VP9BRC_Init; | |
82 | + intel_kernel_header VP9BRC_Reset; | |
83 | + intel_kernel_header VP9BRC_Update; | |
84 | +} intel_vp9_kernel_header; | |
85 | + | |
86 | +#define DYS_1X_FLAG 0x01 | |
87 | +#define DYS_4X_FLAG 0x02 | |
88 | +#define DYS_16X_FLAG 0x04 | |
89 | + | |
90 | +struct vp9_surface_param { | |
91 | + uint32_t frame_width; | |
92 | + uint32_t frame_height; | |
93 | +}; | |
94 | + | |
95 | +static uint32_t intel_convert_sign_mag(int val, int sign_bit_pos) | |
96 | +{ | |
97 | + uint32_t ret_val = 0; | |
98 | + if (val < 0) | |
99 | + { | |
100 | + val = -val; | |
101 | + ret_val = ((1 << (sign_bit_pos - 1)) | (val & ((1 << (sign_bit_pos - 1)) - 1))); | |
102 | + } | |
103 | + else | |
104 | + { | |
105 | + ret_val = val & ((1 << (sign_bit_pos - 1)) - 1); | |
106 | + } | |
107 | + return ret_val; | |
108 | +} | |
109 | + | |
110 | +static bool | |
111 | +intel_vp9_get_kernel_header_and_size( | |
112 | + void *pvbinary, | |
113 | + int binary_size, | |
114 | + INTEL_VP9_ENC_OPERATION operation, | |
115 | + int krnstate_idx, | |
116 | + struct i965_kernel *ret_kernel) | |
117 | +{ | |
118 | + typedef uint32_t BIN_PTR[4]; | |
119 | + | |
120 | + char *bin_start; | |
121 | + intel_vp9_kernel_header *pkh_table; | |
122 | + intel_kernel_header *pcurr_header, *pinvalid_entry, *pnext_header; | |
123 | + int next_krnoffset; | |
124 | + | |
125 | + if (!pvbinary || !ret_kernel) | |
126 | + return false; | |
127 | + | |
128 | + bin_start = (char *)pvbinary; | |
129 | + pkh_table = (intel_vp9_kernel_header *)pvbinary; | |
130 | + pinvalid_entry = &(pkh_table->VP9BRC_Update) + 1; | |
131 | + next_krnoffset = binary_size; | |
132 | + | |
133 | + if ((operation == INTEL_VP9_ENC_SCALING4X) || (operation == INTEL_VP9_ENC_SCALING2X)) | |
134 | + { | |
135 | + pcurr_header = &pkh_table->PLY_DSCALE; | |
136 | + } | |
137 | + else if (operation == INTEL_VP9_ENC_ME) | |
138 | + { | |
139 | + pcurr_header = &pkh_table->VP9_ME_P; | |
140 | + } | |
141 | + else if (operation == INTEL_VP9_ENC_MBENC) | |
142 | + { | |
143 | + pcurr_header = &pkh_table->VP9_Enc_I_32x32; | |
144 | + } | |
145 | + else if (operation == INTEL_VP9_ENC_DYS) | |
146 | + { | |
147 | + pcurr_header = &pkh_table->VP9_DYS; | |
148 | + } | |
149 | + else if (operation == INTEL_VP9_ENC_BRC) | |
150 | + { | |
151 | + pcurr_header = &pkh_table->VP9BRC_Intra_Distortion; | |
152 | + } | |
153 | + else | |
154 | + { | |
155 | + return false; | |
156 | + } | |
157 | + | |
158 | + pcurr_header += krnstate_idx; | |
159 | + ret_kernel->bin = (const BIN_PTR *)(bin_start + (pcurr_header->kernel_start_pointer << 6)); | |
160 | + | |
161 | + pnext_header = (pcurr_header + 1); | |
162 | + if (pnext_header < pinvalid_entry) | |
163 | + { | |
164 | + next_krnoffset = pnext_header->kernel_start_pointer << 6; | |
165 | + } | |
166 | + ret_kernel->size = next_krnoffset - (pcurr_header->kernel_start_pointer << 6); | |
167 | + | |
168 | + return true; | |
169 | +} | |
170 | + | |
171 | + | |
172 | +static void | |
173 | +gen9_free_surfaces_vp9(void **data) | |
174 | +{ | |
175 | + struct gen9_surface_vp9 *vp9_surface; | |
176 | + | |
177 | + if (!data || !*data) | |
178 | + return; | |
179 | + | |
180 | + vp9_surface = *data; | |
181 | + | |
182 | + if (vp9_surface->scaled_4x_surface_obj) { | |
183 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->scaled_4x_surface_id, 1); | |
184 | + vp9_surface->scaled_4x_surface_id = VA_INVALID_SURFACE; | |
185 | + vp9_surface->scaled_4x_surface_obj = NULL; | |
186 | + } | |
187 | + | |
188 | + if (vp9_surface->scaled_16x_surface_obj) { | |
189 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->scaled_16x_surface_id, 1); | |
190 | + vp9_surface->scaled_16x_surface_id = VA_INVALID_SURFACE; | |
191 | + vp9_surface->scaled_16x_surface_obj = NULL; | |
192 | + } | |
193 | + | |
194 | + if (vp9_surface->dys_4x_surface_obj) { | |
195 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_4x_surface_id, 1); | |
196 | + vp9_surface->dys_4x_surface_id = VA_INVALID_SURFACE; | |
197 | + vp9_surface->dys_4x_surface_obj = NULL; | |
198 | + } | |
199 | + | |
200 | + if (vp9_surface->dys_16x_surface_obj) { | |
201 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_16x_surface_id, 1); | |
202 | + vp9_surface->dys_16x_surface_id = VA_INVALID_SURFACE; | |
203 | + vp9_surface->dys_16x_surface_obj = NULL; | |
204 | + } | |
205 | + | |
206 | + if (vp9_surface->dys_surface_obj) { | |
207 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_surface_id, 1); | |
208 | + vp9_surface->dys_surface_id = VA_INVALID_SURFACE; | |
209 | + vp9_surface->dys_surface_obj = NULL; | |
210 | + } | |
211 | + | |
212 | + free(vp9_surface); | |
213 | + | |
214 | + *data = NULL; | |
215 | + | |
216 | + return; | |
217 | +} | |
218 | + | |
219 | +static VAStatus | |
220 | +gen9_vp9_init_check_surfaces(VADriverContextP ctx, | |
221 | + struct object_surface *obj_surface, | |
222 | + struct vp9_surface_param *surface_param) | |
223 | +{ | |
224 | + struct i965_driver_data *i965 = i965_driver_data(ctx); | |
225 | + struct gen9_surface_vp9 *vp9_surface; | |
226 | + int downscaled_width_4x, downscaled_height_4x; | |
227 | + int downscaled_width_16x, downscaled_height_16x; | |
228 | + | |
229 | + if (!obj_surface || !obj_surface->bo) | |
230 | + return VA_STATUS_ERROR_INVALID_SURFACE; | |
231 | + | |
232 | + if (obj_surface->private_data && | |
233 | + obj_surface->free_private_data != gen9_free_surfaces_vp9) { | |
234 | + obj_surface->free_private_data(&obj_surface->private_data); | |
235 | + obj_surface->private_data = NULL; | |
236 | + } | |
237 | + | |
238 | + if (obj_surface->private_data) { | |
239 | + /* if the frame width/height is already the same as the expected, | |
240 | + * it is unncessary to reallocate it. | |
241 | + */ | |
242 | + vp9_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
243 | + if (vp9_surface->frame_width >= surface_param->frame_width || | |
244 | + vp9_surface->frame_height >= surface_param->frame_height) | |
245 | + return VA_STATUS_SUCCESS; | |
246 | + | |
247 | + obj_surface->free_private_data(&obj_surface->private_data); | |
248 | + obj_surface->private_data = NULL; | |
249 | + vp9_surface = NULL; | |
250 | + } | |
251 | + | |
252 | + vp9_surface = calloc(1, sizeof(struct gen9_surface_vp9)); | |
253 | + | |
254 | + if (!vp9_surface) | |
255 | + return VA_STATUS_ERROR_ALLOCATION_FAILED; | |
256 | + | |
257 | + vp9_surface->ctx = ctx; | |
258 | + obj_surface->private_data = vp9_surface; | |
259 | + obj_surface->free_private_data = gen9_free_surfaces_vp9; | |
260 | + | |
261 | + vp9_surface->frame_width = surface_param->frame_width; | |
262 | + vp9_surface->frame_height = surface_param->frame_height; | |
263 | + | |
264 | + downscaled_width_4x = ALIGN(surface_param->frame_width / 4, 16); | |
265 | + downscaled_height_4x = ALIGN(surface_param->frame_height / 4, 16); | |
266 | + | |
267 | + i965_CreateSurfaces(ctx, | |
268 | + downscaled_width_4x, | |
269 | + downscaled_height_4x, | |
270 | + VA_RT_FORMAT_YUV420, | |
271 | + 1, | |
272 | + &vp9_surface->scaled_4x_surface_id); | |
273 | + | |
274 | + vp9_surface->scaled_4x_surface_obj = SURFACE(vp9_surface->scaled_4x_surface_id); | |
275 | + i965_check_alloc_surface_bo(ctx, vp9_surface->scaled_4x_surface_obj, 1, | |
276 | + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); | |
277 | + | |
278 | + downscaled_width_16x = ALIGN(surface_param->frame_width / 16, 16); | |
279 | + downscaled_height_16x = ALIGN(surface_param->frame_height / 16, 16); | |
280 | + i965_CreateSurfaces(ctx, | |
281 | + downscaled_width_16x, | |
282 | + downscaled_height_16x, | |
283 | + VA_RT_FORMAT_YUV420, | |
284 | + 1, | |
285 | + &vp9_surface->scaled_16x_surface_id); | |
286 | + vp9_surface->scaled_16x_surface_obj = SURFACE(vp9_surface->scaled_16x_surface_id); | |
287 | + i965_check_alloc_surface_bo(ctx, vp9_surface->scaled_16x_surface_obj, 1, | |
288 | + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); | |
289 | + | |
290 | + return VA_STATUS_SUCCESS; | |
291 | +} | |
292 | + | |
293 | +static VAStatus | |
294 | +gen9_vp9_check_dys_surfaces(VADriverContextP ctx, | |
295 | + struct object_surface *obj_surface, | |
296 | + struct vp9_surface_param *surface_param) | |
297 | +{ | |
298 | + struct i965_driver_data *i965 = i965_driver_data(ctx); | |
299 | + struct gen9_surface_vp9 *vp9_surface; | |
300 | + int dys_width_4x, dys_height_4x; | |
301 | + int dys_width_16x, dys_height_16x; | |
302 | + | |
303 | + /* As this is handled after the surface checking, it is unnecessary | |
304 | + * to check the surface bo and vp9_priv_surface again | |
305 | + */ | |
306 | + | |
307 | + vp9_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
308 | + | |
309 | + if (!vp9_surface) | |
310 | + return VA_STATUS_ERROR_INVALID_SURFACE; | |
311 | + | |
312 | + /* if the frame_width/height of dys_surface is the same as | |
313 | + * the expected, it is unnecessary to allocate it again | |
314 | + */ | |
315 | + if (vp9_surface->dys_frame_width == surface_param->frame_width && | |
316 | + vp9_surface->dys_frame_width == surface_param->frame_width) | |
317 | + return VA_STATUS_SUCCESS; | |
318 | + | |
319 | + if (vp9_surface->dys_4x_surface_obj) { | |
320 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_4x_surface_id, 1); | |
321 | + vp9_surface->dys_4x_surface_id = VA_INVALID_SURFACE; | |
322 | + vp9_surface->dys_4x_surface_obj = NULL; | |
323 | + } | |
324 | + | |
325 | + if (vp9_surface->dys_16x_surface_obj) { | |
326 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_16x_surface_id, 1); | |
327 | + vp9_surface->dys_16x_surface_id = VA_INVALID_SURFACE; | |
328 | + vp9_surface->dys_16x_surface_obj = NULL; | |
329 | + } | |
330 | + | |
331 | + if (vp9_surface->dys_surface_obj) { | |
332 | + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_surface_id, 1); | |
333 | + vp9_surface->dys_surface_id = VA_INVALID_SURFACE; | |
334 | + vp9_surface->dys_surface_obj = NULL; | |
335 | + } | |
336 | + | |
337 | + vp9_surface->dys_frame_width = surface_param->frame_width; | |
338 | + vp9_surface->dys_frame_height = surface_param->frame_height; | |
339 | + | |
340 | + i965_CreateSurfaces(ctx, | |
341 | + surface_param->frame_width, | |
342 | + surface_param->frame_height, | |
343 | + VA_RT_FORMAT_YUV420, | |
344 | + 1, | |
345 | + &vp9_surface->dys_surface_id); | |
346 | + vp9_surface->dys_surface_obj = SURFACE(vp9_surface->dys_surface_id); | |
347 | + i965_check_alloc_surface_bo(ctx, vp9_surface->dys_surface_obj, 1, | |
348 | + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); | |
349 | + | |
350 | + dys_width_4x = ALIGN(surface_param->frame_width / 4, 16); | |
351 | + dys_height_4x = ALIGN(surface_param->frame_width / 4, 16); | |
352 | + | |
353 | + i965_CreateSurfaces(ctx, | |
354 | + dys_width_4x, | |
355 | + dys_height_4x, | |
356 | + VA_RT_FORMAT_YUV420, | |
357 | + 1, | |
358 | + &vp9_surface->dys_4x_surface_id); | |
359 | + | |
360 | + vp9_surface->dys_4x_surface_obj = SURFACE(vp9_surface->dys_4x_surface_id); | |
361 | + i965_check_alloc_surface_bo(ctx, vp9_surface->dys_4x_surface_obj, 1, | |
362 | + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); | |
363 | + | |
364 | + dys_width_16x = ALIGN(surface_param->frame_width / 16, 16); | |
365 | + dys_height_16x = ALIGN(surface_param->frame_width / 16, 16); | |
366 | + i965_CreateSurfaces(ctx, | |
367 | + dys_width_16x, | |
368 | + dys_height_16x, | |
369 | + VA_RT_FORMAT_YUV420, | |
370 | + 1, | |
371 | + &vp9_surface->dys_16x_surface_id); | |
372 | + vp9_surface->dys_16x_surface_obj = SURFACE(vp9_surface->dys_16x_surface_id); | |
373 | + i965_check_alloc_surface_bo(ctx, vp9_surface->dys_16x_surface_obj, 1, | |
374 | + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); | |
375 | + | |
376 | + return VA_STATUS_SUCCESS; | |
377 | +} | |
378 | + | |
379 | +static VAStatus | |
380 | +gen9_vp9_allocate_resources(VADriverContextP ctx, | |
381 | + struct encode_state *encode_state, | |
382 | + struct intel_encoder_context *encoder_context, | |
383 | + int allocate) | |
384 | +{ | |
385 | + struct i965_driver_data *i965 = i965_driver_data(ctx); | |
386 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
387 | + struct gen9_vp9_state *vp9_state; | |
388 | + int allocate_flag, i; | |
389 | + int res_size; | |
390 | + uint32_t frame_width_in_sb, frame_height_in_sb, frame_sb_num; | |
391 | + unsigned int width, height; | |
392 | + | |
393 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
394 | + | |
395 | + if (!vp9_state || !vp9_state->pic_param) | |
396 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
397 | + | |
398 | + /* the buffer related with BRC is not changed. So it is allocated | |
399 | + * based on the input parameter | |
400 | + */ | |
401 | + if (allocate) { | |
402 | + i965_free_gpe_resource(&vme_context->res_brc_history_buffer); | |
403 | + i965_free_gpe_resource(&vme_context->res_brc_const_data_buffer); | |
404 | + i965_free_gpe_resource(&vme_context->res_brc_mbenc_curbe_write_buffer); | |
405 | + i965_free_gpe_resource(&vme_context->res_pic_state_brc_read_buffer); | |
406 | + i965_free_gpe_resource(&vme_context->res_pic_state_brc_write_hfw_read_buffer); | |
407 | + i965_free_gpe_resource(&vme_context->res_pic_state_hfw_write_buffer); | |
408 | + i965_free_gpe_resource(&vme_context->res_seg_state_brc_read_buffer); | |
409 | + i965_free_gpe_resource(&vme_context->res_seg_state_brc_write_buffer); | |
410 | + i965_free_gpe_resource(&vme_context->res_brc_bitstream_size_buffer); | |
411 | + i965_free_gpe_resource(&vme_context->res_brc_hfw_data_buffer); | |
412 | + i965_free_gpe_resource(&vme_context->res_brc_mmdk_pak_buffer); | |
413 | + | |
414 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
415 | + &vme_context->res_brc_history_buffer, | |
416 | + VP9_BRC_HISTORY_BUFFER_SIZE, | |
417 | + "Brc History buffer"); | |
418 | + if (!allocate_flag) | |
419 | + goto failed_allocation; | |
420 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
421 | + &vme_context->res_brc_const_data_buffer, | |
422 | + VP9_BRC_CONSTANTSURFACE_SIZE, | |
423 | + "Brc Constant buffer"); | |
424 | + if (!allocate_flag) | |
425 | + goto failed_allocation; | |
426 | + | |
427 | + res_size = ALIGN(sizeof(vp9_mbenc_curbe_data), 64) + 128 + | |
428 | + ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * NUM_VP9_MBENC; | |
429 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
430 | + &vme_context->res_brc_mbenc_curbe_write_buffer, | |
431 | + res_size, | |
432 | + "Brc Curbe write"); | |
433 | + if (!allocate_flag) | |
434 | + goto failed_allocation; | |
435 | + | |
436 | + res_size = VP9_PIC_STATE_BUFFER_SIZE * 4; | |
437 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
438 | + &vme_context->res_pic_state_brc_read_buffer, | |
439 | + res_size, | |
440 | + "Pic State Brc_read"); | |
441 | + if (!allocate_flag) | |
442 | + goto failed_allocation; | |
443 | + | |
444 | + res_size = VP9_PIC_STATE_BUFFER_SIZE * 4; | |
445 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
446 | + &vme_context->res_pic_state_brc_write_hfw_read_buffer, | |
447 | + res_size, | |
448 | + "Pic State Brc_write Hfw_Read"); | |
449 | + if (!allocate_flag) | |
450 | + goto failed_allocation; | |
451 | + | |
452 | + res_size = VP9_PIC_STATE_BUFFER_SIZE * 4; | |
453 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
454 | + &vme_context->res_pic_state_hfw_write_buffer, | |
455 | + res_size, | |
456 | + "Pic State Hfw Write"); | |
457 | + if (!allocate_flag) | |
458 | + goto failed_allocation; | |
459 | + | |
460 | + res_size = VP9_SEGMENT_STATE_BUFFER_SIZE; | |
461 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
462 | + &vme_context->res_seg_state_brc_read_buffer, | |
463 | + res_size, | |
464 | + "Segment state brc_read"); | |
465 | + if (!allocate_flag) | |
466 | + goto failed_allocation; | |
467 | + | |
468 | + res_size = VP9_SEGMENT_STATE_BUFFER_SIZE; | |
469 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
470 | + &vme_context->res_seg_state_brc_write_buffer, | |
471 | + res_size, | |
472 | + "Segment state brc_write"); | |
473 | + if (!allocate_flag) | |
474 | + goto failed_allocation; | |
475 | + | |
476 | + res_size = VP9_BRC_BITSTREAM_SIZE_BUFFER_SIZE; | |
477 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
478 | + &vme_context->res_brc_bitstream_size_buffer, | |
479 | + res_size, | |
480 | + "Brc bitstream buffer"); | |
481 | + if (!allocate_flag) | |
482 | + goto failed_allocation; | |
483 | + | |
484 | + res_size = VP9_HFW_BRC_DATA_BUFFER_SIZE; | |
485 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
486 | + &vme_context->res_brc_hfw_data_buffer, | |
487 | + res_size, | |
488 | + "mfw Brc data"); | |
489 | + if (!allocate_flag) | |
490 | + goto failed_allocation; | |
491 | + | |
492 | + res_size = VP9_BRC_MMDK_PAK_BUFFER_SIZE; | |
493 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
494 | + &vme_context->res_brc_mmdk_pak_buffer, | |
495 | + res_size, | |
496 | + "Brc mmdk_pak"); | |
497 | + if (!allocate_flag) | |
498 | + goto failed_allocation; | |
499 | + } | |
500 | + | |
501 | + /* If the width/height of allocated buffer is greater than the expected, | |
502 | + * it is unnecessary to allocate it again | |
503 | + */ | |
504 | + if (vp9_state->res_width >= vp9_state->frame_width && | |
505 | + vp9_state->res_height >= vp9_state->frame_height) { | |
506 | + | |
507 | + return VA_STATUS_SUCCESS; | |
508 | + } | |
509 | + frame_width_in_sb = ALIGN(vp9_state->frame_width, 64) / 64; | |
510 | + frame_height_in_sb = ALIGN(vp9_state->frame_height, 64) / 64; | |
511 | + frame_sb_num = frame_width_in_sb * frame_height_in_sb; | |
512 | + | |
513 | + i965_free_gpe_resource(&vme_context->res_hvd_line_buffer); | |
514 | + res_size = frame_width_in_sb * 64; | |
515 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
516 | + &vme_context->res_hvd_line_buffer, | |
517 | + res_size, | |
518 | + "VP9 hvd line line"); | |
519 | + if (!allocate_flag) | |
520 | + goto failed_allocation; | |
521 | + | |
522 | + i965_free_gpe_resource(&vme_context->res_hvd_tile_line_buffer); | |
523 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
524 | + &vme_context->res_hvd_tile_line_buffer, | |
525 | + res_size, | |
526 | + "VP9 hvd tile_line line"); | |
527 | + if (!allocate_flag) | |
528 | + goto failed_allocation; | |
529 | + | |
530 | + i965_free_gpe_resource(&vme_context->res_deblocking_filter_line_buffer); | |
531 | + res_size = frame_width_in_sb * 18 * 64; | |
532 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
533 | + &vme_context->res_deblocking_filter_line_buffer, | |
534 | + res_size, | |
535 | + "VP9 deblocking filter line"); | |
536 | + if (!allocate_flag) | |
537 | + goto failed_allocation; | |
538 | + | |
539 | + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_line_buffer); | |
540 | + res_size = frame_width_in_sb * 18 * 64; | |
541 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
542 | + &vme_context->res_deblocking_filter_tile_line_buffer, | |
543 | + res_size, | |
544 | + "VP9 deblocking tile line"); | |
545 | + if (!allocate_flag) | |
546 | + goto failed_allocation; | |
547 | + | |
548 | + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_col_buffer); | |
549 | + res_size = frame_height_in_sb * 17 * 64; | |
550 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
551 | + &vme_context->res_deblocking_filter_tile_col_buffer, | |
552 | + res_size, | |
553 | + "VP9 deblocking tile col"); | |
554 | + if (!allocate_flag) | |
555 | + goto failed_allocation; | |
556 | + | |
557 | + i965_free_gpe_resource(&vme_context->res_metadata_line_buffer); | |
558 | + res_size = frame_width_in_sb * 5 * 64; | |
559 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
560 | + &vme_context->res_metadata_line_buffer, | |
561 | + res_size, | |
562 | + "VP9 metadata line"); | |
563 | + if (!allocate_flag) | |
564 | + goto failed_allocation; | |
565 | + | |
566 | + i965_free_gpe_resource(&vme_context->res_metadata_tile_line_buffer); | |
567 | + res_size = frame_width_in_sb * 5 * 64; | |
568 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
569 | + &vme_context->res_metadata_tile_line_buffer, | |
570 | + res_size, | |
571 | + "VP9 metadata tile line"); | |
572 | + if (!allocate_flag) | |
573 | + goto failed_allocation; | |
574 | + | |
575 | + i965_free_gpe_resource(&vme_context->res_metadata_tile_col_buffer); | |
576 | + res_size = frame_height_in_sb * 5 * 64; | |
577 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
578 | + &vme_context->res_metadata_tile_col_buffer, | |
579 | + res_size, | |
580 | + "VP9 metadata tile col"); | |
581 | + if (!allocate_flag) | |
582 | + goto failed_allocation; | |
583 | + | |
584 | + i965_free_gpe_resource(&vme_context->res_prob_buffer); | |
585 | + res_size = 2048; | |
586 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
587 | + &vme_context->res_prob_buffer, | |
588 | + res_size, | |
589 | + "VP9 prob"); | |
590 | + if (!allocate_flag) | |
591 | + goto failed_allocation; | |
592 | + | |
593 | + i965_free_gpe_resource(&vme_context->res_segmentid_buffer); | |
594 | + res_size = frame_sb_num * 64; | |
595 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
596 | + &vme_context->res_segmentid_buffer, | |
597 | + res_size, | |
598 | + "VP9 segment id"); | |
599 | + if (!allocate_flag) | |
600 | + goto failed_allocation; | |
601 | + | |
602 | + i965_zero_gpe_resource(&vme_context->res_segmentid_buffer); | |
603 | + | |
604 | + i965_free_gpe_resource(&vme_context->res_prob_delta_buffer); | |
605 | + res_size = 29 * 64; | |
606 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
607 | + &vme_context->res_prob_delta_buffer, | |
608 | + res_size, | |
609 | + "VP9 prob delta"); | |
610 | + if (!allocate_flag) | |
611 | + goto failed_allocation; | |
612 | + | |
613 | + i965_zero_gpe_resource(&vme_context->res_segmentid_buffer); | |
614 | + | |
615 | + i965_free_gpe_resource(&vme_context->res_prob_delta_buffer); | |
616 | + res_size = 29 * 64; | |
617 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
618 | + &vme_context->res_prob_delta_buffer, | |
619 | + res_size, | |
620 | + "VP9 prob delta"); | |
621 | + if (!allocate_flag) | |
622 | + goto failed_allocation; | |
623 | + | |
624 | + i965_free_gpe_resource(&vme_context->res_compressed_input_buffer); | |
625 | + res_size = 32 * 64; | |
626 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
627 | + &vme_context->res_compressed_input_buffer, | |
628 | + res_size, | |
629 | + "VP9 compressed_input buffer"); | |
630 | + if (!allocate_flag) | |
631 | + goto failed_allocation; | |
632 | + | |
633 | + i965_free_gpe_resource(&vme_context->res_prob_counter_buffer); | |
634 | + res_size = 193 * 64; | |
635 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
636 | + &vme_context->res_prob_counter_buffer, | |
637 | + res_size, | |
638 | + "VP9 prob counter"); | |
639 | + if (!allocate_flag) | |
640 | + goto failed_allocation; | |
641 | + | |
642 | + i965_free_gpe_resource(&vme_context->res_tile_record_streamout_buffer); | |
643 | + res_size = frame_sb_num * 64; | |
644 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
645 | + &vme_context->res_tile_record_streamout_buffer, | |
646 | + res_size, | |
647 | + "VP9 tile record stream_out"); | |
648 | + if (!allocate_flag) | |
649 | + goto failed_allocation; | |
650 | + | |
651 | + i965_free_gpe_resource(&vme_context->res_cu_stat_streamout_buffer); | |
652 | + res_size = frame_sb_num * 64; | |
653 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
654 | + &vme_context->res_cu_stat_streamout_buffer, | |
655 | + res_size, | |
656 | + "VP9 CU stat stream_out"); | |
657 | + if (!allocate_flag) | |
658 | + goto failed_allocation; | |
659 | + | |
660 | + width = vp9_state->downscaled_width_4x_in_mb * 32; | |
661 | + height = vp9_state->downscaled_height_4x_in_mb * 16; | |
662 | + i965_free_gpe_resource(&vme_context->s4x_memv_data_buffer); | |
663 | + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, | |
664 | + &vme_context->s4x_memv_data_buffer, | |
665 | + width, height, | |
666 | + ALIGN(width, 64), | |
667 | + "VP9 4x MEMV data"); | |
668 | + if (!allocate_flag) | |
669 | + goto failed_allocation; | |
670 | + | |
671 | + width = vp9_state->downscaled_width_4x_in_mb * 8; | |
672 | + height = vp9_state->downscaled_height_4x_in_mb * 16; | |
673 | + i965_free_gpe_resource(&vme_context->s4x_memv_distortion_buffer); | |
674 | + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, | |
675 | + &vme_context->s4x_memv_distortion_buffer, | |
676 | + width, height, | |
677 | + ALIGN(width, 64), | |
678 | + "VP9 4x MEMV distorion"); | |
679 | + if (!allocate_flag) | |
680 | + goto failed_allocation; | |
681 | + | |
682 | + width = ALIGN(vp9_state->downscaled_width_16x_in_mb * 32, 64); | |
683 | + height = vp9_state->downscaled_height_16x_in_mb * 16; | |
684 | + i965_free_gpe_resource(&vme_context->s16x_memv_data_buffer); | |
685 | + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, | |
686 | + &vme_context->s16x_memv_data_buffer, | |
687 | + width, height, | |
688 | + width, | |
689 | + "VP9 16x MEMV data"); | |
690 | + if (!allocate_flag) | |
691 | + goto failed_allocation; | |
692 | + | |
693 | + width = vp9_state->frame_width_in_mb * 16; | |
694 | + height = vp9_state->frame_height_in_mb * 8; | |
695 | + i965_free_gpe_resource(&vme_context->res_output_16x16_inter_modes); | |
696 | + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, | |
697 | + &vme_context->res_output_16x16_inter_modes, | |
698 | + width, height, | |
699 | + ALIGN(width, 64), | |
700 | + "VP9 output inter_mode"); | |
701 | + if (!allocate_flag) | |
702 | + goto failed_allocation; | |
703 | + | |
704 | + res_size = vp9_state->frame_width_in_mb * vp9_state->frame_height_in_mb * | |
705 | + 16 * 4; | |
706 | + for (i = 0; i < 2; i++) { | |
707 | + i965_free_gpe_resource(&vme_context->res_mode_decision[i]); | |
708 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
709 | + &vme_context->res_mode_decision[i], | |
710 | + res_size, | |
711 | + "VP9 mode decision"); | |
712 | + if (!allocate_flag) | |
713 | + goto failed_allocation; | |
714 | + | |
715 | + } | |
716 | + | |
717 | + res_size = frame_sb_num * 9 * 64; | |
718 | + for (i = 0; i < 2; i++) { | |
719 | + i965_free_gpe_resource(&vme_context->res_mv_temporal_buffer[i]); | |
720 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
721 | + &vme_context->res_mv_temporal_buffer[i], | |
722 | + res_size, | |
723 | + "VP9 temporal mv"); | |
724 | + if (!allocate_flag) | |
725 | + goto failed_allocation; | |
726 | + } | |
727 | + | |
728 | + vp9_state->mb_data_offset = ALIGN(frame_sb_num * 16, 4096) + 4096; | |
729 | + res_size = vp9_state->mb_data_offset + frame_sb_num * 64 * 64 + 1000; | |
730 | + i965_free_gpe_resource(&vme_context->res_mb_code_surface); | |
731 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
732 | + &vme_context->res_mb_code_surface, | |
733 | + ALIGN(res_size, 4096), | |
734 | + "VP9 mb_code surface"); | |
735 | + if (!allocate_flag) | |
736 | + goto failed_allocation; | |
737 | + | |
738 | + res_size = 128; | |
739 | + i965_free_gpe_resource(&vme_context->res_pak_uncompressed_input_buffer); | |
740 | + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, | |
741 | + &vme_context->res_pak_uncompressed_input_buffer, | |
742 | + ALIGN(res_size, 4096), | |
743 | + "VP9 pak_uncompressed_input"); | |
744 | + if (!allocate_flag) | |
745 | + goto failed_allocation; | |
746 | + | |
747 | + if (!vme_context->frame_header_data) { | |
748 | + /* allocate 512 bytes for generating the uncompressed header */ | |
749 | + vme_context->frame_header_data = calloc(1, 512); | |
750 | + } | |
751 | + | |
752 | + vp9_state->res_width = vp9_state->frame_width; | |
753 | + vp9_state->res_height = vp9_state->frame_height; | |
754 | + | |
755 | + return VA_STATUS_SUCCESS; | |
756 | + | |
757 | +failed_allocation: | |
758 | + return VA_STATUS_ERROR_ALLOCATION_FAILED; | |
759 | +} | |
760 | + | |
761 | +static void | |
762 | +gen9_vp9_free_resources(struct gen9_encoder_context_vp9 *vme_context) | |
763 | +{ | |
764 | + int i; | |
765 | + struct gen9_vp9_state *vp9_state = (struct gen9_vp9_state *) vme_context->enc_priv_state; | |
766 | + | |
767 | + if (vp9_state->brc_enabled) { | |
768 | + i965_free_gpe_resource(&vme_context->res_brc_history_buffer); | |
769 | + i965_free_gpe_resource(&vme_context->res_brc_const_data_buffer); | |
770 | + i965_free_gpe_resource(&vme_context->res_brc_mbenc_curbe_write_buffer); | |
771 | + i965_free_gpe_resource(&vme_context->res_pic_state_brc_read_buffer); | |
772 | + i965_free_gpe_resource(&vme_context->res_pic_state_brc_write_hfw_read_buffer); | |
773 | + i965_free_gpe_resource(&vme_context->res_pic_state_hfw_write_buffer); | |
774 | + i965_free_gpe_resource(&vme_context->res_seg_state_brc_read_buffer); | |
775 | + i965_free_gpe_resource(&vme_context->res_seg_state_brc_write_buffer); | |
776 | + i965_free_gpe_resource(&vme_context->res_brc_bitstream_size_buffer); | |
777 | + i965_free_gpe_resource(&vme_context->res_brc_hfw_data_buffer); | |
778 | + i965_free_gpe_resource(&vme_context->res_brc_mmdk_pak_buffer); | |
779 | + } | |
780 | + | |
781 | + i965_free_gpe_resource(&vme_context->res_hvd_line_buffer); | |
782 | + i965_free_gpe_resource(&vme_context->res_hvd_tile_line_buffer); | |
783 | + i965_free_gpe_resource(&vme_context->res_deblocking_filter_line_buffer); | |
784 | + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_line_buffer); | |
785 | + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_col_buffer); | |
786 | + i965_free_gpe_resource(&vme_context->res_metadata_line_buffer); | |
787 | + i965_free_gpe_resource(&vme_context->res_metadata_tile_line_buffer); | |
788 | + i965_free_gpe_resource(&vme_context->res_metadata_tile_col_buffer); | |
789 | + i965_free_gpe_resource(&vme_context->res_prob_buffer); | |
790 | + i965_free_gpe_resource(&vme_context->res_segmentid_buffer); | |
791 | + i965_free_gpe_resource(&vme_context->res_prob_delta_buffer); | |
792 | + i965_free_gpe_resource(&vme_context->res_prob_counter_buffer); | |
793 | + i965_free_gpe_resource(&vme_context->res_tile_record_streamout_buffer); | |
794 | + i965_free_gpe_resource(&vme_context->res_cu_stat_streamout_buffer); | |
795 | + i965_free_gpe_resource(&vme_context->s4x_memv_data_buffer); | |
796 | + i965_free_gpe_resource(&vme_context->s4x_memv_distortion_buffer); | |
797 | + i965_free_gpe_resource(&vme_context->s16x_memv_data_buffer); | |
798 | + i965_free_gpe_resource(&vme_context->res_output_16x16_inter_modes); | |
799 | + for (i = 0; i < 2; i++) { | |
800 | + i965_free_gpe_resource(&vme_context->res_mode_decision[i]); | |
801 | + } | |
802 | + | |
803 | + for (i = 0; i < 2; i++) { | |
804 | + i965_free_gpe_resource(&vme_context->res_mv_temporal_buffer[i]); | |
805 | + } | |
806 | + | |
807 | + i965_free_gpe_resource(&vme_context->res_compressed_input_buffer); | |
808 | + i965_free_gpe_resource(&vme_context->res_mb_code_surface); | |
809 | + i965_free_gpe_resource(&vme_context->res_pak_uncompressed_input_buffer); | |
810 | + | |
811 | + if (vme_context->frame_header_data) { | |
812 | + free(vme_context->frame_header_data); | |
813 | + vme_context->frame_header_data = NULL; | |
814 | + } | |
815 | + return; | |
816 | +} | |
817 | + | |
818 | +static void | |
819 | +gen9_init_media_object_walker_parameter(struct intel_encoder_context *encoder_context, | |
820 | + struct vp9_encoder_kernel_walker_parameter *kernel_walker_param, | |
821 | + struct gpe_media_object_walker_parameter *walker_param) | |
822 | +{ | |
823 | + memset(walker_param, 0, sizeof(*walker_param)); | |
824 | + | |
825 | + walker_param->use_scoreboard = kernel_walker_param->use_scoreboard; | |
826 | + | |
827 | + walker_param->block_resolution.x = kernel_walker_param->resolution_x; | |
828 | + walker_param->block_resolution.y = kernel_walker_param->resolution_y; | |
829 | + | |
830 | + walker_param->global_resolution.x = kernel_walker_param->resolution_x; | |
831 | + walker_param->global_resolution.y = kernel_walker_param->resolution_y; | |
832 | + | |
833 | + walker_param->global_outer_loop_stride.x = kernel_walker_param->resolution_x; | |
834 | + walker_param->global_outer_loop_stride.y = 0; | |
835 | + | |
836 | + walker_param->global_inner_loop_unit.x = 0; | |
837 | + walker_param->global_inner_loop_unit.y = kernel_walker_param->resolution_y; | |
838 | + | |
839 | + walker_param->local_loop_exec_count = 0xFFFF; //MAX VALUE | |
840 | + walker_param->global_loop_exec_count = 0xFFFF; //MAX VALUE | |
841 | + | |
842 | + if (kernel_walker_param->no_dependency) { | |
843 | + walker_param->scoreboard_mask = 0; | |
844 | + walker_param->use_scoreboard = 0; | |
845 | + // Raster scan walking pattern | |
846 | + walker_param->local_outer_loop_stride.x = 0; | |
847 | + walker_param->local_outer_loop_stride.y = 1; | |
848 | + walker_param->local_inner_loop_unit.x = 1; | |
849 | + walker_param->local_inner_loop_unit.y = 0; | |
850 | + walker_param->local_end.x = kernel_walker_param->resolution_x - 1; | |
851 | + walker_param->local_end.y = 0; | |
852 | + } else { | |
853 | + walker_param->local_end.x = 0; | |
854 | + walker_param->local_end.y = 0; | |
855 | + | |
856 | + if (kernel_walker_param->walker_degree == VP9_45Z_DEGREE) { | |
857 | + // 45z degree | |
858 | + walker_param->scoreboard_mask = 0x0F; | |
859 | + | |
860 | + walker_param->global_loop_exec_count = 0x3FF; | |
861 | + walker_param->local_loop_exec_count = 0x3FF; | |
862 | + | |
863 | + walker_param->global_resolution.x = (unsigned int)(kernel_walker_param->resolution_x / 2.f) + 1; | |
864 | + walker_param->global_resolution.y = 2 * kernel_walker_param->resolution_y; | |
865 | + | |
866 | + walker_param->global_start.x = 0; | |
867 | + walker_param->global_start.y = 0; | |
868 | + | |
869 | + walker_param->global_outer_loop_stride.x = walker_param->global_resolution.x; | |
870 | + walker_param->global_outer_loop_stride.y = 0; | |
871 | + | |
872 | + walker_param->global_inner_loop_unit.x = 0; | |
873 | + walker_param->global_inner_loop_unit.y = walker_param->global_resolution.y; | |
874 | + | |
875 | + walker_param->block_resolution.x = walker_param->global_resolution.x; | |
876 | + walker_param->block_resolution.y = walker_param->global_resolution.y; | |
877 | + | |
878 | + walker_param->local_start.x = 0; | |
879 | + walker_param->local_start.y = 0; | |
880 | + | |
881 | + walker_param->local_outer_loop_stride.x = 1; | |
882 | + walker_param->local_outer_loop_stride.y = 0; | |
883 | + | |
884 | + walker_param->local_inner_loop_unit.x = -1; | |
885 | + walker_param->local_inner_loop_unit.y = 4; | |
886 | + | |
887 | + walker_param->middle_loop_extra_steps = 3; | |
888 | + walker_param->mid_loop_unit_x = 0; | |
889 | + walker_param->mid_loop_unit_y = 1; | |
890 | + } else { | |
891 | + // 26 degree | |
892 | + walker_param->scoreboard_mask = 0x0F; | |
893 | + walker_param->local_outer_loop_stride.x = 1; | |
894 | + walker_param->local_outer_loop_stride.y = 0; | |
895 | + walker_param->local_inner_loop_unit.x = -2; | |
896 | + walker_param->local_inner_loop_unit.y = 1; | |
897 | + } | |
898 | + } | |
899 | +} | |
900 | + | |
901 | +static void | |
902 | +gen9_add_2d_gpe_surface(VADriverContextP ctx, | |
903 | + struct i965_gpe_context *gpe_context, | |
904 | + struct object_surface *obj_surface, | |
905 | + int is_uv_surface, | |
906 | + int is_media_block_rw, | |
907 | + unsigned int format, | |
908 | + int index) | |
909 | +{ | |
910 | + struct i965_gpe_resource gpe_resource; | |
911 | + struct i965_gpe_surface gpe_surface; | |
912 | + | |
913 | + memset(&gpe_surface, 0, sizeof(gpe_surface)); | |
914 | + | |
915 | + i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); | |
916 | + gpe_surface.gpe_resource = &gpe_resource; | |
917 | + gpe_surface.is_2d_surface = 1; | |
918 | + gpe_surface.is_uv_surface = !!is_uv_surface; | |
919 | + gpe_surface.is_media_block_rw = !!is_media_block_rw; | |
920 | + | |
921 | + gpe_surface.cacheability_control = DEFAULT_MOCS; | |
922 | + gpe_surface.format = format; | |
923 | + | |
924 | + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); | |
925 | + i965_free_gpe_resource(&gpe_resource); | |
926 | +} | |
927 | + | |
928 | +static void | |
929 | +gen9_add_adv_gpe_surface(VADriverContextP ctx, | |
930 | + struct i965_gpe_context *gpe_context, | |
931 | + struct object_surface *obj_surface, | |
932 | + int index) | |
933 | +{ | |
934 | + struct i965_gpe_resource gpe_resource; | |
935 | + struct i965_gpe_surface gpe_surface; | |
936 | + | |
937 | + memset(&gpe_surface, 0, sizeof(gpe_surface)); | |
938 | + | |
939 | + i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); | |
940 | + gpe_surface.gpe_resource = &gpe_resource; | |
941 | + gpe_surface.is_adv_surface = 1; | |
942 | + gpe_surface.cacheability_control = DEFAULT_MOCS; | |
943 | + gpe_surface.v_direction = 2; | |
944 | + | |
945 | + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); | |
946 | + i965_free_gpe_resource(&gpe_resource); | |
947 | +} | |
948 | + | |
949 | +static void | |
950 | +gen9_add_buffer_gpe_surface(VADriverContextP ctx, | |
951 | + struct i965_gpe_context *gpe_context, | |
952 | + struct i965_gpe_resource *gpe_buffer, | |
953 | + int is_raw_buffer, | |
954 | + unsigned int size, | |
955 | + unsigned int offset, | |
956 | + int index) | |
957 | +{ | |
958 | + struct i965_gpe_surface gpe_surface; | |
959 | + | |
960 | + memset(&gpe_surface, 0, sizeof(gpe_surface)); | |
961 | + | |
962 | + gpe_surface.gpe_resource = gpe_buffer; | |
963 | + gpe_surface.is_buffer = 1; | |
964 | + gpe_surface.is_raw_buffer = !!is_raw_buffer; | |
965 | + gpe_surface.cacheability_control = DEFAULT_MOCS; | |
966 | + gpe_surface.size = size; | |
967 | + gpe_surface.offset = offset; | |
968 | + | |
969 | + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); | |
970 | +} | |
971 | + | |
972 | +static void | |
973 | +gen9_add_buffer_2d_gpe_surface(VADriverContextP ctx, | |
974 | + struct i965_gpe_context *gpe_context, | |
975 | + struct i965_gpe_resource *gpe_buffer, | |
976 | + int is_media_block_rw, | |
977 | + unsigned int format, | |
978 | + int index) | |
979 | +{ | |
980 | + struct i965_gpe_surface gpe_surface; | |
981 | + | |
982 | + memset(&gpe_surface, 0, sizeof(gpe_surface)); | |
983 | + | |
984 | + gpe_surface.gpe_resource = gpe_buffer; | |
985 | + gpe_surface.is_2d_surface = 1; | |
986 | + gpe_surface.is_media_block_rw = !!is_media_block_rw; | |
987 | + gpe_surface.cacheability_control = DEFAULT_MOCS; | |
988 | + gpe_surface.format = format; | |
989 | + | |
990 | + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); | |
991 | +} | |
992 | + | |
993 | +static void | |
994 | +gen9_add_dri_buffer_gpe_surface(VADriverContextP ctx, | |
995 | + struct i965_gpe_context *gpe_context, | |
996 | + dri_bo *bo, | |
997 | + int is_raw_buffer, | |
998 | + unsigned int size, | |
999 | + unsigned int offset, | |
1000 | + int index) | |
1001 | +{ | |
1002 | + struct i965_gpe_resource gpe_resource; | |
1003 | + | |
1004 | + i965_dri_object_to_buffer_gpe_resource(&gpe_resource, bo); | |
1005 | + gen9_add_buffer_gpe_surface(ctx, | |
1006 | + gpe_context, | |
1007 | + &gpe_resource, | |
1008 | + is_raw_buffer, | |
1009 | + size, | |
1010 | + offset, | |
1011 | + index); | |
1012 | + | |
1013 | + i965_free_gpe_resource(&gpe_resource); | |
1014 | +} | |
1015 | + | |
1016 | +/* | |
1017 | +static void | |
1018 | +gen9_add_dri_buffer_2d_gpe_surface(VADriverContextP ctx, | |
1019 | + struct i965_gpe_context *gpe_context, | |
1020 | + dri_bo *bo, | |
1021 | + unsigned int width, | |
1022 | + unsigned int height, | |
1023 | + unsigned int pitch, | |
1024 | + int is_media_block_rw, | |
1025 | + unsigned int format, | |
1026 | + int index) | |
1027 | +{ | |
1028 | + struct i965_gpe_resource gpe_resource; | |
1029 | + | |
1030 | + i965_gpe_dri_object_to_2d_gpe_resource(&gpe_resource, bo, width, height, pitch); | |
1031 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
1032 | + gpe_context, | |
1033 | + &gpe_resource, | |
1034 | + is_media_block_rw, | |
1035 | + format, | |
1036 | + index); | |
1037 | + | |
1038 | + i965_free_gpe_resource(&gpe_resource); | |
1039 | +} | |
1040 | +*/ | |
1041 | + | |
1042 | +static void | |
1043 | +gen9_run_kernel_media_object(VADriverContextP ctx, | |
1044 | + struct intel_encoder_context *encoder_context, | |
1045 | + struct i965_gpe_context *gpe_context, | |
1046 | + int media_function, | |
1047 | + struct gpe_media_object_parameter *param) | |
1048 | +{ | |
1049 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
1050 | + struct vp9_encode_status_buffer_internal *status_buffer; | |
1051 | + struct gen9_vp9_state *vp9_state; | |
1052 | + struct gpe_mi_store_data_imm_parameter mi_store_data_imm; | |
1053 | + | |
1054 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
1055 | + if (!vp9_state || !batch) | |
1056 | + return; | |
1057 | + | |
1058 | + intel_batchbuffer_start_atomic(batch, 0x1000); | |
1059 | + | |
1060 | + status_buffer = &(vp9_state->status_buffer); | |
1061 | + memset(&mi_store_data_imm, 0, sizeof(mi_store_data_imm)); | |
1062 | + mi_store_data_imm.bo = status_buffer->bo; | |
1063 | + mi_store_data_imm.offset = status_buffer->media_index_offset; | |
1064 | + mi_store_data_imm.dw0 = media_function; | |
1065 | + gen9_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm); | |
1066 | + | |
1067 | + intel_batchbuffer_emit_mi_flush(batch); | |
1068 | + gen9_gpe_pipeline_setup(ctx, gpe_context, batch); | |
1069 | + gen8_gpe_media_object(ctx, gpe_context, batch, param); | |
1070 | + gen8_gpe_media_state_flush(ctx, gpe_context, batch); | |
1071 | + | |
1072 | + gen9_gpe_pipeline_end(ctx, gpe_context, batch); | |
1073 | + | |
1074 | + intel_batchbuffer_end_atomic(batch); | |
1075 | + | |
1076 | + intel_batchbuffer_flush(batch); | |
1077 | +} | |
1078 | + | |
1079 | +static void | |
1080 | +gen9_run_kernel_media_object_walker(VADriverContextP ctx, | |
1081 | + struct intel_encoder_context *encoder_context, | |
1082 | + struct i965_gpe_context *gpe_context, | |
1083 | + int media_function, | |
1084 | + struct gpe_media_object_walker_parameter *param) | |
1085 | +{ | |
1086 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
1087 | + struct vp9_encode_status_buffer_internal *status_buffer; | |
1088 | + struct gen9_vp9_state *vp9_state; | |
1089 | + struct gpe_mi_store_data_imm_parameter mi_store_data_imm; | |
1090 | + | |
1091 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
1092 | + if (!vp9_state || !batch) | |
1093 | + return; | |
1094 | + | |
1095 | + intel_batchbuffer_start_atomic(batch, 0x1000); | |
1096 | + | |
1097 | + intel_batchbuffer_emit_mi_flush(batch); | |
1098 | + | |
1099 | + status_buffer = &(vp9_state->status_buffer); | |
1100 | + memset(&mi_store_data_imm, 0, sizeof(mi_store_data_imm)); | |
1101 | + mi_store_data_imm.bo = status_buffer->bo; | |
1102 | + mi_store_data_imm.offset = status_buffer->media_index_offset; | |
1103 | + mi_store_data_imm.dw0 = media_function; | |
1104 | + gen9_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm); | |
1105 | + | |
1106 | + gen9_gpe_pipeline_setup(ctx, gpe_context, batch); | |
1107 | + gen9_gpe_media_object_walker(ctx, gpe_context, batch, param); | |
1108 | + gen8_gpe_media_state_flush(ctx, gpe_context, batch); | |
1109 | + | |
1110 | + gen9_gpe_pipeline_end(ctx, gpe_context, batch); | |
1111 | + | |
1112 | + intel_batchbuffer_end_atomic(batch); | |
1113 | + | |
1114 | + intel_batchbuffer_flush(batch); | |
1115 | +} | |
1116 | + | |
1117 | +static | |
1118 | +void gen9_vp9_set_curbe_brc(VADriverContextP ctx, | |
1119 | + struct encode_state *encode_state, | |
1120 | + struct i965_gpe_context *gpe_context, | |
1121 | + struct intel_encoder_context *encoder_context, | |
1122 | + struct gen9_vp9_brc_curbe_param *param) | |
1123 | +{ | |
1124 | + VAEncSequenceParameterBufferVP9 *seq_param; | |
1125 | + VAEncPictureParameterBufferVP9 *pic_param; | |
1126 | + VAEncMiscParameterTypeVP9PerSegmantParam *segment_param; | |
1127 | + vp9_brc_curbe_data *cmd; | |
1128 | + double dbps_ratio, dInputBitsPerFrame; | |
1129 | + struct gen9_vp9_state *vp9_state; | |
1130 | + | |
1131 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
1132 | + | |
1133 | + pic_param = param->ppic_param; | |
1134 | + seq_param = param->pseq_param; | |
1135 | + segment_param = param->psegment_param; | |
1136 | + | |
1137 | + cmd = gen8p_gpe_context_map_curbe(gpe_context); | |
1138 | + memset(cmd, 0, sizeof(vp9_brc_curbe_data)); | |
1139 | + | |
1140 | + if (!vp9_state->dys_enabled) | |
1141 | + { | |
1142 | + cmd->dw0.frame_width = pic_param->frame_width_src; | |
1143 | + cmd->dw0.frame_height = pic_param->frame_height_src; | |
1144 | + } | |
1145 | + else | |
1146 | + { | |
1147 | + cmd->dw0.frame_width = pic_param->frame_width_dst; | |
1148 | + cmd->dw0.frame_height = pic_param->frame_height_dst; | |
1149 | + } | |
1150 | + | |
1151 | + cmd->dw1.frame_type = vp9_state->picture_coding_type; | |
1152 | + cmd->dw1.segmentation_enable = 0; | |
1153 | + cmd->dw1.ref_frame_flags = vp9_state->ref_frame_flag; | |
1154 | + cmd->dw1.num_tlevels = 1; | |
1155 | + | |
1156 | + switch(param->media_state_type) | |
1157 | + { | |
1158 | + case VP9_MEDIA_STATE_BRC_INIT_RESET: | |
1159 | + { | |
1160 | + cmd->dw3.max_level_ratiot0 = 0; | |
1161 | + cmd->dw3.max_level_ratiot1 = 0; | |
1162 | + cmd->dw3.max_level_ratiot2 = 0; | |
1163 | + cmd->dw3.max_level_ratiot3 = 0; | |
1164 | + | |
1165 | + cmd->dw4.profile_level_max_frame = seq_param->max_frame_width * | |
1166 | + seq_param->max_frame_height; | |
1167 | + cmd->dw5.init_buf_fullness = vp9_state->init_vbv_buffer_fullness_in_bit; | |
1168 | + cmd->dw6.buf_size = vp9_state->vbv_buffer_size_in_bit; | |
1169 | + cmd->dw7.target_bit_rate = (vp9_state->target_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS * | |
1170 | + VP9_BRC_KBPS; | |
1171 | + cmd->dw8.max_bit_rate = (vp9_state->max_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS * | |
1172 | + VP9_BRC_KBPS; | |
1173 | + cmd->dw9.min_bit_rate = (vp9_state->min_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS * | |
1174 | + VP9_BRC_KBPS; | |
1175 | + cmd->dw10.frame_ratem = vp9_state->frame_rate; | |
1176 | + cmd->dw11.frame_rated = 1; | |
1177 | + | |
1178 | + cmd->dw14.avbr_accuracy = 30; | |
1179 | + cmd->dw14.avbr_convergence = 150; | |
1180 | + | |
1181 | + if (encoder_context->rate_control_mode == VA_RC_CBR) | |
1182 | + { | |
1183 | + cmd->dw12.brc_flag = BRC_KERNEL_CBR; | |
1184 | + cmd->dw8.max_bit_rate = cmd->dw7.target_bit_rate; | |
1185 | + cmd->dw9.min_bit_rate = 0; | |
1186 | + } | |
1187 | + else if (encoder_context->rate_control_mode == VA_RC_VBR) | |
1188 | + { | |
1189 | + cmd->dw12.brc_flag = BRC_KERNEL_VBR; | |
1190 | + } | |
1191 | + else | |
1192 | + { | |
1193 | + cmd->dw12.brc_flag = BRC_KERNEL_CQL; | |
1194 | + cmd->dw16.cq_level = 30; | |
1195 | + } | |
1196 | + cmd->dw12.gopp = seq_param->intra_period - 1; | |
1197 | + | |
1198 | + cmd->dw13.init_frame_width = pic_param->frame_width_src; | |
1199 | + cmd->dw13.init_frame_height = pic_param->frame_height_src; | |
1200 | + | |
1201 | + cmd->dw15.min_qp = 0; | |
1202 | + cmd->dw15.max_qp = 255; | |
1203 | + | |
1204 | + cmd->dw16.cq_level = 30; | |
1205 | + | |
1206 | + cmd->dw17.enable_dynamic_scaling = vp9_state->dys_in_use; | |
1207 | + cmd->dw17.brc_overshoot_cbr_pct = 150; | |
1208 | + | |
1209 | + dInputBitsPerFrame = (double)(cmd->dw8.max_bit_rate) / (vp9_state->frame_rate); | |
1210 | + dbps_ratio = dInputBitsPerFrame / ((double)(vp9_state->vbv_buffer_size_in_bit) / 30); | |
1211 | + if (dbps_ratio < 0.1) | |
1212 | + dbps_ratio = 0.1; | |
1213 | + if (dbps_ratio > 3.5) | |
1214 | + dbps_ratio = 3.5; | |
1215 | + | |
1216 | + *param->pbrc_init_reset_buf_size_in_bits = cmd->dw6.buf_size; | |
1217 | + *param->pbrc_init_reset_input_bits_per_frame = dInputBitsPerFrame; | |
1218 | + | |
1219 | + cmd->dw18.pframe_deviation_threshold0 = (uint32_t)(-50 * pow(0.90, dbps_ratio)); | |
1220 | + cmd->dw18.pframe_deviation_threshold1 = (uint32_t)(-50 * pow(0.66, dbps_ratio)); | |
1221 | + cmd->dw18.pframe_deviation_threshold2 = (uint32_t)(-50 * pow(0.46, dbps_ratio)); | |
1222 | + cmd->dw18.pframe_deviation_threshold3 = (uint32_t)(-50 * pow(0.3, dbps_ratio)); | |
1223 | + cmd->dw19.pframe_deviation_threshold4 = (uint32_t)(50 * pow(0.3, dbps_ratio)); | |
1224 | + cmd->dw19.pframe_deviation_threshold5 = (uint32_t)(50 * pow(0.46, dbps_ratio)); | |
1225 | + cmd->dw19.pframe_deviation_threshold6 = (uint32_t)(50 * pow(0.7, dbps_ratio)); | |
1226 | + cmd->dw19.pframe_deviation_threshold7 = (uint32_t)(50 * pow(0.9, dbps_ratio)); | |
1227 | + | |
1228 | + cmd->dw20.vbr_deviation_threshold0 = (uint32_t)(-50 * pow(0.9, dbps_ratio)); | |
1229 | + cmd->dw20.vbr_deviation_threshold1 = (uint32_t)(-50 * pow(0.7, dbps_ratio)); | |
1230 | + cmd->dw20.vbr_deviation_threshold2 = (uint32_t)(-50 * pow(0.5, dbps_ratio)); | |
1231 | + cmd->dw20.vbr_deviation_threshold3 = (uint32_t)(-50 * pow(0.3, dbps_ratio)); | |
1232 | + cmd->dw21.vbr_deviation_threshold4 = (uint32_t)(100 * pow(0.4, dbps_ratio)); | |
1233 | + cmd->dw21.vbr_deviation_threshold5 = (uint32_t)(100 * pow(0.5, dbps_ratio)); | |
1234 | + cmd->dw21.vbr_deviation_threshold6 = (uint32_t)(100 * pow(0.75, dbps_ratio)); | |
1235 | + cmd->dw21.vbr_deviation_threshold7 = (uint32_t)(100 * pow(0.9, dbps_ratio)); | |
1236 | + | |
1237 | + cmd->dw22.kframe_deviation_threshold0 = (uint32_t)(-50 * pow(0.8, dbps_ratio)); | |
1238 | + cmd->dw22.kframe_deviation_threshold1 = (uint32_t)(-50 * pow(0.6, dbps_ratio)); | |
1239 | + cmd->dw22.kframe_deviation_threshold2 = (uint32_t)(-50 * pow(0.34, dbps_ratio)); | |
1240 | + cmd->dw22.kframe_deviation_threshold3 = (uint32_t)(-50 * pow(0.2, dbps_ratio)); | |
1241 | + cmd->dw23.kframe_deviation_threshold4 = (uint32_t)(50 * pow(0.2, dbps_ratio)); | |
1242 | + cmd->dw23.kframe_deviation_threshold5 = (uint32_t)(50 * pow(0.4, dbps_ratio)); | |
1243 | + cmd->dw23.kframe_deviation_threshold6 = (uint32_t)(50 * pow(0.66, dbps_ratio)); | |
1244 | + cmd->dw23.kframe_deviation_threshold7 = (uint32_t)(50 * pow(0.9, dbps_ratio)); | |
1245 | + | |
1246 | + break; | |
1247 | + } | |
1248 | + case VP9_MEDIA_STATE_BRC_UPDATE: | |
1249 | + { | |
1250 | + cmd->dw15.min_qp = 0; | |
1251 | + cmd->dw15.max_qp = 255; | |
1252 | + | |
1253 | + cmd->dw25.frame_number = param->frame_number; | |
1254 | + | |
1255 | + // Used in dynamic scaling. set to zero for now | |
1256 | + cmd->dw27.hrd_buffer_fullness_upper_limit = 0; | |
1257 | + cmd->dw28.hrd_buffer_fullness_lower_limit = 0; | |
1258 | + | |
1259 | + if (pic_param->pic_flags.bits.segmentation_enabled) { | |
1260 | + cmd->dw32.seg_delta_qp0 = segment_param->seg_data[0].segment_qindex_delta; | |
1261 | + cmd->dw32.seg_delta_qp1 = segment_param->seg_data[1].segment_qindex_delta; | |
1262 | + cmd->dw32.seg_delta_qp2 = segment_param->seg_data[2].segment_qindex_delta; | |
1263 | + cmd->dw32.seg_delta_qp3 = segment_param->seg_data[3].segment_qindex_delta; | |
1264 | + | |
1265 | + cmd->dw33.seg_delta_qp4 = segment_param->seg_data[4].segment_qindex_delta; | |
1266 | + cmd->dw33.seg_delta_qp5 = segment_param->seg_data[5].segment_qindex_delta; | |
1267 | + cmd->dw33.seg_delta_qp6 = segment_param->seg_data[6].segment_qindex_delta; | |
1268 | + cmd->dw33.seg_delta_qp7 = segment_param->seg_data[7].segment_qindex_delta; | |
1269 | + } | |
1270 | + | |
1271 | + //cmd->dw34.temporal_id = pPicParams->temporal_idi; | |
1272 | + cmd->dw34.temporal_id = 0; | |
1273 | + cmd->dw34.multi_ref_qp_check = param->multi_ref_qp_check; | |
1274 | + | |
1275 | + cmd->dw35.max_num_pak_passes = param->brc_num_pak_passes; | |
1276 | + cmd->dw35.sync_async = 0; | |
1277 | + cmd->dw35.mbrc = param->mbbrc_enabled; | |
1278 | + if (*param->pbrc_init_current_target_buf_full_in_bits > | |
1279 | + ((double)(*param->pbrc_init_reset_buf_size_in_bits))) { | |
1280 | + *param->pbrc_init_current_target_buf_full_in_bits -= | |
1281 | + (double)(*param->pbrc_init_reset_buf_size_in_bits); | |
1282 | + cmd->dw35.overflow = 1; | |
1283 | + } | |
1284 | + else | |
1285 | + cmd->dw35.overflow = 0; | |
1286 | + | |
1287 | + cmd->dw24.target_size = (uint32_t)(*param->pbrc_init_current_target_buf_full_in_bits); | |
1288 | + | |
1289 | + cmd->dw36.segmentation = pic_param->pic_flags.bits.segmentation_enabled; | |
1290 | + | |
1291 | + *param->pbrc_init_current_target_buf_full_in_bits += *param->pbrc_init_reset_input_bits_per_frame; | |
1292 | + | |
1293 | + cmd->dw38.qdelta_ydc = pic_param->luma_dc_qindex_delta; | |
1294 | + cmd->dw38.qdelta_uvdc = pic_param->chroma_dc_qindex_delta; | |
1295 | + cmd->dw38.qdelta_uvac = pic_param->chroma_ac_qindex_delta; | |
1296 | + | |
1297 | + break; | |
1298 | + } | |
1299 | + case VP9_MEDIA_STATE_ENC_I_FRAME_DIST: | |
1300 | + cmd->dw2.intra_mode_disable = 0; | |
1301 | + break; | |
1302 | + default: | |
1303 | + break; | |
1304 | + } | |
1305 | + | |
1306 | + cmd->dw48.brc_y4x_input_bti = VP9_BTI_BRC_SRCY4X_G9; | |
1307 | + cmd->dw49.brc_vme_coarse_intra_input_bti = VP9_BTI_BRC_VME_COARSE_INTRA_G9; | |
1308 | + cmd->dw50.brc_history_buffer_bti = VP9_BTI_BRC_HISTORY_G9; | |
1309 | + cmd->dw51.brc_const_data_input_bti = VP9_BTI_BRC_CONSTANT_DATA_G9; | |
1310 | + cmd->dw52.brc_distortion_bti = VP9_BTI_BRC_DISTORTION_G9; | |
1311 | + cmd->dw53.brc_mmdk_pak_output_bti = VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9; | |
1312 | + cmd->dw54.brc_enccurbe_input_bti = VP9_BTI_BRC_MBENC_CURBE_INPUT_G9; | |
1313 | + cmd->dw55.brc_enccurbe_output_bti = VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9; | |
1314 | + cmd->dw56.brc_pic_state_input_bti = VP9_BTI_BRC_PIC_STATE_INPUT_G9; | |
1315 | + cmd->dw57.brc_pic_state_output_bti = VP9_BTI_BRC_PIC_STATE_OUTPUT_G9; | |
1316 | + cmd->dw58.brc_seg_state_input_bti = VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9; | |
1317 | + cmd->dw59.brc_seg_state_output_bti = VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9; | |
1318 | + cmd->dw60.brc_bitstream_size_data_bti = VP9_BTI_BRC_BITSTREAM_SIZE_G9; | |
1319 | + cmd->dw61.brc_hfw_data_output_bti = VP9_BTI_BRC_HFW_DATA_G9; | |
1320 | + | |
1321 | + gen8p_gpe_context_unmap_curbe(gpe_context); | |
1322 | + return; | |
1323 | +} | |
1324 | + | |
1325 | +static void | |
1326 | +gen9_brc_init_reset_add_surfaces_vp9(VADriverContextP ctx, | |
1327 | + struct encode_state *encode_state, | |
1328 | + struct intel_encoder_context *encoder_context, | |
1329 | + struct i965_gpe_context *gpe_context) | |
1330 | +{ | |
1331 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
1332 | + | |
1333 | + gen9_add_buffer_gpe_surface(ctx, | |
1334 | + gpe_context, | |
1335 | + &vme_context->res_brc_history_buffer, | |
1336 | + 0, | |
1337 | + vme_context->res_brc_history_buffer.size, | |
1338 | + 0, | |
1339 | + VP9_BTI_BRC_HISTORY_G9); | |
1340 | + | |
1341 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
1342 | + gpe_context, | |
1343 | + &vme_context->s4x_memv_distortion_buffer, | |
1344 | + 1, | |
1345 | + I965_SURFACEFORMAT_R8_UNORM, | |
1346 | + VP9_BTI_BRC_DISTORTION_G9); | |
1347 | +} | |
1348 | + | |
1349 | +/* The function related with BRC */ | |
1350 | +static VAStatus | |
1351 | +gen9_vp9_brc_init_reset_kernel(VADriverContextP ctx, | |
1352 | + struct encode_state *encode_state, | |
1353 | + struct intel_encoder_context *encoder_context) | |
1354 | +{ | |
1355 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
1356 | + struct vp9_brc_context *brc_context = &vme_context->brc_context; | |
1357 | + struct gpe_media_object_parameter media_object_param; | |
1358 | + struct i965_gpe_context *gpe_context; | |
1359 | + int gpe_index = VP9_BRC_INIT; | |
1360 | + int media_function = VP9_MEDIA_STATE_BRC_INIT_RESET; | |
1361 | + struct gen9_vp9_brc_curbe_param brc_initreset_curbe; | |
1362 | + VAEncPictureParameterBufferVP9 *pic_param; | |
1363 | + struct gen9_vp9_state *vp9_state; | |
1364 | + | |
1365 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
1366 | + | |
1367 | + if (!vp9_state || !vp9_state->pic_param) | |
1368 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
1369 | + | |
1370 | + pic_param = vp9_state->pic_param; | |
1371 | + | |
1372 | + if (vp9_state->brc_inited) | |
1373 | + gpe_index = VP9_BRC_RESET; | |
1374 | + | |
1375 | + gpe_context = &brc_context->gpe_contexts[gpe_index]; | |
1376 | + | |
1377 | + gen8_gpe_context_init(ctx, gpe_context); | |
1378 | + gen9_gpe_reset_binding_table(ctx, gpe_context); | |
1379 | + | |
1380 | + brc_initreset_curbe.media_state_type = media_function; | |
1381 | + brc_initreset_curbe.curr_frame = pic_param->reconstructed_frame; | |
1382 | + brc_initreset_curbe.ppic_param = vp9_state->pic_param; | |
1383 | + brc_initreset_curbe.pseq_param = vp9_state->seq_param; | |
1384 | + brc_initreset_curbe.psegment_param = vp9_state->segment_param; | |
1385 | + brc_initreset_curbe.frame_width = vp9_state->frame_width; | |
1386 | + brc_initreset_curbe.frame_height = vp9_state->frame_height; | |
1387 | + brc_initreset_curbe.pbrc_init_current_target_buf_full_in_bits = | |
1388 | + &vp9_state->brc_init_current_target_buf_full_in_bits; | |
1389 | + brc_initreset_curbe.pbrc_init_reset_buf_size_in_bits = | |
1390 | + &vp9_state->brc_init_reset_buf_size_in_bits; | |
1391 | + brc_initreset_curbe.pbrc_init_reset_input_bits_per_frame = | |
1392 | + &vp9_state->brc_init_reset_input_bits_per_frame; | |
1393 | + brc_initreset_curbe.picture_coding_type = vp9_state->picture_coding_type; | |
1394 | + brc_initreset_curbe.initbrc = !vp9_state->brc_inited; | |
1395 | + brc_initreset_curbe.mbbrc_enabled = 0; | |
1396 | + brc_initreset_curbe.ref_frame_flag = vp9_state->ref_frame_flag; | |
1397 | + brc_initreset_curbe.frame_rate = vp9_state->frame_rate; | |
1398 | + | |
1399 | + vme_context->pfn_set_curbe_brc(ctx, encode_state, | |
1400 | + gpe_context, | |
1401 | + encoder_context, | |
1402 | + &brc_initreset_curbe); | |
1403 | + | |
1404 | + gen9_brc_init_reset_add_surfaces_vp9(ctx, encode_state, encoder_context, gpe_context); | |
1405 | + gen8_gpe_setup_interface_data(ctx, gpe_context); | |
1406 | + | |
1407 | + memset(&media_object_param, 0, sizeof(media_object_param)); | |
1408 | + gen9_run_kernel_media_object(ctx, encoder_context, gpe_context, media_function, &media_object_param); | |
1409 | + | |
1410 | + return VA_STATUS_SUCCESS; | |
1411 | +} | |
1412 | + | |
1413 | +static void | |
1414 | +gen9_brc_intra_dist_add_surfaces_vp9(VADriverContextP ctx, | |
1415 | + struct encode_state *encode_state, | |
1416 | + struct intel_encoder_context *encoder_context, | |
1417 | + struct i965_gpe_context *gpe_context) | |
1418 | +{ | |
1419 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
1420 | + | |
1421 | + struct object_surface *obj_surface; | |
1422 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
1423 | + | |
1424 | + /* sScaled4xSurface surface */ | |
1425 | + obj_surface = encode_state->reconstructed_object; | |
1426 | + | |
1427 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
1428 | + | |
1429 | + obj_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
1430 | + gen9_add_2d_gpe_surface(ctx, gpe_context, | |
1431 | + obj_surface, | |
1432 | + 0, 1, | |
1433 | + I965_SURFACEFORMAT_R8_UNORM, | |
1434 | + VP9_BTI_BRC_SRCY4X_G9 | |
1435 | + ); | |
1436 | + | |
1437 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
1438 | + obj_surface, | |
1439 | + VP9_BTI_BRC_VME_COARSE_INTRA_G9); | |
1440 | + | |
1441 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
1442 | + gpe_context, | |
1443 | + &vme_context->s4x_memv_distortion_buffer, | |
1444 | + 1, | |
1445 | + I965_SURFACEFORMAT_R8_UNORM, | |
1446 | + VP9_BTI_BRC_DISTORTION_G9); | |
1447 | + | |
1448 | + return; | |
1449 | +} | |
1450 | + | |
1451 | +/* The function related with BRC */ | |
1452 | +static VAStatus | |
1453 | +gen9_vp9_brc_intra_dist_kernel(VADriverContextP ctx, | |
1454 | + struct encode_state *encode_state, | |
1455 | + struct intel_encoder_context *encoder_context) | |
1456 | +{ | |
1457 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
1458 | + struct vp9_brc_context *brc_context = &vme_context->brc_context; | |
1459 | + struct i965_gpe_context *gpe_context; | |
1460 | + int gpe_index = VP9_BRC_INTRA_DIST; | |
1461 | + int media_function = VP9_MEDIA_STATE_ENC_I_FRAME_DIST; | |
1462 | + struct gen9_vp9_brc_curbe_param brc_intra_dist_curbe; | |
1463 | + VAEncPictureParameterBufferVP9 *pic_param; | |
1464 | + struct gen9_vp9_state *vp9_state; | |
1465 | + struct gpe_media_object_walker_parameter media_object_walker_param; | |
1466 | + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; | |
1467 | + | |
1468 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
1469 | + | |
1470 | + if (!vp9_state || !vp9_state->pic_param) | |
1471 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
1472 | + | |
1473 | + pic_param = vp9_state->pic_param; | |
1474 | + | |
1475 | + gpe_context = &brc_context->gpe_contexts[gpe_index]; | |
1476 | + | |
1477 | + gen8_gpe_context_init(ctx, gpe_context); | |
1478 | + gen9_gpe_reset_binding_table(ctx, gpe_context); | |
1479 | + | |
1480 | + brc_intra_dist_curbe.media_state_type = media_function; | |
1481 | + brc_intra_dist_curbe.curr_frame = pic_param->reconstructed_frame; | |
1482 | + brc_intra_dist_curbe.ppic_param = vp9_state->pic_param; | |
1483 | + brc_intra_dist_curbe.pseq_param = vp9_state->seq_param; | |
1484 | + brc_intra_dist_curbe.psegment_param = vp9_state->segment_param; | |
1485 | + brc_intra_dist_curbe.frame_width = vp9_state->frame_width; | |
1486 | + brc_intra_dist_curbe.frame_height = vp9_state->frame_height; | |
1487 | + brc_intra_dist_curbe.pbrc_init_current_target_buf_full_in_bits = | |
1488 | + &vp9_state->brc_init_current_target_buf_full_in_bits; | |
1489 | + brc_intra_dist_curbe.pbrc_init_reset_buf_size_in_bits = | |
1490 | + &vp9_state->brc_init_reset_buf_size_in_bits; | |
1491 | + brc_intra_dist_curbe.pbrc_init_reset_input_bits_per_frame = | |
1492 | + &vp9_state->brc_init_reset_input_bits_per_frame; | |
1493 | + brc_intra_dist_curbe.picture_coding_type = vp9_state->picture_coding_type; | |
1494 | + brc_intra_dist_curbe.initbrc = !vp9_state->brc_inited; | |
1495 | + brc_intra_dist_curbe.mbbrc_enabled = 0; | |
1496 | + brc_intra_dist_curbe.ref_frame_flag = vp9_state->ref_frame_flag; | |
1497 | + brc_intra_dist_curbe.frame_rate = vp9_state->frame_rate; | |
1498 | + | |
1499 | + vme_context->pfn_set_curbe_brc(ctx, encode_state, | |
1500 | + gpe_context, | |
1501 | + encoder_context, | |
1502 | + &brc_intra_dist_curbe); | |
1503 | + | |
1504 | + /* zero distortion buffer */ | |
1505 | + i965_zero_gpe_resource(&vme_context->s4x_memv_distortion_buffer); | |
1506 | + | |
1507 | + gen9_brc_intra_dist_add_surfaces_vp9(ctx, encode_state, encoder_context, gpe_context); | |
1508 | + gen8_gpe_setup_interface_data(ctx, gpe_context); | |
1509 | + | |
1510 | + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); | |
1511 | + kernel_walker_param.resolution_x = vme_context->downscaled_width_in_mb4x; | |
1512 | + kernel_walker_param.resolution_y = vme_context->downscaled_height_in_mb4x; | |
1513 | + kernel_walker_param.no_dependency = 1; | |
1514 | + | |
1515 | + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); | |
1516 | + | |
1517 | + gen9_run_kernel_media_object_walker(ctx, encoder_context, | |
1518 | + gpe_context, | |
1519 | + media_function, | |
1520 | + &media_object_walker_param); | |
1521 | + | |
1522 | + return VA_STATUS_SUCCESS; | |
1523 | +} | |
1524 | + | |
1525 | +static void | |
1526 | +intel_vp9enc_construct_picstate_batchbuf(VADriverContextP ctx, | |
1527 | + struct encode_state *encode_state, | |
1528 | + struct intel_encoder_context *encoder_context, | |
1529 | + struct i965_gpe_resource *gpe_resource) | |
1530 | +{ | |
1531 | + struct gen9_vp9_state *vp9_state; | |
1532 | + VAEncPictureParameterBufferVP9 *pic_param; | |
1533 | + int frame_width_minus1, frame_height_minus1; | |
1534 | + int is_lossless = 0; | |
1535 | + int is_intra_only = 0; | |
1536 | + unsigned int last_frame_type; | |
1537 | + unsigned int ref_flags; | |
1538 | + unsigned int use_prev_frame_mvs, adapt_flag; | |
1539 | + struct gen9_surface_vp9 *vp9_surface = NULL; | |
1540 | + struct object_surface *obj_surface = NULL; | |
1541 | + uint32_t scale_h = 0; | |
1542 | + uint32_t scale_w = 0; | |
1543 | + | |
1544 | + char *pdata; | |
1545 | + int i, j; | |
1546 | + unsigned int *cmd_ptr, cmd_value, tmp; | |
1547 | + | |
1548 | + pdata = i965_map_gpe_resource(gpe_resource); | |
1549 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
1550 | + | |
1551 | + if (!vp9_state || !vp9_state->pic_param) | |
1552 | + return; | |
1553 | + | |
1554 | + pic_param = vp9_state->pic_param; | |
1555 | + frame_width_minus1 = ALIGN(pic_param->frame_width_dst, 8) - 1; | |
1556 | + frame_height_minus1 = ALIGN(pic_param->frame_height_dst, 8) - 1; | |
1557 | + if ((pic_param->luma_ac_qindex == 0) && | |
1558 | + (pic_param->luma_dc_qindex_delta == 0) && | |
1559 | + (pic_param->chroma_ac_qindex_delta == 0) && | |
1560 | + (pic_param->chroma_dc_qindex_delta == 0)) | |
1561 | + is_lossless = 1; | |
1562 | + | |
1563 | + if (pic_param->pic_flags.bits.frame_type) | |
1564 | + is_intra_only = pic_param->pic_flags.bits.intra_only; | |
1565 | + | |
1566 | + last_frame_type = vp9_state->vp9_last_frame.frame_type; | |
1567 | + | |
1568 | + use_prev_frame_mvs = 0; | |
1569 | + if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) { | |
1570 | + last_frame_type = 0; | |
1571 | + ref_flags = 0; | |
1572 | + } else { | |
1573 | + ref_flags = ((pic_param->ref_flags.bits.ref_arf_sign_bias << 9) | | |
1574 | + (pic_param->ref_flags.bits.ref_gf_sign_bias << 8) | | |
1575 | + (pic_param->ref_flags.bits.ref_last_sign_bias << 7) | |
1576 | + ); | |
1577 | + if (!pic_param->pic_flags.bits.error_resilient_mode && | |
1578 | + (pic_param->frame_width_dst == vp9_state->vp9_last_frame.frame_width) && | |
1579 | + (pic_param->frame_height_dst == vp9_state->vp9_last_frame.frame_height) && | |
1580 | + !pic_param->pic_flags.bits.intra_only && | |
1581 | + vp9_state->vp9_last_frame.show_frame && | |
1582 | + ((vp9_state->vp9_last_frame.frame_type == HCP_VP9_INTER_FRAME) && | |
1583 | + !vp9_state->vp9_last_frame.intra_only) | |
1584 | + ) | |
1585 | + use_prev_frame_mvs = 1; | |
1586 | + } | |
1587 | + adapt_flag = 0; | |
1588 | + if (!pic_param->pic_flags.bits.error_resilient_mode && | |
1589 | + !pic_param->pic_flags.bits.frame_parallel_decoding_mode) | |
1590 | + adapt_flag = 1; | |
1591 | + | |
1592 | + for (i = 0; i < 4; i++) { | |
1593 | + uint32_t non_first_pass; | |
1594 | + non_first_pass = 1; | |
1595 | + if (i == 0) | |
1596 | + non_first_pass = 0; | |
1597 | + | |
1598 | + cmd_ptr =(unsigned int *)(pdata + i * VP9_PIC_STATE_BUFFER_SIZE); | |
1599 | + | |
1600 | + *cmd_ptr++ = (HCP_VP9_PIC_STATE | (33 - 2)); | |
1601 | + *cmd_ptr++ = (frame_height_minus1 << 16 | | |
1602 | + frame_width_minus1); | |
1603 | + /* dw2 */ | |
1604 | + *cmd_ptr++ = ( 0 << 31 | /* disable segment_in */ | |
1605 | + 0 << 30 | /* disable segment_out */ | |
1606 | + is_lossless << 29 | /* loseless */ | |
1607 | + (pic_param->pic_flags.bits.segmentation_enabled && pic_param->pic_flags.bits.segmentation_temporal_update) << 28 | /* temporal update */ | |
1608 | + (pic_param->pic_flags.bits.segmentation_enabled && pic_param->pic_flags.bits.segmentation_update_map) << 27 | /* temporal update */ | |
1609 | + (pic_param->pic_flags.bits.segmentation_enabled << 26) | | |
1610 | + (pic_param->sharpness_level << 23) | | |
1611 | + (pic_param->filter_level << 17) | | |
1612 | + (pic_param->pic_flags.bits.frame_parallel_decoding_mode << 16) | | |
1613 | + (pic_param->pic_flags.bits.error_resilient_mode << 15) | | |
1614 | + (pic_param->pic_flags.bits.refresh_frame_context << 14) | | |
1615 | + (last_frame_type << 13) | | |
1616 | + (vp9_state->tx_mode == TX_MODE_SELECT) << 12 | | |
1617 | + (pic_param->pic_flags.bits.comp_prediction_mode == REFERENCE_MODE_SELECT) << 11 | | |
1618 | + (use_prev_frame_mvs) << 10 | | |
1619 | + ref_flags | | |
1620 | + (pic_param->pic_flags.bits.mcomp_filter_type << 4) | | |
1621 | + (pic_param->pic_flags.bits.allow_high_precision_mv << 3) | | |
1622 | + (is_intra_only << 2) | | |
1623 | + (adapt_flag << 1) | | |
1624 | + (pic_param->pic_flags.bits.frame_type) << 0); | |
1625 | + | |
1626 | + *cmd_ptr++ =((0 << 28) | /* VP9Profile0 */ | |
1627 | + (0 << 24) | /* 8-bit depth */ | |
1628 | + (0 << 22) | /* only 420 format */ | |
1629 | + (0 << 0) | /* sse statistics */ | |
1630 | + (pic_param->log2_tile_rows << 8) | | |
1631 | + (pic_param->log2_tile_columns << 0)); | |
1632 | + | |
1633 | + /* dw4..6 */ | |
1634 | + if (pic_param->pic_flags.bits.frame_type && | |
1635 | + !pic_param->pic_flags.bits.intra_only) { | |
1636 | + for (j = 0; j < 3; j++) { | |
1637 | + obj_surface = encode_state->reference_objects[j]; | |
1638 | + scale_w = 0; | |
1639 | + scale_h = 0; | |
1640 | + if (obj_surface && obj_surface->private_data) { | |
1641 | + vp9_surface = obj_surface->private_data; | |
1642 | + scale_w = (vp9_surface->frame_width << 14) / pic_param->frame_width_dst; | |
1643 | + scale_h = (vp9_surface->frame_height << 14) / pic_param->frame_height_dst; | |
1644 | + *cmd_ptr++ = (scale_w << 16 | | |
1645 | + scale_h); | |
1646 | + } else | |
1647 | + *cmd_ptr++ = 0; | |
1648 | + } | |
1649 | + } else { | |
1650 | + *cmd_ptr++ = 0; | |
1651 | + *cmd_ptr++ = 0; | |
1652 | + *cmd_ptr++ = 0; | |
1653 | + } | |
1654 | + /* dw7..9 */ | |
1655 | + for(j = 0; j < 3; j++) { | |
1656 | + obj_surface = encode_state->reference_objects[j]; | |
1657 | + vp9_surface = NULL; | |
1658 | + | |
1659 | + if (obj_surface && obj_surface->private_data) { | |
1660 | + vp9_surface = obj_surface->private_data; | |
1661 | + *cmd_ptr++ = (vp9_surface->frame_height - 1) << 16 | | |
1662 | + (vp9_surface->frame_width - 1); | |
1663 | + } else | |
1664 | + *cmd_ptr++ = 0; | |
1665 | + } | |
1666 | + /* dw10 */ | |
1667 | + *cmd_ptr++ = 0; | |
1668 | + /* dw11 */ | |
1669 | + *cmd_ptr++ = (1 << 1); | |
1670 | + *cmd_ptr++ = 0; | |
1671 | + | |
1672 | + /* dw13 */ | |
1673 | + *cmd_ptr++ = ((1 << 25) | /* header insertation for VP9 */ | |
1674 | + (0 << 24) | /* tail insertation */ | |
1675 | + (pic_param->luma_ac_qindex << 16) | | |
1676 | + 0 /* compressed header bin count */); | |
1677 | + | |
1678 | + /* dw14 */ | |
1679 | + tmp = intel_convert_sign_mag(pic_param->luma_dc_qindex_delta, 5); | |
1680 | + cmd_value = (tmp << 16); | |
1681 | + tmp = intel_convert_sign_mag(pic_param->chroma_dc_qindex_delta, 5); | |
1682 | + cmd_value |= (tmp << 8); | |
1683 | + tmp = intel_convert_sign_mag(pic_param->chroma_ac_qindex_delta, 5); | |
1684 | + cmd_value |= tmp; | |
1685 | + *cmd_ptr++ = cmd_value; | |
1686 | + | |
1687 | + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[0], 7); | |
1688 | + cmd_value = tmp; | |
1689 | + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[1], 7); | |
1690 | + cmd_value |= (tmp << 8); | |
1691 | + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[2], 7); | |
1692 | + cmd_value |= (tmp << 16); | |
1693 | + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[3], 7); | |
1694 | + cmd_value |= (tmp << 24); | |
1695 | + *cmd_ptr++ = cmd_value; | |
1696 | + | |
1697 | + /* dw16 */ | |
1698 | + tmp = intel_convert_sign_mag(pic_param->mode_lf_delta[0], 7); | |
1699 | + cmd_value = tmp; | |
1700 | + tmp = intel_convert_sign_mag(pic_param->mode_lf_delta[1], 7); | |
1701 | + cmd_value |= (tmp << 8); | |
1702 | + *cmd_ptr++ = cmd_value; | |
1703 | + | |
1704 | + /* dw17 */ | |
1705 | + *cmd_ptr++ = vp9_state->frame_header.bit_offset_ref_lf_delta | | |
1706 | + (vp9_state->frame_header.bit_offset_mode_lf_delta << 16); | |
1707 | + *cmd_ptr++ = vp9_state->frame_header.bit_offset_qindex | | |
1708 | + (vp9_state->frame_header.bit_offset_lf_level << 16); | |
1709 | + | |
1710 | + /* dw19 */ | |
1711 | + *cmd_ptr++ = (1 << 26 | (1 << 25) | | |
1712 | + non_first_pass << 16); | |
1713 | + /* dw20 */ | |
1714 | + *cmd_ptr++ = (1 << 31) | (256); | |
1715 | + | |
1716 | + /* dw21 */ | |
1717 | + *cmd_ptr++ = (0 << 31) | 1; | |
1718 | + | |
1719 | + /* dw22-dw24. Frame_delta_qindex_range */ | |
1720 | + *cmd_ptr++ = 0; | |
1721 | + *cmd_ptr++ = 0; | |
1722 | + *cmd_ptr++ = 0; | |
1723 | + | |
1724 | + /* dw25-26. frame_delta_lf_range */ | |
1725 | + *cmd_ptr++ = 0; | |
1726 | + *cmd_ptr++ = 0; | |
1727 | + | |
1728 | + /* dw27. frame_delta_lf_min */ | |
1729 | + *cmd_ptr++ = 0; | |
1730 | + | |
1731 | + /* dw28..30 */ | |
1732 | + *cmd_ptr++ = 0; | |
1733 | + *cmd_ptr++ = 0; | |
1734 | + *cmd_ptr++ = 0; | |
1735 | + | |
1736 | + /* dw31 */ | |
1737 | + *cmd_ptr++ = (0 << 30) | 1; | |
1738 | + /* dw32 */ | |
1739 | + *cmd_ptr++ = vp9_state->frame_header.bit_offset_first_partition_size; | |
1740 | + | |
1741 | + *cmd_ptr++ = 0; | |
1742 | + *cmd_ptr++ = MI_BATCH_BUFFER_END; | |
1743 | + } | |
1744 | + | |
1745 | + i965_unmap_gpe_resource(gpe_resource); | |
1746 | +} | |
1747 | + | |
1748 | +static void | |
1749 | +gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx, | |
1750 | + struct encode_state *encode_state, | |
1751 | + struct intel_encoder_context *encoder_context, | |
1752 | + struct i965_gpe_context *brc_gpe_context, | |
1753 | + struct i965_gpe_context *mbenc_gpe_context) | |
1754 | +{ | |
1755 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
1756 | + | |
1757 | + /* 0. BRC history buffer */ | |
1758 | + gen9_add_buffer_gpe_surface(ctx, | |
1759 | + brc_gpe_context, | |
1760 | + &vme_context->res_brc_history_buffer, | |
1761 | + 0, | |
1762 | + vme_context->res_brc_history_buffer.size, | |
1763 | + 0, | |
1764 | + VP9_BTI_BRC_HISTORY_G9); | |
1765 | + | |
1766 | + /* 1. Constant data buffer */ | |
1767 | + gen9_add_buffer_gpe_surface(ctx, | |
1768 | + brc_gpe_context, | |
1769 | + &vme_context->res_brc_const_data_buffer, | |
1770 | + 0, | |
1771 | + vme_context->res_brc_const_data_buffer.size, | |
1772 | + 0, | |
1773 | + VP9_BTI_BRC_CONSTANT_DATA_G9); | |
1774 | + | |
1775 | + /* 2. Distortion 2D surface buffer */ | |
1776 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
1777 | + brc_gpe_context, | |
1778 | + &vme_context->s4x_memv_distortion_buffer, | |
1779 | + 1, | |
1780 | + I965_SURFACEFORMAT_R8_UNORM, | |
1781 | + VP9_BTI_BRC_DISTORTION_G9); | |
1782 | + | |
1783 | + /* 3. pak buffer */ | |
1784 | + gen9_add_buffer_gpe_surface(ctx, | |
1785 | + brc_gpe_context, | |
1786 | + &vme_context->res_brc_mmdk_pak_buffer, | |
1787 | + 0, | |
1788 | + vme_context->res_brc_mmdk_pak_buffer.size, | |
1789 | + 0, | |
1790 | + VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9); | |
1791 | + /* 4. Mbenc curbe input buffer */ | |
1792 | + gen9_add_dri_buffer_gpe_surface(ctx, | |
1793 | + brc_gpe_context, | |
1794 | + mbenc_gpe_context->dynamic_state.bo, | |
1795 | + 0, | |
1796 | + ALIGN(mbenc_gpe_context->curbe_size, 64), | |
1797 | + mbenc_gpe_context->curbe_offset, | |
1798 | + VP9_BTI_BRC_MBENC_CURBE_INPUT_G9); | |
1799 | + /* 5. Mbenc curbe output buffer */ | |
1800 | + gen9_add_dri_buffer_gpe_surface(ctx, | |
1801 | + brc_gpe_context, | |
1802 | + mbenc_gpe_context->dynamic_state.bo, | |
1803 | + 0, | |
1804 | + ALIGN(mbenc_gpe_context->curbe_size, 64), | |
1805 | + mbenc_gpe_context->curbe_offset, | |
1806 | + VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9); | |
1807 | + | |
1808 | + /* 6. BRC_PIC_STATE read buffer */ | |
1809 | + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, | |
1810 | + &vme_context->res_pic_state_brc_read_buffer, | |
1811 | + 0, | |
1812 | + vme_context->res_pic_state_brc_read_buffer.size, | |
1813 | + 0, | |
1814 | + VP9_BTI_BRC_PIC_STATE_INPUT_G9); | |
1815 | + | |
1816 | + /* 7. BRC_PIC_STATE write buffer */ | |
1817 | + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, | |
1818 | + &vme_context->res_pic_state_brc_write_hfw_read_buffer, | |
1819 | + 0, | |
1820 | + vme_context->res_pic_state_brc_write_hfw_read_buffer.size, | |
1821 | + 0, | |
1822 | + VP9_BTI_BRC_PIC_STATE_OUTPUT_G9); | |
1823 | + | |
1824 | + /* 8. SEGMENT_STATE read buffer */ | |
1825 | + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, | |
1826 | + &vme_context->res_seg_state_brc_read_buffer, | |
1827 | + 0, | |
1828 | + vme_context->res_seg_state_brc_read_buffer.size, | |
1829 | + 0, | |
1830 | + VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9); | |
1831 | + | |
1832 | + /* 9. SEGMENT_STATE write buffer */ | |
1833 | + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, | |
1834 | + &vme_context->res_seg_state_brc_write_buffer, | |
1835 | + 0, | |
1836 | + vme_context->res_seg_state_brc_write_buffer.size, | |
1837 | + 0, | |
1838 | + VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9); | |
1839 | + | |
1840 | + /* 10. Bitstream size buffer */ | |
1841 | + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, | |
1842 | + &vme_context->res_brc_bitstream_size_buffer, | |
1843 | + 0, | |
1844 | + vme_context->res_brc_bitstream_size_buffer.size, | |
1845 | + 0, | |
1846 | + VP9_BTI_BRC_BITSTREAM_SIZE_G9); | |
1847 | + | |
1848 | + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, | |
1849 | + &vme_context->res_brc_hfw_data_buffer, | |
1850 | + 0, | |
1851 | + vme_context->res_brc_hfw_data_buffer.size, | |
1852 | + 0, | |
1853 | + VP9_BTI_BRC_HFW_DATA_G9); | |
1854 | + | |
1855 | + return; | |
1856 | +} | |
1857 | + | |
1858 | +static VAStatus | |
1859 | +gen9_vp9_brc_update_kernel(VADriverContextP ctx, | |
1860 | + struct encode_state *encode_state, | |
1861 | + struct intel_encoder_context *encoder_context) | |
1862 | +{ | |
1863 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
1864 | + struct vp9_brc_context *brc_context = &vme_context->brc_context; | |
1865 | + struct i965_gpe_context *brc_gpe_context, *mbenc_gpe_context; | |
1866 | + int mbenc_index, gpe_index = VP9_BRC_UPDATE; | |
1867 | + int media_function = VP9_MEDIA_STATE_BRC_UPDATE; | |
1868 | + int mbenc_function; | |
1869 | + struct gen9_vp9_brc_curbe_param brc_update_curbe_param; | |
1870 | + VAEncPictureParameterBufferVP9 *pic_param; | |
1871 | + struct gen9_vp9_state *vp9_state; | |
1872 | + struct gen9_vp9_mbenc_curbe_param mbenc_curbe_param; | |
1873 | + struct gpe_media_object_parameter media_object_param; | |
1874 | + | |
1875 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
1876 | + if (!vp9_state || !vp9_state->pic_param) | |
1877 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
1878 | + | |
1879 | + pic_param = vp9_state->pic_param; | |
1880 | + // Setup VP9 MbEnc Curbe | |
1881 | + if (vp9_state->picture_coding_type) { | |
1882 | + mbenc_function = VP9_MEDIA_STATE_MBENC_P; | |
1883 | + mbenc_index = VP9_MBENC_IDX_INTER; | |
1884 | + } else { | |
1885 | + mbenc_function = VP9_MEDIA_STATE_MBENC_I_32x32; | |
1886 | + mbenc_index = VP9_MBENC_IDX_KEY_32x32; | |
1887 | + } | |
1888 | + | |
1889 | + mbenc_gpe_context = &(vme_context->mbenc_context.gpe_contexts[mbenc_index]); | |
1890 | + | |
1891 | + memset(&mbenc_curbe_param, 0, sizeof(mbenc_curbe_param)); | |
1892 | + | |
1893 | + mbenc_curbe_param.ppic_param = vp9_state->pic_param; | |
1894 | + mbenc_curbe_param.pseq_param = vp9_state->seq_param; | |
1895 | + mbenc_curbe_param.psegment_param = vp9_state->segment_param; | |
1896 | + //mbenc_curbe_param.ppRefList = &(vp9_state->pRefList[0]); | |
1897 | + mbenc_curbe_param.last_ref_obj = vp9_state->last_ref_obj; | |
1898 | + mbenc_curbe_param.golden_ref_obj = vp9_state->golden_ref_obj; | |
1899 | + mbenc_curbe_param.alt_ref_obj = vp9_state->alt_ref_obj; | |
1900 | + mbenc_curbe_param.frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16; | |
1901 | + mbenc_curbe_param.frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16; | |
1902 | + mbenc_curbe_param.hme_enabled = vp9_state->hme_enabled; | |
1903 | + mbenc_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; | |
1904 | + mbenc_curbe_param.multi_ref_qp_check = vp9_state->multi_ref_qp_check; | |
1905 | + mbenc_curbe_param.picture_coding_type = vp9_state->picture_coding_type; | |
1906 | + mbenc_curbe_param.media_state_type = mbenc_function; | |
1907 | + | |
1908 | + vme_context->pfn_set_curbe_mbenc(ctx, encode_state, | |
1909 | + mbenc_gpe_context, | |
1910 | + encoder_context, | |
1911 | + &mbenc_curbe_param); | |
1912 | + | |
1913 | + vp9_state->mbenc_curbe_set_in_brc_update = true; | |
1914 | + | |
1915 | + brc_gpe_context = &brc_context->gpe_contexts[gpe_index]; | |
1916 | + | |
1917 | + gen8_gpe_context_init(ctx, brc_gpe_context); | |
1918 | + gen9_gpe_reset_binding_table(ctx, brc_gpe_context); | |
1919 | + | |
1920 | + memset(&brc_update_curbe_param, 0, sizeof(brc_update_curbe_param)); | |
1921 | + | |
1922 | + // Setup BRC Update Curbe | |
1923 | + brc_update_curbe_param.media_state_type = media_function; | |
1924 | + brc_update_curbe_param.curr_frame = pic_param->reconstructed_frame; | |
1925 | + brc_update_curbe_param.ppic_param = vp9_state->pic_param; | |
1926 | + brc_update_curbe_param.pseq_param = vp9_state->seq_param; | |
1927 | + brc_update_curbe_param.psegment_param = vp9_state->segment_param; | |
1928 | + brc_update_curbe_param.picture_coding_type = vp9_state->picture_coding_type; | |
1929 | + brc_update_curbe_param.frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16; | |
1930 | + brc_update_curbe_param.frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16; | |
1931 | + brc_update_curbe_param.hme_enabled = vp9_state->hme_enabled; | |
1932 | + brc_update_curbe_param.b_used_ref = 1; | |
1933 | + brc_update_curbe_param.frame_number = vp9_state->frame_number; | |
1934 | + brc_update_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; | |
1935 | + brc_update_curbe_param.mbbrc_enabled = 0; | |
1936 | + brc_update_curbe_param.multi_ref_qp_check = vp9_state->multi_ref_qp_check; | |
1937 | + brc_update_curbe_param.brc_num_pak_passes = vp9_state->num_pak_passes; | |
1938 | + | |
1939 | + brc_update_curbe_param.pbrc_init_current_target_buf_full_in_bits = | |
1940 | + &vp9_state->brc_init_current_target_buf_full_in_bits; | |
1941 | + brc_update_curbe_param.pbrc_init_reset_buf_size_in_bits = | |
1942 | + &vp9_state->brc_init_reset_buf_size_in_bits; | |
1943 | + brc_update_curbe_param.pbrc_init_reset_input_bits_per_frame = | |
1944 | + &vp9_state->brc_init_reset_input_bits_per_frame; | |
1945 | + | |
1946 | + vme_context->pfn_set_curbe_brc(ctx, encode_state, | |
1947 | + brc_gpe_context, | |
1948 | + encoder_context, | |
1949 | + &brc_update_curbe_param); | |
1950 | + | |
1951 | + | |
1952 | + // Check if the constant data surface is present | |
1953 | + if (vp9_state->brc_constant_buffer_supported) | |
1954 | + { | |
1955 | + char *brc_const_buffer; | |
1956 | + brc_const_buffer = i965_map_gpe_resource(&vme_context->res_brc_const_data_buffer); | |
1957 | + if (vp9_state->picture_coding_type) | |
1958 | + memcpy(brc_const_buffer, vp9_brc_const_data_p_g9, | |
1959 | + sizeof(vp9_brc_const_data_p_g9)); | |
1960 | + else | |
1961 | + memcpy(brc_const_buffer, vp9_brc_const_data_i_g9, | |
1962 | + sizeof(vp9_brc_const_data_i_g9)); | |
1963 | + | |
1964 | + i965_unmap_gpe_resource(&vme_context->res_brc_const_data_buffer); | |
1965 | + } | |
1966 | + | |
1967 | + if (pic_param->pic_flags.bits.segmentation_enabled) | |
1968 | + { | |
1969 | + //reallocate the vme_state->mb_segment_map_surface | |
1970 | + /* this will be added later */ | |
1971 | + } | |
1972 | + | |
1973 | + { | |
1974 | + pic_param->filter_level = 0; | |
1975 | + // clear the filter level value in picParams ebfore programming pic state, as this value will be determined and updated by BRC. | |
1976 | + intel_vp9enc_construct_picstate_batchbuf(ctx, encode_state, | |
1977 | + encoder_context, &vme_context->res_pic_state_brc_read_buffer); | |
1978 | + } | |
1979 | + | |
1980 | + gen9_brc_update_add_surfaces_vp9(ctx, encode_state, | |
1981 | + encoder_context, | |
1982 | + brc_gpe_context, | |
1983 | + mbenc_gpe_context); | |
1984 | + | |
1985 | + gen8_gpe_setup_interface_data(ctx, brc_gpe_context); | |
1986 | + memset(&media_object_param, 0, sizeof(media_object_param)); | |
1987 | + gen9_run_kernel_media_object(ctx, encoder_context, | |
1988 | + brc_gpe_context, | |
1989 | + media_function, | |
1990 | + &media_object_param); | |
1991 | + return VA_STATUS_SUCCESS; | |
1992 | +} | |
1993 | + | |
1994 | +static | |
1995 | +void gen9_vp9_set_curbe_me(VADriverContextP ctx, | |
1996 | + struct encode_state *encode_state, | |
1997 | + struct i965_gpe_context *gpe_context, | |
1998 | + struct intel_encoder_context *encoder_context, | |
1999 | + struct gen9_vp9_me_curbe_param *param) | |
2000 | +{ | |
2001 | + vp9_me_curbe_data *me_cmd; | |
2002 | + int enc_media_state; | |
2003 | + int me_mode; | |
2004 | + unsigned int width, height; | |
2005 | + uint32_t l0_ref_frames; | |
2006 | + uint32_t scale_factor; | |
2007 | + | |
2008 | + if (param->b16xme_enabled) { | |
2009 | + if (param->use_16x_me) | |
2010 | + me_mode = VP9_ENC_ME16X_BEFORE_ME4X; | |
2011 | + else | |
2012 | + me_mode = VP9_ENC_ME4X_AFTER_ME16X; | |
2013 | + } else { | |
2014 | + me_mode = VP9_ENC_ME4X_ONLY; | |
2015 | + } | |
2016 | + | |
2017 | + if (me_mode == VP9_ENC_ME16X_BEFORE_ME4X) | |
2018 | + scale_factor = 16; | |
2019 | + else | |
2020 | + scale_factor = 4; | |
2021 | + | |
2022 | + if (param->use_16x_me) | |
2023 | + enc_media_state = VP9_MEDIA_STATE_16X_ME; | |
2024 | + else | |
2025 | + enc_media_state = VP9_MEDIA_STATE_4X_ME; | |
2026 | + | |
2027 | + me_cmd = gen8p_gpe_context_map_curbe(gpe_context); | |
2028 | + memset(me_cmd, 0, sizeof(vp9_me_curbe_data)); | |
2029 | + | |
2030 | + me_cmd->dw1.max_num_mvs = 0x10; | |
2031 | + me_cmd->dw1.bi_weight = 0x00; | |
2032 | + | |
2033 | + me_cmd->dw2.max_num_su = 0x39; | |
2034 | + me_cmd->dw2.max_len_sp = 0x39; | |
2035 | + | |
2036 | + me_cmd->dw3.sub_mb_part_mask = 0x77; | |
2037 | + me_cmd->dw3.inter_sad = 0x00; | |
2038 | + me_cmd->dw3.intra_sad = 0x00; | |
2039 | + me_cmd->dw3.bme_disable_fbr = 0x01; | |
2040 | + me_cmd->dw3.sub_pel_mode = 0x03; | |
2041 | + | |
2042 | + width = param->frame_width / scale_factor; | |
2043 | + height = param->frame_height / scale_factor; | |
2044 | + | |
2045 | + me_cmd->dw4.picture_width = ALIGN(width, 16) / 16; | |
2046 | + me_cmd->dw4.picture_height_minus1 = ALIGN(height, 16) / 16 - 1; | |
2047 | + | |
2048 | + me_cmd->dw5.ref_width = 0x30; | |
2049 | + me_cmd->dw5.ref_height = 0x28; | |
2050 | + | |
2051 | + if (enc_media_state == VP9_MEDIA_STATE_4X_ME) | |
2052 | + me_cmd->dw6.write_distortions = 0x01; | |
2053 | + | |
2054 | + me_cmd->dw6.use_mv_from_prev_step = me_mode == VP9_ENC_ME4X_AFTER_ME16X ? 1 : 0; | |
2055 | + me_cmd->dw6.super_combine_dist = 0x5; | |
2056 | + me_cmd->dw6.max_vmvr = 0x7fc; | |
2057 | + | |
2058 | + l0_ref_frames = (param->ref_frame_flag & 0x01) + | |
2059 | + !!(param->ref_frame_flag & 0x02) + | |
2060 | + !!(param->ref_frame_flag & 0x04); | |
2061 | + me_cmd->dw13.num_ref_idx_l0_minus1 = (l0_ref_frames > 0) ? l0_ref_frames - 1 : 0; | |
2062 | + me_cmd->dw13.num_ref_idx_l1_minus1 = 0; | |
2063 | + | |
2064 | + me_cmd->dw14.l0_ref_pic_polarity_bits = 0; | |
2065 | + me_cmd->dw14.l1_ref_pic_polarity_bits = 0; | |
2066 | + | |
2067 | + me_cmd->dw15.mv_shift_factor = 0x02; | |
2068 | + | |
2069 | + { | |
2070 | + memcpy((void *)((char *)me_cmd + 64), | |
2071 | + vp9_diamond_ime_search_path_delta, | |
2072 | + sizeof(vp9_diamond_ime_search_path_delta)); | |
2073 | + } | |
2074 | + | |
2075 | + | |
2076 | + me_cmd->dw32._4x_memv_output_data_surf_index = VP9_BTI_ME_MV_DATA_SURFACE; | |
2077 | + me_cmd->dw33._16x_32x_memv_input_data_surf_index = VP9_BTI_16XME_MV_DATA_SURFACE; | |
2078 | + me_cmd->dw34._4x_me_output_dist_surf_index = VP9_BTI_ME_DISTORTION_SURFACE; | |
2079 | + me_cmd->dw35._4x_me_output_brc_dist_surf_index = VP9_BTI_ME_BRC_DISTORTION_SURFACE; | |
2080 | + me_cmd->dw36.vme_fwd_inter_pred_surf_index = VP9_BTI_ME_CURR_PIC_L0; | |
2081 | + me_cmd->dw37.vme_bdw_inter_pred_surf_index = VP9_BTI_ME_CURR_PIC_L1; | |
2082 | + | |
2083 | + gen8p_gpe_context_unmap_curbe(gpe_context); | |
2084 | +} | |
2085 | + | |
2086 | +static void | |
2087 | +gen9_vp9_send_me_surface(VADriverContextP ctx, | |
2088 | + struct encode_state *encode_state, | |
2089 | + struct i965_gpe_context *gpe_context, | |
2090 | + struct intel_encoder_context *encoder_context, | |
2091 | + struct gen9_vp9_me_surface_param *param) | |
2092 | +{ | |
2093 | + struct i965_driver_data *i965 = i965_driver_data(ctx); | |
2094 | + struct object_surface *obj_surface; | |
2095 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
2096 | + struct object_surface *input_surface; | |
2097 | + struct i965_gpe_resource *gpe_resource; | |
2098 | + int ref_bti; | |
2099 | + | |
2100 | + obj_surface = SURFACE(param->curr_pic); | |
2101 | + | |
2102 | + if (!obj_surface || !obj_surface->private_data) | |
2103 | + return; | |
2104 | + | |
2105 | + vp9_priv_surface = obj_surface->private_data; | |
2106 | + if (param->use_16x_me) | |
2107 | + { | |
2108 | + gpe_resource = param->pres_16x_memv_data_buffer; | |
2109 | + } | |
2110 | + else | |
2111 | + { | |
2112 | + gpe_resource = param->pres_4x_memv_data_buffer; | |
2113 | + } | |
2114 | + | |
2115 | + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, | |
2116 | + gpe_resource, | |
2117 | + 1, | |
2118 | + I965_SURFACEFORMAT_R8_UNORM, | |
2119 | + VP9_BTI_ME_MV_DATA_SURFACE); | |
2120 | + | |
2121 | + if (param->b16xme_enabled) { | |
2122 | + gpe_resource = param->pres_16x_memv_data_buffer; | |
2123 | + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, | |
2124 | + gpe_resource, | |
2125 | + 1, | |
2126 | + I965_SURFACEFORMAT_R8_UNORM, | |
2127 | + VP9_BTI_16XME_MV_DATA_SURFACE); | |
2128 | + } | |
2129 | + | |
2130 | + if (!param->use_16x_me) { | |
2131 | + gpe_resource = param->pres_me_brc_distortion_buffer; | |
2132 | + | |
2133 | + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, | |
2134 | + gpe_resource, | |
2135 | + 1, | |
2136 | + I965_SURFACEFORMAT_R8_UNORM, | |
2137 | + VP9_BTI_ME_BRC_DISTORTION_SURFACE); | |
2138 | + | |
2139 | + gpe_resource = param->pres_me_distortion_buffer; | |
2140 | + | |
2141 | + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, | |
2142 | + gpe_resource, | |
2143 | + 1, | |
2144 | + I965_SURFACEFORMAT_R8_UNORM, | |
2145 | + VP9_BTI_ME_DISTORTION_SURFACE); | |
2146 | + } | |
2147 | + | |
2148 | + if (param->use_16x_me) | |
2149 | + input_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2150 | + else | |
2151 | + input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2152 | + | |
2153 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
2154 | + input_surface, | |
2155 | + VP9_BTI_ME_CURR_PIC_L0); | |
2156 | + | |
2157 | + ref_bti = VP9_BTI_ME_CURR_PIC_L0 + 1; | |
2158 | + | |
2159 | + | |
2160 | + if (param->last_ref_pic) { | |
2161 | + obj_surface = param->last_ref_pic; | |
2162 | + vp9_priv_surface = obj_surface->private_data; | |
2163 | + | |
2164 | + if (param->use_16x_me) | |
2165 | + input_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2166 | + else | |
2167 | + input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2168 | + | |
2169 | + if (param->dys_enabled && | |
2170 | + ((vp9_priv_surface->frame_width != param->frame_width) || | |
2171 | + (vp9_priv_surface->frame_height != param->frame_height))) { | |
2172 | + if (param->use_16x_me) | |
2173 | + input_surface = vp9_priv_surface->dys_16x_surface_obj; | |
2174 | + else | |
2175 | + input_surface = vp9_priv_surface->dys_4x_surface_obj; | |
2176 | + } | |
2177 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
2178 | + input_surface, | |
2179 | + ref_bti); | |
2180 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
2181 | + input_surface, | |
2182 | + ref_bti + 1); | |
2183 | + ref_bti += 2; | |
2184 | + } | |
2185 | + | |
2186 | + if (param->golden_ref_pic) { | |
2187 | + obj_surface = param->golden_ref_pic; | |
2188 | + vp9_priv_surface = obj_surface->private_data; | |
2189 | + | |
2190 | + if (param->use_16x_me) | |
2191 | + input_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2192 | + else | |
2193 | + input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2194 | + | |
2195 | + if (param->dys_enabled && | |
2196 | + ((vp9_priv_surface->frame_width != param->frame_width) || | |
2197 | + (vp9_priv_surface->frame_height != param->frame_height))) { | |
2198 | + if (param->use_16x_me) | |
2199 | + input_surface = vp9_priv_surface->dys_16x_surface_obj; | |
2200 | + else | |
2201 | + input_surface = vp9_priv_surface->dys_4x_surface_obj; | |
2202 | + } | |
2203 | + | |
2204 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
2205 | + input_surface, | |
2206 | + ref_bti); | |
2207 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
2208 | + input_surface, | |
2209 | + ref_bti + 1); | |
2210 | + ref_bti += 2; | |
2211 | + } | |
2212 | + | |
2213 | + if (param->alt_ref_pic) { | |
2214 | + obj_surface = param->alt_ref_pic; | |
2215 | + vp9_priv_surface = obj_surface->private_data; | |
2216 | + | |
2217 | + if (param->use_16x_me) | |
2218 | + input_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2219 | + else | |
2220 | + input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2221 | + | |
2222 | + if (param->dys_enabled && | |
2223 | + ((vp9_priv_surface->frame_width != param->frame_width) || | |
2224 | + (vp9_priv_surface->frame_height != param->frame_height))) { | |
2225 | + if (param->use_16x_me) | |
2226 | + input_surface = vp9_priv_surface->dys_16x_surface_obj; | |
2227 | + else | |
2228 | + input_surface = vp9_priv_surface->dys_4x_surface_obj; | |
2229 | + } | |
2230 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
2231 | + input_surface, | |
2232 | + ref_bti); | |
2233 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
2234 | + input_surface, | |
2235 | + ref_bti + 1); | |
2236 | + ref_bti += 2; | |
2237 | + } | |
2238 | + | |
2239 | + return; | |
2240 | +} | |
2241 | + | |
2242 | +static | |
2243 | +void gen9_me_add_surfaces_vp9(VADriverContextP ctx, | |
2244 | + struct encode_state *encode_state, | |
2245 | + struct intel_encoder_context *encoder_context, | |
2246 | + struct i965_gpe_context *gpe_context, | |
2247 | + int use_16x_me) | |
2248 | +{ | |
2249 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
2250 | + struct gen9_vp9_me_surface_param me_surface_param; | |
2251 | + struct gen9_vp9_state *vp9_state; | |
2252 | + | |
2253 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
2254 | + | |
2255 | + /* sScaled4xSurface surface */ | |
2256 | + memset(&me_surface_param, 0, sizeof(me_surface_param)); | |
2257 | + me_surface_param.last_ref_pic = vp9_state->last_ref_obj; | |
2258 | + me_surface_param.golden_ref_pic = vp9_state->golden_ref_obj; | |
2259 | + me_surface_param.alt_ref_pic = vp9_state->alt_ref_obj; | |
2260 | + me_surface_param.curr_pic = vp9_state->curr_frame; | |
2261 | + me_surface_param.pres_4x_memv_data_buffer = &vme_context->s4x_memv_data_buffer; | |
2262 | + me_surface_param.pres_16x_memv_data_buffer = &vme_context->s16x_memv_data_buffer; | |
2263 | + me_surface_param.pres_me_distortion_buffer = &vme_context->s4x_memv_distortion_buffer; | |
2264 | + me_surface_param.pres_me_brc_distortion_buffer = &vme_context->s4x_memv_distortion_buffer; | |
2265 | + | |
2266 | + if (use_16x_me) { | |
2267 | + me_surface_param.downscaled_width_in_mb = vp9_state->downscaled_width_16x_in_mb; | |
2268 | + me_surface_param.downscaled_height_in_mb = vp9_state->downscaled_height_16x_in_mb; | |
2269 | + } else { | |
2270 | + me_surface_param.downscaled_width_in_mb = vp9_state->downscaled_width_4x_in_mb; | |
2271 | + me_surface_param.downscaled_height_in_mb = vp9_state->downscaled_height_4x_in_mb; | |
2272 | + } | |
2273 | + me_surface_param.frame_width = vp9_state->frame_width; | |
2274 | + me_surface_param.frame_height = vp9_state->frame_height; | |
2275 | + | |
2276 | + me_surface_param.use_16x_me = use_16x_me; | |
2277 | + me_surface_param.b16xme_enabled = vp9_state->b16xme_enabled; | |
2278 | + me_surface_param.dys_enabled = vp9_state->dys_in_use; | |
2279 | + | |
2280 | + vme_context->pfn_send_me_surface(ctx, encode_state, | |
2281 | + gpe_context, | |
2282 | + encoder_context, | |
2283 | + &me_surface_param); | |
2284 | + return; | |
2285 | +} | |
2286 | + | |
2287 | +static VAStatus | |
2288 | +gen9_vp9_me_kernel(VADriverContextP ctx, | |
2289 | + struct encode_state *encode_state, | |
2290 | + struct intel_encoder_context *encoder_context, | |
2291 | + int use_16x_me) | |
2292 | +{ | |
2293 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
2294 | + struct i965_gpe_context *gpe_context; | |
2295 | + int media_function; | |
2296 | + struct gen9_vp9_me_curbe_param me_curbe_param; | |
2297 | + struct gen9_vp9_state *vp9_state; | |
2298 | + struct gpe_media_object_walker_parameter media_object_walker_param; | |
2299 | + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; | |
2300 | + | |
2301 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
2302 | + if (!vp9_state || !vp9_state->pic_param) | |
2303 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
2304 | + | |
2305 | + if (use_16x_me) | |
2306 | + media_function = VP9_MEDIA_STATE_16X_ME; | |
2307 | + else | |
2308 | + media_function = VP9_MEDIA_STATE_4X_ME; | |
2309 | + | |
2310 | + gpe_context = &(vme_context->me_context.gpe_context); | |
2311 | + | |
2312 | + gen8_gpe_context_init(ctx, gpe_context); | |
2313 | + gen9_gpe_reset_binding_table(ctx, gpe_context); | |
2314 | + | |
2315 | + memset(&me_curbe_param, 0, sizeof(me_curbe_param)); | |
2316 | + me_curbe_param.ppic_param = vp9_state->pic_param; | |
2317 | + me_curbe_param.pseq_param = vp9_state->seq_param; | |
2318 | + me_curbe_param.frame_width = vp9_state->frame_width; | |
2319 | + me_curbe_param.frame_height = vp9_state->frame_height; | |
2320 | + me_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; | |
2321 | + me_curbe_param.use_16x_me = use_16x_me; | |
2322 | + me_curbe_param.b16xme_enabled = vp9_state->b16xme_enabled; | |
2323 | + vme_context->pfn_set_curbe_me(ctx, encode_state, | |
2324 | + gpe_context, | |
2325 | + encoder_context, | |
2326 | + &me_curbe_param); | |
2327 | + | |
2328 | + gen9_me_add_surfaces_vp9(ctx, encode_state, | |
2329 | + encoder_context, | |
2330 | + gpe_context, | |
2331 | + use_16x_me); | |
2332 | + | |
2333 | + gen8_gpe_setup_interface_data(ctx, gpe_context); | |
2334 | + | |
2335 | + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); | |
2336 | + if (use_16x_me) { | |
2337 | + kernel_walker_param.resolution_x = vp9_state->downscaled_width_16x_in_mb; | |
2338 | + kernel_walker_param.resolution_y = vp9_state->downscaled_height_16x_in_mb; | |
2339 | + } else { | |
2340 | + kernel_walker_param.resolution_x = vp9_state->downscaled_width_4x_in_mb; | |
2341 | + kernel_walker_param.resolution_y = vp9_state->downscaled_height_4x_in_mb; | |
2342 | + } | |
2343 | + kernel_walker_param.no_dependency = 1; | |
2344 | + | |
2345 | + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); | |
2346 | + | |
2347 | + gen9_run_kernel_media_object_walker(ctx, encoder_context, | |
2348 | + gpe_context, | |
2349 | + media_function, | |
2350 | + &media_object_walker_param); | |
2351 | + | |
2352 | + return VA_STATUS_SUCCESS; | |
2353 | +} | |
2354 | + | |
2355 | +static void | |
2356 | +gen9_vp9_set_curbe_scaling_cm(VADriverContextP ctx, | |
2357 | + struct encode_state *encode_state, | |
2358 | + struct i965_gpe_context *gpe_context, | |
2359 | + struct intel_encoder_context *encoder_context, | |
2360 | + struct gen9_vp9_scaling_curbe_param *curbe_param) | |
2361 | +{ | |
2362 | + vp9_scaling4x_curbe_data_cm *curbe_cmd; | |
2363 | + | |
2364 | + curbe_cmd = gen8p_gpe_context_map_curbe(gpe_context); | |
2365 | + memset(curbe_cmd, 0, sizeof(vp9_scaling4x_curbe_data_cm)); | |
2366 | + | |
2367 | + curbe_cmd->dw0.input_picture_width = curbe_param->input_picture_width; | |
2368 | + curbe_cmd->dw0.input_picture_height = curbe_param->input_picture_height; | |
2369 | + | |
2370 | + curbe_cmd->dw1.input_y_bti = VP9_BTI_SCALING_FRAME_SRC_Y; | |
2371 | + curbe_cmd->dw2.output_y_bti = VP9_BTI_SCALING_FRAME_DST_Y; | |
2372 | + | |
2373 | + | |
2374 | + curbe_cmd->dw6.enable_mb_variance_output = 0; | |
2375 | + curbe_cmd->dw6.enable_mb_pixel_average_output = 0; | |
2376 | + curbe_cmd->dw6.enable_blk8x8_stat_output = 0; | |
2377 | + | |
2378 | + if (curbe_param->mb_variance_output_enabled || | |
2379 | + curbe_param->mb_pixel_average_output_enabled) | |
2380 | + { | |
2381 | + curbe_cmd->dw10.mbv_proc_stat_bti = VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM; | |
2382 | + } | |
2383 | + | |
2384 | + gen8p_gpe_context_unmap_curbe(gpe_context); | |
2385 | + return; | |
2386 | +} | |
2387 | + | |
2388 | +static void | |
2389 | +gen9_vp9_send_scaling_surface(VADriverContextP ctx, | |
2390 | + struct encode_state *encode_state, | |
2391 | + struct i965_gpe_context *gpe_context, | |
2392 | + struct intel_encoder_context *encoder_context, | |
2393 | + struct gen9_vp9_scaling_surface_param *scaling_surface_param) | |
2394 | +{ | |
2395 | + vp9_bti_scaling_offset *scaling_bti; | |
2396 | + unsigned int surface_format; | |
2397 | + | |
2398 | + scaling_bti = scaling_surface_param->p_scaling_bti; | |
2399 | + | |
2400 | + if (scaling_surface_param->scaling_out_use_32unorm_surf_fmt) | |
2401 | + surface_format = I965_SURFACEFORMAT_R32_UNORM; | |
2402 | + else if (scaling_surface_param->scaling_out_use_16unorm_surf_fmt) | |
2403 | + surface_format = I965_SURFACEFORMAT_R16_UNORM; | |
2404 | + else | |
2405 | + surface_format = I965_SURFACEFORMAT_R8_UNORM; | |
2406 | + | |
2407 | + gen9_add_2d_gpe_surface(ctx, gpe_context, | |
2408 | + scaling_surface_param->input_surface, | |
2409 | + 0, 1, surface_format, | |
2410 | + scaling_bti->scaling_frame_src_y); | |
2411 | + | |
2412 | + gen9_add_2d_gpe_surface(ctx, gpe_context, | |
2413 | + scaling_surface_param->output_surface, | |
2414 | + 0, 1, surface_format, | |
2415 | + scaling_bti->scaling_frame_dst_y); | |
2416 | + | |
2417 | + | |
2418 | + return; | |
2419 | +} | |
2420 | + | |
2421 | +static VAStatus | |
2422 | +gen9_vp9_scaling_kernel(VADriverContextP ctx, | |
2423 | + struct encode_state *encode_state, | |
2424 | + struct intel_encoder_context *encoder_context, | |
2425 | + int use_16x_scaling) | |
2426 | +{ | |
2427 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
2428 | + struct i965_gpe_context *gpe_context; | |
2429 | + int media_function; | |
2430 | + struct gen9_vp9_scaling_curbe_param scaling_curbe_param; | |
2431 | + struct gen9_vp9_scaling_surface_param scaling_surface_param; | |
2432 | + struct gen9_vp9_state *vp9_state; | |
2433 | + VAEncPictureParameterBufferVP9 *pic_param; | |
2434 | + struct gpe_media_object_walker_parameter media_object_walker_param; | |
2435 | + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; | |
2436 | + struct object_surface *obj_surface; | |
2437 | + struct object_surface *input_surface, *output_surface; | |
2438 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
2439 | + unsigned int downscaled_width_in_mb, downscaled_height_in_mb; | |
2440 | + unsigned int input_frame_width, input_frame_height; | |
2441 | + unsigned int output_frame_width, output_frame_height; | |
2442 | + | |
2443 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
2444 | + if (!vp9_state || !vp9_state->pic_param) | |
2445 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
2446 | + | |
2447 | + pic_param = vp9_state->pic_param; | |
2448 | + | |
2449 | + if (use_16x_scaling) | |
2450 | + media_function = VP9_MEDIA_STATE_16X_SCALING; | |
2451 | + else | |
2452 | + media_function = VP9_MEDIA_STATE_4X_SCALING; | |
2453 | + | |
2454 | + gpe_context = &(vme_context->scaling_context.gpe_contexts[0]); | |
2455 | + | |
2456 | + gen8_gpe_context_init(ctx, gpe_context); | |
2457 | + gen9_gpe_reset_binding_table(ctx, gpe_context); | |
2458 | + | |
2459 | + obj_surface = encode_state->reconstructed_object; | |
2460 | + vp9_priv_surface = obj_surface->private_data; | |
2461 | + | |
2462 | + if (use_16x_scaling) | |
2463 | + { | |
2464 | + downscaled_width_in_mb = vp9_state->downscaled_width_16x_in_mb; | |
2465 | + downscaled_height_in_mb = vp9_state->downscaled_height_16x_in_mb; | |
2466 | + | |
2467 | + input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2468 | + input_frame_width = vp9_state->frame_width_4x; | |
2469 | + input_frame_height = vp9_state->frame_height_4x; | |
2470 | + | |
2471 | + output_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2472 | + output_frame_width = vp9_state->frame_width_16x; | |
2473 | + output_frame_height = vp9_state->frame_height_16x; | |
2474 | + } else { | |
2475 | + downscaled_width_in_mb = vp9_state->downscaled_width_4x_in_mb; | |
2476 | + downscaled_height_in_mb = vp9_state->downscaled_height_4x_in_mb; | |
2477 | + | |
2478 | + if (vp9_state->dys_in_use && | |
2479 | + ((pic_param->frame_width_src != pic_param->frame_width_dst) || | |
2480 | + (pic_param->frame_height_src != pic_param->frame_height_dst))) | |
2481 | + input_surface = vp9_priv_surface->dys_surface_obj; | |
2482 | + else | |
2483 | + input_surface = encode_state->input_yuv_object; | |
2484 | + | |
2485 | + input_frame_width = vp9_state->frame_width; | |
2486 | + input_frame_height = vp9_state->frame_height; | |
2487 | + | |
2488 | + output_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2489 | + output_frame_width = vp9_state->frame_width_4x; | |
2490 | + output_frame_height = vp9_state->frame_height_4x; | |
2491 | + } | |
2492 | + | |
2493 | + memset(&scaling_curbe_param, 0, sizeof(scaling_curbe_param)); | |
2494 | + | |
2495 | + scaling_curbe_param.input_picture_width = input_frame_width; | |
2496 | + scaling_curbe_param.input_picture_height = input_frame_height; | |
2497 | + | |
2498 | + scaling_curbe_param.use_16x_scaling = use_16x_scaling; | |
2499 | + scaling_curbe_param.use_32x_scaling = 0; | |
2500 | + | |
2501 | + if (use_16x_scaling) | |
2502 | + scaling_curbe_param.mb_variance_output_enabled = 0; | |
2503 | + else | |
2504 | + scaling_curbe_param.mb_variance_output_enabled = vp9_state->adaptive_transform_decision_enabled; | |
2505 | + | |
2506 | + scaling_curbe_param.blk8x8_stat_enabled = 0; | |
2507 | + | |
2508 | + vme_context->pfn_set_curbe_scaling(ctx, encode_state, | |
2509 | + gpe_context, | |
2510 | + encoder_context, | |
2511 | + &scaling_curbe_param); | |
2512 | + | |
2513 | + memset(&scaling_surface_param, 0, sizeof(scaling_surface_param)); | |
2514 | + scaling_surface_param.p_scaling_bti = (void *)(&vme_context->scaling_context.scaling_4x_bti); | |
2515 | + scaling_surface_param.input_surface = input_surface; | |
2516 | + scaling_surface_param.input_frame_width = input_frame_width; | |
2517 | + scaling_surface_param.input_frame_height = input_frame_height; | |
2518 | + | |
2519 | + scaling_surface_param.output_surface = output_surface; | |
2520 | + scaling_surface_param.output_frame_width = output_frame_width; | |
2521 | + scaling_surface_param.output_frame_height = output_frame_height; | |
2522 | + scaling_surface_param.scaling_out_use_16unorm_surf_fmt = 0; | |
2523 | + scaling_surface_param.scaling_out_use_32unorm_surf_fmt = 1; | |
2524 | + | |
2525 | + vme_context->pfn_send_scaling_surface(ctx, encode_state, | |
2526 | + gpe_context, | |
2527 | + encoder_context, | |
2528 | + &scaling_surface_param); | |
2529 | + | |
2530 | + gen8_gpe_setup_interface_data(ctx, gpe_context); | |
2531 | + | |
2532 | + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); | |
2533 | + /* the scaling is based on 8x8 blk level */ | |
2534 | + kernel_walker_param.resolution_x = downscaled_width_in_mb * 2; | |
2535 | + kernel_walker_param.resolution_y = downscaled_height_in_mb * 2; | |
2536 | + kernel_walker_param.no_dependency = 1; | |
2537 | + | |
2538 | + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); | |
2539 | + | |
2540 | + gen9_run_kernel_media_object_walker(ctx, encoder_context, | |
2541 | + gpe_context, | |
2542 | + media_function, | |
2543 | + &media_object_walker_param); | |
2544 | + | |
2545 | + return VA_STATUS_SUCCESS; | |
2546 | +} | |
2547 | + | |
2548 | +static void | |
2549 | +gen9_vp9_dys_set_sampler_state(struct i965_gpe_context *gpe_context) | |
2550 | +{ | |
2551 | + struct gen9_sampler_8x8_avs *sampler_cmd; | |
2552 | + dri_bo_map(gpe_context->dynamic_state.bo, 1); | |
2553 | + | |
2554 | + sampler_cmd = (struct gen9_sampler_8x8_avs *) | |
2555 | + (gpe_context->dynamic_state.bo->virtual + gpe_context->sampler_offset); | |
2556 | + | |
2557 | + memset(sampler_cmd, 0, sizeof(struct gen9_sampler_8x8_avs)); | |
2558 | + | |
2559 | + sampler_cmd->dw0.r3c_coefficient = 15; | |
2560 | + sampler_cmd->dw0.r3x_coefficient = 6; | |
2561 | + sampler_cmd->dw0.strong_edge_threshold = 8; | |
2562 | + sampler_cmd->dw0.weak_edge_threshold = 1; | |
2563 | + sampler_cmd->dw0.gain_factor = 32; | |
2564 | + | |
2565 | + sampler_cmd->dw2.r5c_coefficient = 3; | |
2566 | + sampler_cmd->dw2.r5cx_coefficient = 8; | |
2567 | + sampler_cmd->dw2.r5x_coefficient = 9; | |
2568 | + sampler_cmd->dw2.strong_edge_weight = 6; | |
2569 | + sampler_cmd->dw2.regular_weight = 3; | |
2570 | + sampler_cmd->dw2.non_edge_weight = 2; | |
2571 | + sampler_cmd->dw2.global_noise_estimation = 255; | |
2572 | + | |
2573 | + sampler_cmd->dw3.enable_8tap_adaptive_filter = 0; | |
2574 | + sampler_cmd->dw3.cos_alpha = 79; | |
2575 | + sampler_cmd->dw3.sin_alpha = 101; | |
2576 | + | |
2577 | + sampler_cmd->dw5.diamond_du = 0; | |
2578 | + sampler_cmd->dw5.hs_margin = 3; | |
2579 | + sampler_cmd->dw5.diamond_alpha = 100; | |
2580 | + | |
2581 | + sampler_cmd->dw7.inv_margin_vyl = 3300; | |
2582 | + | |
2583 | + sampler_cmd->dw8.inv_margin_vyu = 1600; | |
2584 | + | |
2585 | + sampler_cmd->dw10.y_slope2 = 24; | |
2586 | + sampler_cmd->dw10.s0l = 1792; | |
2587 | + | |
2588 | + sampler_cmd->dw12.y_slope1 = 24; | |
2589 | + | |
2590 | + sampler_cmd->dw14.s0u = 256; | |
2591 | + | |
2592 | + sampler_cmd->dw15.s2u = 1792; | |
2593 | + sampler_cmd->dw15.s1u = 0; | |
2594 | + | |
2595 | + memcpy(sampler_cmd->coefficients, | |
2596 | + &gen9_vp9_avs_coeffs[0], | |
2597 | + 17 * sizeof(struct gen8_sampler_8x8_avs_coefficients)); | |
2598 | + | |
2599 | + sampler_cmd->dw152.default_sharpness_level = 255; | |
2600 | + sampler_cmd->dw152.max_derivative_4_pixels = 7; | |
2601 | + sampler_cmd->dw152.max_derivative_8_pixels = 20; | |
2602 | + sampler_cmd->dw152.transition_area_with_4_pixels = 4; | |
2603 | + sampler_cmd->dw152.transition_area_with_8_pixels = 5; | |
2604 | + | |
2605 | + sampler_cmd->dw153.bypass_x_adaptive_filtering = 1; | |
2606 | + sampler_cmd->dw153.bypass_y_adaptive_filtering = 1; | |
2607 | + sampler_cmd->dw153.adaptive_filter_for_all_channel = 0; | |
2608 | + | |
2609 | + memcpy(sampler_cmd->extra_coefficients, | |
2610 | + &gen9_vp9_avs_coeffs[17 * 8], | |
2611 | + 15 * sizeof(struct gen8_sampler_8x8_avs_coefficients)); | |
2612 | + | |
2613 | + dri_bo_unmap(gpe_context->dynamic_state.bo); | |
2614 | +} | |
2615 | + | |
2616 | +static void | |
2617 | +gen9_vp9_set_curbe_dys(VADriverContextP ctx, | |
2618 | + struct encode_state *encode_state, | |
2619 | + struct i965_gpe_context *gpe_context, | |
2620 | + struct intel_encoder_context *encoder_context, | |
2621 | + struct gen9_vp9_dys_curbe_param *curbe_param) | |
2622 | +{ | |
2623 | + vp9_dys_curbe_data *curbe_cmd; | |
2624 | + | |
2625 | + curbe_cmd = gen8p_gpe_context_map_curbe(gpe_context); | |
2626 | + memset(curbe_cmd, 0, sizeof(vp9_dys_curbe_data)); | |
2627 | + | |
2628 | + curbe_cmd->dw0.input_frame_width = curbe_param->input_width; | |
2629 | + curbe_cmd->dw0.input_frame_height = curbe_param->input_height; | |
2630 | + | |
2631 | + curbe_cmd->dw1.output_frame_width = curbe_param->output_width; | |
2632 | + curbe_cmd->dw1.output_frame_height = curbe_param->output_height; | |
2633 | + | |
2634 | + curbe_cmd->dw2.delta_u = 1.0f / curbe_param->output_width; | |
2635 | + curbe_cmd->dw3.delta_v = 1.0f / curbe_param->output_height; | |
2636 | + | |
2637 | + curbe_cmd->dw16.input_frame_nv12_bti = VP9_BTI_DYS_INPUT_NV12; | |
2638 | + curbe_cmd->dw17.output_frame_y_bti = VP9_BTI_DYS_OUTPUT_Y; | |
2639 | + curbe_cmd->dw18.avs_sample_idx = 0; | |
2640 | + | |
2641 | + gen8p_gpe_context_unmap_curbe(gpe_context); | |
2642 | +} | |
2643 | + | |
2644 | +static void | |
2645 | +gen9_vp9_send_dys_surface(VADriverContextP ctx, | |
2646 | + struct encode_state *encode_state, | |
2647 | + struct i965_gpe_context *gpe_context, | |
2648 | + struct intel_encoder_context *encoder_context, | |
2649 | + struct gen9_vp9_dys_surface_param *surface_param) | |
2650 | +{ | |
2651 | + | |
2652 | + if (surface_param->input_frame) | |
2653 | + gen9_add_adv_gpe_surface(ctx, | |
2654 | + gpe_context, | |
2655 | + surface_param->input_frame, | |
2656 | + VP9_BTI_DYS_INPUT_NV12); | |
2657 | + | |
2658 | + if (surface_param->output_frame) { | |
2659 | + gen9_add_2d_gpe_surface(ctx, | |
2660 | + gpe_context, | |
2661 | + surface_param->output_frame, | |
2662 | + 0, | |
2663 | + 1, | |
2664 | + I965_SURFACEFORMAT_R8_UNORM, | |
2665 | + VP9_BTI_DYS_OUTPUT_Y); | |
2666 | + | |
2667 | + gen9_add_2d_gpe_surface(ctx, | |
2668 | + gpe_context, | |
2669 | + surface_param->output_frame, | |
2670 | + 1, | |
2671 | + 1, | |
2672 | + I965_SURFACEFORMAT_R16_UINT, | |
2673 | + VP9_BTI_DYS_OUTPUT_UV); | |
2674 | + } | |
2675 | + | |
2676 | + return; | |
2677 | +} | |
2678 | + | |
2679 | +static VAStatus | |
2680 | +gen9_vp9_dys_kernel(VADriverContextP ctx, | |
2681 | + struct encode_state *encode_state, | |
2682 | + struct intel_encoder_context *encoder_context, | |
2683 | + gen9_vp9_dys_kernel_param *dys_kernel_param) | |
2684 | +{ | |
2685 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
2686 | + struct i965_gpe_context *gpe_context; | |
2687 | + int media_function; | |
2688 | + struct gen9_vp9_dys_curbe_param curbe_param; | |
2689 | + struct gen9_vp9_dys_surface_param surface_param; | |
2690 | + struct gpe_media_object_walker_parameter media_object_walker_param; | |
2691 | + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; | |
2692 | + unsigned int resolution_x, resolution_y; | |
2693 | + | |
2694 | + media_function = VP9_MEDIA_STATE_DYS; | |
2695 | + gpe_context = &vme_context->dys_context.gpe_context; | |
2696 | + | |
2697 | + //gen8_gpe_context_init(ctx, gpe_context); | |
2698 | + gen9_gpe_reset_binding_table(ctx, gpe_context); | |
2699 | + | |
2700 | + /* sampler state is configured only when initializing the GPE context */ | |
2701 | + | |
2702 | + memset(&curbe_param, 0, sizeof(curbe_param)); | |
2703 | + curbe_param.input_width = dys_kernel_param->input_width; | |
2704 | + curbe_param.input_height = dys_kernel_param->input_height; | |
2705 | + curbe_param.output_width = dys_kernel_param->output_width; | |
2706 | + curbe_param.output_height = dys_kernel_param->output_height; | |
2707 | + vme_context->pfn_set_curbe_dys(ctx, encode_state, | |
2708 | + gpe_context, | |
2709 | + encoder_context, | |
2710 | + &curbe_param); | |
2711 | + | |
2712 | + // Add surface states | |
2713 | + memset(&surface_param, 0, sizeof(surface_param)); | |
2714 | + surface_param.input_frame = dys_kernel_param->input_surface; | |
2715 | + surface_param.output_frame = dys_kernel_param->output_surface; | |
2716 | + surface_param.vert_line_stride = 0; | |
2717 | + surface_param.vert_line_stride_offset = 0; | |
2718 | + | |
2719 | + vme_context->pfn_send_dys_surface(ctx, | |
2720 | + encode_state, | |
2721 | + gpe_context, | |
2722 | + encoder_context, | |
2723 | + &surface_param); | |
2724 | + | |
2725 | + resolution_x = ALIGN(dys_kernel_param->output_width, 16) / 16; | |
2726 | + resolution_y = ALIGN(dys_kernel_param->output_height, 16) / 16; | |
2727 | + | |
2728 | + gen8_gpe_setup_interface_data(ctx, gpe_context); | |
2729 | + | |
2730 | + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); | |
2731 | + kernel_walker_param.resolution_x = resolution_x; | |
2732 | + kernel_walker_param.resolution_y = resolution_y; | |
2733 | + kernel_walker_param.no_dependency = 1; | |
2734 | + | |
2735 | + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); | |
2736 | + | |
2737 | + gen9_run_kernel_media_object_walker(ctx, encoder_context, | |
2738 | + gpe_context, | |
2739 | + media_function, | |
2740 | + &media_object_walker_param); | |
2741 | + | |
2742 | + return VA_STATUS_SUCCESS; | |
2743 | +} | |
2744 | + | |
2745 | +static VAStatus | |
2746 | +gen9_vp9_run_dys_refframes(VADriverContextP ctx, | |
2747 | + struct encode_state *encode_state, | |
2748 | + struct intel_encoder_context *encoder_context) | |
2749 | +{ | |
2750 | + struct gen9_vp9_state *vp9_state; | |
2751 | + VAEncPictureParameterBufferVP9 *pic_param; | |
2752 | + gen9_vp9_dys_kernel_param dys_kernel_param; | |
2753 | + struct object_surface *obj_surface; | |
2754 | + struct object_surface *input_surface, *output_surface; | |
2755 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
2756 | + | |
2757 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
2758 | + | |
2759 | + if (!vp9_state || !vp9_state->pic_param) | |
2760 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
2761 | + | |
2762 | + pic_param = vp9_state->pic_param; | |
2763 | + | |
2764 | + if ((pic_param->frame_width_src != pic_param->frame_width_dst) || | |
2765 | + (pic_param->frame_height_src != pic_param->frame_height_dst)) { | |
2766 | + input_surface = encode_state->input_yuv_object; | |
2767 | + obj_surface = encode_state->reconstructed_object; | |
2768 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
2769 | + output_surface = vp9_priv_surface->dys_surface_obj; | |
2770 | + | |
2771 | + memset(&dys_kernel_param, 0, sizeof(dys_kernel_param)); | |
2772 | + dys_kernel_param.input_width = pic_param->frame_width_src; | |
2773 | + dys_kernel_param.input_height = pic_param->frame_height_src; | |
2774 | + dys_kernel_param.input_surface = input_surface; | |
2775 | + dys_kernel_param.output_width = pic_param->frame_width_dst; | |
2776 | + dys_kernel_param.output_height = pic_param->frame_height_dst; | |
2777 | + dys_kernel_param.output_surface = output_surface; | |
2778 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2779 | + encoder_context, | |
2780 | + &dys_kernel_param); | |
2781 | + } | |
2782 | + | |
2783 | + if (vp9_state->dys_ref_frame_flag & VP9_LAST_REF) { | |
2784 | + obj_surface = vp9_state->last_ref_obj; | |
2785 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
2786 | + | |
2787 | + input_surface = obj_surface; | |
2788 | + output_surface = vp9_priv_surface->dys_surface_obj; | |
2789 | + | |
2790 | + dys_kernel_param.input_width = vp9_priv_surface->frame_width; | |
2791 | + dys_kernel_param.input_height = vp9_priv_surface->frame_height; | |
2792 | + dys_kernel_param.input_surface = input_surface; | |
2793 | + | |
2794 | + dys_kernel_param.output_width = pic_param->frame_width_dst; | |
2795 | + dys_kernel_param.output_height = pic_param->frame_height_dst; | |
2796 | + dys_kernel_param.output_surface = output_surface; | |
2797 | + | |
2798 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2799 | + encoder_context, | |
2800 | + &dys_kernel_param); | |
2801 | + | |
2802 | + if (vp9_state->hme_enabled) { | |
2803 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16); | |
2804 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16); | |
2805 | + dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2806 | + | |
2807 | + dys_kernel_param.output_width = vp9_state->frame_width_4x; | |
2808 | + dys_kernel_param.output_height = vp9_state->frame_height_4x; | |
2809 | + dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj; | |
2810 | + | |
2811 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2812 | + encoder_context, | |
2813 | + &dys_kernel_param); | |
2814 | + | |
2815 | + /* Does it really need to do the 16x HME if the | |
2816 | + * resolution is different? | |
2817 | + * Maybe it should be restricted | |
2818 | + */ | |
2819 | + if (vp9_state->b16xme_enabled) { | |
2820 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16); | |
2821 | + dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16); | |
2822 | + dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2823 | + | |
2824 | + dys_kernel_param.output_width = vp9_state->frame_width_16x; | |
2825 | + dys_kernel_param.output_height = vp9_state->frame_height_16x; | |
2826 | + dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj; | |
2827 | + | |
2828 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2829 | + encoder_context, | |
2830 | + &dys_kernel_param); | |
2831 | + } | |
2832 | + } | |
2833 | + } | |
2834 | + | |
2835 | + if (vp9_state->dys_ref_frame_flag & VP9_GOLDEN_REF) { | |
2836 | + obj_surface = vp9_state->golden_ref_obj; | |
2837 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
2838 | + | |
2839 | + input_surface = obj_surface; | |
2840 | + output_surface = vp9_priv_surface->dys_surface_obj; | |
2841 | + | |
2842 | + dys_kernel_param.input_width = vp9_priv_surface->frame_width; | |
2843 | + dys_kernel_param.input_height = vp9_priv_surface->frame_height; | |
2844 | + dys_kernel_param.input_surface = input_surface; | |
2845 | + | |
2846 | + dys_kernel_param.output_width = pic_param->frame_width_dst; | |
2847 | + dys_kernel_param.output_height = pic_param->frame_height_dst; | |
2848 | + dys_kernel_param.output_surface = output_surface; | |
2849 | + | |
2850 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2851 | + encoder_context, | |
2852 | + &dys_kernel_param); | |
2853 | + | |
2854 | + if (vp9_state->hme_enabled) { | |
2855 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16); | |
2856 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16); | |
2857 | + dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2858 | + | |
2859 | + dys_kernel_param.output_width = vp9_state->frame_width_4x; | |
2860 | + dys_kernel_param.output_height = vp9_state->frame_height_4x; | |
2861 | + dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj; | |
2862 | + | |
2863 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2864 | + encoder_context, | |
2865 | + &dys_kernel_param); | |
2866 | + | |
2867 | + /* Does it really need to do the 16x HME if the | |
2868 | + * resolution is different? | |
2869 | + * Maybe it should be restricted | |
2870 | + */ | |
2871 | + if (vp9_state->b16xme_enabled) { | |
2872 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16); | |
2873 | + dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16); | |
2874 | + dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2875 | + | |
2876 | + dys_kernel_param.output_width = vp9_state->frame_width_16x; | |
2877 | + dys_kernel_param.output_height = vp9_state->frame_height_16x; | |
2878 | + dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj; | |
2879 | + | |
2880 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2881 | + encoder_context, | |
2882 | + &dys_kernel_param); | |
2883 | + } | |
2884 | + } | |
2885 | + } | |
2886 | + | |
2887 | + if (vp9_state->dys_ref_frame_flag & VP9_ALT_REF) { | |
2888 | + obj_surface = vp9_state->alt_ref_obj; | |
2889 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
2890 | + | |
2891 | + input_surface = obj_surface; | |
2892 | + output_surface = vp9_priv_surface->dys_surface_obj; | |
2893 | + | |
2894 | + dys_kernel_param.input_width = vp9_priv_surface->frame_width; | |
2895 | + dys_kernel_param.input_height = vp9_priv_surface->frame_height; | |
2896 | + dys_kernel_param.input_surface = input_surface; | |
2897 | + | |
2898 | + dys_kernel_param.output_width = pic_param->frame_width_dst; | |
2899 | + dys_kernel_param.output_height = pic_param->frame_height_dst; | |
2900 | + dys_kernel_param.output_surface = output_surface; | |
2901 | + | |
2902 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2903 | + encoder_context, | |
2904 | + &dys_kernel_param); | |
2905 | + | |
2906 | + if (vp9_state->hme_enabled) { | |
2907 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16); | |
2908 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16); | |
2909 | + dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj; | |
2910 | + | |
2911 | + dys_kernel_param.output_width = vp9_state->frame_width_4x; | |
2912 | + dys_kernel_param.output_height = vp9_state->frame_height_4x; | |
2913 | + dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj; | |
2914 | + | |
2915 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2916 | + encoder_context, | |
2917 | + &dys_kernel_param); | |
2918 | + | |
2919 | + /* Does it really need to do the 16x HME if the | |
2920 | + * resolution is different? | |
2921 | + * Maybe it should be restricted | |
2922 | + */ | |
2923 | + if (vp9_state->b16xme_enabled) { | |
2924 | + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16); | |
2925 | + dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16); | |
2926 | + dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj; | |
2927 | + | |
2928 | + dys_kernel_param.output_width = vp9_state->frame_width_16x; | |
2929 | + dys_kernel_param.output_height = vp9_state->frame_height_16x; | |
2930 | + dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj; | |
2931 | + | |
2932 | + gen9_vp9_dys_kernel(ctx, encode_state, | |
2933 | + encoder_context, | |
2934 | + &dys_kernel_param); | |
2935 | + } | |
2936 | + } | |
2937 | + } | |
2938 | + | |
2939 | + return VA_STATUS_SUCCESS; | |
2940 | +} | |
2941 | + | |
2942 | +static void | |
2943 | +gen9_vp9_set_curbe_mbenc(VADriverContextP ctx, | |
2944 | + struct encode_state *encode_state, | |
2945 | + struct i965_gpe_context *gpe_context, | |
2946 | + struct intel_encoder_context *encoder_context, | |
2947 | + struct gen9_vp9_mbenc_curbe_param *curbe_param) | |
2948 | +{ | |
2949 | + struct gen9_vp9_state *vp9_state; | |
2950 | + VAEncMiscParameterTypeVP9PerSegmantParam *seg_param, tmp_seg_param; | |
2951 | + vp9_mbenc_curbe_data *curbe_cmd; | |
2952 | + VAEncPictureParameterBufferVP9 *pic_param; | |
2953 | + int i, segment_count; | |
2954 | + int seg_qindex; | |
2955 | + struct object_surface *obj_surface; | |
2956 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
2957 | + | |
2958 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
2959 | + | |
2960 | + if (!vp9_state || !vp9_state->pic_param) | |
2961 | + return; | |
2962 | + | |
2963 | + pic_param = curbe_param->ppic_param; | |
2964 | + seg_param = curbe_param->psegment_param; | |
2965 | + | |
2966 | + if (!seg_param) { | |
2967 | + memset(&tmp_seg_param, 0, sizeof(tmp_seg_param)); | |
2968 | + seg_param = &tmp_seg_param; | |
2969 | + } | |
2970 | + | |
2971 | + curbe_cmd = gen8p_gpe_context_map_curbe(gpe_context); | |
2972 | + memset(curbe_cmd, 0, sizeof(vp9_mbenc_curbe_data)); | |
2973 | + | |
2974 | + if (vp9_state->dys_in_use) | |
2975 | + { | |
2976 | + curbe_cmd->dw0.frame_width = pic_param->frame_width_dst; | |
2977 | + curbe_cmd->dw0.frame_height = pic_param->frame_height_dst; | |
2978 | + } | |
2979 | + else | |
2980 | + { | |
2981 | + curbe_cmd->dw0.frame_width = pic_param->frame_width_src; | |
2982 | + curbe_cmd->dw0.frame_height = pic_param->frame_height_src; | |
2983 | + } | |
2984 | + | |
2985 | + curbe_cmd->dw1.frame_type = curbe_param->picture_coding_type; | |
2986 | + | |
2987 | + curbe_cmd->dw1.segmentation_enable = pic_param->pic_flags.bits.segmentation_enabled; | |
2988 | + if (pic_param->pic_flags.bits.segmentation_enabled) | |
2989 | + segment_count = 8; | |
2990 | + else | |
2991 | + segment_count = 1; | |
2992 | + | |
2993 | + curbe_cmd->dw1.ref_frame_flags = curbe_param->ref_frame_flag; | |
2994 | + | |
2995 | + //right now set them to normal settings | |
2996 | + if (curbe_param->picture_coding_type) | |
2997 | + { | |
2998 | + switch (vp9_state->target_usage) | |
2999 | + { | |
3000 | + case INTEL_ENC_VP9_TU_QUALITY: | |
3001 | + curbe_cmd->dw1.min_16for32_check = 0x00; | |
3002 | + curbe_cmd->dw2.multi_pred = 0x02; | |
3003 | + curbe_cmd->dw2.len_sp = 0x39; | |
3004 | + curbe_cmd->dw2.search_x = 0x30; | |
3005 | + curbe_cmd->dw2.search_y = 0x28; | |
3006 | + curbe_cmd->dw3.min_ref_for32_check = 0x01; | |
3007 | + curbe_cmd->dw4.skip16_threshold = 0x000A; | |
3008 | + curbe_cmd->dw4.disable_mr_threshold = 0x000C; | |
3009 | + | |
3010 | + memcpy(&curbe_cmd->dw16, | |
3011 | + vp9_diamond_ime_search_path_delta, | |
3012 | + 14 * sizeof(unsigned int)); | |
3013 | + break; | |
3014 | + case INTEL_ENC_VP9_TU_PERFORMANCE: | |
3015 | + curbe_cmd->dw1.min_16for32_check = 0x02; | |
3016 | + curbe_cmd->dw2.multi_pred = 0x00; | |
3017 | + curbe_cmd->dw2.len_sp = 0x10; | |
3018 | + curbe_cmd->dw2.search_x = 0x20; | |
3019 | + curbe_cmd->dw2.search_y = 0x20; | |
3020 | + curbe_cmd->dw3.min_ref_for32_check = 0x03; | |
3021 | + curbe_cmd->dw4.skip16_threshold = 0x0014; | |
3022 | + curbe_cmd->dw4.disable_mr_threshold = 0x0016; | |
3023 | + | |
3024 | + memcpy(&curbe_cmd->dw16, | |
3025 | + vp9_fullspiral_ime_search_path_delta, | |
3026 | + 14 * sizeof(unsigned int)); | |
3027 | + | |
3028 | + break; | |
3029 | + default: // normal settings | |
3030 | + curbe_cmd->dw1.min_16for32_check = 0x01; | |
3031 | + curbe_cmd->dw2.multi_pred = 0x00; | |
3032 | + curbe_cmd->dw2.len_sp = 0x19; | |
3033 | + curbe_cmd->dw2.search_x = 0x30; | |
3034 | + curbe_cmd->dw2.search_y = 0x28; | |
3035 | + curbe_cmd->dw3.min_ref_for32_check = 0x02; | |
3036 | + curbe_cmd->dw4.skip16_threshold = 0x000F; | |
3037 | + curbe_cmd->dw4.disable_mr_threshold = 0x0011; | |
3038 | + | |
3039 | + memcpy(&curbe_cmd->dw16, | |
3040 | + vp9_diamond_ime_search_path_delta, | |
3041 | + 14 * sizeof(unsigned int)); | |
3042 | + break; | |
3043 | + } | |
3044 | + | |
3045 | + curbe_cmd->dw3.hme_enabled = curbe_param->hme_enabled; | |
3046 | + curbe_cmd->dw3.multi_ref_qp_check = curbe_param->multi_ref_qp_check; | |
3047 | + // co-located predictor must be disabled when dynamic scaling is enabled | |
3048 | + curbe_cmd->dw3.disable_temp_pred = vp9_state->dys_in_use; | |
3049 | + } | |
3050 | + | |
3051 | + curbe_cmd->dw5.inter_round = 0; | |
3052 | + curbe_cmd->dw5.intra_round = 4; | |
3053 | + curbe_cmd->dw5.frame_qpindex = pic_param->luma_ac_qindex; | |
3054 | + | |
3055 | + for (i = 0; i < segment_count; i++) | |
3056 | + { | |
3057 | + seg_qindex = pic_param->luma_ac_qindex + pic_param->luma_dc_qindex_delta | |
3058 | + + seg_param->seg_data[i].segment_qindex_delta; | |
3059 | + | |
3060 | + seg_qindex = CLAMP(0, 255, seg_qindex); | |
3061 | + | |
3062 | + if (curbe_param->picture_coding_type) | |
3063 | + memcpy(&curbe_cmd->segments[i], | |
3064 | + &intel_vp9_costlut_p[seg_qindex * 16], | |
3065 | + 16 * sizeof(unsigned int)); | |
3066 | + else | |
3067 | + memcpy(&curbe_cmd->segments[i], | |
3068 | + &intel_vp9_costlut_key[seg_qindex * 16], | |
3069 | + 16 * sizeof(unsigned int)); | |
3070 | + } | |
3071 | + | |
3072 | + if (curbe_param->picture_coding_type) | |
3073 | + { | |
3074 | + if (curbe_cmd->dw3.multi_ref_qp_check) | |
3075 | + { | |
3076 | + if (curbe_param->ref_frame_flag & 0x01) | |
3077 | + { | |
3078 | + obj_surface = curbe_param->last_ref_obj; | |
3079 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3080 | + curbe_cmd->dw8.last_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value]; | |
3081 | + } | |
3082 | + | |
3083 | + if (curbe_param->ref_frame_flag & 0x02) | |
3084 | + { | |
3085 | + obj_surface = curbe_param->golden_ref_obj; | |
3086 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3087 | + curbe_cmd->dw8.golden_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value]; | |
3088 | + } | |
3089 | + | |
3090 | + if (curbe_param->ref_frame_flag & 0x04) | |
3091 | + { | |
3092 | + obj_surface = curbe_param->alt_ref_obj; | |
3093 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3094 | + curbe_cmd->dw9.alt_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value]; | |
3095 | + } | |
3096 | + } | |
3097 | + } | |
3098 | + curbe_cmd->dw160.enc_curr_y_surf_bti = VP9_BTI_MBENC_CURR_Y_G9; | |
3099 | + curbe_cmd->dw162.enc_curr_nv12_surf_bti = VP9_BTI_MBENC_CURR_NV12_G9; | |
3100 | + curbe_cmd->dw166.segmentation_map_bti = VP9_BTI_MBENC_SEGMENTATION_MAP_G9; | |
3101 | + curbe_cmd->dw172.mode_decision_bti = VP9_BTI_MBENC_MODE_DECISION_G9; | |
3102 | + curbe_cmd->dw167.tx_curbe_bti = VP9_BTI_MBENC_TX_CURBE_G9; | |
3103 | + curbe_cmd->dw168.hme_mvdata_bti = VP9_BTI_MBENC_HME_MV_DATA_G9; | |
3104 | + curbe_cmd->dw169.hme_distortion_bti = VP9_BTI_MBENC_HME_DISTORTION_G9; | |
3105 | + curbe_cmd->dw171.mode_decision_prev_bti = VP9_BTI_MBENC_MODE_DECISION_PREV_G9; | |
3106 | + curbe_cmd->dw172.mode_decision_bti = VP9_BTI_MBENC_MODE_DECISION_G9; | |
3107 | + curbe_cmd->dw173.output_16x16_inter_modes_bti = VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9; | |
3108 | + curbe_cmd->dw174.cu_record_bti = VP9_BTI_MBENC_CU_RECORDS_G9; | |
3109 | + curbe_cmd->dw175.pak_data_bti = VP9_BTI_MBENC_PAK_DATA_G9; | |
3110 | + | |
3111 | + gen8p_gpe_context_unmap_curbe(gpe_context); | |
3112 | + return; | |
3113 | +} | |
3114 | + | |
3115 | +static void | |
3116 | +gen9_vp9_send_mbenc_surface(VADriverContextP ctx, | |
3117 | + struct encode_state *encode_state, | |
3118 | + struct i965_gpe_context *gpe_context, | |
3119 | + struct intel_encoder_context *encoder_context, | |
3120 | + struct gen9_vp9_mbenc_surface_param *mbenc_param) | |
3121 | +{ | |
3122 | + struct gen9_vp9_state *vp9_state; | |
3123 | + unsigned int res_size; | |
3124 | + unsigned int frame_width_in_sb, frame_height_in_sb; | |
3125 | + struct object_surface *obj_surface, *tmp_input; | |
3126 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
3127 | + int media_function; | |
3128 | + | |
3129 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
3130 | + | |
3131 | + if (!vp9_state || !vp9_state->pic_param) | |
3132 | + return; | |
3133 | + | |
3134 | + frame_width_in_sb = ALIGN(mbenc_param->frame_width, 64) / 64; | |
3135 | + frame_height_in_sb = ALIGN(mbenc_param->frame_height, 64) / 64; | |
3136 | + media_function = mbenc_param->media_state_type; | |
3137 | + | |
3138 | + switch (media_function) | |
3139 | + { | |
3140 | + case VP9_MEDIA_STATE_MBENC_I_32x32: | |
3141 | + { | |
3142 | + obj_surface = mbenc_param->curr_frame_obj; | |
3143 | + | |
3144 | + gen9_add_2d_gpe_surface(ctx, | |
3145 | + gpe_context, | |
3146 | + obj_surface, | |
3147 | + 0, | |
3148 | + 1, | |
3149 | + I965_SURFACEFORMAT_R8_UNORM, | |
3150 | + VP9_BTI_MBENC_CURR_Y_G9); | |
3151 | + | |
3152 | + gen9_add_2d_gpe_surface(ctx, | |
3153 | + gpe_context, | |
3154 | + obj_surface, | |
3155 | + 1, | |
3156 | + 1, | |
3157 | + I965_SURFACEFORMAT_R16_UINT, | |
3158 | + VP9_BTI_MBENC_CURR_UV_G9); | |
3159 | + | |
3160 | + | |
3161 | + if (mbenc_param->segmentation_enabled) | |
3162 | + { | |
3163 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
3164 | + gpe_context, | |
3165 | + mbenc_param->pres_segmentation_map, | |
3166 | + 1, | |
3167 | + I965_SURFACEFORMAT_R8_UNORM, | |
3168 | + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); | |
3169 | + | |
3170 | + } | |
3171 | + | |
3172 | + res_size = 16 * mbenc_param->frame_width_in_mb * | |
3173 | + mbenc_param->frame_height_in_mb * sizeof(unsigned int); | |
3174 | + gen9_add_buffer_gpe_surface(ctx, | |
3175 | + gpe_context, | |
3176 | + mbenc_param->pres_mode_decision, | |
3177 | + 0, | |
3178 | + res_size / 4, | |
3179 | + 0, | |
3180 | + VP9_BTI_MBENC_MODE_DECISION_G9); | |
3181 | + | |
3182 | + break; | |
3183 | + } | |
3184 | + case VP9_MEDIA_STATE_MBENC_I_16x16: | |
3185 | + { | |
3186 | + obj_surface = mbenc_param->curr_frame_obj; | |
3187 | + | |
3188 | + gen9_add_2d_gpe_surface(ctx, | |
3189 | + gpe_context, | |
3190 | + obj_surface, | |
3191 | + 0, | |
3192 | + 1, | |
3193 | + I965_SURFACEFORMAT_R8_UNORM, | |
3194 | + VP9_BTI_MBENC_CURR_Y_G9); | |
3195 | + | |
3196 | + gen9_add_2d_gpe_surface(ctx, | |
3197 | + gpe_context, | |
3198 | + obj_surface, | |
3199 | + 1, | |
3200 | + 1, | |
3201 | + I965_SURFACEFORMAT_R16_UINT, | |
3202 | + VP9_BTI_MBENC_CURR_UV_G9); | |
3203 | + | |
3204 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3205 | + obj_surface, | |
3206 | + VP9_BTI_MBENC_CURR_NV12_G9); | |
3207 | + | |
3208 | + if (mbenc_param->segmentation_enabled) | |
3209 | + { | |
3210 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
3211 | + gpe_context, | |
3212 | + mbenc_param->pres_segmentation_map, | |
3213 | + 1, | |
3214 | + I965_SURFACEFORMAT_R8_UNORM, | |
3215 | + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); | |
3216 | + | |
3217 | + } | |
3218 | + | |
3219 | + res_size = 16 * mbenc_param->frame_width_in_mb * | |
3220 | + mbenc_param->frame_height_in_mb * sizeof(unsigned int); | |
3221 | + gen9_add_buffer_gpe_surface(ctx, | |
3222 | + gpe_context, | |
3223 | + mbenc_param->pres_mode_decision, | |
3224 | + 0, | |
3225 | + res_size / 4, | |
3226 | + 0, | |
3227 | + VP9_BTI_MBENC_MODE_DECISION_G9); | |
3228 | + | |
3229 | + res_size = 160; | |
3230 | + | |
3231 | + gen9_add_dri_buffer_gpe_surface(ctx, | |
3232 | + gpe_context, | |
3233 | + mbenc_param->gpe_context_tx->dynamic_state.bo, | |
3234 | + 0, | |
3235 | + ALIGN(res_size, 64), | |
3236 | + mbenc_param->gpe_context_tx->curbe_offset, | |
3237 | + VP9_BTI_MBENC_TX_CURBE_G9); | |
3238 | + | |
3239 | + break; | |
3240 | + } | |
3241 | + case VP9_MEDIA_STATE_MBENC_P: | |
3242 | + { | |
3243 | + obj_surface = mbenc_param->curr_frame_obj; | |
3244 | + | |
3245 | + gen9_add_2d_gpe_surface(ctx, | |
3246 | + gpe_context, | |
3247 | + obj_surface, | |
3248 | + 0, | |
3249 | + 1, | |
3250 | + I965_SURFACEFORMAT_R8_UNORM, | |
3251 | + VP9_BTI_MBENC_CURR_Y_G9); | |
3252 | + | |
3253 | + gen9_add_2d_gpe_surface(ctx, gpe_context, | |
3254 | + obj_surface, | |
3255 | + 1, | |
3256 | + 1, | |
3257 | + I965_SURFACEFORMAT_R16_UINT, | |
3258 | + VP9_BTI_MBENC_CURR_UV_G9); | |
3259 | + | |
3260 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3261 | + obj_surface, | |
3262 | + VP9_BTI_MBENC_CURR_NV12_G9); | |
3263 | + | |
3264 | + if (mbenc_param->last_ref_obj) | |
3265 | + { | |
3266 | + obj_surface = mbenc_param->last_ref_obj; | |
3267 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3268 | + | |
3269 | + if (vp9_state->dys_in_use && | |
3270 | + ((vp9_priv_surface->frame_width != vp9_state->frame_width) || | |
3271 | + (vp9_priv_surface->frame_height != vp9_state->frame_height))) | |
3272 | + tmp_input = vp9_priv_surface->dys_surface_obj; | |
3273 | + else | |
3274 | + tmp_input = obj_surface; | |
3275 | + | |
3276 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3277 | + tmp_input, | |
3278 | + VP9_BTI_MBENC_LAST_NV12_G9); | |
3279 | + | |
3280 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3281 | + tmp_input, | |
3282 | + VP9_BTI_MBENC_LAST_NV12_G9 + 1); | |
3283 | + | |
3284 | + } | |
3285 | + | |
3286 | + if (mbenc_param->golden_ref_obj) | |
3287 | + { | |
3288 | + obj_surface = mbenc_param->golden_ref_obj; | |
3289 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3290 | + | |
3291 | + if (vp9_state->dys_in_use && | |
3292 | + ((vp9_priv_surface->frame_width != vp9_state->frame_width) || | |
3293 | + (vp9_priv_surface->frame_height != vp9_state->frame_height))) | |
3294 | + tmp_input = vp9_priv_surface->dys_surface_obj; | |
3295 | + else | |
3296 | + tmp_input = obj_surface; | |
3297 | + | |
3298 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3299 | + tmp_input, | |
3300 | + VP9_BTI_MBENC_GOLD_NV12_G9); | |
3301 | + | |
3302 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3303 | + tmp_input, | |
3304 | + VP9_BTI_MBENC_GOLD_NV12_G9 + 1); | |
3305 | + | |
3306 | + } | |
3307 | + | |
3308 | + if (mbenc_param->alt_ref_obj) | |
3309 | + { | |
3310 | + obj_surface = mbenc_param->alt_ref_obj; | |
3311 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3312 | + | |
3313 | + if (vp9_state->dys_in_use && | |
3314 | + ((vp9_priv_surface->frame_width != vp9_state->frame_width) || | |
3315 | + (vp9_priv_surface->frame_height != vp9_state->frame_height))) | |
3316 | + tmp_input = vp9_priv_surface->dys_surface_obj; | |
3317 | + else | |
3318 | + tmp_input = obj_surface; | |
3319 | + | |
3320 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3321 | + tmp_input, | |
3322 | + VP9_BTI_MBENC_ALTREF_NV12_G9); | |
3323 | + | |
3324 | + gen9_add_adv_gpe_surface(ctx, gpe_context, | |
3325 | + tmp_input, | |
3326 | + VP9_BTI_MBENC_ALTREF_NV12_G9 + 1); | |
3327 | + | |
3328 | + } | |
3329 | + | |
3330 | + if (mbenc_param->hme_enabled) | |
3331 | + { | |
3332 | + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, | |
3333 | + mbenc_param->ps4x_memv_data_buffer, | |
3334 | + 1, | |
3335 | + I965_SURFACEFORMAT_R8_UNORM, | |
3336 | + VP9_BTI_MBENC_HME_MV_DATA_G9); | |
3337 | + | |
3338 | + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, | |
3339 | + mbenc_param->ps4x_memv_distortion_buffer, | |
3340 | + 1, | |
3341 | + I965_SURFACEFORMAT_R8_UNORM, | |
3342 | + VP9_BTI_MBENC_HME_DISTORTION_G9); | |
3343 | + } | |
3344 | + | |
3345 | + if (mbenc_param->segmentation_enabled) | |
3346 | + { | |
3347 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
3348 | + gpe_context, | |
3349 | + mbenc_param->pres_segmentation_map, | |
3350 | + 1, | |
3351 | + I965_SURFACEFORMAT_R8_UNORM, | |
3352 | + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); | |
3353 | + | |
3354 | + } | |
3355 | + | |
3356 | + res_size = 16 * mbenc_param->frame_width_in_mb * | |
3357 | + mbenc_param->frame_height_in_mb * sizeof(unsigned int); | |
3358 | + gen9_add_buffer_gpe_surface(ctx, | |
3359 | + gpe_context, | |
3360 | + mbenc_param->pres_mode_decision_prev, | |
3361 | + 0, | |
3362 | + res_size / 4, | |
3363 | + 0, | |
3364 | + VP9_BTI_MBENC_MODE_DECISION_PREV_G9); | |
3365 | + | |
3366 | + gen9_add_buffer_gpe_surface(ctx, | |
3367 | + gpe_context, | |
3368 | + mbenc_param->pres_mode_decision, | |
3369 | + 0, | |
3370 | + res_size / 4, | |
3371 | + 0, | |
3372 | + VP9_BTI_MBENC_MODE_DECISION_G9); | |
3373 | + | |
3374 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
3375 | + gpe_context, | |
3376 | + mbenc_param->pres_output_16x16_inter_modes, | |
3377 | + 1, | |
3378 | + I965_SURFACEFORMAT_R8_UNORM, | |
3379 | + VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9); | |
3380 | + | |
3381 | + res_size = 160; | |
3382 | + | |
3383 | + gen9_add_dri_buffer_gpe_surface(ctx, | |
3384 | + gpe_context, | |
3385 | + mbenc_param->gpe_context_tx->dynamic_state.bo, | |
3386 | + 0, | |
3387 | + ALIGN(res_size, 64), | |
3388 | + mbenc_param->gpe_context_tx->curbe_offset, | |
3389 | + VP9_BTI_MBENC_TX_CURBE_G9); | |
3390 | + | |
3391 | + | |
3392 | + break; | |
3393 | + } | |
3394 | + case VP9_MEDIA_STATE_MBENC_TX: | |
3395 | + { | |
3396 | + obj_surface = mbenc_param->curr_frame_obj; | |
3397 | + | |
3398 | + gen9_add_2d_gpe_surface(ctx, | |
3399 | + gpe_context, | |
3400 | + obj_surface, | |
3401 | + 0, | |
3402 | + 1, | |
3403 | + I965_SURFACEFORMAT_R8_UNORM, | |
3404 | + VP9_BTI_MBENC_CURR_Y_G9); | |
3405 | + | |
3406 | + gen9_add_2d_gpe_surface(ctx, | |
3407 | + gpe_context, | |
3408 | + obj_surface, | |
3409 | + 1, | |
3410 | + 1, | |
3411 | + I965_SURFACEFORMAT_R16_UINT, | |
3412 | + VP9_BTI_MBENC_CURR_UV_G9); | |
3413 | + | |
3414 | + if (mbenc_param->segmentation_enabled) | |
3415 | + { | |
3416 | + gen9_add_buffer_2d_gpe_surface(ctx, | |
3417 | + gpe_context, | |
3418 | + mbenc_param->pres_segmentation_map, | |
3419 | + 1, | |
3420 | + I965_SURFACEFORMAT_R8_UNORM, | |
3421 | + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); | |
3422 | + | |
3423 | + } | |
3424 | + | |
3425 | + res_size = 16 * mbenc_param->frame_width_in_mb * | |
3426 | + mbenc_param->frame_height_in_mb * sizeof(unsigned int); | |
3427 | + gen9_add_buffer_gpe_surface(ctx, | |
3428 | + gpe_context, | |
3429 | + mbenc_param->pres_mode_decision, | |
3430 | + 0, | |
3431 | + res_size / 4, | |
3432 | + 0, | |
3433 | + VP9_BTI_MBENC_MODE_DECISION_G9); | |
3434 | + | |
3435 | + res_size = frame_width_in_sb * frame_height_in_sb * 4 * sizeof(unsigned int); | |
3436 | + gen9_add_buffer_gpe_surface(ctx, | |
3437 | + gpe_context, | |
3438 | + mbenc_param->pres_mb_code_surface, | |
3439 | + 0, | |
3440 | + res_size / 4, | |
3441 | + 0, | |
3442 | + VP9_BTI_MBENC_PAK_DATA_G9); | |
3443 | + | |
3444 | + // CU Record | |
3445 | + res_size = frame_width_in_sb * frame_height_in_sb * | |
3446 | + 64 * 16 * sizeof(unsigned int); | |
3447 | + | |
3448 | + gen9_add_buffer_gpe_surface(ctx, | |
3449 | + gpe_context, | |
3450 | + mbenc_param->pres_mb_code_surface, | |
3451 | + 0, | |
3452 | + res_size / 4, | |
3453 | + mbenc_param->mb_data_offset, | |
3454 | + VP9_BTI_MBENC_CU_RECORDS_G9); | |
3455 | + } | |
3456 | + default: | |
3457 | + break; | |
3458 | + } | |
3459 | + | |
3460 | + return; | |
3461 | +} | |
3462 | + | |
3463 | +static VAStatus | |
3464 | +gen9_vp9_mbenc_kernel(VADriverContextP ctx, | |
3465 | + struct encode_state *encode_state, | |
3466 | + struct intel_encoder_context *encoder_context, | |
3467 | + int media_function) | |
3468 | +{ | |
3469 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
3470 | + struct i965_gpe_context *gpe_context, *tx_gpe_context; | |
3471 | + struct gpe_media_object_walker_parameter media_object_walker_param; | |
3472 | + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; | |
3473 | + unsigned int resolution_x, resolution_y; | |
3474 | + struct gen9_vp9_state *vp9_state; | |
3475 | + VAEncPictureParameterBufferVP9 *pic_param; | |
3476 | + struct gen9_vp9_mbenc_curbe_param curbe_param; | |
3477 | + struct gen9_vp9_mbenc_surface_param surface_param; | |
3478 | + VAStatus va_status = VA_STATUS_SUCCESS; | |
3479 | + int mbenc_gpe_index = 0; | |
3480 | + struct object_surface *obj_surface; | |
3481 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
3482 | + | |
3483 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
3484 | + | |
3485 | + if (!vp9_state || !vp9_state->pic_param) | |
3486 | + return VA_STATUS_ERROR_ENCODING_ERROR; | |
3487 | + | |
3488 | + pic_param = vp9_state->pic_param; | |
3489 | + | |
3490 | + switch (media_function) | |
3491 | + { | |
3492 | + case VP9_MEDIA_STATE_MBENC_I_32x32: | |
3493 | + mbenc_gpe_index = VP9_MBENC_IDX_KEY_32x32; | |
3494 | + break; | |
3495 | + | |
3496 | + case VP9_MEDIA_STATE_MBENC_I_16x16: | |
3497 | + mbenc_gpe_index = VP9_MBENC_IDX_KEY_16x16; | |
3498 | + break; | |
3499 | + | |
3500 | + case VP9_MEDIA_STATE_MBENC_P: | |
3501 | + mbenc_gpe_index = VP9_MBENC_IDX_INTER; | |
3502 | + break; | |
3503 | + | |
3504 | + case VP9_MEDIA_STATE_MBENC_TX: | |
3505 | + mbenc_gpe_index = VP9_MBENC_IDX_TX; | |
3506 | + break; | |
3507 | + | |
3508 | + default: | |
3509 | + va_status = VA_STATUS_ERROR_OPERATION_FAILED; | |
3510 | + return va_status; | |
3511 | + } | |
3512 | + | |
3513 | + gpe_context = &(vme_context->mbenc_context.gpe_contexts[mbenc_gpe_index]); | |
3514 | + tx_gpe_context = &(vme_context->mbenc_context.gpe_contexts[VP9_MBENC_IDX_TX]); | |
3515 | + | |
3516 | + gen9_gpe_reset_binding_table(ctx, gpe_context); | |
3517 | + | |
3518 | + // Set curbe | |
3519 | + if (!vp9_state->mbenc_curbe_set_in_brc_update) | |
3520 | + { | |
3521 | + if(media_function == VP9_MEDIA_STATE_MBENC_I_32x32 || | |
3522 | + media_function == VP9_MEDIA_STATE_MBENC_P) | |
3523 | + { | |
3524 | + memset(&curbe_param, 0, sizeof(curbe_param)); | |
3525 | + curbe_param.ppic_param = vp9_state->pic_param; | |
3526 | + curbe_param.pseq_param = vp9_state->seq_param; | |
3527 | + curbe_param.psegment_param = vp9_state->segment_param; | |
3528 | + curbe_param.frame_width_in_mb = vp9_state->frame_width_in_mb; | |
3529 | + curbe_param.frame_height_in_mb = vp9_state->frame_height_in_mb; | |
3530 | + curbe_param.last_ref_obj = vp9_state->last_ref_obj; | |
3531 | + curbe_param.golden_ref_obj = vp9_state->golden_ref_obj; | |
3532 | + curbe_param.alt_ref_obj = vp9_state->alt_ref_obj; | |
3533 | + curbe_param.hme_enabled = vp9_state->hme_enabled; | |
3534 | + curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; | |
3535 | + curbe_param.picture_coding_type = vp9_state->picture_coding_type; | |
3536 | + curbe_param.media_state_type = media_function; | |
3537 | + curbe_param.mbenc_curbe_set_in_brc_update = vp9_state->mbenc_curbe_set_in_brc_update; | |
3538 | + | |
3539 | + vme_context->pfn_set_curbe_mbenc(ctx, | |
3540 | + encode_state, | |
3541 | + gpe_context, | |
3542 | + encoder_context, | |
3543 | + &curbe_param); | |
3544 | + } | |
3545 | + } | |
3546 | + | |
3547 | + memset(&surface_param, 0, sizeof(surface_param)); | |
3548 | + surface_param.media_state_type = media_function; | |
3549 | + surface_param.picture_coding_type = vp9_state->picture_coding_type; | |
3550 | + surface_param.frame_width = vp9_state->frame_width; | |
3551 | + surface_param.frame_height = vp9_state->frame_height; | |
3552 | + surface_param.frame_width_in_mb = vp9_state->frame_width_in_mb; | |
3553 | + surface_param.frame_height_in_mb = vp9_state->frame_height_in_mb; | |
3554 | + surface_param.hme_enabled = vp9_state->hme_enabled; | |
3555 | + surface_param.segmentation_enabled = pic_param->pic_flags.bits.segmentation_enabled; | |
3556 | + surface_param.pres_segmentation_map = &vme_context->mb_segment_map_surface; | |
3557 | + surface_param.ps4x_memv_data_buffer = &vme_context->s4x_memv_data_buffer; | |
3558 | + surface_param.ps4x_memv_distortion_buffer = &vme_context->s4x_memv_distortion_buffer; | |
3559 | + surface_param.pres_mode_decision = | |
3560 | + &vme_context->res_mode_decision[vp9_state->curr_mode_decision_index]; | |
3561 | + surface_param.pres_mode_decision_prev = | |
3562 | + &vme_context->res_mode_decision[!vp9_state->curr_mode_decision_index]; | |
3563 | + surface_param.pres_output_16x16_inter_modes = &vme_context->res_output_16x16_inter_modes; | |
3564 | + surface_param.pres_mbenc_curbe_buffer = NULL; | |
3565 | + surface_param.last_ref_obj = vp9_state->last_ref_obj; | |
3566 | + surface_param.golden_ref_obj = vp9_state->golden_ref_obj; | |
3567 | + surface_param.alt_ref_obj = vp9_state->alt_ref_obj; | |
3568 | + surface_param.pres_mb_code_surface = &vme_context->res_mb_code_surface; | |
3569 | + surface_param.gpe_context_tx = tx_gpe_context; | |
3570 | + surface_param.mb_data_offset = vp9_state->mb_data_offset; | |
3571 | + | |
3572 | + obj_surface = encode_state->reconstructed_object; | |
3573 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3574 | + if (vp9_state->dys_in_use && | |
3575 | + (pic_param->frame_width_src != pic_param->frame_height_dst || | |
3576 | + pic_param->frame_height_src != pic_param->frame_height_dst)) { | |
3577 | + obj_surface = vp9_priv_surface->dys_surface_obj; | |
3578 | + } else | |
3579 | + obj_surface = encode_state->input_yuv_object; | |
3580 | + | |
3581 | + surface_param.curr_frame_obj = obj_surface; | |
3582 | + | |
3583 | + vme_context->pfn_send_mbenc_surface(ctx, | |
3584 | + encode_state, | |
3585 | + gpe_context, | |
3586 | + encoder_context, | |
3587 | + &surface_param); | |
3588 | + | |
3589 | + if (media_function == VP9_MEDIA_STATE_MBENC_I_32x32) { | |
3590 | + resolution_x = ALIGN(vp9_state->frame_width, 32) / 32; | |
3591 | + resolution_y = ALIGN(vp9_state->frame_height, 32) / 32; | |
3592 | + } else { | |
3593 | + resolution_x = ALIGN(vp9_state->frame_width, 16) / 16; | |
3594 | + resolution_y = ALIGN(vp9_state->frame_height, 16) / 16; | |
3595 | + } | |
3596 | + | |
3597 | + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); | |
3598 | + kernel_walker_param.resolution_x = resolution_x; | |
3599 | + kernel_walker_param.resolution_y = resolution_y; | |
3600 | + | |
3601 | + if (media_function == VP9_MEDIA_STATE_MBENC_P || | |
3602 | + media_function == VP9_MEDIA_STATE_MBENC_I_16x16) { | |
3603 | + kernel_walker_param.use_scoreboard = 1; | |
3604 | + kernel_walker_param.no_dependency = 0; | |
3605 | + kernel_walker_param.walker_degree = VP9_45Z_DEGREE; | |
3606 | + } else { | |
3607 | + kernel_walker_param.use_scoreboard = 0; | |
3608 | + kernel_walker_param.no_dependency = 1; | |
3609 | + } | |
3610 | + | |
3611 | + gen8_gpe_setup_interface_data(ctx, gpe_context); | |
3612 | + | |
3613 | + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); | |
3614 | + | |
3615 | + gen9_run_kernel_media_object_walker(ctx, encoder_context, | |
3616 | + gpe_context, | |
3617 | + media_function, | |
3618 | + &media_object_walker_param); | |
3619 | + return va_status; | |
3620 | +} | |
3621 | + | |
3622 | +static void | |
3623 | +gen9_init_gpe_context_vp9(struct i965_gpe_context *gpe_context, | |
3624 | + struct vp9_encoder_kernel_parameter *kernel_param) | |
3625 | +{ | |
3626 | + gpe_context->curbe.length = kernel_param->curbe_size; // in bytes | |
3627 | + | |
3628 | + gpe_context->curbe_size = ALIGN(kernel_param->curbe_size, 64); | |
3629 | + | |
3630 | + gpe_context->sampler_size = 0; | |
3631 | + if (kernel_param->sampler_size) { | |
3632 | + gpe_context->sampler_size = ALIGN(kernel_param->sampler_size, 64); | |
3633 | + } | |
3634 | + | |
3635 | + gpe_context->idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64); // 8 dws, 1 register | |
3636 | + gpe_context->idrt.max_entries = NUM_KERNELS_PER_GPE_CONTEXT; | |
3637 | + gpe_context->idrt_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * | |
3638 | + NUM_KERNELS_PER_GPE_CONTEXT; | |
3639 | + | |
3640 | + gpe_context->surface_state_binding_table.max_entries = MAX_VP9_ENCODER_SURFACES; | |
3641 | + gpe_context->surface_state_binding_table.binding_table_offset = 0; | |
3642 | + gpe_context->surface_state_binding_table.surface_state_offset = ALIGN(MAX_VP9_ENCODER_SURFACES * 4, 64); | |
3643 | + gpe_context->surface_state_binding_table.length = ALIGN(MAX_VP9_ENCODER_SURFACES * 4, 64) + ALIGN(MAX_VP9_ENCODER_SURFACES * SURFACE_STATE_PADDED_SIZE_GEN9, 64); | |
3644 | + | |
3645 | + gpe_context->vfe_state.max_num_threads = 112; // 16 EU * 7 threads | |
3646 | + gpe_context->vfe_state.curbe_allocation_size = MAX(1, ALIGN(gpe_context->curbe.length, 32) >> 5); // in registers | |
3647 | + gpe_context->vfe_state.urb_entry_size = MAX(1, ALIGN(kernel_param->inline_data_size, 32) >> 5); // in registers | |
3648 | + gpe_context->vfe_state.num_urb_entries = (MAX_URB_SIZE - | |
3649 | + gpe_context->vfe_state.curbe_allocation_size - | |
3650 | + ((gpe_context->idrt.entry_size >> 5) * | |
3651 | + gpe_context->idrt.max_entries)) / gpe_context->vfe_state.urb_entry_size; | |
3652 | + gpe_context->vfe_state.num_urb_entries = CLAMP(1, 127, gpe_context->vfe_state.num_urb_entries); | |
3653 | + gpe_context->vfe_state.gpgpu_mode = 0; | |
3654 | +} | |
3655 | + | |
3656 | +static void | |
3657 | +gen9_init_vfe_scoreboard_vp9(struct i965_gpe_context *gpe_context, | |
3658 | + struct vp9_encoder_scoreboard_parameter *scoreboard_param) | |
3659 | +{ | |
3660 | + gpe_context->vfe_desc5.scoreboard0.mask = scoreboard_param->mask; | |
3661 | + gpe_context->vfe_desc5.scoreboard0.type = scoreboard_param->type; | |
3662 | + gpe_context->vfe_desc5.scoreboard0.enable = scoreboard_param->enable; | |
3663 | + | |
3664 | + if (scoreboard_param->walkpat_flag) { | |
3665 | + gpe_context->vfe_desc5.scoreboard0.mask = 0x0F; | |
3666 | + gpe_context->vfe_desc5.scoreboard0.type = 1; | |
3667 | + | |
3668 | + gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0x0; | |
3669 | + gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0xF; | |
3670 | + | |
3671 | + gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0; | |
3672 | + gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xE; | |
3673 | + | |
3674 | + gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0xF; | |
3675 | + gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0x3; | |
3676 | + | |
3677 | + gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF; | |
3678 | + gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0x1; | |
3679 | + } else { | |
3680 | + // Scoreboard 0 | |
3681 | + gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0xF; | |
3682 | + gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0x0; | |
3683 | + | |
3684 | + // Scoreboard 1 | |
3685 | + gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0; | |
3686 | + gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xF; | |
3687 | + | |
3688 | + // Scoreboard 2 | |
3689 | + gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0x1; | |
3690 | + gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0xF; | |
3691 | + | |
3692 | + // Scoreboard 3 | |
3693 | + gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF; | |
3694 | + gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0xF; | |
3695 | + | |
3696 | + // Scoreboard 4 | |
3697 | + gpe_context->vfe_desc7.scoreboard2.delta_x4 = 0xF; | |
3698 | + gpe_context->vfe_desc7.scoreboard2.delta_y4 = 0x1; | |
3699 | + | |
3700 | + // Scoreboard 5 | |
3701 | + gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0x0; | |
3702 | + gpe_context->vfe_desc7.scoreboard2.delta_y5 = 0xE; | |
3703 | + | |
3704 | + // Scoreboard 6 | |
3705 | + gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0x1; | |
3706 | + gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE; | |
3707 | + | |
3708 | + // Scoreboard 7 | |
3709 | + gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0xF; | |
3710 | + gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE; | |
3711 | + } | |
3712 | +} | |
3713 | + | |
3714 | +#define VP9_MI_BLOCK_MASK 0x07 | |
3715 | +#define VP9_VME_REF_WIN 48 | |
3716 | + | |
3717 | +static VAStatus | |
3718 | +gen9_encode_vp9_check_parameter(VADriverContextP ctx, | |
3719 | + struct encode_state *encode_state, | |
3720 | + struct intel_encoder_context *encoder_context) | |
3721 | +{ | |
3722 | + struct i965_driver_data *i965 = i965_driver_data(ctx); | |
3723 | + struct gen9_vp9_state *vp9_state; | |
3724 | + VAEncPictureParameterBufferVP9 *pic_param; | |
3725 | + VAEncMiscParameterTypeVP9PerSegmantParam *seg_param; | |
3726 | + VAEncSequenceParameterBufferVP9 *seq_param; | |
3727 | + struct object_surface *obj_surface; | |
3728 | + struct object_buffer *obj_buffer; | |
3729 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
3730 | + | |
3731 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
3732 | + | |
3733 | + if (!encode_state->pic_param_ext || | |
3734 | + !encode_state->pic_param_ext->buffer) { | |
3735 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
3736 | + } | |
3737 | + pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer; | |
3738 | + | |
3739 | + if (pic_param->frame_width_src & VP9_MI_BLOCK_MASK || | |
3740 | + pic_param->frame_height_src & VP9_MI_BLOCK_MASK || | |
3741 | + pic_param->frame_width_dst & VP9_MI_BLOCK_MASK || | |
3742 | + pic_param->frame_height_dst & VP9_MI_BLOCK_MASK) | |
3743 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
3744 | + | |
3745 | + obj_buffer = BUFFER(pic_param->coded_buf); | |
3746 | + | |
3747 | + if (!obj_buffer || | |
3748 | + !obj_buffer->buffer_store || | |
3749 | + !obj_buffer->buffer_store->bo) | |
3750 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
3751 | + | |
3752 | + encode_state->coded_buf_object = obj_buffer; | |
3753 | + | |
3754 | + vp9_state->status_buffer.bo = obj_buffer->buffer_store->bo; | |
3755 | + | |
3756 | + encode_state->reconstructed_object = SURFACE(pic_param->reconstructed_frame); | |
3757 | + encode_state->input_yuv_object = SURFACE(encode_state->current_render_target); | |
3758 | + | |
3759 | + if (!encode_state->reconstructed_object || | |
3760 | + !encode_state->input_yuv_object) | |
3761 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
3762 | + | |
3763 | + vp9_state->curr_frame = pic_param->reconstructed_frame; | |
3764 | + vp9_state->ref_frame_flag = 0; | |
3765 | + if (pic_param->pic_flags.bits.frame_type == KEY_FRAME || | |
3766 | + pic_param->pic_flags.bits.intra_only) { | |
3767 | + /* this will be regarded as I-frame type */ | |
3768 | + vp9_state->picture_coding_type = 0; | |
3769 | + vp9_state->last_ref_obj = NULL; | |
3770 | + vp9_state->golden_ref_obj = NULL; | |
3771 | + vp9_state->alt_ref_obj = NULL; | |
3772 | + } else { | |
3773 | + vp9_state->picture_coding_type = 1; | |
3774 | + vp9_state->ref_frame_flag = pic_param->ref_flags.bits.ref_frame_ctrl_l0 | | |
3775 | + pic_param->ref_flags.bits.ref_frame_ctrl_l1; | |
3776 | + | |
3777 | + obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx]); | |
3778 | + vp9_state->last_ref_obj = obj_surface; | |
3779 | + if (!obj_surface || | |
3780 | + !obj_surface->bo || | |
3781 | + !obj_surface->private_data) { | |
3782 | + vp9_state->last_ref_obj = NULL; | |
3783 | + vp9_state->ref_frame_flag &= ~(VP9_LAST_REF); | |
3784 | + } | |
3785 | + | |
3786 | + obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx]); | |
3787 | + vp9_state->golden_ref_obj = obj_surface; | |
3788 | + if (!obj_surface || | |
3789 | + !obj_surface->bo || | |
3790 | + !obj_surface->private_data) { | |
3791 | + vp9_state->golden_ref_obj = NULL; | |
3792 | + vp9_state->ref_frame_flag &= ~(VP9_GOLDEN_REF); | |
3793 | + } | |
3794 | + | |
3795 | + obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]); | |
3796 | + vp9_state->alt_ref_obj = obj_surface; | |
3797 | + if (!obj_surface || | |
3798 | + !obj_surface->bo || | |
3799 | + !obj_surface->private_data) { | |
3800 | + vp9_state->alt_ref_obj = NULL; | |
3801 | + vp9_state->ref_frame_flag &= ~(VP9_ALT_REF); | |
3802 | + } | |
3803 | + | |
3804 | + /* remove the duplicated flag and ref frame list */ | |
3805 | + if (vp9_state->ref_frame_flag & VP9_LAST_REF) { | |
3806 | + if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx] == | |
3807 | + pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx]) { | |
3808 | + vp9_state->ref_frame_flag &= ~(VP9_GOLDEN_REF); | |
3809 | + vp9_state->golden_ref_obj = NULL; | |
3810 | + } | |
3811 | + | |
3812 | + if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx] == | |
3813 | + pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]) { | |
3814 | + vp9_state->ref_frame_flag &= ~(VP9_ALT_REF); | |
3815 | + vp9_state->alt_ref_obj = NULL; | |
3816 | + } | |
3817 | + } | |
3818 | + | |
3819 | + if (vp9_state->ref_frame_flag & VP9_GOLDEN_REF) { | |
3820 | + if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx] == | |
3821 | + pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]) { | |
3822 | + vp9_state->ref_frame_flag &= ~(VP9_ALT_REF); | |
3823 | + vp9_state->alt_ref_obj = NULL; | |
3824 | + } | |
3825 | + } | |
3826 | + | |
3827 | + if (vp9_state->ref_frame_flag == 0) | |
3828 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
3829 | + } | |
3830 | + | |
3831 | + seg_param = NULL; | |
3832 | + if (pic_param->pic_flags.bits.segmentation_enabled) { | |
3833 | + if (!encode_state->q_matrix || | |
3834 | + !encode_state->q_matrix->buffer) { | |
3835 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
3836 | + } | |
3837 | + seg_param = (VAEncMiscParameterTypeVP9PerSegmantParam *) | |
3838 | + encode_state->q_matrix->buffer; | |
3839 | + } | |
3840 | + | |
3841 | + seq_param = NULL; | |
3842 | + if (encode_state->seq_param_ext && | |
3843 | + encode_state->seq_param_ext->buffer) | |
3844 | + seq_param = (VAEncSequenceParameterBufferVP9 *)encode_state->seq_param_ext->buffer; | |
3845 | + | |
3846 | + vp9_state->pic_param = pic_param; | |
3847 | + vp9_state->segment_param = seg_param; | |
3848 | + vp9_state->seq_param = seq_param; | |
3849 | + | |
3850 | + obj_surface = encode_state->reconstructed_object; | |
3851 | + if (pic_param->frame_width_dst > obj_surface->orig_width || | |
3852 | + pic_param->frame_height_dst > obj_surface->orig_height) | |
3853 | + return VA_STATUS_ERROR_INVALID_SURFACE; | |
3854 | + | |
3855 | + if (!vp9_state->dys_enabled && | |
3856 | + ((pic_param->frame_width_src != pic_param->frame_width_dst) || | |
3857 | + (pic_param->frame_height_src != pic_param->frame_height_dst))) | |
3858 | + return VA_STATUS_ERROR_UNIMPLEMENTED; | |
3859 | + | |
3860 | + if (vp9_state->brc_enabled) { | |
3861 | + if (!vp9_state->target_bit_rate && seq_param) { | |
3862 | + vp9_state->brc_reset = 1; | |
3863 | + vp9_state->target_bit_rate = seq_param->bits_per_second; | |
3864 | + vp9_state->gop_size = seq_param->intra_period; | |
3865 | + } | |
3866 | + | |
3867 | + if (vp9_state->target_bit_rate != seq_param->bits_per_second) { | |
3868 | + vp9_state->brc_reset = 1; | |
3869 | + vp9_state->target_bit_rate = seq_param->bits_per_second; | |
3870 | + } | |
3871 | + if (vp9_state->gop_size != seq_param->intra_period) { | |
3872 | + vp9_state->brc_reset = 1; | |
3873 | + vp9_state->gop_size = seq_param->intra_period; | |
3874 | + } | |
3875 | + | |
3876 | + /* check Misc Rate_Control, Frame_rate buffer */ | |
3877 | + } | |
3878 | + | |
3879 | + vp9_state->frame_width = pic_param->frame_width_dst; | |
3880 | + vp9_state->frame_height = pic_param->frame_height_dst; | |
3881 | + | |
3882 | + vp9_state->frame_width_4x = ALIGN(vp9_state->frame_width / 4, 16); | |
3883 | + vp9_state->frame_height_4x = ALIGN(vp9_state->frame_height / 4, 16); | |
3884 | + | |
3885 | + vp9_state->frame_width_16x = ALIGN(vp9_state->frame_width / 16, 16); | |
3886 | + vp9_state->frame_height_16x = ALIGN(vp9_state->frame_height / 16, 16); | |
3887 | + | |
3888 | + vp9_state->frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16; | |
3889 | + vp9_state->frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16; | |
3890 | + | |
3891 | + vp9_state->downscaled_width_4x_in_mb = vp9_state->frame_width_4x / 16; | |
3892 | + vp9_state->downscaled_height_4x_in_mb = vp9_state->frame_height_4x / 16; | |
3893 | + vp9_state->downscaled_width_16x_in_mb = vp9_state->frame_width_16x / 16; | |
3894 | + vp9_state->downscaled_height_16x_in_mb = vp9_state->frame_height_16x / 16; | |
3895 | + | |
3896 | + vp9_state->dys_in_use = 0; | |
3897 | + if(pic_param->frame_width_src != pic_param->frame_width_dst || | |
3898 | + pic_param->frame_height_src != pic_param->frame_height_dst) | |
3899 | + vp9_state->dys_in_use = 1; | |
3900 | + vp9_state->dys_ref_frame_flag = 0; | |
3901 | + /* check the dys setting. The dys is supported by default. */ | |
3902 | + if (pic_param->pic_flags.bits.frame_type != KEY_FRAME && | |
3903 | + !pic_param->pic_flags.bits.intra_only) { | |
3904 | + vp9_state->dys_ref_frame_flag = vp9_state->ref_frame_flag; | |
3905 | + | |
3906 | + if (vp9_state->ref_frame_flag & VP9_LAST_REF) { | |
3907 | + obj_surface = vp9_state->last_ref_obj; | |
3908 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3909 | + | |
3910 | + if (vp9_state->frame_width == vp9_priv_surface->frame_width && | |
3911 | + vp9_state->frame_height == vp9_priv_surface->frame_height) | |
3912 | + vp9_state->dys_ref_frame_flag &= ~(VP9_LAST_REF); | |
3913 | + } | |
3914 | + if (vp9_state->ref_frame_flag & VP9_GOLDEN_REF) { | |
3915 | + obj_surface = vp9_state->golden_ref_obj; | |
3916 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3917 | + | |
3918 | + if (vp9_state->frame_width == vp9_priv_surface->frame_width && | |
3919 | + vp9_state->frame_height == vp9_priv_surface->frame_height) | |
3920 | + vp9_state->dys_ref_frame_flag &= ~(VP9_GOLDEN_REF); | |
3921 | + } | |
3922 | + if (vp9_state->ref_frame_flag & VP9_ALT_REF) { | |
3923 | + obj_surface = vp9_state->alt_ref_obj; | |
3924 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
3925 | + | |
3926 | + if (vp9_state->frame_width == vp9_priv_surface->frame_width && | |
3927 | + vp9_state->frame_height == vp9_priv_surface->frame_height) | |
3928 | + vp9_state->dys_ref_frame_flag &= ~(VP9_ALT_REF); | |
3929 | + } | |
3930 | + if (vp9_state->dys_ref_frame_flag) | |
3931 | + vp9_state->dys_in_use = 1; | |
3932 | + } | |
3933 | + | |
3934 | + if (vp9_state->hme_supported) { | |
3935 | + vp9_state->hme_enabled = 1; | |
3936 | + } else { | |
3937 | + vp9_state->hme_enabled = 0; | |
3938 | + } | |
3939 | + | |
3940 | + if (vp9_state->b16xme_supported) { | |
3941 | + vp9_state->b16xme_enabled = 1; | |
3942 | + } else { | |
3943 | + vp9_state->b16xme_enabled = 0; | |
3944 | + } | |
3945 | + | |
3946 | + /* disable HME/16xME if the size is too small */ | |
3947 | + if (vp9_state->frame_width_4x <= VP9_VME_REF_WIN || | |
3948 | + vp9_state->frame_height_4x <= VP9_VME_REF_WIN) { | |
3949 | + vp9_state->hme_enabled = 0; | |
3950 | + vp9_state->b16xme_enabled = 0; | |
3951 | + } | |
3952 | + | |
3953 | + if (vp9_state->frame_width_16x < VP9_VME_REF_WIN || | |
3954 | + vp9_state->frame_height_16x < VP9_VME_REF_WIN) | |
3955 | + vp9_state->b16xme_enabled = 0; | |
3956 | + | |
3957 | + if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME || | |
3958 | + pic_param->pic_flags.bits.intra_only) { | |
3959 | + vp9_state->hme_enabled = 0; | |
3960 | + vp9_state->b16xme_enabled = 0; | |
3961 | + } | |
3962 | + | |
3963 | + if (vp9_state->picture_coding_type && | |
3964 | + vp9_state->brc_distortion_buffer_supported) | |
3965 | + vp9_state->mbenc_keyframe_dist_enabled = 1; | |
3966 | + | |
3967 | + return VA_STATUS_SUCCESS; | |
3968 | +} | |
3969 | + | |
3970 | +static VAStatus | |
3971 | +gen9_vme_gpe_kernel_prepare_vp9(VADriverContextP ctx, | |
3972 | + struct encode_state *encode_state, | |
3973 | + struct intel_encoder_context *encoder_context) | |
3974 | +{ | |
3975 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
3976 | + struct vp9_surface_param surface_param; | |
3977 | + struct gen9_vp9_state *vp9_state; | |
3978 | + VAEncPictureParameterBufferVP9 *pic_param; | |
3979 | + struct object_surface *obj_surface; | |
3980 | + struct gen9_surface_vp9 *vp9_surface; | |
3981 | + int driver_header_flag = 0; | |
3982 | + VAStatus va_status; | |
3983 | + | |
3984 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
3985 | + | |
3986 | + if (!vp9_state || !vp9_state->pic_param) | |
3987 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
3988 | + | |
3989 | + pic_param = vp9_state->pic_param; | |
3990 | + | |
3991 | + /* this is to check whether the driver should generate the uncompressed header */ | |
3992 | + driver_header_flag = 1; | |
3993 | + if (encode_state->packed_header_data_ext && | |
3994 | + encode_state->packed_header_data_ext[0] && | |
3995 | + pic_param->bit_offset_first_partition_size) { | |
3996 | + VAEncPackedHeaderParameterBuffer *param = NULL; | |
3997 | + | |
3998 | + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_params_ext[0]->buffer; | |
3999 | + | |
4000 | + if (param->type == VAEncPackedHeaderRawData) { | |
4001 | + char *header_data; | |
4002 | + unsigned int length_in_bits; | |
4003 | + | |
4004 | + header_data = (char *)encode_state->packed_header_data_ext[0]->buffer; | |
4005 | + length_in_bits = param->bit_length; | |
4006 | + driver_header_flag = 0; | |
4007 | + | |
4008 | + vp9_state->frame_header.bit_offset_first_partition_size = | |
4009 | + pic_param->bit_offset_first_partition_size; | |
4010 | + vp9_state->header_length = ALIGN(length_in_bits, 8) >> 3; | |
4011 | + vp9_state->alias_insert_data = header_data; | |
4012 | + | |
4013 | + vp9_state->frame_header.bit_offset_ref_lf_delta = pic_param->bit_offset_ref_lf_delta; | |
4014 | + vp9_state->frame_header.bit_offset_mode_lf_delta = pic_param->bit_offset_mode_lf_delta; | |
4015 | + vp9_state->frame_header.bit_offset_lf_level = pic_param->bit_offset_lf_level; | |
4016 | + vp9_state->frame_header.bit_offset_qindex = pic_param->bit_offset_qindex; | |
4017 | + vp9_state->frame_header.bit_offset_segmentation = pic_param->bit_offset_segmentation; | |
4018 | + vp9_state->frame_header.bit_size_segmentation = pic_param->bit_size_segmentation; | |
4019 | + } | |
4020 | + } | |
4021 | + | |
4022 | + if (driver_header_flag) { | |
4023 | + memset(&vp9_state->frame_header, 0, sizeof(vp9_state->frame_header)); | |
4024 | + intel_write_uncompressed_header(encode_state, | |
4025 | + VAProfileVP9Profile0, | |
4026 | + vme_context->frame_header_data, | |
4027 | + &vp9_state->header_length, | |
4028 | + &vp9_state->frame_header); | |
4029 | + vp9_state->alias_insert_data = vme_context->frame_header_data; | |
4030 | + } | |
4031 | + | |
4032 | + va_status = i965_check_alloc_surface_bo(ctx, encode_state->input_yuv_object, | |
4033 | + 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); | |
4034 | + if (va_status != VA_STATUS_SUCCESS) | |
4035 | + return va_status; | |
4036 | + | |
4037 | + va_status = i965_check_alloc_surface_bo(ctx, encode_state->reconstructed_object, | |
4038 | + 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); | |
4039 | + | |
4040 | + if (va_status != VA_STATUS_SUCCESS) | |
4041 | + return va_status; | |
4042 | + | |
4043 | + surface_param.frame_width = vp9_state->frame_width; | |
4044 | + surface_param.frame_height = vp9_state->frame_height; | |
4045 | + va_status = gen9_vp9_init_check_surfaces(ctx, | |
4046 | + encode_state->reconstructed_object, | |
4047 | + &surface_param); | |
4048 | + | |
4049 | + { | |
4050 | + vp9_surface = (struct gen9_surface_vp9*)encode_state->reconstructed_object; | |
4051 | + | |
4052 | + vp9_surface->qp_value = pic_param->luma_ac_qindex + pic_param->luma_dc_qindex_delta; | |
4053 | + } | |
4054 | + if (vp9_state->dys_in_use && | |
4055 | + (pic_param->frame_width_src != pic_param->frame_width_dst || | |
4056 | + pic_param->frame_height_src != pic_param->frame_height_dst)) { | |
4057 | + surface_param.frame_width = pic_param->frame_width_dst; | |
4058 | + surface_param.frame_height = pic_param->frame_height_dst; | |
4059 | + va_status = gen9_vp9_check_dys_surfaces(ctx, | |
4060 | + encode_state->reconstructed_object, | |
4061 | + &surface_param); | |
4062 | + | |
4063 | + if (va_status) | |
4064 | + return va_status; | |
4065 | + } | |
4066 | + | |
4067 | + if (vp9_state->dys_ref_frame_flag) { | |
4068 | + if (vp9_state->dys_ref_frame_flag & VP9_LAST_REF) { | |
4069 | + obj_surface = vp9_state->last_ref_obj; | |
4070 | + surface_param.frame_width = vp9_state->frame_width; | |
4071 | + surface_param.frame_height = vp9_state->frame_height; | |
4072 | + va_status = gen9_vp9_check_dys_surfaces(ctx, | |
4073 | + obj_surface, | |
4074 | + &surface_param); | |
4075 | + | |
4076 | + if (va_status) | |
4077 | + return va_status; | |
4078 | + } | |
4079 | + if (vp9_state->dys_ref_frame_flag & VP9_GOLDEN_REF) { | |
4080 | + obj_surface = vp9_state->golden_ref_obj; | |
4081 | + surface_param.frame_width = vp9_state->frame_width; | |
4082 | + surface_param.frame_height = vp9_state->frame_height; | |
4083 | + va_status = gen9_vp9_check_dys_surfaces(ctx, | |
4084 | + obj_surface, | |
4085 | + &surface_param); | |
4086 | + | |
4087 | + if (va_status) | |
4088 | + return va_status; | |
4089 | + } | |
4090 | + if (vp9_state->dys_ref_frame_flag & VP9_ALT_REF) { | |
4091 | + obj_surface = vp9_state->alt_ref_obj; | |
4092 | + surface_param.frame_width = vp9_state->frame_width; | |
4093 | + surface_param.frame_height = vp9_state->frame_height; | |
4094 | + va_status = gen9_vp9_check_dys_surfaces(ctx, | |
4095 | + obj_surface, | |
4096 | + &surface_param); | |
4097 | + | |
4098 | + if (va_status) | |
4099 | + return va_status; | |
4100 | + } | |
4101 | + } | |
4102 | + | |
4103 | + if (va_status != VA_STATUS_SUCCESS) | |
4104 | + return va_status; | |
4105 | + /* check the corresponding ref_frame_flag && dys_ref_frame_flag */ | |
4106 | + | |
4107 | + return VA_STATUS_SUCCESS; | |
4108 | +} | |
4109 | + | |
4110 | +static VAStatus | |
4111 | +gen9_vme_gpe_kernel_init_vp9(VADriverContextP ctx, | |
4112 | + struct encode_state *encode_state, | |
4113 | + struct intel_encoder_context *encoder_context) | |
4114 | +{ | |
4115 | + struct i965_driver_data *i965 = i965_driver_data(ctx); | |
4116 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
4117 | + struct vp9_mbenc_context *mbenc_context = &vme_context->mbenc_context; | |
4118 | + struct vp9_dys_context *dys_context = &vme_context->dys_context; | |
4119 | + struct gpe_dynamic_state_parameter ds_param; | |
4120 | + int i; | |
4121 | + | |
4122 | + /* | |
4123 | + * BRC will update MBEnc curbe data buffer, so initialize GPE context for | |
4124 | + * MBEnc first | |
4125 | + */ | |
4126 | + for (i = 0; i < NUM_VP9_MBENC; i++) { | |
4127 | + gen8_gpe_context_init(ctx, &mbenc_context->gpe_contexts[i]); | |
4128 | + } | |
4129 | + | |
4130 | + /* | |
4131 | + * VP9_MBENC_XXX uses the same dynamic state buffer as they share the same | |
4132 | + * curbe_buffer. | |
4133 | + */ | |
4134 | + ds_param.bo_size = ALIGN(sizeof(vp9_mbenc_curbe_data), 64) + 128 + | |
4135 | + ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * NUM_VP9_MBENC; | |
4136 | + mbenc_context->mbenc_bo_dys = dri_bo_alloc(i965->intel.bufmgr, | |
4137 | + "mbenc_dys", | |
4138 | + ds_param.bo_size, | |
4139 | + 0x1000); | |
4140 | + mbenc_context->mbenc_bo_size = ds_param.bo_size; | |
4141 | + | |
4142 | + ds_param.bo = mbenc_context->mbenc_bo_dys; | |
4143 | + ds_param.curbe_offset = 0; | |
4144 | + ds_param.sampler_offset = ALIGN(sizeof(vp9_mbenc_curbe_data), 64); | |
4145 | + for (i = 0; i < NUM_VP9_MBENC; i++) { | |
4146 | + ds_param.idrt_offset = ds_param.sampler_offset + 128 + | |
4147 | + ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * i; | |
4148 | + | |
4149 | + gen8_gpe_context_set_dynamic_buffer(ctx, | |
4150 | + &mbenc_context->gpe_contexts[i], | |
4151 | + &ds_param); | |
4152 | + } | |
4153 | + | |
4154 | + gen8_gpe_context_init(ctx, &dys_context->gpe_context); | |
4155 | + gen9_vp9_dys_set_sampler_state(&dys_context->gpe_context); | |
4156 | + | |
4157 | + return VA_STATUS_SUCCESS; | |
4158 | +} | |
4159 | + | |
4160 | +static VAStatus | |
4161 | +gen9_vme_gpe_kernel_final_vp9(VADriverContextP ctx, | |
4162 | + struct encode_state *encode_state, | |
4163 | + struct intel_encoder_context *encoder_context) | |
4164 | +{ | |
4165 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
4166 | + struct vp9_mbenc_context *mbenc_context = &vme_context->mbenc_context; | |
4167 | + | |
4168 | + dri_bo_unreference(mbenc_context->mbenc_bo_dys); | |
4169 | + mbenc_context->mbenc_bo_dys = NULL; | |
4170 | + | |
4171 | + return VA_STATUS_SUCCESS; | |
4172 | +} | |
4173 | + | |
4174 | +static VAStatus | |
4175 | +gen9_vme_gpe_kernel_run_vp9(VADriverContextP ctx, | |
4176 | + struct encode_state *encode_state, | |
4177 | + struct intel_encoder_context *encoder_context) | |
4178 | +{ | |
4179 | + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; | |
4180 | + struct gen9_vp9_state *vp9_state; | |
4181 | + int i; | |
4182 | + | |
4183 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
4184 | + | |
4185 | + if (!vp9_state || !vp9_state->pic_param) | |
4186 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
4187 | + | |
4188 | + if (vp9_state->dys_in_use) { | |
4189 | + gen9_vp9_run_dys_refframes(ctx, encode_state, encoder_context); | |
4190 | + } | |
4191 | + | |
4192 | + if (vp9_state->brc_enabled && (vp9_state->brc_reset || !vp9_state->brc_inited)) { | |
4193 | + gen9_vp9_brc_init_reset_kernel(ctx, encode_state, encoder_context); | |
4194 | + } | |
4195 | + | |
4196 | + if (vp9_state->picture_coding_type == KEY_FRAME) { | |
4197 | + for (i = 0; i < 2; i++) | |
4198 | + i965_zero_gpe_resource(&vme_context->res_mode_decision[i]); | |
4199 | + } | |
4200 | + | |
4201 | + if (vp9_state->hme_supported) { | |
4202 | + gen9_vp9_scaling_kernel(ctx, encode_state, | |
4203 | + encoder_context, | |
4204 | + 0); | |
4205 | + if (vp9_state->b16xme_supported) { | |
4206 | + gen9_vp9_scaling_kernel(ctx, encode_state, | |
4207 | + encoder_context, | |
4208 | + 1); | |
4209 | + } | |
4210 | + } | |
4211 | + | |
4212 | + if (vp9_state->picture_coding_type && vp9_state->hme_enabled) { | |
4213 | + if (vp9_state->b16xme_enabled) | |
4214 | + gen9_vp9_me_kernel(ctx, encode_state, | |
4215 | + encoder_context, | |
4216 | + 1); | |
4217 | + | |
4218 | + gen9_vp9_me_kernel(ctx, encode_state, | |
4219 | + encoder_context, | |
4220 | + 0); | |
4221 | + } | |
4222 | + | |
4223 | + if (vp9_state->brc_enabled) { | |
4224 | + if (vp9_state->mbenc_keyframe_dist_enabled) | |
4225 | + gen9_vp9_brc_intra_dist_kernel(ctx, | |
4226 | + encode_state, | |
4227 | + encoder_context); | |
4228 | + | |
4229 | + gen9_vp9_brc_update_kernel(ctx, encode_state, | |
4230 | + encoder_context); | |
4231 | + } | |
4232 | + | |
4233 | + if (vp9_state->picture_coding_type == KEY_FRAME) { | |
4234 | + gen9_vp9_mbenc_kernel(ctx, encode_state, | |
4235 | + encoder_context, | |
4236 | + VP9_MEDIA_STATE_MBENC_I_32x32); | |
4237 | + gen9_vp9_mbenc_kernel(ctx, encode_state, | |
4238 | + encoder_context, | |
4239 | + VP9_MEDIA_STATE_MBENC_I_16x16); | |
4240 | + } else { | |
4241 | + gen9_vp9_mbenc_kernel(ctx, encode_state, | |
4242 | + encoder_context, | |
4243 | + VP9_MEDIA_STATE_MBENC_P); | |
4244 | + } | |
4245 | + | |
4246 | + gen9_vp9_mbenc_kernel(ctx, encode_state, | |
4247 | + encoder_context, | |
4248 | + VP9_MEDIA_STATE_MBENC_TX); | |
4249 | + | |
4250 | + vp9_state->curr_mode_decision_index ^= 1; | |
4251 | + if (vp9_state->brc_enabled) { | |
4252 | + vp9_state->brc_inited = 1; | |
4253 | + vp9_state->brc_reset = 0; | |
4254 | + } | |
4255 | + | |
4256 | + return VA_STATUS_SUCCESS; | |
4257 | +} | |
4258 | + | |
4259 | +static VAStatus | |
4260 | +gen9_vme_pipeline_vp9(VADriverContextP ctx, | |
4261 | + VAProfile profile, | |
4262 | + struct encode_state *encode_state, | |
4263 | + struct intel_encoder_context *encoder_context) | |
4264 | +{ | |
4265 | + VAStatus va_status; | |
4266 | + struct gen9_vp9_state *vp9_state; | |
4267 | + | |
4268 | + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; | |
4269 | + | |
4270 | + if (!vp9_state) | |
4271 | + return VA_STATUS_ERROR_INVALID_CONTEXT; | |
4272 | + | |
4273 | + va_status = gen9_encode_vp9_check_parameter(ctx, encode_state, encoder_context); | |
4274 | + if (va_status != VA_STATUS_SUCCESS) | |
4275 | + return va_status; | |
4276 | + | |
4277 | + va_status = gen9_vp9_allocate_resources(ctx, encode_state, | |
4278 | + encoder_context, | |
4279 | + !vp9_state->brc_allocated); | |
4280 | + | |
4281 | + if (va_status != VA_STATUS_SUCCESS) | |
4282 | + return va_status; | |
4283 | + vp9_state->brc_allocated = 1; | |
4284 | + | |
4285 | + va_status = gen9_vme_gpe_kernel_prepare_vp9(ctx, encode_state, encoder_context); | |
4286 | + | |
4287 | + if (va_status != VA_STATUS_SUCCESS) | |
4288 | + return va_status; | |
4289 | + | |
4290 | + va_status = gen9_vme_gpe_kernel_init_vp9(ctx, encode_state, encoder_context); | |
4291 | + if (va_status != VA_STATUS_SUCCESS) | |
4292 | + return va_status; | |
4293 | + | |
4294 | + va_status = gen9_vme_gpe_kernel_run_vp9(ctx, encode_state, encoder_context); | |
4295 | + if (va_status != VA_STATUS_SUCCESS) | |
4296 | + return va_status; | |
4297 | + | |
4298 | + gen9_vme_gpe_kernel_final_vp9(ctx, encode_state, encoder_context); | |
4299 | + | |
4300 | + return VA_STATUS_SUCCESS; | |
4301 | +} | |
4302 | + | |
4303 | +static void | |
4304 | +gen9_vme_brc_context_destroy_vp9(struct vp9_brc_context *brc_context) | |
4305 | +{ | |
4306 | + int i; | |
4307 | + | |
4308 | + for (i = 0; i < NUM_VP9_BRC; i++) | |
4309 | + gen8_gpe_context_destroy(&brc_context->gpe_contexts[i]); | |
4310 | +} | |
4311 | + | |
4312 | +static void | |
4313 | +gen9_vme_scaling_context_destroy_vp9(struct vp9_scaling_context *scaling_context) | |
4314 | +{ | |
4315 | + int i; | |
4316 | + | |
4317 | + for (i = 0; i < NUM_VP9_SCALING; i++) | |
4318 | + gen8_gpe_context_destroy(&scaling_context->gpe_contexts[i]); | |
4319 | +} | |
4320 | + | |
4321 | +static void | |
4322 | +gen9_vme_me_context_destroy_vp9(struct vp9_me_context *me_context) | |
4323 | +{ | |
4324 | + gen8_gpe_context_destroy(&me_context->gpe_context); | |
4325 | +} | |
4326 | + | |
4327 | +static void | |
4328 | +gen9_vme_mbenc_context_destroy_vp9(struct vp9_mbenc_context *mbenc_context) | |
4329 | +{ | |
4330 | + int i; | |
4331 | + | |
4332 | + for (i = 0; i < NUM_VP9_MBENC; i++) | |
4333 | + gen8_gpe_context_destroy(&mbenc_context->gpe_contexts[i]); | |
4334 | + dri_bo_unreference(mbenc_context->mbenc_bo_dys); | |
4335 | + mbenc_context->mbenc_bo_size = 0; | |
4336 | +} | |
4337 | + | |
4338 | +static void | |
4339 | +gen9_vme_dys_context_destroy_vp9(struct vp9_dys_context *dys_context) | |
4340 | +{ | |
4341 | + gen8_gpe_context_destroy(&dys_context->gpe_context); | |
4342 | +} | |
4343 | + | |
4344 | +static void | |
4345 | +gen9_vme_kernel_context_destroy_vp9(struct gen9_encoder_context_vp9 *vme_context) | |
4346 | +{ | |
4347 | + gen9_vp9_free_resources(vme_context); | |
4348 | + gen9_vme_scaling_context_destroy_vp9(&vme_context->scaling_context); | |
4349 | + gen9_vme_me_context_destroy_vp9(&vme_context->me_context); | |
4350 | + gen9_vme_mbenc_context_destroy_vp9(&vme_context->mbenc_context); | |
4351 | + gen9_vme_brc_context_destroy_vp9(&vme_context->brc_context); | |
4352 | + gen9_vme_dys_context_destroy_vp9(&vme_context->dys_context); | |
4353 | + | |
4354 | + return; | |
4355 | +} | |
4356 | + | |
4357 | +static void | |
4358 | +gen9_vme_context_destroy_vp9(void *context) | |
4359 | +{ | |
4360 | + struct gen9_encoder_context_vp9 *vme_context = context; | |
4361 | + | |
4362 | + if (!vme_context) | |
4363 | + return; | |
4364 | + | |
4365 | + gen9_vme_kernel_context_destroy_vp9(vme_context); | |
4366 | + | |
4367 | + free(vme_context); | |
4368 | + | |
4369 | + return; | |
4370 | +} | |
4371 | + | |
4372 | +static void | |
4373 | +gen9_vme_scaling_context_init_vp9(VADriverContextP ctx, | |
4374 | + struct gen9_encoder_context_vp9 *vme_context, | |
4375 | + struct vp9_scaling_context *scaling_context) | |
4376 | +{ | |
4377 | + struct i965_gpe_context *gpe_context = NULL; | |
4378 | + struct vp9_encoder_kernel_parameter kernel_param; | |
4379 | + struct vp9_encoder_scoreboard_parameter scoreboard_param; | |
4380 | + struct i965_kernel scale_kernel; | |
4381 | + | |
4382 | + kernel_param.curbe_size = sizeof(vp9_scaling4x_curbe_data_cm); | |
4383 | + kernel_param.inline_data_size = sizeof(vp9_scaling4x_inline_data_cm); | |
4384 | + kernel_param.sampler_size = 0; | |
4385 | + | |
4386 | + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); | |
4387 | + scoreboard_param.mask = 0xFF; | |
4388 | + scoreboard_param.enable = vme_context->use_hw_scoreboard; | |
4389 | + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; | |
4390 | + scoreboard_param.walkpat_flag = 0; | |
4391 | + | |
4392 | + gpe_context = &scaling_context->gpe_contexts[0]; | |
4393 | + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); | |
4394 | + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); | |
4395 | + | |
4396 | + scaling_context->scaling_4x_bti.scaling_frame_src_y = VP9_BTI_SCALING_FRAME_SRC_Y; | |
4397 | + scaling_context->scaling_4x_bti.scaling_frame_dst_y = VP9_BTI_SCALING_FRAME_DST_Y; | |
4398 | + scaling_context->scaling_4x_bti.scaling_frame_mbv_proc_stat_dst = | |
4399 | + VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM; | |
4400 | + | |
4401 | + memset(&scale_kernel, 0, sizeof(scale_kernel)); | |
4402 | + | |
4403 | + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, | |
4404 | + sizeof(media_vp9_kernels), | |
4405 | + INTEL_VP9_ENC_SCALING4X, | |
4406 | + 0, | |
4407 | + &scale_kernel); | |
4408 | + | |
4409 | + gen8_gpe_load_kernels(ctx, | |
4410 | + gpe_context, | |
4411 | + &scale_kernel, | |
4412 | + 1); | |
4413 | + | |
4414 | + kernel_param.curbe_size = sizeof(vp9_scaling2x_curbe_data_cm); | |
4415 | + kernel_param.inline_data_size = 0; | |
4416 | + kernel_param.sampler_size = 0; | |
4417 | + | |
4418 | + gpe_context = &scaling_context->gpe_contexts[1]; | |
4419 | + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); | |
4420 | + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); | |
4421 | + | |
4422 | + memset(&scale_kernel, 0, sizeof(scale_kernel)); | |
4423 | + | |
4424 | + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, | |
4425 | + sizeof(media_vp9_kernels), | |
4426 | + INTEL_VP9_ENC_SCALING2X, | |
4427 | + 0, | |
4428 | + &scale_kernel); | |
4429 | + | |
4430 | + gen8_gpe_load_kernels(ctx, | |
4431 | + gpe_context, | |
4432 | + &scale_kernel, | |
4433 | + 1); | |
4434 | + | |
4435 | + scaling_context->scaling_2x_bti.scaling_frame_src_y = VP9_BTI_SCALING_FRAME_SRC_Y; | |
4436 | + scaling_context->scaling_2x_bti.scaling_frame_dst_y = VP9_BTI_SCALING_FRAME_DST_Y; | |
4437 | + return; | |
4438 | +} | |
4439 | + | |
4440 | +static void | |
4441 | +gen9_vme_me_context_init_vp9(VADriverContextP ctx, | |
4442 | + struct gen9_encoder_context_vp9 *vme_context, | |
4443 | + struct vp9_me_context *me_context) | |
4444 | +{ | |
4445 | + struct i965_gpe_context *gpe_context = NULL; | |
4446 | + struct vp9_encoder_kernel_parameter kernel_param; | |
4447 | + struct vp9_encoder_scoreboard_parameter scoreboard_param; | |
4448 | + struct i965_kernel scale_kernel; | |
4449 | + | |
4450 | + kernel_param.curbe_size = sizeof(vp9_me_curbe_data); | |
4451 | + kernel_param.inline_data_size = 0; | |
4452 | + kernel_param.sampler_size = 0; | |
4453 | + | |
4454 | + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); | |
4455 | + scoreboard_param.mask = 0xFF; | |
4456 | + scoreboard_param.enable = vme_context->use_hw_scoreboard; | |
4457 | + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; | |
4458 | + scoreboard_param.walkpat_flag = 0; | |
4459 | + | |
4460 | + gpe_context = &me_context->gpe_context; | |
4461 | + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); | |
4462 | + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); | |
4463 | + | |
4464 | + memset(&scale_kernel, 0, sizeof(scale_kernel)); | |
4465 | + | |
4466 | + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, | |
4467 | + sizeof(media_vp9_kernels), | |
4468 | + INTEL_VP9_ENC_ME, | |
4469 | + 0, | |
4470 | + &scale_kernel); | |
4471 | + | |
4472 | + gen8_gpe_load_kernels(ctx, | |
4473 | + gpe_context, | |
4474 | + &scale_kernel, | |
4475 | + 1); | |
4476 | + | |
4477 | + return; | |
4478 | +} | |
4479 | + | |
4480 | +static void | |
4481 | +gen9_vme_mbenc_context_init_vp9(VADriverContextP ctx, | |
4482 | + struct gen9_encoder_context_vp9 *vme_context, | |
4483 | + struct vp9_mbenc_context *mbenc_context) | |
4484 | +{ | |
4485 | + struct i965_gpe_context *gpe_context = NULL; | |
4486 | + struct vp9_encoder_kernel_parameter kernel_param; | |
4487 | + struct vp9_encoder_scoreboard_parameter scoreboard_param; | |
4488 | + int i; | |
4489 | + struct i965_kernel scale_kernel; | |
4490 | + | |
4491 | + kernel_param.curbe_size = sizeof(vp9_mbenc_curbe_data); | |
4492 | + kernel_param.inline_data_size = 0; | |
4493 | + kernel_param.sampler_size = 0; | |
4494 | + | |
4495 | + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); | |
4496 | + scoreboard_param.mask = 0xFF; | |
4497 | + scoreboard_param.enable = vme_context->use_hw_scoreboard; | |
4498 | + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; | |
4499 | + | |
4500 | + for (i = 0; i < NUM_VP9_MBENC; i++) { | |
4501 | + gpe_context = &mbenc_context->gpe_contexts[i]; | |
4502 | + | |
4503 | + if ((i == VP9_MBENC_IDX_KEY_16x16) || | |
4504 | + (i == VP9_MBENC_IDX_INTER)) { | |
4505 | + scoreboard_param.walkpat_flag = 1; | |
4506 | + } else | |
4507 | + scoreboard_param.walkpat_flag = 0; | |
4508 | + | |
4509 | + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); | |
4510 | + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); | |
4511 | + | |
4512 | + memset(&scale_kernel, 0, sizeof(scale_kernel)); | |
4513 | + | |
4514 | + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, | |
4515 | + sizeof(media_vp9_kernels), | |
4516 | + INTEL_VP9_ENC_MBENC, | |
4517 | + i, | |
4518 | + &scale_kernel); | |
4519 | + | |
4520 | + gen8_gpe_load_kernels(ctx, | |
4521 | + gpe_context, | |
4522 | + &scale_kernel, | |
4523 | + 1); | |
4524 | + } | |
4525 | +} | |
4526 | + | |
4527 | +static void | |
4528 | +gen9_vme_brc_context_init_vp9(VADriverContextP ctx, | |
4529 | + struct gen9_encoder_context_vp9 *vme_context, | |
4530 | + struct vp9_brc_context *brc_context) | |
4531 | +{ | |
4532 | + struct i965_gpe_context *gpe_context = NULL; | |
4533 | + struct vp9_encoder_kernel_parameter kernel_param; | |
4534 | + struct vp9_encoder_scoreboard_parameter scoreboard_param; | |
4535 | + int i; | |
4536 | + struct i965_kernel scale_kernel; | |
4537 | + | |
4538 | + kernel_param.curbe_size = sizeof(vp9_brc_curbe_data); | |
4539 | + kernel_param.inline_data_size = 0; | |
4540 | + kernel_param.sampler_size = 0; | |
4541 | + | |
4542 | + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); | |
4543 | + scoreboard_param.mask = 0xFF; | |
4544 | + scoreboard_param.enable = vme_context->use_hw_scoreboard; | |
4545 | + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; | |
4546 | + | |
4547 | + for (i = 0; i < NUM_VP9_BRC; i++) { | |
4548 | + gpe_context = &brc_context->gpe_contexts[i]; | |
4549 | + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); | |
4550 | + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); | |
4551 | + | |
4552 | + memset(&scale_kernel, 0, sizeof(scale_kernel)); | |
4553 | + | |
4554 | + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, | |
4555 | + sizeof(media_vp9_kernels), | |
4556 | + INTEL_VP9_ENC_BRC, | |
4557 | + i, | |
4558 | + &scale_kernel); | |
4559 | + | |
4560 | + gen8_gpe_load_kernels(ctx, | |
4561 | + gpe_context, | |
4562 | + &scale_kernel, | |
4563 | + 1); | |
4564 | + } | |
4565 | +} | |
4566 | + | |
4567 | +static void | |
4568 | +gen9_vme_dys_context_init_vp9(VADriverContextP ctx, | |
4569 | + struct gen9_encoder_context_vp9 *vme_context, | |
4570 | + struct vp9_dys_context *dys_context) | |
4571 | +{ | |
4572 | + struct i965_gpe_context *gpe_context = NULL; | |
4573 | + struct vp9_encoder_kernel_parameter kernel_param; | |
4574 | + struct vp9_encoder_scoreboard_parameter scoreboard_param; | |
4575 | + struct i965_kernel scale_kernel; | |
4576 | + | |
4577 | + kernel_param.curbe_size = sizeof(vp9_dys_curbe_data); | |
4578 | + kernel_param.inline_data_size = 0; | |
4579 | + kernel_param.sampler_size = sizeof(struct gen9_sampler_8x8_avs); | |
4580 | + | |
4581 | + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); | |
4582 | + scoreboard_param.mask = 0xFF; | |
4583 | + scoreboard_param.enable = vme_context->use_hw_scoreboard; | |
4584 | + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; | |
4585 | + scoreboard_param.walkpat_flag = 0; | |
4586 | + | |
4587 | + gpe_context = &dys_context->gpe_context; | |
4588 | + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); | |
4589 | + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); | |
4590 | + | |
4591 | + memset(&scale_kernel, 0, sizeof(scale_kernel)); | |
4592 | + | |
4593 | + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, | |
4594 | + sizeof(media_vp9_kernels), | |
4595 | + INTEL_VP9_ENC_DYS, | |
4596 | + 0, | |
4597 | + &scale_kernel); | |
4598 | + | |
4599 | + gen8_gpe_load_kernels(ctx, | |
4600 | + gpe_context, | |
4601 | + &scale_kernel, | |
4602 | + 1); | |
4603 | + | |
4604 | + return; | |
4605 | +} | |
4606 | + | |
4607 | +static Bool | |
4608 | +gen9_vme_kernels_context_init_vp9(VADriverContextP ctx, | |
4609 | + struct intel_encoder_context *encoder_context, | |
4610 | + struct gen9_encoder_context_vp9 *vme_context) | |
4611 | +{ | |
4612 | + gen9_vme_scaling_context_init_vp9(ctx, vme_context, &vme_context->scaling_context); | |
4613 | + gen9_vme_me_context_init_vp9(ctx, vme_context, &vme_context->me_context); | |
4614 | + gen9_vme_mbenc_context_init_vp9(ctx, vme_context, &vme_context->mbenc_context); | |
4615 | + gen9_vme_dys_context_init_vp9(ctx, vme_context, &vme_context->dys_context); | |
4616 | + gen9_vme_brc_context_init_vp9(ctx, vme_context, &vme_context->brc_context); | |
4617 | + | |
4618 | + vme_context->pfn_set_curbe_brc = gen9_vp9_set_curbe_brc; | |
4619 | + vme_context->pfn_set_curbe_me = gen9_vp9_set_curbe_me; | |
4620 | + vme_context->pfn_send_me_surface = gen9_vp9_send_me_surface; | |
4621 | + vme_context->pfn_send_scaling_surface = gen9_vp9_send_scaling_surface; | |
4622 | + | |
4623 | + vme_context->pfn_set_curbe_scaling = gen9_vp9_set_curbe_scaling_cm; | |
4624 | + | |
4625 | + vme_context->pfn_send_dys_surface = gen9_vp9_send_dys_surface; | |
4626 | + vme_context->pfn_set_curbe_dys = gen9_vp9_set_curbe_dys; | |
4627 | + vme_context->pfn_set_curbe_mbenc = gen9_vp9_set_curbe_mbenc; | |
4628 | + vme_context->pfn_send_mbenc_surface = gen9_vp9_send_mbenc_surface; | |
4629 | + return true; | |
4630 | +} | |
4631 | + | |
4632 | +static | |
4633 | +void gen9_vp9_write_compressed_element(char *buffer, | |
4634 | + int index, | |
4635 | + int prob, | |
4636 | + bool value) | |
4637 | +{ | |
4638 | + struct vp9_compressed_element *base_element, *vp9_element; | |
4639 | + base_element = (struct vp9_compressed_element *)buffer; | |
4640 | + | |
4641 | + vp9_element = base_element + (index >> 1); | |
4642 | + if (index % 2) { | |
4643 | + vp9_element->b_valid = 1; | |
4644 | + vp9_element->b_probdiff_select = 1; | |
4645 | + vp9_element->b_prob_select = (prob == 252) ? 1: 0; | |
4646 | + vp9_element->b_bin = value; | |
4647 | + } else { | |
4648 | + vp9_element->a_valid = 1; | |
4649 | + vp9_element->a_probdiff_select = 1; | |
4650 | + vp9_element->a_prob_select = (prob == 252) ? 1: 0; | |
4651 | + vp9_element->a_bin = value; | |
4652 | + } | |
4653 | +} | |
4654 | + | |
4655 | +static void | |
4656 | +intel_vp9enc_refresh_frame_internal_buffers(VADriverContextP ctx, | |
4657 | + struct intel_encoder_context *encoder_context) | |
4658 | +{ | |
4659 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
4660 | + VAEncPictureParameterBufferVP9 *pic_param; | |
4661 | + struct gen9_vp9_state *vp9_state; | |
4662 | + char *buffer; | |
4663 | + int i; | |
4664 | + | |
4665 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
4666 | + | |
4667 | + if (!pak_context || !vp9_state || !vp9_state->pic_param) | |
4668 | + return; | |
4669 | + | |
4670 | + pic_param = vp9_state->pic_param; | |
4671 | + if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) || | |
4672 | + (pic_param->pic_flags.bits.intra_only) || | |
4673 | + pic_param->pic_flags.bits.error_resilient_mode) { | |
4674 | + /* reset current frame_context */ | |
4675 | + intel_init_default_vp9_probs(&vp9_state->vp9_current_fc); | |
4676 | + if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) || | |
4677 | + pic_param->pic_flags.bits.error_resilient_mode || | |
4678 | + (pic_param->pic_flags.bits.reset_frame_context == 3)) { | |
4679 | + for (i = 0; i < 4; i++) | |
4680 | + memcpy(&vp9_state->vp9_frame_ctx[i], | |
4681 | + &vp9_state->vp9_current_fc, | |
4682 | + sizeof(FRAME_CONTEXT)); | |
4683 | + } else if (pic_param->pic_flags.bits.reset_frame_context == 2) { | |
4684 | + i = pic_param->pic_flags.bits.frame_context_idx; | |
4685 | + memcpy(&vp9_state->vp9_frame_ctx[i], | |
4686 | + &vp9_state->vp9_current_fc, sizeof(FRAME_CONTEXT)); | |
4687 | + } | |
4688 | + /* reset the frame_ctx_idx = 0 */ | |
4689 | + vp9_state->frame_ctx_idx = 0; | |
4690 | + } else { | |
4691 | + vp9_state->frame_ctx_idx = pic_param->pic_flags.bits.frame_context_idx; | |
4692 | + } | |
4693 | + | |
4694 | + i965_zero_gpe_resource(&pak_context->res_compressed_input_buffer); | |
4695 | + buffer = i965_map_gpe_resource(&pak_context->res_compressed_input_buffer); | |
4696 | + | |
4697 | + /* write tx_size */ | |
4698 | + if ((pic_param->luma_ac_qindex == 0) && | |
4699 | + (pic_param->luma_dc_qindex_delta == 0) && | |
4700 | + (pic_param->chroma_ac_qindex_delta == 0) && | |
4701 | + (pic_param->chroma_dc_qindex_delta == 0)) { | |
4702 | + /* lossless flag */ | |
4703 | + /* nothing is needed */ | |
4704 | + gen9_vp9_write_compressed_element(buffer, | |
4705 | + 0, 128, 0); | |
4706 | + gen9_vp9_write_compressed_element(buffer, | |
4707 | + 1, 128, 0); | |
4708 | + gen9_vp9_write_compressed_element(buffer, | |
4709 | + 2, 128, 0); | |
4710 | + } else { | |
4711 | + if (vp9_state->tx_mode == TX_MODE_SELECT) { | |
4712 | + gen9_vp9_write_compressed_element(buffer, | |
4713 | + 0, 128, 1); | |
4714 | + gen9_vp9_write_compressed_element(buffer, | |
4715 | + 1, 128, 1); | |
4716 | + gen9_vp9_write_compressed_element(buffer, | |
4717 | + 2, 128, 1); | |
4718 | + } else if (vp9_state->tx_mode == ALLOW_32X32) { | |
4719 | + gen9_vp9_write_compressed_element(buffer, | |
4720 | + 0, 128, 1); | |
4721 | + gen9_vp9_write_compressed_element(buffer, | |
4722 | + 1, 128, 1); | |
4723 | + gen9_vp9_write_compressed_element(buffer, | |
4724 | + 2, 128, 0); | |
4725 | + } else { | |
4726 | + unsigned int tx_mode; | |
4727 | + | |
4728 | + tx_mode = vp9_state->tx_mode; | |
4729 | + gen9_vp9_write_compressed_element(buffer, | |
4730 | + 0, 128, ((tx_mode) & 2)); | |
4731 | + gen9_vp9_write_compressed_element(buffer, | |
4732 | + 1, 128, ((tx_mode) & 1)); | |
4733 | + gen9_vp9_write_compressed_element(buffer, | |
4734 | + 2, 128, 0); | |
4735 | + } | |
4736 | + | |
4737 | + if (vp9_state->tx_mode == TX_MODE_SELECT) { | |
4738 | + | |
4739 | + gen9_vp9_write_compressed_element(buffer, | |
4740 | + 3, 128, 0); | |
4741 | + | |
4742 | + gen9_vp9_write_compressed_element(buffer, | |
4743 | + 7, 128, 0); | |
4744 | + | |
4745 | + gen9_vp9_write_compressed_element(buffer, | |
4746 | + 15, 128, 0); | |
4747 | + } | |
4748 | + } | |
4749 | + /*Setup all the input&output object*/ | |
4750 | + | |
4751 | + { | |
4752 | + /* update the coeff_update flag */ | |
4753 | + gen9_vp9_write_compressed_element(buffer, | |
4754 | + 27, 128, 0); | |
4755 | + gen9_vp9_write_compressed_element(buffer, | |
4756 | + 820, 128, 0); | |
4757 | + gen9_vp9_write_compressed_element(buffer, | |
4758 | + 1613, 128, 0); | |
4759 | + gen9_vp9_write_compressed_element(buffer, | |
4760 | + 2406, 128, 0); | |
4761 | + } | |
4762 | + | |
4763 | + | |
4764 | + if (pic_param->pic_flags.bits.frame_type && !pic_param->pic_flags.bits.intra_only) | |
4765 | + { | |
4766 | + bool allow_comp = !( | |
4767 | + (pic_param->ref_flags.bits.ref_last_sign_bias && pic_param->ref_flags.bits.ref_gf_sign_bias && pic_param->ref_flags.bits.ref_arf_sign_bias) || | |
4768 | + (!pic_param->ref_flags.bits.ref_last_sign_bias && !pic_param->ref_flags.bits.ref_gf_sign_bias && !pic_param->ref_flags.bits.ref_arf_sign_bias) | |
4769 | + ); | |
4770 | + | |
4771 | + if (allow_comp) | |
4772 | + { | |
4773 | + if (pic_param->pic_flags.bits.comp_prediction_mode == REFERENCE_MODE_SELECT) { | |
4774 | + gen9_vp9_write_compressed_element(buffer, | |
4775 | + 3271, 128, 1); | |
4776 | + gen9_vp9_write_compressed_element(buffer, | |
4777 | + 3272, 128, 1); | |
4778 | + } | |
4779 | + else if (pic_param->pic_flags.bits.comp_prediction_mode == COMPOUND_REFERENCE) { | |
4780 | + gen9_vp9_write_compressed_element(buffer, | |
4781 | + 3271, 128, 1); | |
4782 | + gen9_vp9_write_compressed_element(buffer, | |
4783 | + 3272, 128, 0); | |
4784 | + } | |
4785 | + else { | |
4786 | + | |
4787 | + gen9_vp9_write_compressed_element(buffer, | |
4788 | + 3271, 128, 0); | |
4789 | + gen9_vp9_write_compressed_element(buffer, | |
4790 | + 3272, 128, 0); | |
4791 | + } | |
4792 | + } | |
4793 | + } | |
4794 | + | |
4795 | + i965_unmap_gpe_resource(&pak_context->res_compressed_input_buffer); | |
4796 | +} | |
4797 | + | |
4798 | + | |
4799 | +static void | |
4800 | +gen9_pak_vp9_pipe_mode_select(VADriverContextP ctx, | |
4801 | + struct encode_state *encode_state, | |
4802 | + struct intel_encoder_context *encoder_context, | |
4803 | + struct gen9_hcpe_pipe_mode_select_param *pipe_mode_param) | |
4804 | +{ | |
4805 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
4806 | + | |
4807 | + BEGIN_BCS_BATCH(batch, 6); | |
4808 | + | |
4809 | + OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (6 - 2)); | |
4810 | + OUT_BCS_BATCH(batch, | |
4811 | + (pipe_mode_param->stream_out << 12) | | |
4812 | + (pipe_mode_param->codec_mode << 5) | | |
4813 | + (0 << 3) | /* disable Pic Status / Error Report */ | |
4814 | + (pipe_mode_param->stream_out << 2) | | |
4815 | + HCP_CODEC_SELECT_ENCODE); | |
4816 | + OUT_BCS_BATCH(batch, 0); | |
4817 | + OUT_BCS_BATCH(batch, 0); | |
4818 | + OUT_BCS_BATCH(batch, (1 << 6)); | |
4819 | + OUT_BCS_BATCH(batch, 0); | |
4820 | + | |
4821 | + ADVANCE_BCS_BATCH(batch); | |
4822 | +} | |
4823 | + | |
4824 | +static void | |
4825 | +gen9_vp9_add_surface_state(VADriverContextP ctx, | |
4826 | + struct encode_state *encode_state, | |
4827 | + struct intel_encoder_context *encoder_context, | |
4828 | + hcp_surface_state *hcp_state) | |
4829 | +{ | |
4830 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
4831 | + if (!hcp_state) | |
4832 | + return; | |
4833 | + | |
4834 | + BEGIN_BCS_BATCH(batch, 3); | |
4835 | + OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2)); | |
4836 | + OUT_BCS_BATCH(batch, | |
4837 | + (hcp_state->dw1.surface_id << 28) | | |
4838 | + (hcp_state->dw1.surface_pitch - 1) | |
4839 | + ); | |
4840 | + OUT_BCS_BATCH(batch, | |
4841 | + (hcp_state->dw2.surface_format << 28) | | |
4842 | + (hcp_state->dw2.y_cb_offset) | |
4843 | + ); | |
4844 | + ADVANCE_BCS_BATCH(batch); | |
4845 | +} | |
4846 | + | |
4847 | +static void | |
4848 | +gen9_pak_vp9_pipe_buf_addr_state(VADriverContextP ctx, | |
4849 | + struct encode_state *encode_state, | |
4850 | + struct intel_encoder_context *encoder_context) | |
4851 | +{ | |
4852 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
4853 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
4854 | + struct gen9_vp9_state *vp9_state; | |
4855 | + unsigned int i; | |
4856 | + struct object_surface *obj_surface; | |
4857 | + | |
4858 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
4859 | + | |
4860 | + if (!vp9_state || !vp9_state->pic_param) | |
4861 | + return; | |
4862 | + | |
4863 | + | |
4864 | + BEGIN_BCS_BATCH(batch, 104); | |
4865 | + | |
4866 | + OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (104 - 2)); | |
4867 | + | |
4868 | + obj_surface = encode_state->reconstructed_object; | |
4869 | + | |
4870 | + /* reconstructed obj_surface is already checked. So this is skipped */ | |
4871 | + /* DW 1..3 decoded surface */ | |
4872 | + OUT_RELOC64(batch, | |
4873 | + obj_surface->bo, | |
4874 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4875 | + 0); | |
4876 | + OUT_BCS_BATCH(batch, 0); | |
4877 | + | |
4878 | + /* DW 4..6 deblocking line */ | |
4879 | + OUT_RELOC64(batch, | |
4880 | + pak_context->res_deblocking_filter_line_buffer.bo, | |
4881 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4882 | + 0); | |
4883 | + OUT_BCS_BATCH(batch, 0); | |
4884 | + | |
4885 | + /* DW 7..9 deblocking tile line */ | |
4886 | + OUT_RELOC64(batch, | |
4887 | + pak_context->res_deblocking_filter_tile_line_buffer.bo, | |
4888 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4889 | + 0); | |
4890 | + OUT_BCS_BATCH(batch, 0); | |
4891 | + | |
4892 | + /* DW 10..12 deblocking tile col */ | |
4893 | + OUT_RELOC64(batch, | |
4894 | + pak_context->res_deblocking_filter_tile_col_buffer.bo, | |
4895 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4896 | + 0); | |
4897 | + OUT_BCS_BATCH(batch, 0); | |
4898 | + | |
4899 | + /* DW 13..15 metadata line */ | |
4900 | + OUT_RELOC64(batch, | |
4901 | + pak_context->res_metadata_line_buffer.bo, | |
4902 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4903 | + 0); | |
4904 | + OUT_BCS_BATCH(batch, 0); | |
4905 | + | |
4906 | + /* DW 16..18 metadata tile line */ | |
4907 | + OUT_RELOC64(batch, | |
4908 | + pak_context->res_metadata_tile_line_buffer.bo, | |
4909 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4910 | + 0); | |
4911 | + OUT_BCS_BATCH(batch, 0); | |
4912 | + | |
4913 | + /* DW 19..21 metadata tile col */ | |
4914 | + OUT_RELOC64(batch, | |
4915 | + pak_context->res_metadata_tile_col_buffer.bo, | |
4916 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4917 | + 0); | |
4918 | + OUT_BCS_BATCH(batch, 0); | |
4919 | + | |
4920 | + /* DW 22..30 SAO is not used for VP9 */ | |
4921 | + OUT_BCS_BATCH(batch, 0); | |
4922 | + OUT_BCS_BATCH(batch, 0); | |
4923 | + OUT_BCS_BATCH(batch, 0); | |
4924 | + OUT_BCS_BATCH(batch, 0); | |
4925 | + OUT_BCS_BATCH(batch, 0); | |
4926 | + OUT_BCS_BATCH(batch, 0); | |
4927 | + OUT_BCS_BATCH(batch, 0); | |
4928 | + OUT_BCS_BATCH(batch, 0); | |
4929 | + OUT_BCS_BATCH(batch, 0); | |
4930 | + | |
4931 | + /* DW 31..33 Current Motion vector temporal buffer */ | |
4932 | + OUT_RELOC64(batch, | |
4933 | + pak_context->res_mv_temporal_buffer[vp9_state->curr_mv_temporal_index].bo, | |
4934 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
4935 | + 0); | |
4936 | + OUT_BCS_BATCH(batch, 0); | |
4937 | + | |
4938 | + /* DW 34..36 Not used */ | |
4939 | + OUT_BCS_BATCH(batch, 0); | |
4940 | + OUT_BCS_BATCH(batch, 0); | |
4941 | + OUT_BCS_BATCH(batch, 0); | |
4942 | + | |
4943 | + /* Only the first three reference_frame is used for VP9 */ | |
4944 | + /* DW 37..52 for reference_frame */ | |
4945 | + i = 0; | |
4946 | + if (vp9_state->picture_coding_type) { | |
4947 | + for (i = 0; i < 3; i++) { | |
4948 | + | |
4949 | + if (pak_context->reference_surfaces[i].bo) { | |
4950 | + OUT_RELOC64(batch, | |
4951 | + pak_context->reference_surfaces[i].bo, | |
4952 | + I915_GEM_DOMAIN_INSTRUCTION, 0, | |
4953 | + 0); | |
4954 | + } else { | |
4955 | + OUT_BCS_BATCH(batch, 0); | |
4956 | + OUT_BCS_BATCH(batch, 0); | |
4957 | + } | |
4958 | + } | |
4959 | + } | |
4960 | + | |
4961 | + for (; i < 8; i++) { | |
4962 | + OUT_BCS_BATCH(batch, 0); | |
4963 | + OUT_BCS_BATCH(batch, 0); | |
4964 | + } | |
4965 | + | |
4966 | + OUT_BCS_BATCH(batch, 0); | |
4967 | + | |
4968 | + /* DW 54..56 for source input */ | |
4969 | + OUT_RELOC64(batch, | |
4970 | + pak_context->uncompressed_picture_source.bo, | |
4971 | + I915_GEM_DOMAIN_INSTRUCTION, 0, | |
4972 | + 0); | |
4973 | + OUT_BCS_BATCH(batch, 0); | |
4974 | + | |
4975 | + /* DW 57..59 StreamOut is not used */ | |
4976 | + OUT_BCS_BATCH(batch, 0); | |
4977 | + OUT_BCS_BATCH(batch, 0); | |
4978 | + OUT_BCS_BATCH(batch, 0); | |
4979 | + | |
4980 | + /* DW 60..62. Not used for encoder */ | |
4981 | + OUT_BCS_BATCH(batch, 0); | |
4982 | + OUT_BCS_BATCH(batch, 0); | |
4983 | + OUT_BCS_BATCH(batch, 0); | |
4984 | + | |
4985 | + /* DW 63..65. ILDB Not used for encoder */ | |
4986 | + OUT_BCS_BATCH(batch, 0); | |
4987 | + OUT_BCS_BATCH(batch, 0); | |
4988 | + OUT_BCS_BATCH(batch, 0); | |
4989 | + | |
4990 | + /* DW 66..81 For the collocated motion vector temporal buffer */ | |
4991 | + if (vp9_state->picture_coding_type) { | |
4992 | + int prev_index = vp9_state->curr_mv_temporal_index ^ 0x01; | |
4993 | + OUT_RELOC64(batch, | |
4994 | + pak_context->res_mv_temporal_buffer[prev_index].bo, | |
4995 | + I915_GEM_DOMAIN_INSTRUCTION, 0, | |
4996 | + 0); | |
4997 | + } else { | |
4998 | + OUT_BCS_BATCH(batch, 0); | |
4999 | + OUT_BCS_BATCH(batch, 0); | |
5000 | + } | |
5001 | + | |
5002 | + for (i = 1; i < 8; i++) { | |
5003 | + OUT_BCS_BATCH(batch, 0); | |
5004 | + OUT_BCS_BATCH(batch, 0); | |
5005 | + } | |
5006 | + OUT_BCS_BATCH(batch, 0); | |
5007 | + | |
5008 | + /* DW 83..85 VP9 prob buffer */ | |
5009 | + OUT_RELOC64(batch, | |
5010 | + pak_context->res_prob_buffer.bo, | |
5011 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5012 | + 0); | |
5013 | + | |
5014 | + OUT_BCS_BATCH(batch, 0); | |
5015 | + | |
5016 | + /* DW 86..88 Segment id buffer */ | |
5017 | + if (pak_context->res_segmentid_buffer.bo) { | |
5018 | + OUT_RELOC64(batch, | |
5019 | + pak_context->res_segmentid_buffer.bo, | |
5020 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5021 | + 0); | |
5022 | + } else { | |
5023 | + OUT_BCS_BATCH(batch, 0); | |
5024 | + OUT_BCS_BATCH(batch, 0); | |
5025 | + } | |
5026 | + OUT_BCS_BATCH(batch, 0); | |
5027 | + | |
5028 | + /* DW 89..91 HVD line rowstore buffer */ | |
5029 | + OUT_RELOC64(batch, | |
5030 | + pak_context->res_hvd_line_buffer.bo, | |
5031 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5032 | + 0); | |
5033 | + OUT_BCS_BATCH(batch, 0); | |
5034 | + | |
5035 | + /* DW 92..94 HVD tile line rowstore buffer */ | |
5036 | + OUT_RELOC64(batch, | |
5037 | + pak_context->res_hvd_tile_line_buffer.bo, | |
5038 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5039 | + 0); | |
5040 | + OUT_BCS_BATCH(batch, 0); | |
5041 | + | |
5042 | + /* DW 95..97 SAO streamout. Not used for VP9 */ | |
5043 | + OUT_BCS_BATCH(batch, 0); | |
5044 | + OUT_BCS_BATCH(batch, 0); | |
5045 | + OUT_BCS_BATCH(batch, 0); | |
5046 | + | |
5047 | + /* reserved for KBL. 98..100 */ | |
5048 | + OUT_BCS_BATCH(batch, 0); | |
5049 | + OUT_BCS_BATCH(batch, 0); | |
5050 | + OUT_BCS_BATCH(batch, 0); | |
5051 | + | |
5052 | + /* 101..103 */ | |
5053 | + OUT_BCS_BATCH(batch, 0); | |
5054 | + OUT_BCS_BATCH(batch, 0); | |
5055 | + OUT_BCS_BATCH(batch, 0); | |
5056 | + | |
5057 | + ADVANCE_BCS_BATCH(batch); | |
5058 | +} | |
5059 | + | |
5060 | +static void | |
5061 | +gen9_pak_vp9_ind_obj_base_addr_state(VADriverContextP ctx, | |
5062 | + struct encode_state *encode_state, | |
5063 | + struct intel_encoder_context *encoder_context) | |
5064 | +{ | |
5065 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
5066 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
5067 | + struct gen9_vp9_state *vp9_state; | |
5068 | + | |
5069 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5070 | + | |
5071 | + /* to do */ | |
5072 | + BEGIN_BCS_BATCH(batch, 29); | |
5073 | + | |
5074 | + OUT_BCS_BATCH(batch, HCP_IND_OBJ_BASE_ADDR_STATE | (29 - 2)); | |
5075 | + | |
5076 | + /* indirect bitstream object base */ | |
5077 | + OUT_BCS_BATCH(batch, 0); | |
5078 | + OUT_BCS_BATCH(batch, 0); | |
5079 | + OUT_BCS_BATCH(batch, 0); | |
5080 | + /* the upper bound of indirect bitstream object */ | |
5081 | + OUT_BCS_BATCH(batch, 0); | |
5082 | + OUT_BCS_BATCH(batch, 0); | |
5083 | + | |
5084 | + /* DW 6: Indirect CU object base address */ | |
5085 | + OUT_RELOC64(batch, | |
5086 | + pak_context->res_mb_code_surface.bo, | |
5087 | + I915_GEM_DOMAIN_INSTRUCTION, 0, /* No write domain */ | |
5088 | + vp9_state->mb_data_offset); | |
5089 | + /* default attribute */ | |
5090 | + OUT_BCS_BATCH(batch, 0); | |
5091 | + | |
5092 | + /* DW 9..11, PAK-BSE */ | |
5093 | + OUT_RELOC64(batch, | |
5094 | + pak_context->indirect_pak_bse_object.bo, | |
5095 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5096 | + pak_context->indirect_pak_bse_object.offset); | |
5097 | + OUT_BCS_BATCH(batch, 0); | |
5098 | + | |
5099 | + /* DW 12..13 upper bound */ | |
5100 | + OUT_RELOC64(batch, | |
5101 | + pak_context->indirect_pak_bse_object.bo, | |
5102 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5103 | + pak_context->indirect_pak_bse_object.end_offset); | |
5104 | + | |
5105 | + /* DW 14..16 compressed header buffer */ | |
5106 | + OUT_RELOC64(batch, | |
5107 | + pak_context->res_compressed_input_buffer.bo, | |
5108 | + I915_GEM_DOMAIN_INSTRUCTION, 0, | |
5109 | + 0); | |
5110 | + OUT_BCS_BATCH(batch, 0); | |
5111 | + | |
5112 | + /* DW 17..19 prob counter streamout */ | |
5113 | + OUT_RELOC64(batch, | |
5114 | + pak_context->res_prob_counter_buffer.bo, | |
5115 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5116 | + 0); | |
5117 | + OUT_BCS_BATCH(batch, 0); | |
5118 | + | |
5119 | + /* DW 20..22 prob delta streamin */ | |
5120 | + OUT_RELOC64(batch, | |
5121 | + pak_context->res_prob_delta_buffer.bo, | |
5122 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5123 | + 0); | |
5124 | + OUT_BCS_BATCH(batch, 0); | |
5125 | + | |
5126 | + /* DW 23..25 Tile record streamout */ | |
5127 | + OUT_RELOC64(batch, | |
5128 | + pak_context->res_tile_record_streamout_buffer.bo, | |
5129 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5130 | + 0); | |
5131 | + OUT_BCS_BATCH(batch, 0); | |
5132 | + | |
5133 | + /* DW 26..28 CU record streamout */ | |
5134 | + OUT_RELOC64(batch, | |
5135 | + pak_context->res_cu_stat_streamout_buffer.bo, | |
5136 | + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, | |
5137 | + 0); | |
5138 | + OUT_BCS_BATCH(batch, 0); | |
5139 | + | |
5140 | + ADVANCE_BCS_BATCH(batch); | |
5141 | +} | |
5142 | + | |
5143 | +static void | |
5144 | +gen9_pak_vp9_segment_state(VADriverContextP ctx, | |
5145 | + struct encode_state *encode_state, | |
5146 | + struct intel_encoder_context *encoder_context, | |
5147 | + VAEncSegParamVP9 *seg_param, uint8_t seg_id) | |
5148 | +{ | |
5149 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
5150 | + uint32_t batch_value, tmp; | |
5151 | + VAEncPictureParameterBufferVP9 *pic_param; | |
5152 | + | |
5153 | + if (!encode_state->pic_param_ext || | |
5154 | + !encode_state->pic_param_ext->buffer) { | |
5155 | + return; | |
5156 | + } | |
5157 | + | |
5158 | + pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer; | |
5159 | + | |
5160 | + batch_value = seg_param->seg_flags.bits.segment_reference; | |
5161 | + if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME || | |
5162 | + pic_param->pic_flags.bits.intra_only) | |
5163 | + batch_value = 0; | |
5164 | + | |
5165 | + BEGIN_BCS_BATCH(batch, 8); | |
5166 | + | |
5167 | + OUT_BCS_BATCH(batch, HCP_VP9_SEGMENT_STATE | (8 - 2)); | |
5168 | + OUT_BCS_BATCH(batch, seg_id << 0); /* DW 1 - SegmentID */ | |
5169 | + OUT_BCS_BATCH(batch, | |
5170 | + (seg_param->seg_flags.bits.segment_reference_enabled << 3) | | |
5171 | + (batch_value << 1) | | |
5172 | + (seg_param->seg_flags.bits.segment_reference_skipped <<0) | |
5173 | + ); | |
5174 | + | |
5175 | + /* DW 3..6 is not used for encoder */ | |
5176 | + OUT_BCS_BATCH(batch, 0); | |
5177 | + OUT_BCS_BATCH(batch, 0); | |
5178 | + OUT_BCS_BATCH(batch, 0); | |
5179 | + OUT_BCS_BATCH(batch, 0); | |
5180 | + | |
5181 | + /* DW 7 Mode */ | |
5182 | + tmp = intel_convert_sign_mag(seg_param->segment_qindex_delta, 9); | |
5183 | + batch_value = tmp; | |
5184 | + tmp = intel_convert_sign_mag(seg_param->segment_lf_level_delta, 7); | |
5185 | + batch_value |= (tmp << 16); | |
5186 | + OUT_BCS_BATCH(batch, batch_value); | |
5187 | + | |
5188 | + ADVANCE_BCS_BATCH(batch); | |
5189 | + | |
5190 | +} | |
5191 | + | |
5192 | +static void | |
5193 | +intel_vp9enc_construct_pak_insertobj_batchbuffer(VADriverContextP ctx, | |
5194 | + struct intel_encoder_context *encoder_context, | |
5195 | + struct i965_gpe_resource *obj_batch_buffer) | |
5196 | +{ | |
5197 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
5198 | + struct gen9_vp9_state *vp9_state; | |
5199 | + int uncompressed_header_length; | |
5200 | + unsigned int *cmd_ptr; | |
5201 | + unsigned int dw_length, bits_in_last_dw; | |
5202 | + | |
5203 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5204 | + | |
5205 | + if (!pak_context || !vp9_state || !vp9_state->pic_param) | |
5206 | + return; | |
5207 | + | |
5208 | + uncompressed_header_length = vp9_state->header_length; | |
5209 | + cmd_ptr = i965_map_gpe_resource(obj_batch_buffer); | |
5210 | + | |
5211 | + bits_in_last_dw = uncompressed_header_length % 4; | |
5212 | + bits_in_last_dw *= 8; | |
5213 | + | |
5214 | + if (bits_in_last_dw == 0) | |
5215 | + bits_in_last_dw = 32; | |
5216 | + | |
5217 | + /* get the DWORD length of the inserted_data */ | |
5218 | + dw_length = ALIGN(uncompressed_header_length, 4) / 4; | |
5219 | + *cmd_ptr++ = HCP_INSERT_PAK_OBJECT | dw_length; | |
5220 | + | |
5221 | + *cmd_ptr++ = ((0 << 31) | /* indirect payload */ | |
5222 | + (0 << 16) | /* the start offset in first DW */ | |
5223 | + (0 << 15) | | |
5224 | + (bits_in_last_dw << 8) | /* bits_in_last_dw */ | |
5225 | + (0 << 4) | /* skip emulation byte count. 0 for VP9 */ | |
5226 | + (0 << 3) | /* emulation flag. 0 for VP9 */ | |
5227 | + (1 << 2) | /* last header flag. */ | |
5228 | + (0 << 1)); | |
5229 | + memcpy(cmd_ptr, vp9_state->alias_insert_data, dw_length * sizeof(unsigned int)); | |
5230 | + | |
5231 | + cmd_ptr += dw_length; | |
5232 | + | |
5233 | + *cmd_ptr++ = MI_NOOP; | |
5234 | + *cmd_ptr++ = MI_BATCH_BUFFER_END; | |
5235 | + i965_unmap_gpe_resource(obj_batch_buffer); | |
5236 | +} | |
5237 | + | |
5238 | +static void | |
5239 | +gen9_vp9_pak_picture_level(VADriverContextP ctx, | |
5240 | + struct encode_state *encode_state, | |
5241 | + struct intel_encoder_context *encoder_context) | |
5242 | +{ | |
5243 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
5244 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
5245 | + struct object_surface *obj_surface; | |
5246 | + VAEncPictureParameterBufferVP9 *pic_param; | |
5247 | + VAEncMiscParameterTypeVP9PerSegmantParam *seg_param, tmp_seg_param; | |
5248 | + struct gen9_vp9_state *vp9_state; | |
5249 | + struct gen9_surface_vp9 *vp9_priv_surface; | |
5250 | + int i; | |
5251 | + struct gen9_hcpe_pipe_mode_select_param mode_param; | |
5252 | + hcp_surface_state hcp_surface; | |
5253 | + struct gpe_mi_batch_buffer_start_parameter second_level_batch; | |
5254 | + int segment_count; | |
5255 | + | |
5256 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5257 | + | |
5258 | + if (!pak_context || !vp9_state || !vp9_state->pic_param) | |
5259 | + return; | |
5260 | + | |
5261 | + pic_param = vp9_state->pic_param; | |
5262 | + seg_param = vp9_state->segment_param; | |
5263 | + | |
5264 | + if (vp9_state->curr_pak_pass == 0) | |
5265 | + { | |
5266 | + intel_vp9enc_construct_pak_insertobj_batchbuffer(ctx, encoder_context, | |
5267 | + &pak_context->res_pak_uncompressed_input_buffer); | |
5268 | + | |
5269 | + // Check if driver already programmed pic state as part of BRC update kernel programming. | |
5270 | + if (!vp9_state->brc_enabled) | |
5271 | + { | |
5272 | + intel_vp9enc_construct_picstate_batchbuf(ctx, encode_state, | |
5273 | + encoder_context, &pak_context->res_pic_state_brc_write_hfw_read_buffer); | |
5274 | + } | |
5275 | + } | |
5276 | + | |
5277 | + if (vp9_state->curr_pak_pass == 0) | |
5278 | + { | |
5279 | + intel_vp9enc_refresh_frame_internal_buffers(ctx, encoder_context); | |
5280 | + } | |
5281 | + | |
5282 | + { | |
5283 | + /* copy the frame_context[frame_idx] into curr_frame_context */ | |
5284 | + memcpy(&vp9_state->vp9_current_fc, | |
5285 | + &(vp9_state->vp9_frame_ctx[vp9_state->frame_ctx_idx]), | |
5286 | + sizeof(FRAME_CONTEXT)); | |
5287 | + { | |
5288 | + uint8_t *prob_ptr; | |
5289 | + | |
5290 | + prob_ptr = i965_map_gpe_resource(&pak_context->res_prob_buffer); | |
5291 | + /* copy the current fc to vp9_prob buffer */ | |
5292 | + memcpy(prob_ptr, &vp9_state->vp9_current_fc, sizeof(FRAME_CONTEXT)); | |
5293 | + if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) || | |
5294 | + pic_param->pic_flags.bits.intra_only) { | |
5295 | + FRAME_CONTEXT *frame_ptr = (FRAME_CONTEXT *)prob_ptr; | |
5296 | + | |
5297 | + memcpy(frame_ptr->partition_prob, vp9_kf_partition_probs, | |
5298 | + sizeof(vp9_kf_partition_probs)); | |
5299 | + memcpy(frame_ptr->uv_mode_prob, vp9_kf_uv_mode_prob, | |
5300 | + sizeof(vp9_kf_uv_mode_prob)); | |
5301 | + } | |
5302 | + i965_unmap_gpe_resource(&pak_context->res_prob_buffer); | |
5303 | + } | |
5304 | + } | |
5305 | + | |
5306 | + if (vp9_state->brc_enabled && vp9_state->curr_pak_pass) { | |
5307 | + /* read image status and insert the conditional end cmd */ | |
5308 | + /* image ctrl/status is already accessed */ | |
5309 | + struct gpe_mi_conditional_batch_buffer_end_parameter mi_cond_end; | |
5310 | + struct vp9_encode_status_buffer_internal *status_buffer; | |
5311 | + | |
5312 | + status_buffer = &vp9_state->status_buffer; | |
5313 | + memset(&mi_cond_end, 0, sizeof(mi_cond_end)); | |
5314 | + mi_cond_end.offset = status_buffer->image_status_mask_offset; | |
5315 | + mi_cond_end.bo = status_buffer->bo; | |
5316 | + mi_cond_end.compare_data = 0; | |
5317 | + mi_cond_end.compare_mask_mode_disabled = 1; | |
5318 | + gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, | |
5319 | + &mi_cond_end); | |
5320 | + } | |
5321 | + | |
5322 | + mode_param.codec_mode = 1; | |
5323 | + mode_param.stream_out = 0; | |
5324 | + gen9_pak_vp9_pipe_mode_select(ctx, encode_state, encoder_context, &mode_param); | |
5325 | + | |
5326 | + /* reconstructed surface */ | |
5327 | + memset(&hcp_surface, 0, sizeof(hcp_surface)); | |
5328 | + obj_surface = encode_state->reconstructed_object; | |
5329 | + hcp_surface.dw1.surface_id = 0; | |
5330 | + hcp_surface.dw1.surface_pitch = obj_surface->width; | |
5331 | + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; | |
5332 | + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; | |
5333 | + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, | |
5334 | + &hcp_surface); | |
5335 | + | |
5336 | + /* Input surface */ | |
5337 | + if (vp9_state->dys_in_use && | |
5338 | + ((pic_param->frame_width_src != pic_param->frame_width_dst) || | |
5339 | + (pic_param->frame_height_src != pic_param->frame_height_dst))) { | |
5340 | + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
5341 | + obj_surface = vp9_priv_surface->dys_surface_obj; | |
5342 | + } else { | |
5343 | + obj_surface = encode_state->input_yuv_object; | |
5344 | + } | |
5345 | + | |
5346 | + hcp_surface.dw1.surface_id = 1; | |
5347 | + hcp_surface.dw1.surface_pitch = obj_surface->width; | |
5348 | + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; | |
5349 | + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; | |
5350 | + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, | |
5351 | + &hcp_surface); | |
5352 | + | |
5353 | + if (vp9_state->picture_coding_type) { | |
5354 | + /* Add surface for last */ | |
5355 | + if (vp9_state->last_ref_obj) { | |
5356 | + obj_surface = vp9_state->last_ref_obj; | |
5357 | + hcp_surface.dw1.surface_id = 2; | |
5358 | + hcp_surface.dw1.surface_pitch = obj_surface->width; | |
5359 | + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; | |
5360 | + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; | |
5361 | + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, | |
5362 | + &hcp_surface); | |
5363 | + } | |
5364 | + if (vp9_state->golden_ref_obj) { | |
5365 | + obj_surface = vp9_state->golden_ref_obj; | |
5366 | + hcp_surface.dw1.surface_id = 3; | |
5367 | + hcp_surface.dw1.surface_pitch = obj_surface->width; | |
5368 | + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; | |
5369 | + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; | |
5370 | + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, | |
5371 | + &hcp_surface); | |
5372 | + } | |
5373 | + if (vp9_state->alt_ref_obj) { | |
5374 | + obj_surface = vp9_state->alt_ref_obj; | |
5375 | + hcp_surface.dw1.surface_id = 4; | |
5376 | + hcp_surface.dw1.surface_pitch = obj_surface->width; | |
5377 | + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; | |
5378 | + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; | |
5379 | + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, | |
5380 | + &hcp_surface); | |
5381 | + } | |
5382 | + } | |
5383 | + | |
5384 | + gen9_pak_vp9_pipe_buf_addr_state(ctx, encode_state, encoder_context); | |
5385 | + | |
5386 | + gen9_pak_vp9_ind_obj_base_addr_state(ctx, encode_state, encoder_context); | |
5387 | + | |
5388 | + // Using picstate zero with updated QP and LF deltas by HuC for repak, irrespective of how many Pak passes were run in multi-pass mode. | |
5389 | + memset(&second_level_batch, 0, sizeof(second_level_batch)); | |
5390 | + | |
5391 | + if (vp9_state->curr_pak_pass == 0) { | |
5392 | + second_level_batch.offset = 0; | |
5393 | + } else | |
5394 | + second_level_batch.offset = vp9_state->curr_pak_pass * VP9_PIC_STATE_BUFFER_SIZE; | |
5395 | + | |
5396 | + second_level_batch.is_second_level = 1; | |
5397 | + second_level_batch.bo = pak_context->res_pic_state_brc_write_hfw_read_buffer.bo; | |
5398 | + | |
5399 | + gen9_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch); | |
5400 | + | |
5401 | + if (pic_param->pic_flags.bits.segmentation_enabled && | |
5402 | + seg_param) | |
5403 | + segment_count = 8; | |
5404 | + else { | |
5405 | + segment_count = 1; | |
5406 | + memset(&tmp_seg_param, 0, sizeof(tmp_seg_param)); | |
5407 | + seg_param = &tmp_seg_param; | |
5408 | + } | |
5409 | + for (i = 0; i < segment_count; i++) | |
5410 | + { | |
5411 | + gen9_pak_vp9_segment_state(ctx, encode_state, | |
5412 | + encoder_context, | |
5413 | + &seg_param->seg_data[i], i); | |
5414 | + } | |
5415 | + | |
5416 | + /* Insert the uncompressed header buffer */ | |
5417 | + second_level_batch.is_second_level = 1; | |
5418 | + second_level_batch.offset = 0; | |
5419 | + second_level_batch.bo = pak_context->res_pak_uncompressed_input_buffer.bo; | |
5420 | + | |
5421 | + gen9_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch); | |
5422 | + | |
5423 | + /* PAK_OBJECT */ | |
5424 | + second_level_batch.is_second_level = 1; | |
5425 | + second_level_batch.offset = 0; | |
5426 | + second_level_batch.bo = pak_context->res_mb_code_surface.bo; | |
5427 | + gen9_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch); | |
5428 | + | |
5429 | + return; | |
5430 | +} | |
5431 | + | |
5432 | +static void | |
5433 | +gen9_vp9_read_mfc_status(VADriverContextP ctx, struct intel_encoder_context *encoder_context) | |
5434 | +{ | |
5435 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
5436 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
5437 | + struct gpe_mi_store_register_mem_parameter mi_store_reg_mem_param; | |
5438 | + struct gpe_mi_flush_dw_parameter mi_flush_dw_param; | |
5439 | + //struct gpe_mi_copy_mem_parameter mi_copy_mem_param; | |
5440 | + struct vp9_encode_status_buffer_internal *status_buffer; | |
5441 | + struct gen9_vp9_state *vp9_state; | |
5442 | + | |
5443 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5444 | + if (!vp9_state || !pak_context || !batch) | |
5445 | + return; | |
5446 | + | |
5447 | + status_buffer = &(vp9_state->status_buffer); | |
5448 | + | |
5449 | + memset(&mi_flush_dw_param, 0, sizeof(mi_flush_dw_param)); | |
5450 | + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_param); | |
5451 | + | |
5452 | + memset(&mi_store_reg_mem_param, 0, sizeof(mi_store_reg_mem_param)); | |
5453 | + mi_store_reg_mem_param.bo = status_buffer->bo; | |
5454 | + mi_store_reg_mem_param.offset = status_buffer->bs_byte_count_offset; | |
5455 | + mi_store_reg_mem_param.mmio_offset = status_buffer->vp9_bs_frame_reg_offset; | |
5456 | + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); | |
5457 | + | |
5458 | + mi_store_reg_mem_param.bo = pak_context->res_brc_bitstream_size_buffer.bo; | |
5459 | + mi_store_reg_mem_param.offset = 0; | |
5460 | + mi_store_reg_mem_param.mmio_offset = status_buffer->vp9_bs_frame_reg_offset; | |
5461 | + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); | |
5462 | + | |
5463 | + /* Read HCP Image status */ | |
5464 | + mi_store_reg_mem_param.bo = status_buffer->bo; | |
5465 | + mi_store_reg_mem_param.offset = status_buffer->image_status_mask_offset; | |
5466 | + mi_store_reg_mem_param.mmio_offset = | |
5467 | + status_buffer->vp9_image_mask_reg_offset; | |
5468 | + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); | |
5469 | + | |
5470 | + mi_store_reg_mem_param.bo = status_buffer->bo; | |
5471 | + mi_store_reg_mem_param.offset = status_buffer->image_status_ctrl_offset; | |
5472 | + mi_store_reg_mem_param.mmio_offset = | |
5473 | + status_buffer->vp9_image_ctrl_reg_offset; | |
5474 | + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); | |
5475 | + | |
5476 | + mi_store_reg_mem_param.bo = pak_context->res_brc_bitstream_size_buffer.bo; | |
5477 | + mi_store_reg_mem_param.offset = 4; | |
5478 | + mi_store_reg_mem_param.mmio_offset = | |
5479 | + status_buffer->vp9_image_ctrl_reg_offset; | |
5480 | + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); | |
5481 | + | |
5482 | + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_param); | |
5483 | + | |
5484 | + return; | |
5485 | +} | |
5486 | + | |
5487 | +static VAStatus | |
5488 | +gen9_vp9_pak_pipeline_prepare(VADriverContextP ctx, | |
5489 | + struct encode_state *encode_state, | |
5490 | + struct intel_encoder_context *encoder_context) | |
5491 | +{ | |
5492 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
5493 | + struct object_surface *obj_surface; | |
5494 | + struct object_buffer *obj_buffer; | |
5495 | + struct i965_coded_buffer_segment *coded_buffer_segment; | |
5496 | + VAEncPictureParameterBufferVP9 *pic_param; | |
5497 | + struct gen9_vp9_state *vp9_state; | |
5498 | + dri_bo *bo; | |
5499 | + int i; | |
5500 | + | |
5501 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5502 | + if (!vp9_state || | |
5503 | + !vp9_state->pic_param) | |
5504 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
5505 | + | |
5506 | + pic_param = vp9_state->pic_param; | |
5507 | + | |
5508 | + /* reconstructed surface */ | |
5509 | + obj_surface = encode_state->reconstructed_object; | |
5510 | + i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); | |
5511 | + | |
5512 | + pak_context->reconstructed_object.bo = obj_surface->bo; | |
5513 | + dri_bo_reference(pak_context->reconstructed_object.bo); | |
5514 | + | |
5515 | + /* set vp9 reference frames */ | |
5516 | + for (i = 0; i < ARRAY_ELEMS(pak_context->reference_surfaces); i++) { | |
5517 | + if (pak_context->reference_surfaces[i].bo) | |
5518 | + dri_bo_unreference(pak_context->reference_surfaces[i].bo); | |
5519 | + pak_context->reference_surfaces[i].bo = NULL; | |
5520 | + } | |
5521 | + | |
5522 | + /* Three reference frames are enough for VP9 */ | |
5523 | + if (pic_param->pic_flags.bits.frame_type && | |
5524 | + !pic_param->pic_flags.bits.intra_only) { | |
5525 | + for (i = 0; i < 3; i++) { | |
5526 | + obj_surface = encode_state->reference_objects[i]; | |
5527 | + if (obj_surface && obj_surface->bo) { | |
5528 | + pak_context->reference_surfaces[i].bo = obj_surface->bo; | |
5529 | + dri_bo_reference(obj_surface->bo); | |
5530 | + } | |
5531 | + } | |
5532 | + } | |
5533 | + | |
5534 | + /* input YUV surface */ | |
5535 | + dri_bo_unreference(pak_context->uncompressed_picture_source.bo); | |
5536 | + pak_context->uncompressed_picture_source.bo = NULL; | |
5537 | + obj_surface = encode_state->reconstructed_object; | |
5538 | + if (vp9_state->dys_in_use && | |
5539 | + ((pic_param->frame_width_src != pic_param->frame_width_dst) || | |
5540 | + (pic_param->frame_height_src != pic_param->frame_height_dst))) { | |
5541 | + struct gen9_surface_vp9 *vp9_priv_surface = | |
5542 | + (struct gen9_surface_vp9 *)(obj_surface->private_data); | |
5543 | + obj_surface = vp9_priv_surface->dys_surface_obj; | |
5544 | + } else | |
5545 | + obj_surface = encode_state->input_yuv_object; | |
5546 | + | |
5547 | + pak_context->uncompressed_picture_source.bo = obj_surface->bo; | |
5548 | + dri_bo_reference(pak_context->uncompressed_picture_source.bo); | |
5549 | + | |
5550 | + /* coded buffer */ | |
5551 | + dri_bo_unreference(pak_context->indirect_pak_bse_object.bo); | |
5552 | + pak_context->indirect_pak_bse_object.bo = NULL; | |
5553 | + obj_buffer = encode_state->coded_buf_object; | |
5554 | + bo = obj_buffer->buffer_store->bo; | |
5555 | + pak_context->indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE; | |
5556 | + pak_context->indirect_pak_bse_object.end_offset = ALIGN((obj_buffer->size_element - 0x1000), 0x1000); | |
5557 | + pak_context->indirect_pak_bse_object.bo = bo; | |
5558 | + dri_bo_reference(pak_context->indirect_pak_bse_object.bo); | |
5559 | + | |
5560 | + /* set the internal flag to 0 to indicate the coded size is unknown */ | |
5561 | + dri_bo_map(bo, 1); | |
5562 | + coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual; | |
5563 | + coded_buffer_segment->mapped = 0; | |
5564 | + coded_buffer_segment->codec = encoder_context->codec; | |
5565 | + dri_bo_unmap(bo); | |
5566 | + | |
5567 | + return VA_STATUS_SUCCESS; | |
5568 | +} | |
5569 | + | |
5570 | +static void | |
5571 | +gen9_vp9_pak_brc_prepare(struct encode_state *encode_state, | |
5572 | + struct intel_encoder_context *encoder_context) | |
5573 | +{ | |
5574 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
5575 | + struct gen9_vp9_state *vp9_state; | |
5576 | + | |
5577 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5578 | + | |
5579 | + if (!vp9_state || !pak_context) | |
5580 | + return; | |
5581 | + | |
5582 | + if (vp9_state->brc_enabled) { | |
5583 | + /* check the buffer related with BRC */ | |
5584 | + vp9_state->brc_flag_check = 0; | |
5585 | + if (encode_state->seq_param_ext && encode_state->seq_param_ext->buffer) { | |
5586 | + vp9_state->brc_flag_check |= VP9_BRC_SEQ; | |
5587 | + } | |
5588 | + | |
5589 | + /* Frame_rate */ | |
5590 | + if (encode_state->misc_param[VAEncMiscParameterTypeFrameRate] && | |
5591 | + encode_state->misc_param[VAEncMiscParameterTypeFrameRate]->buffer) { | |
5592 | + vp9_state->brc_flag_check |= VP9_BRC_FR; | |
5593 | + } | |
5594 | + | |
5595 | + /* HRD */ | |
5596 | + if (encode_state->misc_param[VAEncMiscParameterTypeRateControl] && | |
5597 | + encode_state->misc_param[VAEncMiscParameterTypeRateControl]->buffer) { | |
5598 | + vp9_state->brc_flag_check |= VP9_BRC_RC; | |
5599 | + } | |
5600 | + | |
5601 | + if (encode_state->misc_param[VAEncMiscParameterTypeHRD] && | |
5602 | + encode_state->misc_param[VAEncMiscParameterTypeHRD]->buffer) { | |
5603 | + vp9_state->brc_flag_check |= VP9_BRC_HRD; | |
5604 | + } | |
5605 | + | |
5606 | + /* | |
5607 | + * If user-app doesn't pass the buffer related with BRC for the first | |
5608 | + * frame, the error flag is returned. | |
5609 | + */ | |
5610 | + if (vp9_state->brc_flag_check == 0 && vp9_state->first_frame) { | |
5611 | + vp9_state->brc_flag_check |= VP9_BRC_FAILURE; | |
5612 | + } | |
5613 | + } | |
5614 | + return; | |
5615 | +} | |
5616 | + | |
5617 | +static void | |
5618 | +gen9_vp9_pak_context_destroy(void *context) | |
5619 | +{ | |
5620 | + struct gen9_encoder_context_vp9 *pak_context = context; | |
5621 | + int i; | |
5622 | + | |
5623 | + dri_bo_unreference(pak_context->reconstructed_object.bo); | |
5624 | + pak_context->reconstructed_object.bo = NULL; | |
5625 | + | |
5626 | + dri_bo_unreference(pak_context->uncompressed_picture_source.bo); | |
5627 | + pak_context->uncompressed_picture_source.bo = NULL; | |
5628 | + | |
5629 | + dri_bo_unreference(pak_context->indirect_pak_bse_object.bo); | |
5630 | + pak_context->indirect_pak_bse_object.bo = NULL; | |
5631 | + | |
5632 | + for (i = 0; i < 8; i++){ | |
5633 | + dri_bo_unreference(pak_context->reference_surfaces[i].bo); | |
5634 | + pak_context->reference_surfaces[i].bo = NULL; | |
5635 | + } | |
5636 | + | |
5637 | + /* vme & pak same the same structure, so don't free the context here */ | |
5638 | +} | |
5639 | + | |
5640 | +static VAStatus | |
5641 | +gen9_vp9_pak_pipeline(VADriverContextP ctx, | |
5642 | + VAProfile profile, | |
5643 | + struct encode_state *encode_state, | |
5644 | + struct intel_encoder_context *encoder_context) | |
5645 | +{ | |
5646 | + struct i965_driver_data *i965 = i965_driver_data(ctx); | |
5647 | + struct intel_batchbuffer *batch = encoder_context->base.batch; | |
5648 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; | |
5649 | + VAStatus va_status; | |
5650 | + struct gen9_vp9_state *vp9_state; | |
5651 | + VAEncPictureParameterBufferVP9 *pic_param; | |
5652 | + int i; | |
5653 | + | |
5654 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5655 | + | |
5656 | + if (!vp9_state || !vp9_state->pic_param || !pak_context) | |
5657 | + return VA_STATUS_ERROR_INVALID_PARAMETER; | |
5658 | + | |
5659 | + va_status = gen9_vp9_pak_pipeline_prepare(ctx, encode_state, encoder_context); | |
5660 | + | |
5661 | + if (va_status != VA_STATUS_SUCCESS) | |
5662 | + return va_status; | |
5663 | + | |
5664 | + if (i965->intel.has_bsd2) | |
5665 | + intel_batchbuffer_start_atomic_bcs_override(batch, 0x1000, BSD_RING0); | |
5666 | + else | |
5667 | + intel_batchbuffer_start_atomic_bcs(batch, 0x1000); | |
5668 | + | |
5669 | + intel_batchbuffer_emit_mi_flush(batch); | |
5670 | + | |
5671 | + BEGIN_BCS_BATCH(batch, 64); | |
5672 | + for (i = 0; i < 64; i++) | |
5673 | + OUT_BCS_BATCH(batch, MI_NOOP); | |
5674 | + | |
5675 | + ADVANCE_BCS_BATCH(batch); | |
5676 | + | |
5677 | + for (vp9_state->curr_pak_pass = 0; | |
5678 | + vp9_state->curr_pak_pass < vp9_state->num_pak_passes; | |
5679 | + vp9_state->curr_pak_pass++) { | |
5680 | + | |
5681 | + if (vp9_state->curr_pak_pass == 0) { | |
5682 | + /* Initialize the VP9 Image Ctrl reg for the first pass */ | |
5683 | + struct gpe_mi_load_register_imm_parameter mi_load_reg_imm; | |
5684 | + struct vp9_encode_status_buffer_internal *status_buffer; | |
5685 | + | |
5686 | + status_buffer = &(vp9_state->status_buffer); | |
5687 | + memset(&mi_load_reg_imm, 0, sizeof(mi_load_reg_imm)); | |
5688 | + mi_load_reg_imm.mmio_offset = status_buffer->vp9_image_ctrl_reg_offset; | |
5689 | + mi_load_reg_imm.data = 0; | |
5690 | + gen9_gpe_mi_load_register_imm(ctx, batch, &mi_load_reg_imm); | |
5691 | + } | |
5692 | + gen9_vp9_pak_picture_level(ctx, encode_state, encoder_context); | |
5693 | + gen9_vp9_read_mfc_status(ctx, encoder_context); | |
5694 | + } | |
5695 | + | |
5696 | + intel_batchbuffer_end_atomic(batch); | |
5697 | + intel_batchbuffer_flush(batch); | |
5698 | + | |
5699 | + pic_param = vp9_state->pic_param; | |
5700 | + vp9_state->vp9_last_frame.frame_width = pic_param->frame_width_dst; | |
5701 | + vp9_state->vp9_last_frame.frame_height = pic_param->frame_height_dst; | |
5702 | + vp9_state->vp9_last_frame.frame_type = pic_param->pic_flags.bits.frame_type; | |
5703 | + vp9_state->vp9_last_frame.show_frame = pic_param->pic_flags.bits.show_frame; | |
5704 | + vp9_state->vp9_last_frame.refresh_frame_context = pic_param->pic_flags.bits.refresh_frame_context; | |
5705 | + vp9_state->vp9_last_frame.frame_context_idx = pic_param->pic_flags.bits.frame_context_idx; | |
5706 | + vp9_state->vp9_last_frame.intra_only = pic_param->pic_flags.bits.intra_only; | |
5707 | + vp9_state->frame_number++; | |
5708 | + vp9_state->curr_mv_temporal_index ^= 1; | |
5709 | + | |
5710 | + return VA_STATUS_SUCCESS; | |
5711 | +} | |
5712 | + | |
5713 | +Bool | |
5714 | +gen9_vp9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context) | |
5715 | +{ | |
5716 | + struct gen9_encoder_context_vp9 *vme_context = NULL; | |
5717 | + struct gen9_vp9_state *vp9_state = NULL; | |
5718 | + | |
5719 | + vme_context = calloc(1, sizeof(struct gen9_encoder_context_vp9)); | |
5720 | + vp9_state = calloc(1, sizeof(struct gen9_vp9_state)); | |
5721 | + | |
5722 | + if (!vme_context || !vp9_state) { | |
5723 | + if (vme_context) | |
5724 | + free(vme_context); | |
5725 | + if (vp9_state) | |
5726 | + free(vp9_state); | |
5727 | + return false; | |
5728 | + } | |
5729 | + | |
5730 | + encoder_context->enc_priv_state = vp9_state; | |
5731 | + vme_context->enc_priv_state = vp9_state; | |
5732 | + | |
5733 | + /* Initialize the features that are supported by VP9 */ | |
5734 | + vme_context->hme_supported = 1; | |
5735 | + vme_context->use_hw_scoreboard = 1; | |
5736 | + vme_context->use_hw_non_stalling_scoreboard = 1; | |
5737 | + | |
5738 | + vp9_state->tx_mode = TX_MODE_SELECT; | |
5739 | + vp9_state->multi_ref_qp_check = 0; | |
5740 | + vp9_state->target_usage = INTEL_ENC_VP9_TU_NORMAL; | |
5741 | + vp9_state->num_pak_passes = 1; | |
5742 | + vp9_state->hme_supported = vme_context->hme_supported; | |
5743 | + vp9_state->b16xme_supported = 1; | |
5744 | + | |
5745 | + if (encoder_context->rate_control_mode != VA_RC_NONE && | |
5746 | + encoder_context->rate_control_mode != VA_RC_CQP) { | |
5747 | + vp9_state->brc_enabled = 1; | |
5748 | + vp9_state->brc_distortion_buffer_supported = 1; | |
5749 | + vp9_state->brc_constant_buffer_supported = 1; | |
5750 | + vp9_state->num_pak_passes = 4; | |
5751 | + } | |
5752 | + vp9_state->dys_enabled = 1; /* this is supported by default */ | |
5753 | + vp9_state->first_frame = 1; | |
5754 | + | |
5755 | + /* the definition of status buffer offset for VP9 */ | |
5756 | + { | |
5757 | + struct vp9_encode_status_buffer_internal *status_buffer; | |
5758 | + | |
5759 | + status_buffer = &vp9_state->status_buffer; | |
5760 | + memset(status_buffer, 0, | |
5761 | + sizeof(struct vp9_encode_status_buffer_internal)); | |
5762 | + | |
5763 | + status_buffer->bs_byte_count_offset = 2048; | |
5764 | + status_buffer->image_status_mask_offset = 2052; | |
5765 | + status_buffer->image_status_ctrl_offset = 2056; | |
5766 | + status_buffer->media_index_offset = 2060; | |
5767 | + | |
5768 | + status_buffer->vp9_bs_frame_reg_offset = 0x1E9E0; | |
5769 | + status_buffer->vp9_image_mask_reg_offset = 0x1E9F0; | |
5770 | + status_buffer->vp9_image_ctrl_reg_offset = 0x1E9F4; | |
5771 | + } | |
5772 | + | |
5773 | + gen9_vme_kernels_context_init_vp9(ctx, encoder_context, vme_context); | |
5774 | + | |
5775 | + encoder_context->vme_context = vme_context; | |
5776 | + encoder_context->vme_pipeline = gen9_vme_pipeline_vp9; | |
5777 | + encoder_context->vme_context_destroy = gen9_vme_context_destroy_vp9; | |
5778 | + | |
5779 | + return true; | |
5780 | +} | |
5781 | + | |
5782 | +Bool | |
5783 | +gen9_vp9_pak_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context) | |
5784 | +{ | |
5785 | + /* VME & PAK share the same context */ | |
5786 | + struct gen9_encoder_context_vp9 *pak_context = encoder_context->vme_context; | |
5787 | + | |
5788 | + if (!pak_context) | |
5789 | + return false; | |
5790 | + | |
5791 | + encoder_context->mfc_context = pak_context; | |
5792 | + encoder_context->mfc_context_destroy = gen9_vp9_pak_context_destroy; | |
5793 | + encoder_context->mfc_pipeline = gen9_vp9_pak_pipeline; | |
5794 | + encoder_context->mfc_brc_prepare = gen9_vp9_pak_brc_prepare; | |
5795 | + | |
5796 | + return true; | |
5797 | +} | |
5798 | + | |
5799 | +VAStatus | |
5800 | +gen9_vp9_get_coded_status(VADriverContextP ctx, | |
5801 | + char *buffer, | |
5802 | + struct hw_context *hw_context) | |
5803 | +{ | |
5804 | + struct intel_encoder_context *encoder_context = | |
5805 | + (struct intel_encoder_context *)hw_context; | |
5806 | + struct gen9_vp9_state *vp9_state = NULL; | |
5807 | + struct vp9_encode_status_buffer_internal *status_buffer; | |
5808 | + struct i965_coded_buffer_segment *coded_buf_seg; | |
5809 | + unsigned int *buf_ptr; | |
5810 | + | |
5811 | + if (!encoder_context || !buffer) | |
5812 | + return VA_STATUS_ERROR_INVALID_BUFFER; | |
5813 | + | |
5814 | + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); | |
5815 | + coded_buf_seg = (struct i965_coded_buffer_segment *) buffer; | |
5816 | + | |
5817 | + if (!vp9_state) | |
5818 | + return VA_STATUS_ERROR_INVALID_BUFFER; | |
5819 | + | |
5820 | + status_buffer = &vp9_state->status_buffer; | |
5821 | + | |
5822 | + buf_ptr = (unsigned int *)(buffer + status_buffer->bs_byte_count_offset); | |
5823 | + coded_buf_seg->base.buf = buffer + I965_CODEDBUFFER_HEADER_SIZE; | |
5824 | + coded_buf_seg->base.next = NULL; | |
5825 | + | |
5826 | + /* the stream size is writen into the bs_byte_count_offset address of buffer */ | |
5827 | + coded_buf_seg->base.size = *buf_ptr; | |
5828 | + | |
5829 | + coded_buf_seg->mapped = 1; | |
5830 | + | |
5831 | + /* One VACodedBufferSegment for VP9 will be added later. | |
5832 | + * It will be linked to the next element of coded_buf_seg->base.next | |
5833 | + */ | |
5834 | + | |
5835 | + return VA_STATUS_SUCCESS; | |
5836 | +} |
@@ -0,0 +1,1976 @@ | ||
1 | +/* | |
2 | + * Copyright © 2016 Intel Corporation | |
3 | + * | |
4 | + * Permission is hereby granted, free of charge, to any person obtaining a | |
5 | + * copy of this software and associated documentation files (the | |
6 | + * "Software"), to deal in the Software without restriction, including | |
7 | + * without limitation the rights to use, copy, modify, merge, publish, | |
8 | + * distribute, sub license, and/or sell copies of the Software, and to | |
9 | + * permit persons to whom the Software is furnished to do so, subject to | |
10 | + * the following conditions: | |
11 | + * | |
12 | + * The above copyright notice and this permission notice (including the | |
13 | + * next paragraph) shall be included in all copies or substantial portions | |
14 | + * of the Software. | |
15 | + * | |
16 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
17 | + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
18 | + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | |
19 | + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR | |
20 | + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
21 | + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
22 | + * SOFTWAR | |
23 | + * | |
24 | + * Authors: | |
25 | + * Zhao, Yakui <yakui.zhao@intel.com> | |
26 | + * | |
27 | + */ | |
28 | + | |
29 | +#ifndef GEN9_VP9_ENCODER_H | |
30 | +#define GEN9_VP9_ENCODER_H | |
31 | + | |
32 | +#include <drm.h> | |
33 | +#include <i915_drm.h> | |
34 | +#include <intel_bufmgr.h> | |
35 | + | |
36 | +#include <va/va.h> | |
37 | +#include "i965_gpe_utils.h" | |
38 | + | |
39 | +#include "vp9_probs.h" | |
40 | + | |
41 | +struct encode_state; | |
42 | +struct intel_encoder_context; | |
43 | + | |
44 | +#define KEY_FRAME 0 | |
45 | +#define INTER_FRAME 1 | |
46 | + | |
47 | +#define INTEL_BRC_NONE 0 | |
48 | +#define INTEL_BRC_CBR 1 | |
49 | +#define INTEL_BRC_VBR 2 | |
50 | +#define INTEL_BRC_CQP 3 | |
51 | + | |
52 | +typedef enum _VP9_MEDIA_STATE_TYPE | |
53 | +{ | |
54 | + VP9_MEDIA_STATE_ENC_I_FRAME_DIST = 0, | |
55 | + VP9_MEDIA_STATE_32X_SCALING , | |
56 | + VP9_MEDIA_STATE_16X_SCALING , | |
57 | + VP9_MEDIA_STATE_4X_SCALING , | |
58 | + VP9_MEDIA_STATE_32X_ME , | |
59 | + VP9_MEDIA_STATE_16X_ME , | |
60 | + VP9_MEDIA_STATE_4X_ME , | |
61 | + VP9_MEDIA_STATE_BRC_INIT_RESET , | |
62 | + VP9_MEDIA_STATE_BRC_UPDATE , | |
63 | + VP9_MEDIA_STATE_MBENC_I_32x32 , | |
64 | + VP9_MEDIA_STATE_MBENC_I_16x16 , | |
65 | + VP9_MEDIA_STATE_MBENC_P , | |
66 | + VP9_MEDIA_STATE_MBENC_TX , | |
67 | + VP9_MEDIA_STATE_DYS , | |
68 | + VP9_NUM_MEDIA_STATES | |
69 | +} VP9_MEDIA_STATE_TYPE; | |
70 | + | |
71 | + | |
72 | +enum vp9_walker_degree | |
73 | +{ | |
74 | + VP9_NO_DEGREE = 0, | |
75 | + VP9_26_DEGREE, | |
76 | + VP9_45Z_DEGREE | |
77 | +}; | |
78 | + | |
79 | +struct vp9_encoder_kernel_parameter | |
80 | +{ | |
81 | + unsigned int curbe_size; | |
82 | + unsigned int inline_data_size; | |
83 | + unsigned int sampler_size; | |
84 | +}; | |
85 | + | |
86 | +struct vp9_encoder_kernel_walker_parameter | |
87 | +{ | |
88 | + unsigned int walker_degree; | |
89 | + unsigned int use_scoreboard; | |
90 | + unsigned int scoreboard_mask; | |
91 | + unsigned int no_dependency; | |
92 | + unsigned int resolution_x; | |
93 | + unsigned int resolution_y; | |
94 | +}; | |
95 | + | |
96 | +struct vp9_encoder_scoreboard_parameter | |
97 | +{ | |
98 | + unsigned int mask; | |
99 | + unsigned int type; | |
100 | + unsigned int enable; | |
101 | + unsigned int walkpat_flag; | |
102 | +}; | |
103 | + | |
104 | +typedef enum _INTEL_VP9_ENC_OPERATION | |
105 | +{ | |
106 | + INTEL_VP9_ENC_SCALING4X = 0, | |
107 | + INTEL_VP9_ENC_SCALING2X, | |
108 | + INTEL_VP9_ENC_ME, | |
109 | + INTEL_VP9_ENC_BRC, | |
110 | + INTEL_VP9_ENC_MBENC, | |
111 | + INTEL_VP9_ENC_DYS | |
112 | +} INTEL_VP9_ENC_OPERATION; | |
113 | + | |
114 | +struct gen9_surface_vp9 | |
115 | +{ | |
116 | + VADriverContextP ctx; | |
117 | + VASurfaceID scaled_4x_surface_id; | |
118 | + struct object_surface *scaled_4x_surface_obj; | |
119 | + VASurfaceID scaled_16x_surface_id; | |
120 | + struct object_surface *scaled_16x_surface_obj; | |
121 | + | |
122 | + VASurfaceID dys_surface_id; | |
123 | + struct object_surface *dys_surface_obj; | |
124 | + VASurfaceID dys_4x_surface_id; | |
125 | + struct object_surface *dys_4x_surface_obj; | |
126 | + VASurfaceID dys_16x_surface_id; | |
127 | + struct object_surface *dys_16x_surface_obj; | |
128 | + int dys_frame_width; | |
129 | + int dys_frame_height; | |
130 | + int frame_width; | |
131 | + int frame_height; | |
132 | + unsigned int qp_value; | |
133 | + uint8_t dys_hme_flag; | |
134 | +}; | |
135 | + | |
136 | +/* The definition for Scaling */ | |
137 | +enum vp9_binding_table_offset_scaling | |
138 | +{ | |
139 | + VP9_BTI_SCALING_FRAME_SRC_Y = 0, | |
140 | + VP9_BTI_SCALING_FRAME_DST_Y = 1, | |
141 | + VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM = 6, | |
142 | + VP9_BTI_SCALING_NUM_SURFACES = 8 | |
143 | +}; | |
144 | + | |
145 | + | |
146 | +typedef struct _vp9_scaling4x_curbe_data_cm | |
147 | +{ | |
148 | + struct | |
149 | + { | |
150 | + uint32_t input_picture_width :16; | |
151 | + uint32_t input_picture_height :16; | |
152 | + } dw0; | |
153 | + | |
154 | + struct { | |
155 | + uint32_t input_y_bti; | |
156 | + } dw1; | |
157 | + | |
158 | + struct { | |
159 | + uint32_t output_y_bti; | |
160 | + } dw2; | |
161 | + | |
162 | + struct { | |
163 | + uint32_t reserved; | |
164 | + } dw3; | |
165 | + | |
166 | + struct { | |
167 | + uint32_t reserved; | |
168 | + } dw4; | |
169 | + | |
170 | + struct { | |
171 | + uint32_t reserved; | |
172 | + } dw5; | |
173 | + | |
174 | + struct | |
175 | + { | |
176 | + uint32_t reserved0 : 1; | |
177 | + uint32_t enable_mb_variance_output : 1; | |
178 | + uint32_t enable_mb_pixel_average_output : 1; | |
179 | + uint32_t enable_blk8x8_stat_output : 1; | |
180 | + uint32_t reserved1 : 28; | |
181 | + } dw6; | |
182 | + | |
183 | + struct { | |
184 | + uint32_t reserved; | |
185 | + } dw7; | |
186 | + | |
187 | + struct { | |
188 | + uint32_t reserved; | |
189 | + } dw8; | |
190 | + | |
191 | + struct { | |
192 | + uint32_t reserved; | |
193 | + } dw9; | |
194 | + | |
195 | + struct { | |
196 | + uint32_t mbv_proc_stat_bti; | |
197 | + } dw10; | |
198 | + | |
199 | + struct { | |
200 | + uint32_t reserved; | |
201 | + } dw11; | |
202 | +} vp9_scaling4x_curbe_data_cm; | |
203 | + | |
204 | +typedef struct _vp9_scaling2x_curbe_data_cm | |
205 | +{ | |
206 | + struct | |
207 | + { | |
208 | + uint32_t input_picture_width :16; | |
209 | + uint32_t input_picture_height :16; | |
210 | + } dw0; | |
211 | + | |
212 | + /* dw1-dw7 */ | |
213 | + uint32_t reserved1[7]; | |
214 | + | |
215 | + struct { | |
216 | + uint32_t input_y_bti; | |
217 | + } dw8; | |
218 | + | |
219 | + struct { | |
220 | + uint32_t output_y_bti; | |
221 | + } dw9; | |
222 | + | |
223 | + uint32_t reserved2[2]; | |
224 | +} vp9_scaling2x_curbe_data_cm; | |
225 | + | |
226 | +typedef struct _vp9_scaling4x_inline_data_cm | |
227 | +{ | |
228 | + struct | |
229 | + { | |
230 | + uint32_t dstblk_hori_origin : 16; | |
231 | + uint32_t dstblk_vert_origin : 16; | |
232 | + } dw0; | |
233 | + | |
234 | + struct | |
235 | + { | |
236 | + uint32_t horiblk_compmask_layer0 : 16; | |
237 | + uint32_t vertblk_compmask_layer0 : 16; | |
238 | + } dw1; | |
239 | + | |
240 | + struct | |
241 | + { | |
242 | + uint32_t horiblk_compmask_layer1 : 16; | |
243 | + uint32_t vertblk_compmask_layer1 : 16; | |
244 | + } dw2; | |
245 | + | |
246 | + struct | |
247 | + { | |
248 | + uint32_t horiblk_compmask_layer2 : 16; | |
249 | + uint32_t vertblk_compmask_layer2 : 16; | |
250 | + } dw3; | |
251 | + | |
252 | + struct | |
253 | + { | |
254 | + float video_xscaling_step; | |
255 | + } dw4; | |
256 | + | |
257 | + struct | |
258 | + { | |
259 | + float video_step_delta; | |
260 | + } dw5; | |
261 | + | |
262 | + | |
263 | + struct | |
264 | + { | |
265 | + uint32_t vert_blk_num :17; | |
266 | + uint32_t area_interest :1; | |
267 | + uint32_t reserved :14; | |
268 | + } dw6; | |
269 | + | |
270 | + struct | |
271 | + { | |
272 | + uint32_t grp_id_num; | |
273 | + } dw7; | |
274 | + | |
275 | + struct | |
276 | + { | |
277 | + uint32_t horiblk_compmask_layer3 : 16; | |
278 | + uint32_t vertblk_compmask_layer3 : 16; | |
279 | + } dw8; | |
280 | + | |
281 | + struct | |
282 | + { | |
283 | + uint32_t horiblk_compmask_layer4 : 16; | |
284 | + uint32_t vertblk_compmask_layer4 : 16; | |
285 | + } dw9; | |
286 | + | |
287 | + struct | |
288 | + { | |
289 | + uint32_t horiblk_compmask_layer5 : 16; | |
290 | + uint32_t vertblk_compmask_layer5 : 16; | |
291 | + } dw10; | |
292 | + | |
293 | + struct | |
294 | + { | |
295 | + uint32_t horiblk_compmask_layer6 : 16; | |
296 | + uint32_t vertblk_compmask_layer6 : 16; | |
297 | + } dw11; | |
298 | + | |
299 | + struct | |
300 | + { | |
301 | + uint32_t horiblk_compmask_layer7 : 16; | |
302 | + uint32_t vertblk_compmask_layer7 : 16; | |
303 | + } dw12; | |
304 | + | |
305 | + struct { | |
306 | + uint32_t reserved; | |
307 | + } dw13; | |
308 | + | |
309 | + struct { | |
310 | + uint32_t reserved; | |
311 | + } dw14; | |
312 | + | |
313 | + struct { | |
314 | + uint32_t reserved; | |
315 | + } dw15; | |
316 | +} vp9_scaling4x_inline_data_cm; | |
317 | + | |
318 | +#define VP9_SCALING_4X 0 | |
319 | +#define VP9_SCALING_2X 1 | |
320 | +#define NUM_VP9_SCALING 2 | |
321 | + | |
322 | +typedef struct _vp9_bti_scaling_offset | |
323 | +{ | |
324 | + uint32_t scaling_frame_src_y; | |
325 | + uint32_t scaling_frame_dst_y; | |
326 | + uint32_t reserved; | |
327 | + uint32_t scaling_frame_mbv_proc_stat_dst; | |
328 | +} vp9_bti_scaling_offset; | |
329 | + | |
330 | +struct vp9_scaling_context | |
331 | +{ | |
332 | + struct i965_gpe_context gpe_contexts[NUM_VP9_SCALING]; | |
333 | + vp9_bti_scaling_offset scaling_4x_bti; | |
334 | + vp9_bti_scaling_offset scaling_2x_bti; | |
335 | +}; | |
336 | + | |
337 | +struct gen9_search_path_delta | |
338 | +{ | |
339 | + char search_path_delta_x:4; | |
340 | + char search_path_delta_y:4; | |
341 | +}; | |
342 | + | |
343 | +struct vp9_binding_table_me | |
344 | +{ | |
345 | + uint32_t memv_data_surface_offset; | |
346 | + uint32_t memv16x_data_surface_offset; | |
347 | + uint32_t me_dist_offset; | |
348 | + uint32_t me_brc_dist_offset; | |
349 | + uint32_t me_curr_picl0_offset; | |
350 | + uint32_t me_curr_picl1_offset; | |
351 | +}; | |
352 | + | |
353 | +enum vp9_binding_table_offset_me | |
354 | +{ | |
355 | + VP9_BTI_ME_MV_DATA_SURFACE = 0, | |
356 | + VP9_BTI_16XME_MV_DATA_SURFACE = 1, | |
357 | + VP9_BTI_ME_DISTORTION_SURFACE = 2, | |
358 | + VP9_BTI_ME_BRC_DISTORTION_SURFACE = 3, | |
359 | + VP9_BTI_ME_CURR_PIC_L0 = 4, | |
360 | + VP9_BTI_ME_CURR_PIC_L1 = VP9_BTI_ME_CURR_PIC_L0 + 17, | |
361 | + VP9_BTI_ME_NUM_SURFACES = VP9_BTI_ME_CURR_PIC_L1 + 5 | |
362 | +}; | |
363 | + | |
364 | +enum VP9_ENC_ME_MODES | |
365 | +{ | |
366 | + VP9_ENC_ME16X_BEFORE_ME4X = 0, | |
367 | + VP9_ENC_ME16X_ONLY = 1, | |
368 | + VP9_ENC_ME4X_ONLY = 2, | |
369 | + VP9_ENC_ME4X_AFTER_ME16X = 3 | |
370 | +}; | |
371 | + | |
372 | +typedef struct _vp9_me_curbe_data | |
373 | +{ | |
374 | + struct | |
375 | + { | |
376 | + uint32_t skip_mode_enable:1; | |
377 | + uint32_t adaptive_enable:1; | |
378 | + uint32_t bi_mix_dis:1; | |
379 | + uint32_t reserved0:2; | |
380 | + uint32_t early_ime_success_enable:1; | |
381 | + uint32_t reserved1:1; | |
382 | + uint32_t t8x8_flag_for_inter_enable:1; | |
383 | + uint32_t reserved2:16; | |
384 | + uint32_t early_ime_stop:8; | |
385 | + } dw0; | |
386 | + | |
387 | + struct { | |
388 | + uint32_t max_num_mvs:6; | |
389 | + uint32_t reserved0:10; | |
390 | + uint32_t bi_weight:6; | |
391 | + uint32_t reserved1:6; | |
392 | + uint32_t uni_mix_disable:1; | |
393 | + uint32_t reserved2:3; | |
394 | + } dw1; | |
395 | + | |
396 | + struct { | |
397 | + uint32_t max_len_sp:8; | |
398 | + uint32_t max_num_su:8; | |
399 | + uint32_t reserved0:16; | |
400 | + } dw2; | |
401 | + | |
402 | + struct { | |
403 | + uint32_t src_size:2; | |
404 | + uint32_t reserved0:2; | |
405 | + uint32_t mb_type_remap:2; | |
406 | + uint32_t src_Access:1; | |
407 | + uint32_t ref_access:1; | |
408 | + uint32_t search_ctrl:3; | |
409 | + uint32_t dual_search_path_option:1; | |
410 | + uint32_t sub_pel_mode:2; | |
411 | + uint32_t skip_type:1; | |
412 | + uint32_t disable_field_cache_allocation:1; | |
413 | + uint32_t inter_chroma_mode:1; | |
414 | + uint32_t ft_enable:1; | |
415 | + uint32_t bme_disable_fbr:1; | |
416 | + uint32_t block_based_skip_enable:1; | |
417 | + uint32_t inter_sad:2; | |
418 | + uint32_t intra_sad:2; | |
419 | + uint32_t sub_mb_part_mask:7; | |
420 | + uint32_t reserved1:1; | |
421 | + } dw3; | |
422 | + | |
423 | + struct { | |
424 | + uint32_t reserved0:8; | |
425 | + uint32_t picture_height_minus1:8; | |
426 | + uint32_t picture_width:8; | |
427 | + uint32_t reserved1:8; | |
428 | + } dw4; | |
429 | + | |
430 | + struct { | |
431 | + uint32_t reserved0:8; | |
432 | + uint32_t qp_prime_y:8; | |
433 | + uint32_t ref_width:8; | |
434 | + uint32_t ref_height:8; | |
435 | + } dw5; | |
436 | + | |
437 | + struct { | |
438 | + uint32_t reserved0:3; | |
439 | + uint32_t write_distortions:1; | |
440 | + uint32_t use_mv_from_prev_step:1; | |
441 | + uint32_t reserved1:3; | |
442 | + uint32_t super_combine_dist:8; | |
443 | + uint32_t max_vmvr:16; | |
444 | + } dw6; | |
445 | + | |
446 | + struct { | |
447 | + uint32_t reserved0:16; | |
448 | + uint32_t mv_cost_scale_factor:2; | |
449 | + uint32_t bilinear_enable:1; | |
450 | + uint32_t src_field_polarity:1; | |
451 | + uint32_t weightedsad_harr:1; | |
452 | + uint32_t ac_only_haar:1; | |
453 | + uint32_t ref_id_cost_mode:1; | |
454 | + uint32_t reserved1:1; | |
455 | + uint32_t skip_center_mask:8; | |
456 | + } dw7; | |
457 | + | |
458 | + struct { | |
459 | + uint32_t mode_0_cost:8; | |
460 | + uint32_t mode_1_cost:8; | |
461 | + uint32_t mode_2_cost:8; | |
462 | + uint32_t mode_3_cost:8; | |
463 | + } dw8; | |
464 | + | |
465 | + struct { | |
466 | + uint32_t mode_4_cost:8; | |
467 | + uint32_t mode_5_cost:8; | |
468 | + uint32_t mode_6_cost:8; | |
469 | + uint32_t mode_7_cost:8; | |
470 | + } dw9; | |
471 | + | |
472 | + struct { | |
473 | + uint32_t mode_8_cost:8; | |
474 | + uint32_t mode_9_cost:8; | |
475 | + uint32_t ref_id_cost:8; | |
476 | + uint32_t chroma_intra_mode_cost:8; | |
477 | + } dw10; | |
478 | + | |
479 | + struct { | |
480 | + uint32_t mv_0_cost:8; | |
481 | + uint32_t mv_1_cost:8; | |
482 | + uint32_t mv_2_cost:8; | |
483 | + uint32_t mv_3_cost:8; | |
484 | + } dw11; | |
485 | + | |
486 | + struct { | |
487 | + uint32_t mv_4_cost:8; | |
488 | + uint32_t mv_5_cost:8; | |
489 | + uint32_t mv_6_cost:8; | |
490 | + uint32_t mv_7_cost:8; | |
491 | + } dw12; | |
492 | + | |
493 | + struct { | |
494 | + uint32_t num_ref_idx_l0_minus1:8; | |
495 | + uint32_t num_ref_idx_l1_minus1:8; | |
496 | + uint32_t actual_mb_width:8; | |
497 | + uint32_t actual_mb_height:8; | |
498 | + } dw13; | |
499 | + | |
500 | + struct { | |
501 | + uint32_t l0_ref_pic_polarity_bits:8; | |
502 | + uint32_t l1_ref_pic_polarity_bits:2; | |
503 | + uint32_t reserved:22; | |
504 | + } dw14; | |
505 | + | |
506 | + struct { | |
507 | + uint32_t prev_mv_read_pos_factor : 8; | |
508 | + uint32_t mv_shift_factor : 8; | |
509 | + uint32_t reserved:16; | |
510 | + } dw15; | |
511 | + | |
512 | + struct { | |
513 | + struct gen9_search_path_delta sp_delta_0; | |
514 | + struct gen9_search_path_delta sp_delta_1; | |
515 | + struct gen9_search_path_delta sp_delta_2; | |
516 | + struct gen9_search_path_delta sp_delta_3; | |
517 | + } dw16; | |
518 | + | |
519 | + struct { | |
520 | + struct gen9_search_path_delta sp_delta_4; | |
521 | + struct gen9_search_path_delta sp_delta_5; | |
522 | + struct gen9_search_path_delta sp_delta_6; | |
523 | + struct gen9_search_path_delta sp_delta_7; | |
524 | + } dw17; | |
525 | + | |
526 | + struct { | |
527 | + struct gen9_search_path_delta sp_delta_8; | |
528 | + struct gen9_search_path_delta sp_delta_9; | |
529 | + struct gen9_search_path_delta sp_delta_10; | |
530 | + struct gen9_search_path_delta sp_delta_11; | |
531 | + } dw18; | |
532 | + | |
533 | + struct { | |
534 | + struct gen9_search_path_delta sp_delta_12; | |
535 | + struct gen9_search_path_delta sp_delta_13; | |
536 | + struct gen9_search_path_delta sp_delta_14; | |
537 | + struct gen9_search_path_delta sp_delta_15; | |
538 | + } dw19; | |
539 | + | |
540 | + struct { | |
541 | + struct gen9_search_path_delta sp_delta_16; | |
542 | + struct gen9_search_path_delta sp_delta_17; | |
543 | + struct gen9_search_path_delta sp_delta_18; | |
544 | + struct gen9_search_path_delta sp_delta_19; | |
545 | + } dw20; | |
546 | + | |
547 | + struct { | |
548 | + struct gen9_search_path_delta sp_delta_20; | |
549 | + struct gen9_search_path_delta sp_delta_21; | |
550 | + struct gen9_search_path_delta sp_delta_22; | |
551 | + struct gen9_search_path_delta sp_delta_23; | |
552 | + } dw21; | |
553 | + | |
554 | + struct { | |
555 | + struct gen9_search_path_delta sp_delta_24; | |
556 | + struct gen9_search_path_delta sp_delta_25; | |
557 | + struct gen9_search_path_delta sp_delta_26; | |
558 | + struct gen9_search_path_delta sp_delta_27; | |
559 | + } dw22; | |
560 | + | |
561 | + struct { | |
562 | + struct gen9_search_path_delta sp_delta_28; | |
563 | + struct gen9_search_path_delta sp_delta_29; | |
564 | + struct gen9_search_path_delta sp_delta_30; | |
565 | + struct gen9_search_path_delta sp_delta_31; | |
566 | + } dw23; | |
567 | + | |
568 | + struct { | |
569 | + struct gen9_search_path_delta sp_delta_32; | |
570 | + struct gen9_search_path_delta sp_delta_33; | |
571 | + struct gen9_search_path_delta sp_delta_34; | |
572 | + struct gen9_search_path_delta sp_delta_35; | |
573 | + } dw24; | |
574 | + | |
575 | + struct { | |
576 | + struct gen9_search_path_delta sp_delta_36; | |
577 | + struct gen9_search_path_delta sp_delta_37; | |
578 | + struct gen9_search_path_delta sp_delta_38; | |
579 | + struct gen9_search_path_delta sp_delta_39; | |
580 | + } dw25; | |
581 | + | |
582 | + struct { | |
583 | + struct gen9_search_path_delta sp_delta_40; | |
584 | + struct gen9_search_path_delta sp_delta_41; | |
585 | + struct gen9_search_path_delta sp_delta_42; | |
586 | + struct gen9_search_path_delta sp_delta_43; | |
587 | + } dw26; | |
588 | + | |
589 | + struct { | |
590 | + struct gen9_search_path_delta sp_delta_44; | |
591 | + struct gen9_search_path_delta sp_delta_45; | |
592 | + struct gen9_search_path_delta sp_delta_46; | |
593 | + struct gen9_search_path_delta sp_delta_47; | |
594 | + } dw27; | |
595 | + | |
596 | + struct { | |
597 | + struct gen9_search_path_delta sp_delta_48; | |
598 | + struct gen9_search_path_delta sp_delta_49; | |
599 | + struct gen9_search_path_delta sp_delta_50; | |
600 | + struct gen9_search_path_delta sp_delta_51; | |
601 | + } dw28; | |
602 | + | |
603 | + struct { | |
604 | + struct gen9_search_path_delta sp_delta_52; | |
605 | + struct gen9_search_path_delta sp_delta_53; | |
606 | + struct gen9_search_path_delta sp_delta_54; | |
607 | + struct gen9_search_path_delta sp_delta_55; | |
608 | + } dw29; | |
609 | + | |
610 | + struct { | |
611 | + uint32_t reserved0; | |
612 | + } dw30; | |
613 | + | |
614 | + struct { | |
615 | + uint32_t reserved0; | |
616 | + } dw31; | |
617 | + | |
618 | + struct { | |
619 | + uint32_t _4x_memv_output_data_surf_index; | |
620 | + } dw32; | |
621 | + | |
622 | + struct { | |
623 | + uint32_t _16x_32x_memv_input_data_surf_index; | |
624 | + } dw33; | |
625 | + | |
626 | + struct { | |
627 | + uint32_t _4x_me_output_dist_surf_index; | |
628 | + } dw34; | |
629 | + | |
630 | + struct { | |
631 | + uint32_t _4x_me_output_brc_dist_surf_index; | |
632 | + } dw35; | |
633 | + | |
634 | + struct { | |
635 | + uint32_t vme_fwd_inter_pred_surf_index; | |
636 | + } dw36; | |
637 | + | |
638 | + struct { | |
639 | + uint32_t vme_bdw_inter_pred_surf_index; | |
640 | + } dw37; | |
641 | + | |
642 | + /* reserved */ | |
643 | + struct { | |
644 | + uint32_t reserved; | |
645 | + } dw38; | |
646 | +} vp9_me_curbe_data; | |
647 | + | |
648 | +struct vp9_me_context | |
649 | +{ | |
650 | + struct i965_gpe_context gpe_context; | |
651 | + struct vp9_binding_table_me vp9_me_bti; | |
652 | +}; | |
653 | + | |
654 | + | |
655 | +enum vp9_binding_table_offset_mbenc | |
656 | +{ | |
657 | + VP9_BTI_MBENC_CURR_Y_G9 = 0, | |
658 | + VP9_BTI_MBENC_CURR_UV_G9 = 1, | |
659 | + VP9_BTI_MBENC_CURR_NV12_G9 = 2, | |
660 | + VP9_BTI_MBENC_LAST_NV12_G9 = 3, | |
661 | + VP9_BTI_MBENC_GOLD_NV12_G9 = 5, | |
662 | + VP9_BTI_MBENC_ALTREF_NV12_G9 = 7, | |
663 | + VP9_BTI_MBENC_SEGMENTATION_MAP_G9 = 8, | |
664 | + VP9_BTI_MBENC_TX_CURBE_G9 = 9, | |
665 | + VP9_BTI_MBENC_HME_MV_DATA_G9 = 10, | |
666 | + VP9_BTI_MBENC_HME_DISTORTION_G9 = 11, | |
667 | + VP9_BTI_MBENC_MODE_DECISION_PREV_G9 = 12, | |
668 | + VP9_BTI_MBENC_MODE_DECISION_G9 = 13, | |
669 | + VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9 = 14, | |
670 | + VP9_BTI_MBENC_CU_RECORDS_G9 = 15, | |
671 | + VP9_BTI_MBENC_PAK_DATA_G9 = 16, | |
672 | + VP9_BTI_MBENC_NUM_SURFACES_G9 = 17, | |
673 | +}; | |
674 | + | |
675 | +struct vp9_binding_table_mbenc_i32 | |
676 | +{ | |
677 | + uint32_t mbenc_curr_y; | |
678 | + uint32_t mbenc_curr_uv; | |
679 | + uint32_t mbenc_segmentation_map; | |
680 | + uint32_t mbenc_mode_decision; | |
681 | +}; | |
682 | + | |
683 | +struct vp9_binding_table_mbenc_i16 | |
684 | +{ | |
685 | + uint32_t mbenc_curr_y; | |
686 | + uint32_t mbenc_curr_uv; | |
687 | + uint32_t mbenc_curr_nv12; | |
688 | + uint32_t mbenc_segmentation_map; | |
689 | + uint32_t mbenc_tx_curbe; | |
690 | + uint32_t mbenc_mode_decision; | |
691 | +}; | |
692 | + | |
693 | +struct vp9_binding_table_mbenc_p | |
694 | +{ | |
695 | + uint32_t mbenc_curr_y; | |
696 | + uint32_t mbenc_curr_uv; | |
697 | + uint32_t mbenc_curr_nv12; | |
698 | + uint32_t mbenc_lastref_pic; | |
699 | + uint32_t mbenc_goldref_pic; | |
700 | + uint32_t mbenc_altref_pic; | |
701 | + uint32_t mbenc_hme_mvdata; | |
702 | + uint32_t mbenc_hme_distortion; | |
703 | + uint32_t mbenc_segmentation_map; | |
704 | + uint32_t mbenc_tx_curbe; | |
705 | + uint32_t mbenc_mode_decision_prev; | |
706 | + uint32_t mbenc_mode_decision; | |
707 | + uint32_t mbenc_output_intermodes16x16; | |
708 | +}; | |
709 | + | |
710 | +struct vp9_binding_table_mbenc_tx | |
711 | +{ | |
712 | + uint32_t mbenc_curr_y; | |
713 | + uint32_t mbenc_curr_uv; | |
714 | + uint32_t mbenc_segmentation_map; | |
715 | + uint32_t mbenc_mode_decision; | |
716 | + uint32_t mbenc_cu_records; | |
717 | + uint32_t mbenc_pak_data; | |
718 | +}; | |
719 | + | |
720 | +typedef struct _vp9_mbenc_curbe_data | |
721 | +{ | |
722 | + struct { | |
723 | + uint32_t frame_width:16; | |
724 | + uint32_t frame_height:16; | |
725 | + } dw0; | |
726 | + | |
727 | + struct { | |
728 | + uint32_t frame_type : 8; | |
729 | + uint32_t segmentation_enable : 8; | |
730 | + uint32_t ref_frame_flags : 8; | |
731 | + uint32_t min_16for32_check : 8; | |
732 | + } dw1; | |
733 | + | |
734 | + struct { | |
735 | + uint32_t multi_pred : 8; | |
736 | + uint32_t len_sp : 8; | |
737 | + uint32_t search_x : 8; | |
738 | + uint32_t search_y : 8; | |
739 | + } dw2; | |
740 | + | |
741 | + struct { | |
742 | + uint32_t hme_enabled : 8; | |
743 | + uint32_t multi_ref_qp_check : 8; | |
744 | + uint32_t disable_temp_pred : 8; | |
745 | + uint32_t min_ref_for32_check : 8; | |
746 | + } dw3; | |
747 | + | |
748 | + struct { | |
749 | + uint32_t skip16_threshold : 16; | |
750 | + uint32_t disable_mr_threshold : 16; | |
751 | + } dw4; | |
752 | + | |
753 | + struct { | |
754 | + uint32_t enable_mbrc : 8; | |
755 | + uint32_t inter_round : 8; | |
756 | + uint32_t intra_round : 8; | |
757 | + uint32_t frame_qpindex : 8; | |
758 | + } dw5; | |
759 | + | |
760 | + struct { | |
761 | + uint32_t reserved; | |
762 | + } dw6; | |
763 | + | |
764 | + struct { | |
765 | + uint32_t reserved; | |
766 | + } dw7; | |
767 | + | |
768 | + struct { | |
769 | + uint32_t last_ref_qp : 16; | |
770 | + uint32_t golden_ref_qp : 16; | |
771 | + } dw8; | |
772 | + | |
773 | + struct { | |
774 | + uint32_t alt_ref_qp : 16; | |
775 | + uint32_t reserved : 16; | |
776 | + } dw9; | |
777 | + | |
778 | + struct { | |
779 | + uint32_t sum_intra_dist; | |
780 | + } dw10; | |
781 | + | |
782 | + struct { | |
783 | + uint32_t sum_inter_dist; | |
784 | + } dw11; | |
785 | + | |
786 | + struct { | |
787 | + uint32_t num_intra; | |
788 | + } dw12; | |
789 | + | |
790 | + struct { | |
791 | + uint32_t num_lastref; | |
792 | + } dw13; | |
793 | + | |
794 | + struct { | |
795 | + uint32_t num_goldref; | |
796 | + } dw14; | |
797 | + | |
798 | + struct { | |
799 | + uint32_t num_altref; | |
800 | + } dw15; | |
801 | + | |
802 | + struct { | |
803 | + uint32_t ime_search_path_delta03; | |
804 | + } dw16; | |
805 | + | |
806 | + struct { | |
807 | + uint32_t ime_search_path_delta47; | |
808 | + } dw17; | |
809 | + | |
810 | + struct { | |
811 | + uint32_t ime_search_path_delta811; | |
812 | + } dw18; | |
813 | + | |
814 | + struct { | |
815 | + uint32_t ime_search_path_delta1215; | |
816 | + } dw19; | |
817 | + | |
818 | + struct { | |
819 | + uint32_t ime_search_path_delta1619; | |
820 | + } dw20; | |
821 | + | |
822 | + struct { | |
823 | + uint32_t ime_search_path_delta2023; | |
824 | + } dw21; | |
825 | + | |
826 | + struct { | |
827 | + uint32_t ime_search_path_delta2427; | |
828 | + } dw22; | |
829 | + | |
830 | + struct { | |
831 | + uint32_t ime_search_path_delta2831; | |
832 | + } dw23; | |
833 | + | |
834 | + struct { | |
835 | + uint32_t ime_search_path_delta3235; | |
836 | + } dw24; | |
837 | + | |
838 | + struct { | |
839 | + uint32_t ime_search_path_delta3639; | |
840 | + } dw25; | |
841 | + | |
842 | + struct { | |
843 | + uint32_t ime_search_path_delta4043; | |
844 | + } dw26; | |
845 | + | |
846 | + struct { | |
847 | + uint32_t ime_search_path_delta4447; | |
848 | + } dw27; | |
849 | + | |
850 | + struct { | |
851 | + uint32_t ime_search_path_delta4851; | |
852 | + } dw28; | |
853 | + | |
854 | + struct { | |
855 | + uint32_t ime_search_path_delta5255; | |
856 | + } dw29; | |
857 | + | |
858 | + struct { | |
859 | + uint32_t reserved; | |
860 | + } dw30; | |
861 | + | |
862 | + struct { | |
863 | + uint32_t reserved; | |
864 | + } dw31; | |
865 | + | |
866 | + /* DW 32 */ | |
867 | + struct { | |
868 | + struct { | |
869 | + uint32_t segment_qpindex : 8; | |
870 | + uint32_t intra_non_dcpenalty_16x16 : 8; | |
871 | + uint32_t intra_non_dcpenalty_8x8 : 8; | |
872 | + uint32_t intra_non_dcpenalty_4x4 : 8; | |
873 | + } dw32; | |
874 | + | |
875 | + struct { | |
876 | + uint32_t intra_non_dcpenalty_32x32 : 16; | |
877 | + uint32_t reserved : 16; | |
878 | + } dw33; | |
879 | + | |
880 | + | |
881 | + struct { | |
882 | + uint32_t zero_cost : 16; | |
883 | + uint32_t near_cost : 16; | |
884 | + } dw34; | |
885 | + | |
886 | + struct { | |
887 | + uint32_t nearest_cost : 16; | |
888 | + uint32_t refid_cost : 16; | |
889 | + } dw35; | |
890 | + | |
891 | + struct { | |
892 | + uint32_t mv_cost0 : 16; | |
893 | + uint32_t mv_cost1 : 16; | |
894 | + } dw36; | |
895 | + | |
896 | + struct { | |
897 | + uint32_t mv_cost2 : 16; | |
898 | + uint32_t mv_cost3 : 16; | |
899 | + } dw37; | |
900 | + | |
901 | + struct { | |
902 | + uint32_t mv_cost4 : 16; | |
903 | + uint32_t mv_cost5 : 16; | |
904 | + } dw38; | |
905 | + | |
906 | + struct { | |
907 | + uint32_t mv_cost6 : 16; | |
908 | + uint32_t mv_cost7 : 16; | |
909 | + } dw39; | |
910 | + | |
911 | + struct { | |
912 | + uint32_t mv_cost0 : 8; | |
913 | + uint32_t mv_cost1 : 8; | |
914 | + uint32_t mv_cost2 : 8; | |
915 | + uint32_t mv_cost3 : 8; | |
916 | + } dw40; | |
917 | + | |
918 | + struct { | |
919 | + uint32_t mv_cost4 : 8; | |
920 | + uint32_t mv_cost5 : 8; | |
921 | + uint32_t mv_cost6 : 8; | |
922 | + uint32_t mv_cost7 : 8; | |
923 | + } dw41; | |
924 | + | |
925 | + struct { | |
926 | + uint32_t mode_cost0 : 8; | |
927 | + uint32_t mode_cost1 : 8; | |
928 | + uint32_t mode_cost2 : 8; | |
929 | + uint32_t mode_cost3 : 8; | |
930 | + } dw42; | |
931 | + | |
932 | + struct { | |
933 | + uint32_t mode_cost4 : 8; | |
934 | + uint32_t mode_cost5 : 8; | |
935 | + uint32_t mode_cost6 : 8; | |
936 | + uint32_t mode_cost7 : 8; | |
937 | + } dw43; | |
938 | + | |
939 | + struct { | |
940 | + uint32_t mode_cost8 : 8; | |
941 | + uint32_t mode_cost9 : 8; | |
942 | + uint32_t refid_cost : 8; | |
943 | + uint32_t reserved : 8; | |
944 | + } dw44; | |
945 | + | |
946 | + struct { | |
947 | + uint32_t mode_cost_intra32x32 : 16; | |
948 | + uint32_t mode_cost_inter32x32 : 16; | |
949 | + } dw45; | |
950 | + | |
951 | + struct { | |
952 | + uint32_t mode_cost_intra32x16 : 16; | |
953 | + uint32_t reserved : 16; | |
954 | + } dw46; | |
955 | + | |
956 | + struct { | |
957 | + uint32_t lambda_intra : 16; | |
958 | + uint32_t lambda_inter : 16; | |
959 | + } dw47; | |
960 | + } segments[8]; | |
961 | + | |
962 | + /* | |
963 | + Segment 0: dw32 - dw47 | |
964 | + Segment 1 : dw48 - dw63 | |
965 | + Segment 2 : dw64 - dw79 | |
966 | + Segment 3 : dw80 - dw95 | |
967 | + Segment 4 : dw96 - dw111 | |
968 | + Segment 5 : dw112 - dw127 | |
969 | + Segment 6 : dw128 - dw143 | |
970 | + Segment 7 : dw144 - dw159 | |
971 | + */ | |
972 | + | |
973 | + // dw160 | |
974 | + struct { | |
975 | + uint32_t enc_curr_y_surf_bti; | |
976 | + } dw160; | |
977 | + | |
978 | + struct { | |
979 | + uint32_t reserved; | |
980 | + } dw161; | |
981 | + | |
982 | + struct { | |
983 | + uint32_t enc_curr_nv12_surf_bti; | |
984 | + } dw162; | |
985 | + | |
986 | + struct { | |
987 | + uint32_t reserved; | |
988 | + } dw163; | |
989 | + | |
990 | + struct { | |
991 | + uint32_t reserved; | |
992 | + } dw164; | |
993 | + | |
994 | + struct { | |
995 | + uint32_t reserved; | |
996 | + } dw165; | |
997 | + | |
998 | + struct { | |
999 | + uint32_t segmentation_map_bti; | |
1000 | + } dw166; | |
1001 | + | |
1002 | + struct { | |
1003 | + uint32_t tx_curbe_bti; | |
1004 | + } dw167; | |
1005 | + | |
1006 | + struct { | |
1007 | + uint32_t hme_mvdata_bti; | |
1008 | + } dw168; | |
1009 | + | |
1010 | + struct { | |
1011 | + uint32_t hme_distortion_bti; | |
1012 | + } dw169; | |
1013 | + | |
1014 | + struct { | |
1015 | + uint32_t reserved; | |
1016 | + } dw170; | |
1017 | + | |
1018 | + struct { | |
1019 | + uint32_t mode_decision_prev_bti; | |
1020 | + } dw171; | |
1021 | + | |
1022 | + struct { | |
1023 | + uint32_t mode_decision_bti; | |
1024 | + } dw172; | |
1025 | + | |
1026 | + struct { | |
1027 | + uint32_t output_16x16_inter_modes_bti; | |
1028 | + } dw173; | |
1029 | + | |
1030 | + struct { | |
1031 | + uint32_t cu_record_bti; | |
1032 | + } dw174; | |
1033 | + | |
1034 | + struct { | |
1035 | + uint32_t pak_data_bti; | |
1036 | + } dw175; | |
1037 | +} vp9_mbenc_curbe_data; | |
1038 | + | |
1039 | + | |
1040 | + | |
1041 | +#define VP9_MBENC_IDX_KEY_32x32 0 | |
1042 | +#define VP9_MBENC_IDX_KEY_16x16 1 | |
1043 | +#define VP9_MBENC_IDX_INTER 2 | |
1044 | +#define VP9_MBENC_IDX_TX 3 | |
1045 | +#define NUM_VP9_MBENC 4 | |
1046 | + | |
1047 | +struct vp9_mbenc_context | |
1048 | +{ | |
1049 | + struct i965_gpe_context gpe_contexts[NUM_VP9_MBENC]; | |
1050 | + struct vp9_binding_table_mbenc_tx vp9_mbenc_tx_bti; | |
1051 | + struct vp9_binding_table_mbenc_i32 vp9_mbenc_i32_bti; | |
1052 | + struct vp9_binding_table_mbenc_i16 vp9_mbenc_i16_bti; | |
1053 | + struct vp9_binding_table_mbenc_p vp9_mbenc_p_bti; | |
1054 | + dri_bo *mbenc_bo_dys; | |
1055 | + int mbenc_bo_size; | |
1056 | +}; | |
1057 | + | |
1058 | +enum vp9_binding_table_offset_dys | |
1059 | +{ | |
1060 | + VP9_BTI_DYS_INPUT_NV12 = 0, | |
1061 | + VP9_BTI_DYS_OUTPUT_Y = 1, | |
1062 | + VP9_BTI_DYS_OUTPUT_UV = 2, | |
1063 | + VP9_BTI_DYS_NUM_SURFACES = 3 | |
1064 | +}; | |
1065 | + | |
1066 | +struct vp9_binding_table_dys | |
1067 | +{ | |
1068 | + uint32_t dys_input_frame_nv12; | |
1069 | + uint32_t dys_output_frame_y; | |
1070 | + uint32_t dys_output_frame_uv; | |
1071 | +}; | |
1072 | + | |
1073 | +typedef struct _vp9_dys_curbe_data | |
1074 | +{ | |
1075 | + struct { | |
1076 | + uint32_t input_frame_width : 16; | |
1077 | + uint32_t input_frame_height: 16; | |
1078 | + } dw0; | |
1079 | + | |
1080 | + struct { | |
1081 | + uint32_t output_frame_width : 16; | |
1082 | + uint32_t output_frame_height: 16; | |
1083 | + } dw1; | |
1084 | + | |
1085 | + struct { | |
1086 | + float delta_u; | |
1087 | + } dw2; | |
1088 | + | |
1089 | + struct { | |
1090 | + float delta_v; | |
1091 | + } dw3; | |
1092 | + | |
1093 | + /* DW4-15 */ | |
1094 | + uint32_t reserved[12]; | |
1095 | + | |
1096 | + struct { | |
1097 | + uint32_t input_frame_nv12_bti; | |
1098 | + } dw16; | |
1099 | + | |
1100 | + struct { | |
1101 | + uint32_t output_frame_y_bti; | |
1102 | + } dw17; | |
1103 | + | |
1104 | + struct { | |
1105 | + uint32_t avs_sample_idx; | |
1106 | + } dw18; | |
1107 | +} vp9_dys_curbe_data; | |
1108 | + | |
1109 | +// DYS kernel parameters | |
1110 | +typedef struct _gen9_vp9_dys_kernel_param | |
1111 | +{ | |
1112 | + uint32_t input_width; | |
1113 | + uint32_t input_height; | |
1114 | + uint32_t output_width; | |
1115 | + uint32_t output_height; | |
1116 | + struct object_surface *input_surface; | |
1117 | + struct object_surface *output_surface; | |
1118 | +} gen9_vp9_dys_kernel_param; | |
1119 | + | |
1120 | +struct vp9_dys_context { | |
1121 | + struct i965_gpe_context gpe_context; | |
1122 | + struct vp9_binding_table_dys vp9_dys_bti; | |
1123 | +}; | |
1124 | + | |
1125 | +enum vp9_binding_table_offset_brc | |
1126 | +{ | |
1127 | + VP9_BTI_BRC_SRCY4X_G9 = 0, | |
1128 | + VP9_BTI_BRC_VME_COARSE_INTRA_G9 = 1, | |
1129 | + VP9_BTI_BRC_HISTORY_G9 = 2, | |
1130 | + VP9_BTI_BRC_CONSTANT_DATA_G9 = 3, | |
1131 | + VP9_BTI_BRC_DISTORTION_G9 = 4, | |
1132 | + VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9 = 5, | |
1133 | + VP9_BTI_BRC_MBENC_CURBE_INPUT_G9 = 6, | |
1134 | + VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9 = 7, | |
1135 | + VP9_BTI_BRC_PIC_STATE_INPUT_G9 = 8, | |
1136 | + VP9_BTI_BRC_PIC_STATE_OUTPUT_G9 = 9, | |
1137 | + VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9 = 10, | |
1138 | + VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9 = 11, | |
1139 | + VP9_BTI_BRC_BITSTREAM_SIZE_G9 = 12, | |
1140 | + VP9_BTI_BRC_HFW_DATA_G9 = 13, | |
1141 | + VP9_BTI_BRC_NUM_SURFACES_G9 = 14, | |
1142 | +}; | |
1143 | + | |
1144 | +struct vp9_binding_table_brc_intra_dist | |
1145 | +{ | |
1146 | + uint32_t intra_dist_src_y4xsurface; | |
1147 | + uint32_t brc_intra_dist_vme_coarse_intra; | |
1148 | + uint32_t brc_intra_dist_distortion_buffer; | |
1149 | +}; | |
1150 | + | |
1151 | +struct vp9_binding_table_brc_init | |
1152 | +{ | |
1153 | + uint32_t brc_history_buffer; | |
1154 | + uint32_t brc_distortion_buffer; | |
1155 | +}; | |
1156 | + | |
1157 | + | |
1158 | +typedef struct _vp9_brc_curbe_data | |
1159 | +{ | |
1160 | + struct { | |
1161 | + uint32_t frame_width : 16; | |
1162 | + uint32_t frame_height : 16; | |
1163 | + } dw0; | |
1164 | + | |
1165 | + struct { | |
1166 | + uint32_t frame_type : 8; | |
1167 | + uint32_t segmentation_enable : 8; | |
1168 | + uint32_t ref_frame_flags : 8; | |
1169 | + uint32_t num_tlevels : 8; | |
1170 | + } dw1; | |
1171 | + | |
1172 | + struct { | |
1173 | + uint32_t reserved : 16; | |
1174 | + uint32_t intra_mode_disable : 8; | |
1175 | + uint32_t loop_filter_type : 8; | |
1176 | + } dw2; | |
1177 | + | |
1178 | + struct { | |
1179 | + uint32_t max_level_ratiot0 : 8; | |
1180 | + uint32_t max_level_ratiot1 : 8; | |
1181 | + uint32_t max_level_ratiot2 : 8; | |
1182 | + uint32_t max_level_ratiot3 : 8; | |
1183 | + } dw3; | |
1184 | + | |
1185 | + struct { | |
1186 | + uint32_t profile_level_max_frame; | |
1187 | + } dw4; | |
1188 | + | |
1189 | + struct { | |
1190 | + uint32_t init_buf_fullness; | |
1191 | + } dw5; | |
1192 | + | |
1193 | + struct { | |
1194 | + uint32_t buf_size; | |
1195 | + } dw6; | |
1196 | + | |
1197 | + struct { | |
1198 | + uint32_t target_bit_rate; | |
1199 | + } dw7; | |
1200 | + | |
1201 | + struct { | |
1202 | + uint32_t max_bit_rate; | |
1203 | + } dw8; | |
1204 | + | |
1205 | + struct { | |
1206 | + uint32_t min_bit_rate; | |
1207 | + } dw9; | |
1208 | + | |
1209 | + struct { | |
1210 | + uint32_t frame_ratem; | |
1211 | + } dw10; | |
1212 | + | |
1213 | + struct { | |
1214 | + uint32_t frame_rated; | |
1215 | + } dw11; | |
1216 | + | |
1217 | + struct { | |
1218 | + uint32_t brc_flag : 16; | |
1219 | + uint32_t gopp : 16; | |
1220 | + } dw12; | |
1221 | + | |
1222 | + struct { | |
1223 | + uint32_t init_frame_width : 16; | |
1224 | + uint32_t init_frame_height : 16; | |
1225 | + } dw13; | |
1226 | + | |
1227 | + struct { | |
1228 | + uint32_t avbr_accuracy : 16; | |
1229 | + uint32_t avbr_convergence : 16; | |
1230 | + } dw14; | |
1231 | + | |
1232 | + struct { | |
1233 | + uint32_t min_qp : 16; | |
1234 | + uint32_t max_qp : 16; | |
1235 | + } dw15; | |
1236 | + | |
1237 | + struct { | |
1238 | + uint32_t cq_level : 16; | |
1239 | + uint32_t reserved : 16; | |
1240 | + } dw16; | |
1241 | + | |
1242 | + struct { | |
1243 | + uint32_t enable_dynamic_scaling : 16; | |
1244 | + uint32_t brc_overshoot_cbr_pct : 16; | |
1245 | + } dw17; | |
1246 | + | |
1247 | + struct { | |
1248 | + uint32_t pframe_deviation_threshold0 : 8; | |
1249 | + uint32_t pframe_deviation_threshold1 : 8; | |
1250 | + uint32_t pframe_deviation_threshold2 : 8; | |
1251 | + uint32_t pframe_deviation_threshold3 : 8; | |
1252 | + } dw18; | |
1253 | + | |
1254 | + struct { | |
1255 | + uint32_t pframe_deviation_threshold4 : 8; | |
1256 | + uint32_t pframe_deviation_threshold5 : 8; | |
1257 | + uint32_t pframe_deviation_threshold6 : 8; | |
1258 | + uint32_t pframe_deviation_threshold7 : 8; | |
1259 | + } dw19; | |
1260 | + | |
1261 | + struct { | |
1262 | + uint32_t vbr_deviation_threshold0 : 8; | |
1263 | + uint32_t vbr_deviation_threshold1 : 8; | |
1264 | + uint32_t vbr_deviation_threshold2 : 8; | |
1265 | + uint32_t vbr_deviation_threshold3 : 8; | |
1266 | + } dw20; | |
1267 | + | |
1268 | + struct { | |
1269 | + uint32_t vbr_deviation_threshold4 : 8; | |
1270 | + uint32_t vbr_deviation_threshold5 : 8; | |
1271 | + uint32_t vbr_deviation_threshold6 : 8; | |
1272 | + uint32_t vbr_deviation_threshold7 : 8; | |
1273 | + } dw21; | |
1274 | + | |
1275 | + struct { | |
1276 | + uint32_t kframe_deviation_threshold0 : 8; | |
1277 | + uint32_t kframe_deviation_threshold1 : 8; | |
1278 | + uint32_t kframe_deviation_threshold2 : 8; | |
1279 | + uint32_t kframe_deviation_threshold3 : 8; | |
1280 | + } dw22; | |
1281 | + | |
1282 | + struct { | |
1283 | + uint32_t kframe_deviation_threshold4 : 8; | |
1284 | + uint32_t kframe_deviation_threshold5 : 8; | |
1285 | + uint32_t kframe_deviation_threshold6 : 8; | |
1286 | + uint32_t kframe_deviation_threshold7 : 8; | |
1287 | + } dw23; | |
1288 | + | |
1289 | + struct { | |
1290 | + uint32_t target_size; | |
1291 | + } dw24; | |
1292 | + | |
1293 | + struct { | |
1294 | + uint32_t frame_number; | |
1295 | + } dw25; | |
1296 | + | |
1297 | + struct { | |
1298 | + uint32_t reserved; | |
1299 | + } dw26; | |
1300 | + | |
1301 | + struct { | |
1302 | + uint32_t hrd_buffer_fullness_upper_limit; | |
1303 | + } dw27; | |
1304 | + | |
1305 | + struct { | |
1306 | + uint32_t hrd_buffer_fullness_lower_limit; | |
1307 | + } dw28; | |
1308 | + | |
1309 | + struct { | |
1310 | + uint32_t reserved; | |
1311 | + } dw29; | |
1312 | + | |
1313 | + struct { | |
1314 | + uint32_t reserved; | |
1315 | + } dw30; | |
1316 | + | |
1317 | + struct { | |
1318 | + uint32_t reserved; | |
1319 | + } dw31; | |
1320 | + | |
1321 | + struct { | |
1322 | + uint32_t seg_delta_qp0 : 8; | |
1323 | + uint32_t seg_delta_qp1 : 8; | |
1324 | + uint32_t seg_delta_qp2 : 8; | |
1325 | + uint32_t seg_delta_qp3 : 8; | |
1326 | + } dw32; | |
1327 | + | |
1328 | + struct { | |
1329 | + uint32_t seg_delta_qp4 : 8; | |
1330 | + uint32_t seg_delta_qp5 : 8; | |
1331 | + uint32_t seg_delta_qp6 : 8; | |
1332 | + uint32_t seg_delta_qp7 : 8; | |
1333 | + } dw33; | |
1334 | + | |
1335 | + struct { | |
1336 | + uint32_t temporal_id : 8; | |
1337 | + uint32_t multi_ref_qp_check : 8; | |
1338 | + uint32_t reserved : 16; | |
1339 | + } dw34; | |
1340 | + | |
1341 | + struct { | |
1342 | + uint32_t max_num_pak_passes : 8; | |
1343 | + uint32_t sync_async : 8; | |
1344 | + uint32_t overflow : 8; | |
1345 | + uint32_t mbrc : 8; | |
1346 | + } dw35; | |
1347 | + | |
1348 | + struct { | |
1349 | + uint32_t reserved : 16; | |
1350 | + uint32_t segmentation : 8; | |
1351 | + uint32_t reserved1 : 8; | |
1352 | + } dw36; | |
1353 | + | |
1354 | + struct { | |
1355 | + uint32_t cur_qpindex : 8; | |
1356 | + uint32_t lastref_qpindex : 8; | |
1357 | + uint32_t goldref_qpindex : 8; | |
1358 | + uint32_t altref_qpindex : 8; | |
1359 | + } dw37; | |
1360 | + | |
1361 | + struct { | |
1362 | + uint32_t qdelta_ydc : 8; | |
1363 | + uint32_t qdelta_uvac : 8; | |
1364 | + uint32_t qdelta_uvdc : 8; | |
1365 | + uint32_t reserved : 8; | |
1366 | + } dw38; | |
1367 | + | |
1368 | + struct { | |
1369 | + uint32_t reserved; | |
1370 | + } dw39; | |
1371 | + | |
1372 | + struct { | |
1373 | + uint32_t reserved; | |
1374 | + } dw40; | |
1375 | + | |
1376 | + struct { | |
1377 | + uint32_t reserved; | |
1378 | + } dw41; | |
1379 | + | |
1380 | + struct { | |
1381 | + uint32_t reserved; | |
1382 | + } dw42; | |
1383 | + | |
1384 | + struct { | |
1385 | + uint32_t reserved; | |
1386 | + } dw43; | |
1387 | + | |
1388 | + struct { | |
1389 | + uint32_t reserved; | |
1390 | + } dw44; | |
1391 | + | |
1392 | + struct { | |
1393 | + uint32_t reserved; | |
1394 | + } dw45; | |
1395 | + | |
1396 | + struct { | |
1397 | + uint32_t reserved; | |
1398 | + } dw46; | |
1399 | + | |
1400 | + struct { | |
1401 | + uint32_t reserved; | |
1402 | + } dw47; | |
1403 | + | |
1404 | + struct { | |
1405 | + uint32_t brc_y4x_input_bti; | |
1406 | + } dw48; | |
1407 | + | |
1408 | + struct { | |
1409 | + uint32_t brc_vme_coarse_intra_input_bti; | |
1410 | + } dw49; | |
1411 | + | |
1412 | + struct { | |
1413 | + uint32_t brc_history_buffer_bti; | |
1414 | + } dw50; | |
1415 | + | |
1416 | + struct { | |
1417 | + uint32_t brc_const_data_input_bti; | |
1418 | + } dw51; | |
1419 | + | |
1420 | + struct { | |
1421 | + uint32_t brc_distortion_bti; | |
1422 | + } dw52; | |
1423 | + | |
1424 | + struct { | |
1425 | + uint32_t brc_mmdk_pak_output_bti; | |
1426 | + } dw53; | |
1427 | + | |
1428 | + struct { | |
1429 | + uint32_t brc_enccurbe_input_bti; | |
1430 | + } dw54; | |
1431 | + | |
1432 | + struct { | |
1433 | + uint32_t brc_enccurbe_output_bti; | |
1434 | + } dw55; | |
1435 | + | |
1436 | + struct { | |
1437 | + uint32_t brc_pic_state_input_bti; | |
1438 | + } dw56; | |
1439 | + | |
1440 | + struct { | |
1441 | + uint32_t brc_pic_state_output_bti; | |
1442 | + } dw57; | |
1443 | + | |
1444 | + struct { | |
1445 | + uint32_t brc_seg_state_input_bti; | |
1446 | + } dw58; | |
1447 | + | |
1448 | + struct { | |
1449 | + uint32_t brc_seg_state_output_bti; | |
1450 | + } dw59; | |
1451 | + | |
1452 | + struct { | |
1453 | + uint32_t brc_bitstream_size_data_bti; | |
1454 | + } dw60; | |
1455 | + | |
1456 | + struct { | |
1457 | + uint32_t brc_hfw_data_output_bti; | |
1458 | + } dw61; | |
1459 | + | |
1460 | + struct { | |
1461 | + uint32_t reserved; | |
1462 | + } dw62; | |
1463 | + | |
1464 | + struct { | |
1465 | + uint32_t reserved; | |
1466 | + } dw63; | |
1467 | +} vp9_brc_curbe_data; | |
1468 | + | |
1469 | + | |
1470 | +#define VP9_BRC_INTRA_DIST 0 | |
1471 | +#define VP9_BRC_INIT 1 | |
1472 | +#define VP9_BRC_RESET 2 | |
1473 | +#define VP9_BRC_UPDATE 3 | |
1474 | +#define NUM_VP9_BRC 4 | |
1475 | + | |
1476 | +struct vp9_brc_context { | |
1477 | + struct i965_gpe_context gpe_contexts[NUM_VP9_BRC]; | |
1478 | +}; | |
1479 | + | |
1480 | +struct gen9_vp9_scaling_curbe_param | |
1481 | +{ | |
1482 | + uint32_t input_picture_width; | |
1483 | + uint32_t input_picture_height; | |
1484 | + bool use_16x_scaling; | |
1485 | + bool use_32x_scaling; | |
1486 | + bool mb_variance_output_enabled; | |
1487 | + bool mb_pixel_average_output_enabled; | |
1488 | + bool blk8x8_stat_enabled; | |
1489 | +}; | |
1490 | + | |
1491 | +struct gen9_vp9_me_curbe_param | |
1492 | +{ | |
1493 | + VAEncSequenceParameterBufferVP9 *pseq_param; | |
1494 | + VAEncPictureParameterBufferVP9 *ppic_param; | |
1495 | + uint32_t frame_width; | |
1496 | + uint32_t frame_height; | |
1497 | + uint32_t ref_frame_flag; | |
1498 | + bool use_16x_me; | |
1499 | + bool b16xme_enabled; | |
1500 | +}; | |
1501 | + | |
1502 | +struct gen9_vp9_mbenc_curbe_param | |
1503 | +{ | |
1504 | + VAEncSequenceParameterBufferVP9 *pseq_param; | |
1505 | + VAEncPictureParameterBufferVP9 *ppic_param; | |
1506 | + VAEncMiscParameterTypeVP9PerSegmantParam *psegment_param; | |
1507 | + | |
1508 | + uint16_t frame_width_in_mb; | |
1509 | + uint16_t frame_height_in_mb; | |
1510 | + uint16_t frame_type; | |
1511 | + bool hme_enabled; | |
1512 | + uint8_t ref_frame_flag; | |
1513 | + VP9_MEDIA_STATE_TYPE media_state_type; | |
1514 | + struct object_surface *curr_obj; | |
1515 | + struct object_surface *last_ref_obj; | |
1516 | + struct object_surface *golden_ref_obj; | |
1517 | + struct object_surface *alt_ref_obj; | |
1518 | + int picture_coding_type; | |
1519 | + bool mbenc_curbe_set_in_brc_update; | |
1520 | + bool multi_ref_qp_check; | |
1521 | +}; | |
1522 | + | |
1523 | +struct gen9_vp9_dys_curbe_param | |
1524 | +{ | |
1525 | + uint32_t input_width; | |
1526 | + uint32_t input_height; | |
1527 | + uint32_t output_width; | |
1528 | + uint32_t output_height; | |
1529 | +}; | |
1530 | + | |
1531 | +struct gen9_vp9_brc_curbe_param | |
1532 | +{ | |
1533 | + VAEncSequenceParameterBufferVP9 *pseq_param; | |
1534 | + VAEncPictureParameterBufferVP9 *ppic_param; | |
1535 | + VAEncMiscParameterTypeVP9PerSegmantParam *psegment_param; | |
1536 | + | |
1537 | + VASurfaceID curr_frame; | |
1538 | + uint32_t picture_coding_type; | |
1539 | + /* the unit is in bits */ | |
1540 | + double *pbrc_init_current_target_buf_full_in_bits; | |
1541 | + double *pbrc_init_reset_input_bits_per_frame; | |
1542 | + uint32_t *pbrc_init_reset_buf_size_in_bits; | |
1543 | + uint32_t frame_width; | |
1544 | + uint32_t frame_height; | |
1545 | + uint32_t frame_width_in_mb; | |
1546 | + uint32_t frame_height_in_mb; | |
1547 | + uint32_t ref_frame_flag; | |
1548 | + bool hme_enabled; | |
1549 | + bool initbrc; | |
1550 | + bool mbbrc_enabled; | |
1551 | + bool b_used_ref; | |
1552 | + int32_t brc_num_pak_passes; | |
1553 | + bool multi_ref_qp_check; | |
1554 | + int16_t frame_number; | |
1555 | + int32_t frame_rate; | |
1556 | + VP9_MEDIA_STATE_TYPE media_state_type; | |
1557 | +}; | |
1558 | + | |
1559 | +struct gen9_vp9_scaling_surface_param | |
1560 | +{ | |
1561 | + VASurfaceID curr_pic; | |
1562 | + void *p_scaling_bti; | |
1563 | + struct object_surface *input_surface; | |
1564 | + struct object_surface *output_surface; | |
1565 | + uint32_t input_frame_width; | |
1566 | + uint32_t input_frame_height; | |
1567 | + uint32_t output_frame_width; | |
1568 | + uint32_t output_frame_height; | |
1569 | + uint32_t vert_line_stride; | |
1570 | + uint32_t vert_line_stride_offset; | |
1571 | + bool scaling_out_use_16unorm_surf_fmt; | |
1572 | + bool scaling_out_use_32unorm_surf_fmt; | |
1573 | + bool mbv_proc_stat_enabled; | |
1574 | + struct i965_gpe_resource *pres_mbv_proc_stat_buffer; | |
1575 | +}; | |
1576 | + | |
1577 | +struct gen9_vp9_brc_init_constant_buffer_param | |
1578 | +{ | |
1579 | + struct i965_gpe_resource *pres_brc_const_data_buffer; | |
1580 | + uint16_t picture_coding_type; | |
1581 | +}; | |
1582 | + | |
1583 | +struct gen9_vp9_dys_surface_param | |
1584 | +{ | |
1585 | + struct object_surface *input_frame; | |
1586 | + struct object_surface *output_frame; | |
1587 | + uint32_t vert_line_stride; | |
1588 | + uint32_t vert_line_stride_offset; | |
1589 | +}; | |
1590 | + | |
1591 | +struct gen9_vp9_me_surface_param | |
1592 | +{ | |
1593 | + VASurfaceID curr_pic; | |
1594 | + struct object_surface *last_ref_pic; | |
1595 | + struct object_surface *golden_ref_pic; | |
1596 | + struct object_surface *alt_ref_pic; | |
1597 | + | |
1598 | + struct i965_gpe_resource *pres_4x_memv_data_buffer; | |
1599 | + struct i965_gpe_resource *pres_16x_memv_data_buffer; | |
1600 | + struct i965_gpe_resource *pres_me_distortion_buffer; | |
1601 | + struct i965_gpe_resource *pres_me_brc_distortion_buffer; | |
1602 | + uint32_t downscaled_width_in_mb; | |
1603 | + uint32_t downscaled_height_in_mb; | |
1604 | + uint32_t frame_width; | |
1605 | + uint32_t frame_height; | |
1606 | + bool use_16x_me; | |
1607 | + bool b16xme_enabled; | |
1608 | + bool dys_enabled; | |
1609 | +}; | |
1610 | + | |
1611 | +struct gen9_vp9_mbenc_surface_param | |
1612 | +{ | |
1613 | + int media_state_type; | |
1614 | + struct object_surface *last_ref_obj; | |
1615 | + struct object_surface *golden_ref_obj; | |
1616 | + struct object_surface *alt_ref_obj; | |
1617 | + struct object_surface *curr_frame_obj; | |
1618 | + unsigned short picture_coding_type; | |
1619 | + unsigned int curr_surface_offset; | |
1620 | + struct i965_gpe_resource *ps4x_memv_data_buffer; | |
1621 | + struct i965_gpe_resource *ps4x_memv_distortion_buffer; | |
1622 | + struct i965_gpe_resource *ps_me_brc_distortion_buffer; | |
1623 | + uint32_t frame_width; | |
1624 | + uint32_t frame_height; | |
1625 | + uint32_t frame_width_in_mb; | |
1626 | + uint32_t frame_height_in_mb; | |
1627 | + bool hme_enabled; | |
1628 | + bool segmentation_enabled; | |
1629 | + uint32_t mb_data_offset; | |
1630 | + struct i965_gpe_resource *pres_mb_code_surface; | |
1631 | + struct i965_gpe_resource *pres_segmentation_map; | |
1632 | + struct i965_gpe_resource *pres_mode_decision_prev; | |
1633 | + struct i965_gpe_resource *pres_mode_decision; | |
1634 | + struct i965_gpe_resource *pres_mbenc_curbe_buffer; | |
1635 | + struct i965_gpe_resource *pres_output_16x16_inter_modes; | |
1636 | + struct i965_gpe_resource *pres_mode_decision_i32; | |
1637 | + | |
1638 | + struct i965_gpe_context *gpe_context_tx; | |
1639 | +}; | |
1640 | + | |
1641 | +typedef struct _vp9_frame_status_ | |
1642 | +{ | |
1643 | + uint16_t frame_width; | |
1644 | + uint16_t frame_height; | |
1645 | + uint8_t frame_type; | |
1646 | + uint8_t show_frame; | |
1647 | + uint8_t refresh_frame_context; | |
1648 | + uint8_t frame_context_idx; | |
1649 | + uint8_t intra_only; | |
1650 | +} vp9_frame_status; | |
1651 | + | |
1652 | +#define VP9_BRC_SEQ 0x01 | |
1653 | +#define VP9_BRC_HRD 0x02 | |
1654 | +#define VP9_BRC_RC 0x04 | |
1655 | +#define VP9_BRC_FR 0x08 | |
1656 | +#define VP9_BRC_FAILURE (1 << 31) | |
1657 | + | |
1658 | +struct gen9_hcpe_pipe_mode_select_param | |
1659 | +{ | |
1660 | + uint32_t codec_mode; | |
1661 | + uint32_t stream_out; | |
1662 | +}; | |
1663 | + | |
1664 | +typedef struct _hcp_surface_state { | |
1665 | + struct { | |
1666 | + uint32_t surface_pitch : 17; | |
1667 | + uint32_t reserved : 11; | |
1668 | + uint32_t surface_id : 4; | |
1669 | + } dw1; | |
1670 | + | |
1671 | + struct { | |
1672 | + uint32_t y_cb_offset : 15; | |
1673 | + uint32_t reserved : 12; | |
1674 | + uint32_t surface_format : 5; | |
1675 | + } dw2; | |
1676 | + | |
1677 | + struct { | |
1678 | + uint32_t default_alpha : 16; | |
1679 | + uint32_t y_cr_offset : 16; | |
1680 | + } dw3; | |
1681 | + | |
1682 | + struct { | |
1683 | + uint32_t auxilary_index : 11; | |
1684 | + uint32_t reserved0 : 1; | |
1685 | + uint32_t memory_compression : 1; | |
1686 | + uint32_t reserved1 : 18; | |
1687 | + } dw4; | |
1688 | +} hcp_surface_state; | |
1689 | + | |
1690 | +struct gen9_encoder_context_vp9 | |
1691 | +{ | |
1692 | + struct vp9_scaling_context scaling_context; | |
1693 | + struct vp9_me_context me_context; | |
1694 | + struct vp9_mbenc_context mbenc_context; | |
1695 | + struct vp9_brc_context brc_context; | |
1696 | + struct vp9_dys_context dys_context; | |
1697 | + void *enc_priv_state; | |
1698 | + | |
1699 | + struct i965_gpe_resource res_brc_history_buffer; | |
1700 | + struct i965_gpe_resource res_brc_const_data_buffer; | |
1701 | + struct i965_gpe_resource res_brc_mmdk_pak_buffer; | |
1702 | + struct i965_gpe_resource res_brc_mbenc_curbe_write_buffer; | |
1703 | + struct i965_gpe_resource res_pic_state_brc_read_buffer; | |
1704 | + struct i965_gpe_resource res_pic_state_brc_write_hfw_read_buffer; | |
1705 | + struct i965_gpe_resource res_pic_state_hfw_write_buffer; | |
1706 | + struct i965_gpe_resource res_seg_state_brc_read_buffer; | |
1707 | + struct i965_gpe_resource res_seg_state_brc_write_buffer; | |
1708 | + struct i965_gpe_resource res_brc_bitstream_size_buffer; | |
1709 | + struct i965_gpe_resource res_brc_hfw_data_buffer; | |
1710 | + | |
1711 | + struct i965_gpe_resource s4x_memv_distortion_buffer; | |
1712 | + struct i965_gpe_resource mb_segment_map_surface; | |
1713 | + struct i965_gpe_resource s4x_memv_data_buffer; | |
1714 | + struct i965_gpe_resource s16x_memv_data_buffer; | |
1715 | + struct i965_gpe_resource res_mode_decision[2]; | |
1716 | + struct i965_gpe_resource res_output_16x16_inter_modes; | |
1717 | + struct i965_gpe_resource res_mb_code_surface; | |
1718 | + | |
1719 | + /* PAK resource */ | |
1720 | + struct i965_gpe_resource res_hvd_line_buffer; | |
1721 | + struct i965_gpe_resource res_hvd_tile_line_buffer; | |
1722 | + struct i965_gpe_resource res_deblocking_filter_line_buffer; | |
1723 | + struct i965_gpe_resource res_deblocking_filter_tile_line_buffer; | |
1724 | + struct i965_gpe_resource res_deblocking_filter_tile_col_buffer; | |
1725 | + | |
1726 | + struct i965_gpe_resource res_metadata_line_buffer; | |
1727 | + struct i965_gpe_resource res_metadata_tile_line_buffer; | |
1728 | + struct i965_gpe_resource res_metadata_tile_col_buffer; | |
1729 | + | |
1730 | + struct i965_gpe_resource res_segmentid_buffer; | |
1731 | + struct i965_gpe_resource res_prob_buffer; | |
1732 | + struct i965_gpe_resource res_prob_delta_buffer; | |
1733 | + struct i965_gpe_resource res_prob_counter_buffer; | |
1734 | + | |
1735 | + struct i965_gpe_resource res_compressed_input_buffer; | |
1736 | + struct i965_gpe_resource res_tile_record_streamout_buffer; | |
1737 | + struct i965_gpe_resource res_cu_stat_streamout_buffer; | |
1738 | + struct i965_gpe_resource res_mv_temporal_buffer[2]; | |
1739 | + struct i965_gpe_resource res_pak_uncompressed_input_buffer; | |
1740 | + | |
1741 | + char *frame_header_data; | |
1742 | + | |
1743 | + unsigned int use_hw_scoreboard; | |
1744 | + unsigned int use_hw_non_stalling_scoreboard; | |
1745 | + unsigned int mb_stats_supported; | |
1746 | + unsigned int hme_supported; | |
1747 | + unsigned int b32xme_supported; | |
1748 | + | |
1749 | + unsigned int downscaled_width_in_mb4x; | |
1750 | + unsigned int downscaled_height_in_mb4x; | |
1751 | + | |
1752 | + void (*pfn_set_sample_state_dys)( | |
1753 | + VADriverContextP ctx, | |
1754 | + struct encode_state *encode_state, | |
1755 | + struct i965_gpe_context *gpe_context, | |
1756 | + struct intel_encoder_context *encoder_context); | |
1757 | + | |
1758 | + void (*pfn_set_curbe_mbenc)( | |
1759 | + VADriverContextP ctx, | |
1760 | + struct encode_state *encode_state, | |
1761 | + struct i965_gpe_context *gpe_context, | |
1762 | + struct intel_encoder_context *encoder_context, | |
1763 | + struct gen9_vp9_mbenc_curbe_param *param); | |
1764 | + | |
1765 | + void (*pfn_set_curbe_me)( | |
1766 | + VADriverContextP ctx, | |
1767 | + struct encode_state *encode_state, | |
1768 | + struct i965_gpe_context *gpe_context, | |
1769 | + struct intel_encoder_context *encoder_context, | |
1770 | + struct gen9_vp9_me_curbe_param *param); | |
1771 | + | |
1772 | + void (*pfn_set_curbe_scaling)( | |
1773 | + VADriverContextP ctx, | |
1774 | + struct encode_state *encode_state, | |
1775 | + struct i965_gpe_context *gpe_context, | |
1776 | + struct intel_encoder_context *encoder_context, | |
1777 | + struct gen9_vp9_scaling_curbe_param *param); | |
1778 | + | |
1779 | + void (*pfn_set_curbe_dys)( | |
1780 | + VADriverContextP ctx, | |
1781 | + struct encode_state *encode_state, | |
1782 | + struct i965_gpe_context *gpe_context, | |
1783 | + struct intel_encoder_context *encoder_context, | |
1784 | + struct gen9_vp9_dys_curbe_param *param); | |
1785 | + | |
1786 | + void (*pfn_set_curbe_brc)( | |
1787 | + VADriverContextP ctx, | |
1788 | + struct encode_state *encode_state, | |
1789 | + struct i965_gpe_context *gpe_context, | |
1790 | + struct intel_encoder_context *encoder_context, | |
1791 | + struct gen9_vp9_brc_curbe_param *param); | |
1792 | + | |
1793 | + void (*pfn_send_me_surface)( | |
1794 | + VADriverContextP ctx, | |
1795 | + struct encode_state *encode_state, | |
1796 | + struct i965_gpe_context *gpe_context, | |
1797 | + struct intel_encoder_context *encoder_context, | |
1798 | + struct gen9_vp9_me_surface_param *param); | |
1799 | + | |
1800 | + void (*pfn_send_mbenc_surface)( | |
1801 | + VADriverContextP ctx, | |
1802 | + struct encode_state *encode_state, | |
1803 | + struct i965_gpe_context *gpe_context, | |
1804 | + struct intel_encoder_context *encoder_context, | |
1805 | + struct gen9_vp9_mbenc_surface_param *mbenc_param); | |
1806 | + | |
1807 | + void (*pfn_send_scaling_surface)( | |
1808 | + VADriverContextP ctx, | |
1809 | + struct encode_state *encode_state, | |
1810 | + struct i965_gpe_context *gpe_context, | |
1811 | + struct intel_encoder_context *encoder_context, | |
1812 | + struct gen9_vp9_scaling_surface_param *param); | |
1813 | + | |
1814 | + void (*pfn_send_dys_surface)( | |
1815 | + VADriverContextP ctx, | |
1816 | + struct encode_state *encode_state, | |
1817 | + struct i965_gpe_context *gpe_context, | |
1818 | + struct intel_encoder_context *encoder_context, | |
1819 | + struct gen9_vp9_dys_surface_param *param); | |
1820 | + | |
1821 | + struct { | |
1822 | + dri_bo *bo; | |
1823 | + } reconstructed_object; | |
1824 | + | |
1825 | + struct { | |
1826 | + dri_bo *bo; | |
1827 | + } uncompressed_picture_source; | |
1828 | + | |
1829 | + struct { | |
1830 | + dri_bo *bo; | |
1831 | + int offset; | |
1832 | + int end_offset; | |
1833 | + int status_offset; | |
1834 | + } indirect_pak_bse_object; | |
1835 | + | |
1836 | + struct { | |
1837 | + dri_bo *bo; | |
1838 | + } reference_surfaces[8]; | |
1839 | +}; | |
1840 | + | |
1841 | +enum INTEL_ENC_VP9_TU_MODE | |
1842 | +{ | |
1843 | + INTEL_ENC_VP9_TU_QUALITY = 0, | |
1844 | + INTEL_ENC_VP9_TU_NORMAL, | |
1845 | + INTEL_ENC_VP9_TU_PERFORMANCE | |
1846 | +}; | |
1847 | + | |
1848 | +#define VP9_LAST_REF 0x01 | |
1849 | +#define VP9_GOLDEN_REF 0x02 | |
1850 | +#define VP9_ALT_REF 0x04 | |
1851 | + | |
1852 | +/* the vp9_encode_status_buffer is the shadow | |
1853 | + * of vp9_encode_status_buffer_internal. | |
1854 | + */ | |
1855 | +struct vp9_encode_status_buffer_internal | |
1856 | +{ | |
1857 | + uint32_t bs_byte_count_offset; | |
1858 | + uint32_t reserved[15]; | |
1859 | + | |
1860 | + /* the above is shared with the gen9_encode_status_buffer */ | |
1861 | + uint32_t image_status_mask_offset; | |
1862 | + uint32_t image_status_ctrl_offset; | |
1863 | + | |
1864 | + uint32_t vp9_image_mask_reg_offset; | |
1865 | + uint32_t vp9_image_ctrl_reg_offset; | |
1866 | + uint32_t vp9_bs_frame_reg_offset; | |
1867 | + dri_bo *bo; | |
1868 | + | |
1869 | + uint32_t media_index_offset; | |
1870 | +}; | |
1871 | + | |
1872 | + | |
1873 | +struct gen9_vp9_state { | |
1874 | + unsigned int brc_inited; | |
1875 | + unsigned int brc_reset; | |
1876 | + unsigned int brc_enabled; | |
1877 | + unsigned int use_hw_scoreboard; | |
1878 | + unsigned int use_hw_non_stalling_scoreborad; | |
1879 | + unsigned int hme_supported; | |
1880 | + unsigned int b16xme_supported; | |
1881 | + unsigned int hme_enabled; | |
1882 | + unsigned int b16xme_enabled; | |
1883 | + | |
1884 | + unsigned int frame_width; | |
1885 | + unsigned int frame_height; | |
1886 | + unsigned int frame_width_in_mb; | |
1887 | + unsigned int frame_height_in_mb; | |
1888 | + unsigned int frame_width_4x; | |
1889 | + unsigned int frame_height_4x; | |
1890 | + unsigned int frame_width_16x; | |
1891 | + unsigned int frame_height_16x; | |
1892 | + unsigned int downscaled_width_4x_in_mb; | |
1893 | + unsigned int downscaled_height_4x_in_mb; | |
1894 | + unsigned int downscaled_width_16x_in_mb; | |
1895 | + unsigned int downscaled_height_16x_in_mb; | |
1896 | + | |
1897 | + unsigned int res_width; | |
1898 | + unsigned int res_height; | |
1899 | + int brc_allocated; | |
1900 | + VASurfaceID curr_frame; | |
1901 | + VASurfaceID last_ref_pic; | |
1902 | + VASurfaceID alt_ref_pic; | |
1903 | + VASurfaceID golden_ref_pic; | |
1904 | + | |
1905 | + struct object_surface *input_surface_obj; | |
1906 | + struct object_surface *last_ref_obj; | |
1907 | + struct object_surface *golden_ref_obj; | |
1908 | + struct object_surface *alt_ref_obj; | |
1909 | + | |
1910 | + VAEncSequenceParameterBufferVP9 *seq_param; | |
1911 | + VAEncPictureParameterBufferVP9 *pic_param; | |
1912 | + VAEncMiscParameterTypeVP9PerSegmantParam *segment_param; | |
1913 | + double brc_init_current_target_buf_full_in_bits; | |
1914 | + double brc_init_reset_input_bits_per_frame; | |
1915 | + uint32_t brc_init_reset_buf_size_in_bits; | |
1916 | + unsigned int gop_size; | |
1917 | + unsigned int target_bit_rate; | |
1918 | + unsigned int max_bit_rate; | |
1919 | + unsigned int min_bit_rate; | |
1920 | + unsigned long init_vbv_buffer_fullness_in_bit; | |
1921 | + unsigned long vbv_buffer_size_in_bit; | |
1922 | + int frame_number; | |
1923 | + uint32_t frame_rate; | |
1924 | + uint8_t ref_frame_flag; | |
1925 | + uint8_t dys_ref_frame_flag; | |
1926 | + uint8_t picture_coding_type; | |
1927 | + unsigned int adaptive_transform_decision_enabled; | |
1928 | + int curr_mode_decision_index; | |
1929 | + int target_usage; | |
1930 | + unsigned int mb_data_offset; | |
1931 | + int curr_pak_pass; | |
1932 | + unsigned int brc_flag_check; | |
1933 | + bool first_frame; | |
1934 | + bool dys_enabled; | |
1935 | + bool dys_in_use; | |
1936 | + bool mbenc_curbe_set_in_brc_update; | |
1937 | + bool multi_ref_qp_check; | |
1938 | + bool brc_distortion_buffer_supported; | |
1939 | + bool brc_constant_buffer_supported; | |
1940 | + bool mbenc_keyframe_dist_enabled; | |
1941 | + unsigned int curr_mv_temporal_index; | |
1942 | + int tx_mode; | |
1943 | + int num_pak_passes; | |
1944 | + char *alias_insert_data; | |
1945 | + int header_length; | |
1946 | + vp9_header_bitoffset frame_header; | |
1947 | + | |
1948 | + struct vp9_encode_status_buffer_internal status_buffer; | |
1949 | + | |
1950 | + /* the frame context related with VP9 encoding */ | |
1951 | + FRAME_CONTEXT vp9_frame_ctx[FRAME_CONTEXTS]; | |
1952 | + FRAME_CONTEXT vp9_current_fc; | |
1953 | + int frame_ctx_idx; | |
1954 | + | |
1955 | + vp9_frame_status vp9_last_frame; | |
1956 | +}; | |
1957 | + | |
1958 | +struct vp9_compressed_element { | |
1959 | + uint8_t a_valid : 1; | |
1960 | + uint8_t a_probdiff_select: 1; | |
1961 | + uint8_t a_prob_select : 1; | |
1962 | + uint8_t a_bin : 1; | |
1963 | + uint8_t b_valid : 1; | |
1964 | + uint8_t b_probdiff_select: 1; | |
1965 | + uint8_t b_prob_select : 1; | |
1966 | + uint8_t b_bin : 1; | |
1967 | +}; | |
1968 | + | |
1969 | +#define VP9_BRC_HISTORY_BUFFER_SIZE 768 | |
1970 | +#define VP9_BRC_CONSTANTSURFACE_SIZE 17792 | |
1971 | +#define VP9_BRC_BITSTREAM_SIZE_BUFFER_SIZE 16 | |
1972 | +#define VP9_BRC_MMDK_PAK_BUFFER_SIZE 64 | |
1973 | +#define VP9_SEGMENT_STATE_BUFFER_SIZE 256 | |
1974 | +#define VP9_HFW_BRC_DATA_BUFFER_SIZE 32 | |
1975 | + | |
1976 | +#endif /* GEN9_VP9_ENCODER_H */ |
@@ -0,0 +1,4955 @@ | ||
1 | +/* | |
2 | + * * Copyright (c) 2016, Intel Corporation | |
3 | + * | |
4 | + * All rights reserved. | |
5 | + * Redistribution. Redistribution and use in binary form, without modification, are | |
6 | + * permitted provided that the following conditions are met: | |
7 | + * Redistributions must reproduce the above copyright notice and the following | |
8 | + * disclaimer in the documentation and/or other materials provided with the | |
9 | + * distribution. | |
10 | + * Neither the name of Intel Corporation nor the names of its suppliers may be used | |
11 | + * to endorse or promote products derived from this software without specific prior | |
12 | + * written permission. | |
13 | + * No reverse engineering, decompilation, or disassembly of this software is permitted. | |
14 | + * Limited patent license. Intel Corporation grants a world-wide, royalty-free, | |
15 | + * nonexclusive license under patents it now or hereafter owns or controls to make, have made, | |
16 | + * use, import, offer to sell and sell (.Utilize.) this software, but solely to the extent that any | |
17 | + * such patent is necessary to Utilize the software alone. The patent license shall not apply | |
18 | + * to any combinations which include this software. No hardware per se is licensed here under. | |
19 | + | |
20 | + * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT | |
21 | + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED | |
22 | + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
23 | + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
24 | + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER | |
25 | + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
26 | + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
27 | + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
28 | + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
29 | + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |
30 | + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
31 | + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |
32 | + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
33 | + */ | |
34 | +#include "gen9_vp9_encoder_kernels.h" | |
35 | + | |
36 | + | |
37 | +const unsigned int media_vp9_kernels[AllVP9ENC_SZ] = { | |
38 | +0x0000000b,0x00000048,0x00001c48,0x00002b08,0x00009c88,0x0000b5c8,0x00011c88,0x00017d08, | |
39 | +0x000183c8,0x00018ac8,0x0001a748,0x0001bac8,0x00 |
Part of diff was cut off due to size limit. Use your local client to view the full diff.