1 /*
2 * Copyright © 2014 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 * Midhunchandra Kodiyath <midhunchandra.kodiyath@intel.com>
26 *
27 */
28
29 #include "media_drv_encoder.h"
30 #include "media_drv_encoder_vp8.h"
31 #include "media_drv_encoder_vp8_g7.h"
32 #include "media_drv_driver.h"
33 #include "media_drv_hw_g8.h"
34 #include "media_drv_hw_g75.h"
35 #include "media_drv_hw_g7.h"
36 #include "media_drv_hwcmds.h"
37 #include "media_drv_hwcmds_g8.h"
38 static UINT16 pak_qp_input_table[160 * 18] = {
39 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
40 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
41 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
42 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
43 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
44 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
45 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
46 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
47 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
48 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
49 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
50 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
51 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
52 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
53 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
54 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
55 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
56 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
57 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
58 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
59 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
60 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
61 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
62 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
63 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
64 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
65 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
66 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
67 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
68 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
69 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
70 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
71 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010, 0x2000, 0x0008, 0x0010,
72 0x2000, 0x0008, 0x0010, 0x4000, 0x0004, 0x0010, 0x4000, 0x0004, 0x0010,
73 0x3333, 0x0005, 0x0010, 0x3333, 0x0005, 0x0010, 0x2000, 0x0008, 0x0010,
74 0x1999, 0x000a, 0x0010, 0x3333, 0x0005, 0x0010, 0x3333, 0x0005, 0x0010,
75 0x2aaa, 0x0006, 0x0010, 0x2aaa, 0x0006, 0x0010, 0x1c71, 0x0009, 0x0010,
76 0x1555, 0x000c, 0x0010, 0x2aaa, 0x0006, 0x0010, 0x2aaa, 0x0006, 0x0010,
77 0x2492, 0x0007, 0x0010, 0x2492, 0x0007, 0x0010, 0x1999, 0x000a, 0x0010,
78 0x1249, 0x000e, 0x0010, 0x2492, 0x0007, 0x0010, 0x2492, 0x0007, 0x0010,
79 0x2000, 0x0008, 0x0010, 0x2000, 0x0008, 0x0010, 0x1555, 0x000c, 0x0010,
80 0x1000, 0x0010, 0x0010, 0x2000, 0x0008, 0x0010, 0x2000, 0x0008, 0x0010,
81 0x1c71, 0x0009, 0x0010, 0x1c71, 0x0009, 0x0010, 0x13b1, 0x000d, 0x0010,
82 0x0e38, 0x0012, 0x0010, 0x1c71, 0x0009, 0x0010, 0x1c71, 0x0009, 0x0010,
83 0x1999, 0x000a, 0x0010, 0x1999, 0x000a, 0x0010, 0x1111, 0x000f, 0x0010,
84 0x0ccc, 0x0014, 0x0010, 0x1999, 0x000a, 0x0010, 0x1999, 0x000a, 0x0010,
85 0x1745, 0x000b, 0x0010, 0x1999, 0x000a, 0x0010, 0x0f0f, 0x0011, 0x0010,
86 0x0ccc, 0x0014, 0x0010, 0x1745, 0x000b, 0x0010, 0x1999, 0x000a, 0x0010,
87 0x1555, 0x000c, 0x0010, 0x1745, 0x000b, 0x0010, 0x0e38, 0x0012, 0x0010,
88 0x0ba2, 0x0016, 0x0010, 0x1555, 0x000c, 0x0010, 0x1745, 0x000b, 0x0010,
89 0x13b1, 0x000d, 0x0010, 0x1555, 0x000c, 0x0010, 0x0ccc, 0x0014, 0x0010,
90 0x0aaa, 0x0018, 0x0010, 0x13b1, 0x000d, 0x0010, 0x1555, 0x000c, 0x0010,
91 0x1249, 0x000e, 0x0010, 0x13b1, 0x000d, 0x0010, 0x0c30, 0x0015, 0x0010,
92 0x09d8, 0x001a, 0x0010, 0x1249, 0x000e, 0x0010, 0x13b1, 0x000d, 0x0010,
93 0x1111, 0x000f, 0x0010, 0x1249, 0x000e, 0x0010, 0x0b21, 0x0017, 0x0010,
94 0x0924, 0x001c, 0x0010, 0x1111, 0x000f, 0x0010, 0x1249, 0x000e, 0x0010,
95 0x1000, 0x0010, 0x0010, 0x1111, 0x000f, 0x0010, 0x0aaa, 0x0018, 0x0010,
96 0x0888, 0x001e, 0x0010, 0x1000, 0x0010, 0x0010, 0x1111, 0x000f, 0x0010,
97 0x0f0f, 0x0011, 0x0010, 0x1000, 0x0010, 0x0010, 0x09d8, 0x001a, 0x0010,
98 0x0800, 0x0020, 0x0010, 0x0f0f, 0x0011, 0x0010, 0x1000, 0x0010, 0x0010,
99 0x0e38, 0x0012, 0x0010, 0x0f0f, 0x0011, 0x0010, 0x097b, 0x001b, 0x0010,
100 0x0787, 0x0022, 0x0010, 0x0e38, 0x0012, 0x0010, 0x0f0f, 0x0011, 0x0010,
101 0x0d79, 0x0013, 0x0010, 0x0f0f, 0x0011, 0x0010, 0x08d3, 0x001d, 0x0010,
102 0x0787, 0x0022, 0x0010, 0x0d79, 0x0013, 0x0010, 0x0f0f, 0x0011, 0x0010,
103 0x0ccc, 0x0014, 0x0010, 0x0e38, 0x0012, 0x0010, 0x0842, 0x001f, 0x0010,
104 0x071c, 0x0024, 0x0010, 0x0ccc, 0x0014, 0x0010, 0x0e38, 0x0012, 0x0010,
105 0x0c30, 0x0015, 0x0010, 0x0d79, 0x0013, 0x0010, 0x0800, 0x0020, 0x0010,
106 0x06bc, 0x0026, 0x0010, 0x0c30, 0x0015, 0x0010, 0x0d79, 0x0013, 0x0010,
107 0x0ba2, 0x0016, 0x0010, 0x0ccc, 0x0014, 0x0010, 0x0787, 0x0022, 0x0010,
108 0x0666, 0x0028, 0x0010, 0x0ba2, 0x0016, 0x0010, 0x0ccc, 0x0014, 0x0010,
109 0x0b21, 0x0017, 0x0010, 0x0ccc, 0x0014, 0x0010, 0x0750, 0x0023, 0x0010,
110 0x0666, 0x0028, 0x0010, 0x0b21, 0x0017, 0x0010, 0x0ccc, 0x0014, 0x0010,
111 0x0aaa, 0x0018, 0x0010, 0x0c30, 0x0015, 0x0010, 0x06eb, 0x0025, 0x0010,
112 0x0618, 0x002a, 0x0010, 0x0aaa, 0x0018, 0x0010, 0x0c30, 0x0015, 0x0010,
113 0x0a3d, 0x0019, 0x0010, 0x0c30, 0x0015, 0x0010, 0x06bc, 0x0026, 0x0010,
114 0x0618, 0x002a, 0x0010, 0x0a3d, 0x0019, 0x0010, 0x0c30, 0x0015, 0x0010,
115 0x09d8, 0x001a, 0x0010, 0x0ba2, 0x0016, 0x0010, 0x0666, 0x0028, 0x0010,
116 0x05d1, 0x002c, 0x0010, 0x09d8, 0x001a, 0x0010, 0x0ba2, 0x0016, 0x0010,
117 0x097b, 0x001b, 0x0010, 0x0ba2, 0x0016, 0x0010, 0x063e, 0x0029, 0x0010,
118 0x05d1, 0x002c, 0x0010, 0x097b, 0x001b, 0x0010, 0x0ba2, 0x0016, 0x0010,
119 0x0924, 0x001c, 0x0010, 0x0b21, 0x0017, 0x0010, 0x05f4, 0x002b, 0x0010,
120 0x0590, 0x002e, 0x0010, 0x0924, 0x001c, 0x0010, 0x0b21, 0x0017, 0x0010,
121 0x08d3, 0x001d, 0x0010, 0x0b21, 0x0017, 0x0010, 0x05d1, 0x002c, 0x0010,
122 0x0590, 0x002e, 0x0010, 0x08d3, 0x001d, 0x0010, 0x0b21, 0x0017, 0x0010,
123 0x0888, 0x001e, 0x0010, 0x0aaa, 0x0018, 0x0010, 0x0590, 0x002e, 0x0010,
124 0x0555, 0x0030, 0x0010, 0x0888, 0x001e, 0x0010, 0x0aaa, 0x0018, 0x0010,
125 0x0842, 0x001f, 0x0010, 0x0a3d, 0x0019, 0x0010, 0x0555, 0x0030, 0x0010,
126 0x051e, 0x0032, 0x0010, 0x0842, 0x001f, 0x0010, 0x0a3d, 0x0019, 0x0010,
127 0x0800, 0x0020, 0x0010, 0x0a3d, 0x0019, 0x0010, 0x0539, 0x0031, 0x0010,
128 0x051e, 0x0032, 0x0010, 0x0800, 0x0020, 0x0010, 0x0a3d, 0x0019, 0x0010,
129 0x07c1, 0x0021, 0x0010, 0x09d8, 0x001a, 0x0010, 0x0505, 0x0033, 0x0010,
130 0x04ec, 0x0034, 0x0010, 0x07c1, 0x0021, 0x0010, 0x09d8, 0x001a, 0x0010,
131 0x0787, 0x0022, 0x0010, 0x097b, 0x001b, 0x0010, 0x04ec, 0x0034, 0x0010,
132 0x04bd, 0x0036, 0x0010, 0x0787, 0x0022, 0x0010, 0x097b, 0x001b, 0x0010,
133 0x0750, 0x0023, 0x0010, 0x0924, 0x001c, 0x0010, 0x04bd, 0x0036, 0x0010,
134 0x0492, 0x0038, 0x0010, 0x0750, 0x0023, 0x0010, 0x0924, 0x001c, 0x0010,
135 0x071c, 0x0024, 0x0010, 0x08d3, 0x001d, 0x0010, 0x04a7, 0x0037, 0x0010,
136 0x0469, 0x003a, 0x0010, 0x071c, 0x0024, 0x0010, 0x08d3, 0x001d, 0x0010,
137 0x06eb, 0x0025, 0x0010, 0x0888, 0x001e, 0x0010, 0x047d, 0x0039, 0x0010,
138 0x0444, 0x003c, 0x0010, 0x06eb, 0x0025, 0x0010, 0x0888, 0x001e, 0x0010,
139 0x06bc, 0x0026, 0x0010, 0x0842, 0x001f, 0x0010, 0x0469, 0x003a, 0x0010,
140 0x0421, 0x003e, 0x0010, 0x06bc, 0x0026, 0x0010, 0x0842, 0x001f, 0x0010,
141 0x0690, 0x0027, 0x0010, 0x0800, 0x0020, 0x0010, 0x0444, 0x003c, 0x0010,
142 0x0400, 0x0040, 0x0010, 0x0690, 0x0027, 0x0010, 0x0800, 0x0020, 0x0010,
143 0x0666, 0x0028, 0x0010, 0x07c1, 0x0021, 0x0010, 0x0421, 0x003e, 0x0010,
144 0x03e0, 0x0042, 0x0010, 0x0666, 0x0028, 0x0010, 0x07c1, 0x0021, 0x0010,
145 0x063e, 0x0029, 0x0010, 0x0787, 0x0022, 0x0010, 0x0410, 0x003f, 0x0010,
146 0x03c3, 0x0044, 0x0010, 0x063e, 0x0029, 0x0010, 0x0787, 0x0022, 0x0010,
147 0x0618, 0x002a, 0x0010, 0x0750, 0x0023, 0x0010, 0x03f0, 0x0041, 0x0010,
148 0x03a8, 0x0046, 0x0010, 0x0618, 0x002a, 0x0010, 0x0750, 0x0023, 0x0010,
149 0x05f4, 0x002b, 0x0010, 0x071c, 0x0024, 0x0010, 0x03e0, 0x0042, 0x0010,
150 0x038e, 0x0048, 0x0010, 0x05f4, 0x002b, 0x0010, 0x071c, 0x0024, 0x0010,
151 0x05d1, 0x002c, 0x0010, 0x06eb, 0x0025, 0x0010, 0x03c3, 0x0044, 0x0010,
152 0x0375, 0x004a, 0x0010, 0x05d1, 0x002c, 0x0010, 0x06eb, 0x0025, 0x0010,
153 0x05b0, 0x002d, 0x0010, 0x06eb, 0x0025, 0x0010, 0x03b5, 0x0045, 0x0010,
154 0x0375, 0x004a, 0x0010, 0x05b0, 0x002d, 0x0010, 0x06eb, 0x0025, 0x0010,
155 0x0590, 0x002e, 0x0010, 0x06bc, 0x0026, 0x0010, 0x039b, 0x0047, 0x0010,
156 0x035e, 0x004c, 0x0010, 0x0590, 0x002e, 0x0010, 0x06bc, 0x0026, 0x0010,
157 0x0572, 0x002f, 0x0010, 0x0690, 0x0027, 0x0010, 0x038e, 0x0048, 0x0010,
158 0x0348, 0x004e, 0x0010, 0x0572, 0x002f, 0x0010, 0x0690, 0x0027, 0x0010,
159 0x0555, 0x0030, 0x0010, 0x0666, 0x0028, 0x0010, 0x0375, 0x004a, 0x0010,
160 0x0333, 0x0050, 0x0010, 0x0555, 0x0030, 0x0010, 0x0666, 0x0028, 0x0010,
161 0x0539, 0x0031, 0x0010, 0x063e, 0x0029, 0x0010, 0x0369, 0x004b, 0x0010,
162 0x031f, 0x0052, 0x0010, 0x0539, 0x0031, 0x0010, 0x063e, 0x0029, 0x0010,
163 0x051e, 0x0032, 0x0010, 0x0618, 0x002a, 0x0010, 0x0353, 0x004d, 0x0010,
164 0x030c, 0x0054, 0x0010, 0x051e, 0x0032, 0x0010, 0x0618, 0x002a, 0x0010,
165 0x0505, 0x0033, 0x0010, 0x05f4, 0x002b, 0x0010, 0x033d, 0x004f, 0x0010,
166 0x02fa, 0x0056, 0x0010, 0x0505, 0x0033, 0x0010, 0x05f4, 0x002b, 0x0010,
167 0x04ec, 0x0034, 0x0010, 0x05d1, 0x002c, 0x0010, 0x0333, 0x0050, 0x0010,
168 0x02e8, 0x0058, 0x0010, 0x04ec, 0x0034, 0x0010, 0x05d1, 0x002c, 0x0010,
169 0x04d4, 0x0035, 0x0010, 0x05b0, 0x002d, 0x0010, 0x031f, 0x0052, 0x0010,
170 0x02d8, 0x005a, 0x0010, 0x04d4, 0x0035, 0x0010, 0x05b0, 0x002d, 0x0010,
171 0x04bd, 0x0036, 0x0010, 0x0590, 0x002e, 0x0010, 0x0315, 0x0053, 0x0010,
172 0x02c8, 0x005c, 0x0010, 0x04bd, 0x0036, 0x0010, 0x0590, 0x002e, 0x0010,
173 0x04a7, 0x0037, 0x0010, 0x0590, 0x002e, 0x0010, 0x0303, 0x0055, 0x0010,
174 0x02c8, 0x005c, 0x0010, 0x04a7, 0x0037, 0x0010, 0x0590, 0x002e, 0x0010,
175 0x0492, 0x0038, 0x0010, 0x0572, 0x002f, 0x0010, 0x02fa, 0x0056, 0x0010,
176 0x02b9, 0x005e, 0x0010, 0x0492, 0x0038, 0x0010, 0x0572, 0x002f, 0x0010,
177 0x047d, 0x0039, 0x0010, 0x0555, 0x0030, 0x0010, 0x02e8, 0x0058, 0x0010,
178 0x02aa, 0x0060, 0x0010, 0x047d, 0x0039, 0x0010, 0x0555, 0x0030, 0x0010,
179 0x0469, 0x003a, 0x0010, 0x0539, 0x0031, 0x0010, 0x02e0, 0x0059, 0x0010,
180 0x029c, 0x0062, 0x0010, 0x0469, 0x003a, 0x0010, 0x0539, 0x0031, 0x0010,
181 0x0444, 0x003c, 0x0010, 0x051e, 0x0032, 0x0010, 0x02c0, 0x005d, 0x0010,
182 0x028f, 0x0064, 0x0010, 0x0444, 0x003c, 0x0010, 0x051e, 0x0032, 0x0010,
183 0x0421, 0x003e, 0x0010, 0x0505, 0x0033, 0x0010, 0x02aa, 0x0060, 0x0010,
184 0x0282, 0x0066, 0x0010, 0x0421, 0x003e, 0x0010, 0x0505, 0x0033, 0x0010,
185 0x0400, 0x0040, 0x0010, 0x04ec, 0x0034, 0x0010, 0x0295, 0x0063, 0x0010,
186 0x0276, 0x0068, 0x0010, 0x0400, 0x0040, 0x0010, 0x04ec, 0x0034, 0x0010,
187 0x03e0, 0x0042, 0x0010, 0x04d4, 0x0035, 0x0010, 0x0282, 0x0066, 0x0010,
188 0x026a, 0x006a, 0x0010, 0x03e0, 0x0042, 0x0010, 0x04d4, 0x0035, 0x0010,
189 0x03c3, 0x0044, 0x0010, 0x04bd, 0x0036, 0x0010, 0x0270, 0x0069, 0x0010,
190 0x025e, 0x006c, 0x0010, 0x03c3, 0x0044, 0x0010, 0x04bd, 0x0036, 0x0010,
191 0x03a8, 0x0046, 0x0010, 0x04a7, 0x0037, 0x0010, 0x025e, 0x006c, 0x0010,
192 0x0253, 0x006e, 0x0010, 0x03a8, 0x0046, 0x0010, 0x04a7, 0x0037, 0x0010,
193 0x038e, 0x0048, 0x0010, 0x0492, 0x0038, 0x0010, 0x024e, 0x006f, 0x0010,
194 0x0249, 0x0070, 0x0010, 0x038e, 0x0048, 0x0010, 0x0492, 0x0038, 0x0010,
195 0x0375, 0x004a, 0x0010, 0x047d, 0x0039, 0x0010, 0x023e, 0x0072, 0x0010,
196 0x023e, 0x0072, 0x0010, 0x0375, 0x004a, 0x0010, 0x047d, 0x0039, 0x0010,
197 0x035e, 0x004c, 0x0010, 0x0469, 0x003a, 0x0010, 0x0230, 0x0075, 0x0010,
198 0x0234, 0x0074, 0x0010, 0x035e, 0x004c, 0x0010, 0x0469, 0x003a, 0x0010,
199 0x0348, 0x004e, 0x0010, 0x0456, 0x003b, 0x0010, 0x0222, 0x0078, 0x0010,
200 0x022b, 0x0076, 0x0010, 0x0348, 0x004e, 0x0010, 0x0456, 0x003b, 0x0010,
201 0x0333, 0x0050, 0x0010, 0x0444, 0x003c, 0x0010, 0x0210, 0x007c, 0x0010,
202 0x0222, 0x0078, 0x0010, 0x0333, 0x0050, 0x0010, 0x0444, 0x003c, 0x0010,
203 0x031f, 0x0052, 0x0010, 0x0432, 0x003d, 0x0010, 0x0204, 0x007f, 0x0010,
204 0x0219, 0x007a, 0x0010, 0x031f, 0x0052, 0x0010, 0x0432, 0x003d, 0x0010,
205 0x030c, 0x0054, 0x0010, 0x0421, 0x003e, 0x0010, 0x01f8, 0x0082, 0x0010,
206 0x0210, 0x007c, 0x0010, 0x030c, 0x0054, 0x0010, 0x0421, 0x003e, 0x0010,
207 0x02fa, 0x0056, 0x0010, 0x0410, 0x003f, 0x0010, 0x01ec, 0x0085, 0x0010,
208 0x0208, 0x007e, 0x0010, 0x02fa, 0x0056, 0x0010, 0x0410, 0x003f, 0x0010,
209 0x02e8, 0x0058, 0x0010, 0x0400, 0x0040, 0x0010, 0x01e1, 0x0088, 0x0010,
210 0x0200, 0x0080, 0x0010, 0x02e8, 0x0058, 0x0010, 0x0400, 0x0040, 0x0010,
211 0x02d8, 0x005a, 0x0010, 0x03f0, 0x0041, 0x0010, 0x01d7, 0x008b, 0x0010,
212 0x01f8, 0x0082, 0x0010, 0x02d8, 0x005a, 0x0010, 0x03f0, 0x0041, 0x0010,
213 0x02c8, 0x005c, 0x0010, 0x03e0, 0x0042, 0x0010, 0x01cd, 0x008e, 0x0010,
214 0x01f0, 0x0084, 0x0010, 0x02c8, 0x005c, 0x0010, 0x03e0, 0x0042, 0x0010,
215 0x02b9, 0x005e, 0x0010, 0x03d2, 0x0043, 0x0010, 0x01c3, 0x0091, 0x0010,
216 0x01e9, 0x0086, 0x0010, 0x02b9, 0x005e, 0x0010, 0x03d2, 0x0043, 0x0010,
217 0x02aa, 0x0060, 0x0010, 0x03c3, 0x0044, 0x0010, 0x01ba, 0x0094, 0x0010,
218 0x01e1, 0x0088, 0x0010, 0x02aa, 0x0060, 0x0010, 0x03c3, 0x0044, 0x0010,
219 0x029c, 0x0062, 0x0010, 0x03b5, 0x0045, 0x0010, 0x01b2, 0x0097, 0x0010,
220 0x01da, 0x008a, 0x0010, 0x029c, 0x0062, 0x0010, 0x03b5, 0x0045, 0x0010,
221 0x028f, 0x0064, 0x0010, 0x03a8, 0x0046, 0x0010, 0x01a6, 0x009b, 0x0010,
222 0x01d4, 0x008c, 0x0010, 0x028f, 0x0064, 0x0010, 0x03a8, 0x0046, 0x0010,
223 0x0282, 0x0066, 0x0010, 0x039b, 0x0047, 0x0010, 0x019e, 0x009e, 0x0010,
224 0x01cd, 0x008e, 0x0010, 0x0282, 0x0066, 0x0010, 0x039b, 0x0047, 0x0010,
225 0x0276, 0x0068, 0x0010, 0x038e, 0x0048, 0x0010, 0x0197, 0x00a1, 0x0010,
226 0x01c7, 0x0090, 0x0010, 0x0276, 0x0068, 0x0010, 0x038e, 0x0048, 0x0010,
227 0x026a, 0x006a, 0x0010, 0x0381, 0x0049, 0x0010, 0x018f, 0x00a4, 0x0010,
228 0x01c0, 0x0092, 0x0010, 0x026a, 0x006a, 0x0010, 0x0381, 0x0049, 0x0010,
229 0x025e, 0x006c, 0x0010, 0x0375, 0x004a, 0x0010, 0x0188, 0x00a7, 0x0010,
230 0x01ba, 0x0094, 0x0010, 0x025e, 0x006c, 0x0010, 0x0375, 0x004a, 0x0010,
231 0x0253, 0x006e, 0x0010, 0x0369, 0x004b, 0x0010, 0x0181, 0x00aa, 0x0010,
232 0x01b4, 0x0096, 0x0010, 0x0253, 0x006e, 0x0010, 0x0369, 0x004b, 0x0010,
233 0x0249, 0x0070, 0x0010, 0x035e, 0x004c, 0x0010, 0x017a, 0x00ad, 0x0010,
234 0x01af, 0x0098, 0x0010, 0x0249, 0x0070, 0x0010, 0x035e, 0x004c, 0x0010,
235 0x023e, 0x0072, 0x0010, 0x035e, 0x004c, 0x0010, 0x0174, 0x00b0, 0x0010,
236 0x01af, 0x0098, 0x0010, 0x023e, 0x0072, 0x0010, 0x035e, 0x004c, 0x0010,
237 0x0234, 0x0074, 0x0010, 0x0353, 0x004d, 0x0010, 0x016e, 0x00b3, 0x0010,
238 0x01a9, 0x009a, 0x0010, 0x0234, 0x0074, 0x0010, 0x0353, 0x004d, 0x0010,
239 0x0226, 0x0077, 0x0010, 0x0348, 0x004e, 0x0010, 0x0164, 0x00b8, 0x0010,
240 0x01a4, 0x009c, 0x0010, 0x0226, 0x0077, 0x0010, 0x0348, 0x004e, 0x0010,
241 0x0219, 0x007a, 0x0010, 0x033d, 0x004f, 0x0010, 0x015a, 0x00bd, 0x0010,
242 0x019e, 0x009e, 0x0010, 0x0219, 0x007a, 0x0010, 0x033d, 0x004f, 0x0010,
243 0x020c, 0x007d, 0x0010, 0x0333, 0x0050, 0x0010, 0x0153, 0x00c1, 0x0010,
244 0x0199, 0x00a0, 0x0010, 0x020c, 0x007d, 0x0010, 0x0333, 0x0050, 0x0010,
245 0x0200, 0x0080, 0x0010, 0x0329, 0x0051, 0x0010, 0x014a, 0x00c6, 0x0010,
246 0x0194, 0x00a2, 0x0010, 0x0200, 0x0080, 0x0010, 0x0329, 0x0051, 0x0010,
247 0x01f4, 0x0083, 0x0010, 0x031f, 0x0052, 0x0010, 0x0142, 0x00cb, 0x0010,
248 0x018f, 0x00a4, 0x0010, 0x01f4, 0x0083, 0x0010, 0x031f, 0x0052, 0x0010,
249 0x01e9, 0x0086, 0x0010, 0x0315, 0x0053, 0x0010, 0x013c, 0x00cf, 0x0010,
250 0x018a, 0x00a6, 0x0010, 0x01e9, 0x0086, 0x0010, 0x0315, 0x0053, 0x0010,
251 0x01de, 0x0089, 0x0010, 0x030c, 0x0054, 0x0010, 0x0135, 0x00d4, 0x0010,
252 0x0186, 0x00a8, 0x0010, 0x01de, 0x0089, 0x0010, 0x030c, 0x0054, 0x0010,
253 0x01d4, 0x008c, 0x0010, 0x0303, 0x0055, 0x0010, 0x012e, 0x00d9, 0x0010,
254 0x0181, 0x00aa, 0x0010, 0x01d4, 0x008c, 0x0010, 0x0303, 0x0055, 0x0010,
255 0x01ca, 0x008f, 0x0010, 0x02fa, 0x0056, 0x0010, 0x0128, 0x00dd, 0x0010,
256 0x017d, 0x00ac, 0x0010, 0x01ca, 0x008f, 0x0010, 0x02fa, 0x0056, 0x0010,
257 0x01c0, 0x0092, 0x0010, 0x02f1, 0x0057, 0x0010, 0x0121, 0x00e2, 0x0010,
258 0x0178, 0x00ae, 0x0010, 0x01c0, 0x0092, 0x0010, 0x02f1, 0x0057, 0x0010,
259 0x01b7, 0x0095, 0x0010, 0x02e8, 0x0058, 0x0010, 0x011c, 0x00e6, 0x0010,
260 0x0174, 0x00b0, 0x0010, 0x01b7, 0x0095, 0x0010, 0x02e8, 0x0058, 0x0010,
261 0x01af, 0x0098, 0x0010, 0x02e0, 0x0059, 0x0010, 0x0116, 0x00eb, 0x0010,
262 0x0170, 0x00b2, 0x0010, 0x01af, 0x0098, 0x0010, 0x02e0, 0x0059, 0x0010,
263 0x01a6, 0x009b, 0x0010, 0x02d0, 0x005b, 0x0010, 0x0111, 0x00f0, 0x0010,
264 0x0168, 0x00b6, 0x0010, 0x01a6, 0x009b, 0x0010, 0x02d0, 0x005b, 0x0010,
265 0x019e, 0x009e, 0x0010, 0x02c0, 0x005d, 0x0010, 0x010c, 0x00f4, 0x0010,
266 0x0160, 0x00ba, 0x0010, 0x019e, 0x009e, 0x0010, 0x02c0, 0x005d, 0x0010,
267 0x0197, 0x00a1, 0x0010, 0x02b1, 0x005f, 0x0010, 0x0107, 0x00f9, 0x0010,
268 0x0158, 0x00be, 0x0010, 0x0197, 0x00a1, 0x0010, 0x02b1, 0x005f, 0x0010,
269 0x018f, 0x00a4, 0x0010, 0x02aa, 0x0060, 0x0010, 0x0102, 0x00fe, 0x0010,
270 0x0155, 0x00c0, 0x0010, 0x018f, 0x00a4, 0x0010, 0x02aa, 0x0060, 0x0010,
271 0x0188, 0x00a7, 0x0010, 0x029c, 0x0062, 0x0010, 0x00fe, 0x0102, 0x0010,
272 0x014e, 0x00c4, 0x0010, 0x0188, 0x00a7, 0x0010, 0x029c, 0x0062, 0x0010,
273 0x0181, 0x00aa, 0x0010, 0x028f, 0x0064, 0x0010, 0x00f9, 0x0107, 0x0010,
274 0x0147, 0x00c8, 0x0010, 0x0181, 0x00aa, 0x0010, 0x028f, 0x0064, 0x0010,
275 0x017a, 0x00ad, 0x0010, 0x0288, 0x0065, 0x0010, 0x00f4, 0x010c, 0x0010,
276 0x0144, 0x00ca, 0x0010, 0x017a, 0x00ad, 0x0010, 0x0288, 0x0065, 0x0010,
277 0x0172, 0x00b1, 0x0010, 0x0282, 0x0066, 0x0010, 0x00ef, 0x0112, 0x0010,
278 0x0141, 0x00cc, 0x0010, 0x0172, 0x00b1, 0x0010, 0x0282, 0x0066, 0x0010,
279 0x016a, 0x00b5, 0x0010, 0x0276, 0x0068, 0x0010, 0x00ea, 0x0118, 0x0010,
280 0x013b, 0x00d0, 0x0010, 0x016a, 0x00b5, 0x0010, 0x0276, 0x0068, 0x0010,
281 0x0162, 0x00b9, 0x0010, 0x026a, 0x006a, 0x0010, 0x00e5, 0x011e, 0x0010,
282 0x0135, 0x00d4, 0x0010, 0x0162, 0x00b9, 0x0010, 0x026a, 0x006a, 0x0010,
283 0x015a, 0x00bd, 0x0010, 0x025e, 0x006c, 0x0010, 0x00e0, 0x0124, 0x0010,
284 0x012f, 0x00d8, 0x0010, 0x015a, 0x00bd, 0x0010, 0x025e, 0x006c, 0x0010,
285 0x0153, 0x00c1, 0x0010, 0x0253, 0x006e, 0x0010, 0x00db, 0x012b, 0x0010,
286 0x0129, 0x00dc, 0x0010, 0x0153, 0x00c1, 0x0010, 0x0253, 0x006e, 0x0010,
287 0x014c, 0x00c5, 0x0010, 0x0249, 0x0070, 0x0010, 0x00d6, 0x0131, 0x0010,
288 0x0124, 0x00e0, 0x0010, 0x014c, 0x00c5, 0x0010, 0x0249, 0x0070, 0x0010,
289 0x0146, 0x00c9, 0x0010, 0x023e, 0x0072, 0x0010, 0x00d2, 0x0137, 0x0010,
290 0x011f, 0x00e4, 0x0010, 0x0146, 0x00c9, 0x0010, 0x023e, 0x0072, 0x0010,
291 0x013f, 0x00cd, 0x0010, 0x0234, 0x0074, 0x0010, 0x00ce, 0x013d, 0x0010,
292 0x011a, 0x00e8, 0x0010, 0x013f, 0x00cd, 0x0010, 0x0234, 0x0074, 0x0010,
293 0x0139, 0x00d1, 0x0010, 0x022b, 0x0076, 0x0010, 0x00ca, 0x0143, 0x0010,
294 0x0115, 0x00ec, 0x0010, 0x0139, 0x00d1, 0x0010, 0x022b, 0x0076, 0x0010,
295 0x0133, 0x00d5, 0x0010, 0x0219, 0x007a, 0x0010, 0x00c6, 0x014a, 0x0010,
296 0x010c, 0x00f4, 0x0010, 0x0133, 0x00d5, 0x0010, 0x0219, 0x007a, 0x0010,
297 0x012e, 0x00d9, 0x0010, 0x0210, 0x007c, 0x0010, 0x00c3, 0x0150, 0x0010,
298 0x0108, 0x00f8, 0x0010, 0x012e, 0x00d9, 0x0010, 0x0210, 0x007c, 0x0010,
299 0x0128, 0x00dd, 0x0010, 0x0208, 0x007e, 0x0010, 0x00bf, 0x0156, 0x0010,
300 0x0104, 0x00fc, 0x0010, 0x0128, 0x00dd, 0x0010, 0x0208, 0x007e, 0x0010,
301 0x0123, 0x00e1, 0x0010, 0x0200, 0x0080, 0x0010, 0x00bc, 0x015c, 0x0010,
302 0x0100, 0x0100, 0x0010, 0x0123, 0x00e1, 0x0010, 0x0200, 0x0080, 0x0010,
303 0x011e, 0x00e5, 0x0010, 0x01f8, 0x0082, 0x0010, 0x00b9, 0x0162, 0x0010,
304 0x00fc, 0x0104, 0x0010, 0x011e, 0x00e5, 0x0010, 0x01f8, 0x0082, 0x0010,
305 0x0118, 0x00ea, 0x0010, 0x01f0, 0x0084, 0x0010, 0x00b5, 0x016a, 0x0010,
306 0x00f8, 0x0108, 0x0010, 0x0118, 0x00ea, 0x0010, 0x01f0, 0x0084, 0x0010,
307 0x0112, 0x00ef, 0x0010, 0x01e9, 0x0086, 0x0010, 0x00b1, 0x0172, 0x0010,
308 0x00f4, 0x010c, 0x0010, 0x0112, 0x00ef, 0x0010, 0x01f0, 0x0084, 0x0010,
309 0x010b, 0x00f5, 0x0010, 0x01e1, 0x0088, 0x0010, 0x00ac, 0x017b, 0x0010,
310 0x00f0, 0x0110, 0x0010, 0x010b, 0x00f5, 0x0010, 0x01f0, 0x0084, 0x0010,
311 0x0107, 0x00f9, 0x0010, 0x01da, 0x008a, 0x0010, 0x00aa, 0x0181, 0x0010,
312 0x00ed, 0x0114, 0x0010, 0x0107, 0x00f9, 0x0010, 0x01f0, 0x0084, 0x0010,
313 0x0102, 0x00fe, 0x0010, 0x01d4, 0x008c, 0x0010, 0x00a6, 0x0189, 0x0010,
314 0x00ea, 0x0118, 0x0010, 0x0102, 0x00fe, 0x0010, 0x01f0, 0x0084, 0x0010,
315 0x00fd, 0x0103, 0x0010, 0x01ca, 0x008f, 0x0010, 0x00a3, 0x0191, 0x0010,
316 0x00e5, 0x011e, 0x0010, 0x00fd, 0x0103, 0x0010, 0x01f0, 0x0084, 0x0010,
317 0x00f8, 0x0108, 0x0010, 0x01c3, 0x0091, 0x0010, 0x00a0, 0x0199, 0x0010,
318 0x00e1, 0x0122, 0x0010, 0x00f8, 0x0108, 0x0010, 0x01f0, 0x0084, 0x0010,
319 0x00f3, 0x010d, 0x0010, 0x01ba, 0x0094, 0x0010, 0x009d, 0x01a0, 0x0010,
320 0x00dd, 0x0128, 0x0010, 0x00f3, 0x010d, 0x0010, 0x01f0, 0x0084, 0x0010,
321 0x00ef, 0x0112, 0x0010, 0x01b2, 0x0097, 0x0010, 0x009a, 0x01a8, 0x0010,
322 0x00d9, 0x012e, 0x0010, 0x00ef, 0x0112, 0x0010, 0x01f0, 0x0084, 0x0010,
323 0x00ea, 0x0117, 0x0010, 0x01a9, 0x009a, 0x0010, 0x0097, 0x01b0, 0x0010,
324 0x00d4, 0x0134, 0x0010, 0x00ea, 0x0117, 0x0010, 0x01f0, 0x0084, 0x0010,
325 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
326 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
327 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
328 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
329 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
330 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
331 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
332 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
333 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
334 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
335 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
336 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
337 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
338 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
339 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
340 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
341 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
342 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
343 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
344 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
345 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
346 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
347 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
348 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
349 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
350 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
351 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
352 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
353 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
354 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
355 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
356 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010,
357 0x00e6, 0x011c, 0x0010, 0x01a1, 0x009d, 0x0010, 0x0094, 0x01b8, 0x0010,
358 0x00d0, 0x013a, 0x0010, 0x00e6, 0x011c, 0x0010, 0x01f0, 0x0084, 0x0010
359 };
360
media_object_walker_mbenc_init(BOOL mbenc_i_frame_dist_in_use,BOOL mbenc_phase_2,MEDIA_ENCODER_CTX * encoder_context,MEDIA_OBJ_WALKER_PARAMS * media_obj_walker_params)361 VOID media_object_walker_mbenc_init(BOOL mbenc_i_frame_dist_in_use,BOOL mbenc_phase_2,MEDIA_ENCODER_CTX * encoder_context,MEDIA_OBJ_WALKER_PARAMS *media_obj_walker_params)
362 {
363 media_drv_memset (media_obj_walker_params,
364 sizeof (MEDIA_OBJ_WALKER_PARAMS));
365 media_obj_walker_params->pic_coding_type = encoder_context->pic_coding_type;
366 if ((encoder_context->pic_coding_type == FRAME_TYPE_I)
367 && (mbenc_phase_2 == FALSE))
368 media_obj_walker_params->me_in_use = TRUE;
369 else
370 {
371 media_obj_walker_params->pic_coding_type = FRAME_TYPE_I;
372 }
373
374 media_obj_walker_params->use_scoreboard = encoder_context->use_hw_scoreboard;
375 media_obj_walker_params->walker_mode = encoder_context->walker_mode;
376 //media_obj_walker_params->direct_spatial_mv_pred;
377 //media_obj_walker_params->me_in_use = TRUE;
378 media_obj_walker_params->mb_enc_iframe_dist_en = mbenc_i_frame_dist_in_use;
379 //media_obj_walker_params.force_26_degree;
380 media_obj_walker_params->frmfield_h_in_mb =
381 mbenc_i_frame_dist_in_use ?
382 encoder_context->down_scaled_frame_field_height_mb4x :
383 encoder_context->picture_height_in_mbs;
384 media_obj_walker_params->frm_w_in_mb =
385 mbenc_i_frame_dist_in_use ? encoder_context->down_scaled_width_mb4x
386 : (UINT) encoder_context->picture_width_in_mbs;
387
388 }
media_object_walker_pak_init(UINT pak_phase_type,MEDIA_ENCODER_CTX * encoder_context,MEDIA_OBJ_WALKER_PARAMS * media_obj_walker_params)389 VOID media_object_walker_pak_init(UINT pak_phase_type,MEDIA_ENCODER_CTX * encoder_context,MEDIA_OBJ_WALKER_PARAMS *media_obj_walker_params)
390 {
391 media_drv_memset (media_obj_walker_params,
392 sizeof (MEDIA_OBJ_WALKER_PARAMS));
393 media_obj_walker_params->use_scoreboard = encoder_context->use_hw_scoreboard;
394 media_obj_walker_params->walker_mode = encoder_context->walker_mode;
395 media_obj_walker_params->pic_coding_type = encoder_context->pic_coding_type;
396 //media_obj_walker_params->direct_spatial_mv_pred;
397 //media_obj_walker_params->me_in_use = TRUE;
398 //media_obj_walker_params->mb_enc_iframe_dist_en = mbenc_i_frame_dist_in_use;
399 //media_obj_walker_params->force_26_degree;
400 //media_obj_walker_params->frmfield_h_in_mb =encoder_context->picture_height_in_mbs;
401 media_obj_walker_params->frm_w_in_mb =
402 (UINT) encoder_context->picture_width_in_mbs;
403 if (pak_phase_type == MBPAK_HYBRID_STATE_P1)
404 {
405 media_obj_walker_params->me_in_use = TRUE;
406 media_obj_walker_params->frmfield_h_in_mb =
407 encoder_context->picture_height_in_mbs;
408 }
409 else if (pak_phase_type == MBPAK_HYBRID_STATE_P2)
410 {
411 media_obj_walker_params->hybrid_pak2_pattern_enabled_45_deg = 1;
412 media_obj_walker_params->frmfield_h_in_mb =
413 encoder_context->picture_height_in_mbs * 2;
414 }
415 }
416
417 VOID
gpe_context_vfe_scoreboardinit_vp8(MEDIA_GPE_CTX * gpe_context)418 gpe_context_vfe_scoreboardinit_vp8 (MEDIA_GPE_CTX * gpe_context)
419 {
420 gpe_context->vfe_state.vfe_desc5.scoreboard0.mask = 0xFF;
421 gpe_context->vfe_state.vfe_desc5.scoreboard0.type = SCOREBOARD_NON_STALLING;
422 gpe_context->vfe_state.vfe_desc5.scoreboard0.enable = 1;
423
424 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_x0 = 0xF;
425 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_y0 = 0;
426 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_x1 = 0;
427 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_y1 = 0xF;
428 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_x2 = 1;
429 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_y2 = 0xF;
430 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_x3 = 0xF;
431 gpe_context->vfe_state.vfe_desc6.scoreboard1.delta_y3 = 0xF;
432
433 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_x4 = 0xF;
434 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_y4 = 1;
435 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_x5 = 0;
436 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_y5 = 0xE;
437 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_x6 = 1;
438 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_y6 = 0xE;
439 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_x7 = 0xF;
440 gpe_context->vfe_state.vfe_desc7.scoreboard2.delta_y7 = 0xE;
441 }
442
443 VOID
media_alloc_resource_mbpak(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)444 media_alloc_resource_mbpak (VADriverContextP ctx,
445 MEDIA_ENCODER_CTX * encoder_context)
446 {
447 MEDIA_DRV_CONTEXT *drv_ctx = (MEDIA_DRV_CONTEXT *) (ctx->pDriverData);
448 MBPAK_CONTEXT *mbpak_context = &encoder_context->mbpak_context;
449 /*UINT pic_w_h_in_mb =
450 (encoder_context->picture_width_in_mbs *
451 ((encoder_context->picture_height_in_mbs + 1) >> 1)) * 2; */
452 //row buffer y
453 mbpak_context->row_buffer_y.surface_array_spacing = 0x1;
454 mbpak_context->row_buffer_y.tiling = I915_TILING_NONE;
455 mbpak_context->row_buffer_y.bo_size =
456 encoder_context->picture_width_in_mbs * 16;
457 media_allocate_resource (&mbpak_context->row_buffer_y,
458 drv_ctx->drv_data.bufmgr,
459 (const BYTE *) "row_buffer y",
460 mbpak_context->row_buffer_y.bo_size, 4096);
461 MEDIA_DRV_ASSERT (mbpak_context->row_buffer_y.bo);
462
463 //row buffer uv
464 mbpak_context->row_buffer_uv.surface_array_spacing = 0x1;
465 mbpak_context->row_buffer_uv.tiling = I915_TILING_NONE;
466 mbpak_context->row_buffer_uv.bo_size =
467 encoder_context->picture_width_in_mbs * 16;
468 media_allocate_resource (&mbpak_context->row_buffer_uv,
469 drv_ctx->drv_data.bufmgr,
470 (const BYTE *) "row_buffer uv",
471 mbpak_context->row_buffer_uv.bo_size, 4096);
472 MEDIA_DRV_ASSERT (mbpak_context->row_buffer_uv.bo);
473
474 //column buffer y
475 mbpak_context->column_buffer_y.surface_array_spacing = 0x1;
476 mbpak_context->column_buffer_y.tiling = I915_TILING_NONE;
477 mbpak_context->column_buffer_y.bo_size =
478 encoder_context->picture_height_in_mbs * 16;
479 media_allocate_resource (&mbpak_context->column_buffer_y,
480 drv_ctx->drv_data.bufmgr,
481 (const BYTE *) "column buffer y",
482 mbpak_context->column_buffer_y.bo_size, 4096);
483 MEDIA_DRV_ASSERT (mbpak_context->column_buffer_y.bo);
484
485 //column buffer uv
486 mbpak_context->column_buffer_uv.surface_array_spacing = 0x1;
487 mbpak_context->column_buffer_uv.tiling = I915_TILING_NONE;
488 mbpak_context->column_buffer_uv.bo_size =
489 encoder_context->picture_height_in_mbs * 16;
490 media_allocate_resource (&mbpak_context->column_buffer_uv,
491 drv_ctx->drv_data.bufmgr,
492 (const BYTE *) "column buffer uv",
493 mbpak_context->column_buffer_uv.bo_size, 4096);
494 MEDIA_DRV_ASSERT (mbpak_context->column_buffer_uv.bo);
495
496 mbpak_context->kernel_dump_buffer.surface_array_spacing = 0x1;
497 mbpak_context->kernel_dump_buffer.tiling = I915_TILING_NONE;
498 mbpak_context->kernel_dump_buffer.bo_size = KERNEL_DUMP_SIZE_VP8; //pic_w_h_in_mb;
499 media_allocate_resource (&mbpak_context->kernel_dump_buffer,
500 drv_ctx->drv_data.bufmgr,
501 (const BYTE *) "kernel dump buffer mbpak",
502 mbpak_context->kernel_dump_buffer.bo_size, 4096);
503 MEDIA_DRV_ASSERT (mbpak_context->kernel_dump_buffer.bo);
504 }
505
506 VOID
media_alloc_resource_mbenc(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)507 media_alloc_resource_mbenc (VADriverContextP ctx,
508 MEDIA_ENCODER_CTX * encoder_context)
509 {
510 MEDIA_DRV_CONTEXT *drv_ctx = (MEDIA_DRV_CONTEXT *) (ctx->pDriverData);
511 MBENC_CONTEXT *mbenc_context = &encoder_context->mbenc_context;
512 UINT sz = 0;
513 UINT pic_w_h_in_mb;
514 UINT num_of_mb_blocks =
515 encoder_context->picture_width_in_mbs *
516 encoder_context->picture_height_in_mbs;
517 pic_w_h_in_mb = num_of_mb_blocks; /*(encoder_context->picture_width_in_mbs *
518 ((encoder_context->picture_height_in_mbs + 1) >> 1)) * 2; */
519 if (encoder_context->brc_enabled)
520 {
521 encoder_context->mb_data_offset =
522 ALIGN ((MB_CODE_SIZE_VP8 * sizeof (UINT) + MB_MV_CODE_SIZE_VP8), 32);
523 }
524 else
525 {
526 encoder_context->mb_data_offset = 0;
527 }
528
529 encoder_context->mb_data_in_bytes = pic_w_h_in_mb * ALIGN(MB_CODE_SIZE_VP8 * sizeof(UINT), 32);
530 encoder_context->mv_offset = encoder_context->mb_data_offset + encoder_context->mb_data_in_bytes;
531 encoder_context->mv_in_bytes = pic_w_h_in_mb * MB_MV_CODE_SIZE_VP8;
532
533 mbenc_context->mb_mode_cost_luma_buffer.width =
534 ALIGN ((sizeof (UINT) * 10), 64);
535 mbenc_context->mb_mode_cost_luma_buffer.height = 1;
536 mbenc_context->mb_mode_cost_luma_buffer.surface_array_spacing = 0x1;
537 mbenc_context->mb_mode_cost_luma_buffer.tiling = I915_TILING_NONE;
538 mbenc_context->mb_mode_cost_luma_buffer.pitch =
539 mbenc_context->mb_mode_cost_luma_buffer.width;
540
541 media_allocate_resource (&mbenc_context->mb_mode_cost_luma_buffer,
542 drv_ctx->drv_data.bufmgr,
543 (const BYTE *) "mb mode cost luma buffer", 0x1000,
544 4096);
545 MEDIA_DRV_ASSERT (mbenc_context->mb_mode_cost_luma_buffer.bo);
546
547 mbenc_context->block_mode_cost_buffer.width =
548 ALIGN ((sizeof (UINT16)) * 10 * 10 * 10, 64);
549 mbenc_context->block_mode_cost_buffer.height = 1;
550 mbenc_context->block_mode_cost_buffer.surface_array_spacing = 0x1;
551 mbenc_context->block_mode_cost_buffer.tiling = I915_TILING_NONE;
552 mbenc_context->block_mode_cost_buffer.pitch =
553 mbenc_context->block_mode_cost_buffer.width;
554 media_allocate_resource (&mbenc_context->block_mode_cost_buffer,
555 drv_ctx->drv_data.bufmgr,
556 (const BYTE *) "block mode cost buffer", 0x1000,
557 4096);
558 MEDIA_DRV_ASSERT (mbenc_context->block_mode_cost_buffer.bo);
559
560 mbenc_context->chroma_reconst_buffer.width = 64;
561 mbenc_context->chroma_reconst_buffer.height = num_of_mb_blocks;
562 mbenc_context->chroma_reconst_buffer.surface_array_spacing = 0x1;
563 mbenc_context->chroma_reconst_buffer.tiling = I915_TILING_NONE;
564 mbenc_context->chroma_reconst_buffer.pitch =
565 mbenc_context->chroma_reconst_buffer.width;
566 sz =
567 mbenc_context->chroma_reconst_buffer.width *
568 mbenc_context->chroma_reconst_buffer.height;
569 media_allocate_resource (&mbenc_context->chroma_reconst_buffer,
570 drv_ctx->drv_data.bufmgr,
571 (const BYTE *) "chrome reconst buffer", sz, 4096);
572 MEDIA_DRV_ASSERT (mbenc_context->chroma_reconst_buffer.bo);
573
574
575 mbenc_context->histogram_buffer.surface_array_spacing = 0x1;
576 mbenc_context->histogram_buffer.tiling = I915_TILING_NONE;
577 mbenc_context->histogram_buffer.bo_size = HISTOGRAM_SIZE;
578 media_allocate_resource (&mbenc_context->histogram_buffer,
579 drv_ctx->drv_data.bufmgr,
580 (const BYTE *) "histogram buffer", HISTOGRAM_SIZE,
581 4096);
582 MEDIA_DRV_ASSERT (mbenc_context->histogram_buffer.bo);
583
584 mbenc_context->kernel_dump_buffer.surface_array_spacing = 0x1;
585 mbenc_context->kernel_dump_buffer.tiling = I915_TILING_NONE;
586 mbenc_context->kernel_dump_buffer.bo_size = KERNEL_DUMP_SIZE_VP8; // pic_w_h_in_mb;
587 media_allocate_resource (&mbenc_context->kernel_dump_buffer,
588 drv_ctx->drv_data.bufmgr,
589 (const BYTE *) "kernel dump buffer",
590 mbenc_context->kernel_dump_buffer.bo_size, 4096);
591 MEDIA_DRV_ASSERT (mbenc_context->kernel_dump_buffer.bo);
592
593 mbenc_context->ref_frm_count_surface.surface_array_spacing = 0x1;
594 mbenc_context->ref_frm_count_surface.tiling = I915_TILING_NONE;
595 mbenc_context->ref_frm_count_surface.bo_size = 32;
596 media_allocate_resource (&mbenc_context->ref_frm_count_surface,
597 drv_ctx->drv_data.bufmgr,
598 (const BYTE *) "reference frame mb count surface",
599 mbenc_context->ref_frm_count_surface.bo_size,
600 4096);
601 MEDIA_DRV_ASSERT (mbenc_context->ref_frm_count_surface.bo);
602
603 mbenc_context->pred_mv_data_surface.surface_array_spacing = 0x1;
604 mbenc_context->pred_mv_data_surface.tiling = I915_TILING_NONE;
605 mbenc_context->pred_mv_data_surface.bo_size =
606 4 * encoder_context->picture_width_in_mbs *
607 encoder_context->picture_height_in_mbs * sizeof (UINT);
608 media_allocate_resource (&mbenc_context->pred_mv_data_surface,
609 drv_ctx->drv_data.bufmgr,
610 (const BYTE *) "pred mv data surface",
611 mbenc_context->pred_mv_data_surface.bo_size, 4096);
612 MEDIA_DRV_ASSERT (mbenc_context->pred_mv_data_surface.bo);
613
614 mbenc_context->mode_cost_update_surface.surface_array_spacing = 0x1;
615 mbenc_context->mode_cost_update_surface.tiling = I915_TILING_NONE;
616 mbenc_context->mode_cost_update_surface.bo_size = 16 * sizeof (UINT);
617 media_allocate_resource (&mbenc_context->mode_cost_update_surface,
618 drv_ctx->drv_data.bufmgr,
619 (const BYTE *) "mode cost update surface",
620 mbenc_context->mode_cost_update_surface.bo_size,
621 4096);
622 MEDIA_DRV_ASSERT (mbenc_context->mode_cost_update_surface.bo);
623
624 mbenc_context->pred_mb_quant_data_surface.surface_array_spacing = 0x1;
625 mbenc_context->pred_mb_quant_data_surface.tiling = I915_TILING_NONE;
626 mbenc_context->pred_mb_quant_data_surface.width =
627 ALIGN ((encoder_context->picture_width_in_mbs * 4), 64);
628 mbenc_context->pred_mb_quant_data_surface.height =
629 encoder_context->picture_height_in_mbs;
630 mbenc_context->pred_mb_quant_data_surface.pitch =
631 mbenc_context->pred_mb_quant_data_surface.width;
632 sz =
633 mbenc_context->pred_mb_quant_data_surface.width *
634 mbenc_context->pred_mb_quant_data_surface.height;
635 media_allocate_resource (&mbenc_context->pred_mb_quant_data_surface,
636 drv_ctx->drv_data.bufmgr,
637 (const BYTE *) "pred mb quant data surface", sz,
638 4096);
639 MEDIA_DRV_ASSERT (mbenc_context->pred_mb_quant_data_surface.bo);
640 }
641
642 VOID
media_alloc_resource_me(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)643 media_alloc_resource_me (VADriverContextP ctx,
644 MEDIA_ENCODER_CTX * encoder_context)
645 {
646 MEDIA_DRV_CONTEXT *drv_ctx = (MEDIA_DRV_CONTEXT *) (ctx->pDriverData);
647 MEDIA_HW_CONTEXT *hw_ctx = &drv_ctx->hw_context;
648 ME_CONTEXT *me_context = &encoder_context->me_context;
649
650 me_context->mv_data_surface_4x_me.width =
651 ALIGN ((encoder_context->down_scaled_width_mb4x * 32), 64);
652 me_context->mv_data_surface_4x_me.height =
653 encoder_context->down_scaled_height_mb4x * 4 * hw_ctx->vp8_me_mv_data_size_multiplier;
654 me_context->mv_data_surface_4x_me.surface_array_spacing = 0x1;
655 me_context->mv_data_surface_4x_me.tiling = I915_TILING_NONE;
656 me_context->mv_data_surface_4x_me.pitch =
657 me_context->mv_data_surface_4x_me.width;
658 media_allocate_resource (&me_context->mv_data_surface_4x_me,
659 drv_ctx->drv_data.bufmgr,
660 (const BYTE *) "mv data surface 4x_me",
661 (me_context->mv_data_surface_4x_me.pitch *
662 me_context->mv_data_surface_4x_me.height), 4096);
663 MEDIA_DRV_ASSERT (me_context->mv_data_surface_4x_me.bo);
664
665
666 me_context->mv_distortion_surface_4x_me.width =
667 ALIGN ((encoder_context->down_scaled_width_mb4x * 8), 64);
668 me_context->mv_distortion_surface_4x_me.height =
669 ALIGN ((encoder_context->down_scaled_height_mb4x * 4), 8); // TODO: check it when enable DS+HME for HSW
670 me_context->mv_distortion_surface_4x_me.surface_array_spacing = 0x1;
671 me_context->mv_distortion_surface_4x_me.tiling = I915_TILING_NONE;
672 me_context->mv_distortion_surface_4x_me.pitch =
673 ALIGN (me_context->mv_distortion_surface_4x_me.width, 64);
674 media_allocate_resource (&me_context->mv_distortion_surface_4x_me,
675 drv_ctx->drv_data.bufmgr,
676 (const BYTE *) "mv distortion surface 4x_me",
677 (me_context->mv_distortion_surface_4x_me.pitch *
678 me_context->mv_distortion_surface_4x_me.height), 4096);
679 MEDIA_DRV_ASSERT (me_context->mv_distortion_surface_4x_me.bo);
680
681 me_context->mv_data_surface_16x_me.width =
682 ALIGN ((encoder_context->down_scaled_width_mb16x * 32), 64);
683 me_context->mv_data_surface_16x_me.height =
684 encoder_context->down_scaled_height_mb16x * 4 * hw_ctx->vp8_me_mv_data_size_multiplier;
685 me_context->mv_data_surface_16x_me.surface_array_spacing = 0x1;
686 me_context->mv_data_surface_16x_me.tiling = I915_TILING_NONE;
687 me_context->mv_data_surface_16x_me.pitch =
688 ALIGN (me_context->mv_data_surface_16x_me.width, 64);
689 media_allocate_resource (&me_context->mv_data_surface_16x_me,
690 drv_ctx->drv_data.bufmgr,
691 (const BYTE *) "mv data surface 16x_me",
692 (me_context->mv_data_surface_16x_me.pitch *
693 me_context->mv_data_surface_16x_me.height), 4096);
694 MEDIA_DRV_ASSERT (me_context->mv_data_surface_16x_me.bo);
695
696 }
697
698 static VOID
media_encoder_context_params_init(MEDIA_DRV_CONTEXT * drv_ctx,MEDIA_ENCODER_CTX * encoder_context)699 media_encoder_context_params_init (MEDIA_DRV_CONTEXT * drv_ctx,
700 MEDIA_ENCODER_CTX * encoder_context)
701 {
702 if (IS_HSW_GT1 (drv_ctx->drv_data.device_id)
703 || (IS_IVB_GT1 (drv_ctx->drv_data.device_id))
704 || (IS_BAYTRAIL (drv_ctx->drv_data.device_id)))
705 {
706 encoder_context->walker_mode = SINGLE_MODE;
707 }
708 else if (IS_HSW_GT2 (drv_ctx->drv_data.device_id)
709 || (IS_IVB_GT2 (drv_ctx->drv_data.device_id)))
710 {
711 encoder_context->walker_mode = DUAL_MODE;
712 }
713 else if (IS_HSW_GT3 (drv_ctx->drv_data.device_id))
714 {
715 encoder_context->walker_mode = QUAD_MODE;
716 }
717
718 encoder_context->kernel_mode = 0;
719 encoder_context->frame_num = 0;
720 encoder_context->use_hw_scoreboard = 1;
721 encoder_context->scaling_enabled = 0;
722 encoder_context->me_16x_supported = 0;
723 if (IS_GEN7 (drv_ctx->drv_data.device_id))
724 encoder_context->hme_supported = 1;
725 else
726 encoder_context->hme_supported = 0;
727 encoder_context->kernel_dump_enable = 0;
728 encoder_context->brc_enabled =
729 (encoder_context->internal_rate_mode == HB_BRC_CBR
730 || encoder_context->internal_rate_mode == HB_BRC_VBR);
731 encoder_context->brc_initted = 0;
732 encoder_context->frame_rate = 30; /* in case user doesn't set frame rate */
733
734 if (encoder_context->hme_supported == 1)
735 {
736 encoder_context->scaling_enabled = 1;
737 // encoder_context->me_16x_supported = 1;
738 }
739 encoder_context->mbenc_chroma_kernel = TRUE;
740 encoder_context->mbenc_curbe_set_brc_update = FALSE;
741 encoder_context->mbpak_curbe_set_brc_update = FALSE;
742 encoder_context->frame_width = encoder_context->picture_width;
743 encoder_context->frame_height = encoder_context->picture_height;
744
745 encoder_context->picture_width_in_mbs =
746 (UINT) WIDTH_IN_MACROBLOCKS (encoder_context->picture_width);
747 encoder_context->picture_height_in_mbs =
748 (UINT) HEIGHT_IN_MACROBLOCKS (encoder_context->picture_height);
749 encoder_context->down_scaled_width_mb4x =
750 WIDTH_IN_MACROBLOCKS (encoder_context->picture_width / SCALE_FACTOR_4x);
751 encoder_context->down_scaled_height_mb4x =
752 HEIGHT_IN_MACROBLOCKS (encoder_context->picture_height / SCALE_FACTOR_4x);
753 encoder_context->down_scaled_width_mb16x =
754 WIDTH_IN_MACROBLOCKS (encoder_context->picture_width / SCALE_FACTOR_16x);
755 encoder_context->down_scaled_height_mb16x =
756 HEIGHT_IN_MACROBLOCKS (encoder_context->picture_height /
757 SCALE_FACTOR_16x);
758 encoder_context->down_scaled_width_mb32x =
759 WIDTH_IN_MACROBLOCKS (encoder_context->picture_width / SCALE_FACTOR_32x);
760 encoder_context->down_scaled_height_mb32x =
761 HEIGHT_IN_MACROBLOCKS (encoder_context->picture_height /
762 SCALE_FACTOR_32x);
763 }
764
765 VOID
media_mbpak_context_init_vp8(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)766 media_mbpak_context_init_vp8 (VADriverContextP ctx,
767 MEDIA_ENCODER_CTX * encoder_context)
768 {
769 MBPAK_CONTEXT *mbpak_context = &encoder_context->mbpak_context;
770 MEDIA_GPE_CTX *gpe_context = &mbpak_context->gpe_context;
771 gpe_context->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
772 gpe_context->curbe.length = /* 0xc0; */ CURBE_TOTAL_DATA_LENGTH;
773 gpe_context->vfe_state.max_num_threads = 280 - 1; //60 - 1;
774 gpe_context->vfe_state.num_urb_entries = 16; //64;
775 gpe_context->vfe_state.gpgpu_mode = 0;
776 gpe_context->vfe_state.urb_entry_size = 120; //16;
777 gpe_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
778 gpe_context_vfe_scoreboardinit_vp8 (gpe_context);
779 media_gpe_load_kernels (ctx, gpe_context, &media_hybrid_vp8_kernels[7], 2);
780
781 gpe_context->idrt_size = sizeof (struct media_interface_descriptor_data); // * MAX_INTERFACE_DESC_GEN6;
782 gpe_context->curbe_size = CURBE_TOTAL_DATA_LENGTH; //0xco
783 gpe_context->sampler_size = 0;
784 media_gpe_context_init (ctx, gpe_context);
785 media_interface_setup_mbpak (gpe_context);
786
787 gpe_context = &mbpak_context->gpe_context2;
788 gpe_context->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
789 gpe_context->curbe.length = /* 0xc0; */ CURBE_TOTAL_DATA_LENGTH;
790 gpe_context->vfe_state.max_num_threads = 280 - 1; //60 - 1;
791 gpe_context->vfe_state.num_urb_entries = 16; //64;
792 gpe_context->vfe_state.gpgpu_mode = 0;
793 gpe_context->vfe_state.urb_entry_size = 120; //16;
794 gpe_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
795 gpe_context_vfe_scoreboardinit_vp8 (gpe_context);
796 media_gpe_load_kernels (ctx, gpe_context, &media_hybrid_vp8_kernels[7], 2);
797
798 gpe_context->idrt_size = sizeof (struct media_interface_descriptor_data); // * MAX_INTERFACE_DESC_GEN6;
799 gpe_context->curbe_size = CURBE_TOTAL_DATA_LENGTH; //0xco
800 gpe_context->sampler_size = 0;
801 media_gpe_context_init (ctx, gpe_context);
802 media_interface_setup_mbpak (gpe_context);
803
804 media_alloc_resource_mbpak (ctx, encoder_context);
805 return;
806 }
807
808 VOID
media_mbenc_context_init(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)809 media_mbenc_context_init (VADriverContextP ctx,
810 MEDIA_ENCODER_CTX * encoder_context)
811 {
812 MBENC_CONTEXT *mbenc_context = &encoder_context->mbenc_context;
813 MEDIA_GPE_CTX *gpe_context = &mbenc_context->gpe_context;
814 gpe_context->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
815 gpe_context->curbe.length = CURBE_TOTAL_DATA_LENGTH;
816 gpe_context->vfe_state.max_num_threads = 280 - 1; //60 - 1;
817 gpe_context->vfe_state.num_urb_entries = 16; //64;
818 gpe_context->vfe_state.gpgpu_mode = 0;
819 gpe_context->vfe_state.urb_entry_size = 120; //121; //16;
820 gpe_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
821 gpe_context_vfe_scoreboardinit_vp8 (gpe_context);
822 media_gpe_load_kernels (ctx, gpe_context, &media_hybrid_vp8_kernels[0], 5);
823 gpe_context->idrt_size = sizeof (struct media_interface_descriptor_data); //* MAX_INTERFACE_DESC_GEN6;
824 gpe_context->curbe_size = CURBE_TOTAL_DATA_LENGTH;
825 gpe_context->sampler_size = 0;
826 media_gpe_context_init (ctx, gpe_context);
827 media_interface_setup_mbenc (encoder_context);
828 media_alloc_resource_mbenc (ctx, encoder_context);
829 return;
830 }
831
832 VOID
media_me_context_init(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)833 media_me_context_init (VADriverContextP ctx,
834 MEDIA_ENCODER_CTX * encoder_context)
835 {
836 ME_CONTEXT *me_context = &encoder_context->me_context;
837 MEDIA_GPE_CTX *gpe_context = &me_context->gpe_context;
838
839 gpe_context->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
840 gpe_context->curbe.length = CURBE_TOTAL_DATA_LENGTH;
841 gpe_context->vfe_state.max_num_threads = 280 - 1; //60 - 1;
842 gpe_context->vfe_state.num_urb_entries = 16; //64;
843 gpe_context->vfe_state.gpgpu_mode = 0;
844 gpe_context->vfe_state.urb_entry_size = 121; //16;
845 gpe_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
846 gpe_context_vfe_scoreboardinit_vp8 (gpe_context);
847 /*media_gpe_load_kernels (ctx, gpe_context, &media_hybrid_vp8_kernels[3], 1); */
848 #if 0
849 gpe_context->surface_state_binding_table.res.bo_size =
850 (SURFACE_STATE_PADDED_SIZE + sizeof (UINT)) * MAX_MEDIA_SURFACES_GEN6;
851 gpe_context->surface_state_binding_table.table_name = "binding table me";
852 #endif
853 gpe_context->idrt_size =
854 sizeof (struct media_interface_descriptor_data) * MAX_INTERFACE_DESC_GEN6;
855 gpe_context->curbe_size = CURBE_TOTAL_DATA_LENGTH;
856 gpe_context->sampler_size = 0;
857 media_gpe_context_init (ctx, gpe_context);
858
859 media_alloc_resource_me (ctx, encoder_context);
860 }
861
862 VOID
media_alloc_resource_brc_init_reset(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)863 media_alloc_resource_brc_init_reset (VADriverContextP ctx,
864 MEDIA_ENCODER_CTX * encoder_context)
865 {
866 MEDIA_DRV_CONTEXT *drv_ctx = (MEDIA_DRV_CONTEXT *) (ctx->pDriverData);
867 BRC_INIT_RESET_CONTEXT *brc_init_reset_context =
868 &encoder_context->brc_init_reset_context;
869 BYTE *pbuffer;
870 int size, i;
871 BOOL status;
872
873 brc_init_reset_context->brc_history.surface_array_spacing = 0x1;
874 brc_init_reset_context->brc_history.tiling = I915_TILING_NONE;
875 brc_init_reset_context->brc_history.bo_size = 544; // 17 GRF registers
876 media_allocate_resource (&brc_init_reset_context->brc_history,
877 drv_ctx->drv_data.bufmgr,
878 (const BYTE *) "BRC history buffer",
879 HISTOGRAM_SIZE, 4096);
880 MEDIA_DRV_ASSERT (brc_init_reset_context->brc_history.bo);
881
882 brc_init_reset_context->brc_distortion.width =
883 ALIGN ((encoder_context->down_scaled_width_mb4x * 8), 64);
884 brc_init_reset_context->brc_distortion.height =
885 2 * ALIGN ((encoder_context->down_scaled_height_mb4x * 4), 8);
886 brc_init_reset_context->brc_distortion.surface_array_spacing = 0x1;
887 brc_init_reset_context->brc_distortion.tiling = I915_TILING_NONE;
888 brc_init_reset_context->brc_distortion.pitch =
889 brc_init_reset_context->brc_distortion.width;
890 brc_init_reset_context->brc_distortion.bo_size =
891 brc_init_reset_context->brc_distortion.pitch *
892 brc_init_reset_context->brc_distortion.height;
893 media_allocate_resource (&brc_init_reset_context->brc_distortion,
894 drv_ctx->drv_data.bufmgr,
895 (const BYTE *) "BRC distortion surface",
896 brc_init_reset_context->brc_distortion.bo_size,
897 4096);
898 MEDIA_DRV_ASSERT (brc_init_reset_context->brc_distortion.bo);
899
900 size = 160 * 18 * sizeof (UINT16);
901
902 brc_init_reset_context->brc_pak_qp_input_table.surface_array_spacing = 0x1;
903 brc_init_reset_context->brc_pak_qp_input_table.tiling = I915_TILING_NONE;
904 brc_init_reset_context->brc_pak_qp_input_table.bo_size = size;
905 media_allocate_resource (&brc_init_reset_context->brc_pak_qp_input_table,
906 drv_ctx->drv_data.bufmgr,
907 (const BYTE *) "BRC PAK QP Input Table",
908 size, 4096);
909 MEDIA_DRV_ASSERT (brc_init_reset_context->brc_pak_qp_input_table.bo);
910
911 pbuffer =
912 (BYTE *) media_map_buffer_obj (brc_init_reset_context->
913 brc_pak_qp_input_table.bo);
914 MEDIA_DRV_ASSERT (pbuffer);
915
916 status = media_drv_memcpy (pbuffer,
917 size, (VOID *) pak_qp_input_table, size);
918
919 if (status != TRUE)
920 {
921 media_unmap_buffer_obj (brc_init_reset_context->brc_pak_qp_input_table.
922 bo);
923 MEDIA_DRV_ASSERT ("media_drv_memcpy failed");
924 }
925
926 media_unmap_buffer_obj (brc_init_reset_context->brc_pak_qp_input_table.bo);
927
928 size = 2880;
929 brc_init_reset_context->brc_constant_data.surface_array_spacing = 0x1;
930 brc_init_reset_context->brc_constant_data.tiling = I915_TILING_NONE;
931 brc_init_reset_context->brc_constant_data.bo_size = size;
932 media_allocate_resource (&brc_init_reset_context->brc_constant_data,
933 drv_ctx->drv_data.bufmgr,
934 (const BYTE *) "BRC Constant Data Buffer",
935 size, 4096);
936 MEDIA_DRV_ASSERT (brc_init_reset_context->brc_constant_data.bo);
937
938 pbuffer =
939 (BYTE *) media_map_buffer_obj (brc_init_reset_context->brc_constant_data.
940 bo);
941 MEDIA_DRV_ASSERT (pbuffer);
942
943 media_drv_memset (pbuffer, size);
944
945 media_unmap_buffer_obj (brc_init_reset_context->brc_constant_data.bo);
946
947 for (i = 0; i < NUM_BRC_CONSTANT_DATA_BUFFERS; i++)
948 {
949 brc_init_reset_context->brc_constant_buffer[i].width =
950 BRC_CONSTANTSURFACE_WIDTH_G75;
951 brc_init_reset_context->brc_constant_buffer[i].height =
952 BRC_CONSTANTSURFACE_HEIGHT_G75;
953 brc_init_reset_context->brc_constant_buffer[i].surface_array_spacing =
954 0x1;
955 brc_init_reset_context->brc_constant_buffer[i].tiling =
956 I915_TILING_NONE;
957 brc_init_reset_context->brc_constant_buffer[i].pitch =
958 BRC_CONSTANTSURFACE_WIDTH_G75;
959 media_allocate_resource (&brc_init_reset_context->
960 brc_constant_buffer[i],
961 drv_ctx->drv_data.bufmgr,
962 (const BYTE *) "BRC Constant Data surface",
963 0x1000, 4096);
964 MEDIA_DRV_ASSERT (brc_init_reset_context->brc_constant_buffer[i].bo);
965 }
966 }
967
968 VOID
media_brc_init_reset_context_init(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)969 media_brc_init_reset_context_init (VADriverContextP ctx,
970 MEDIA_ENCODER_CTX * encoder_context)
971 {
972 BRC_INIT_RESET_CONTEXT *brc_init_reset_context =
973 &encoder_context->brc_init_reset_context;
974 MEDIA_GPE_CTX *gpe_context = &brc_init_reset_context->gpe_context;
975 gpe_context->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
976 gpe_context->curbe.length = CURBE_TOTAL_DATA_LENGTH;
977 gpe_context->vfe_state.max_num_threads = 280 - 1; //60 - 1;
978 gpe_context->vfe_state.num_urb_entries = 16; //64;
979 gpe_context->vfe_state.gpgpu_mode = 0;
980 gpe_context->vfe_state.urb_entry_size = 120; //121; //16;
981 gpe_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
982 gpe_context_vfe_scoreboardinit_vp8 (gpe_context);
983 media_gpe_load_kernels (ctx, gpe_context, &media_hybrid_vp8_kernels[9], 2);
984 gpe_context->idrt_size = sizeof (struct media_interface_descriptor_data); //* MAX_INTERFACE_DESC_GEN6;
985 gpe_context->curbe_size = CURBE_TOTAL_DATA_LENGTH;
986 gpe_context->sampler_size = 0;
987 media_gpe_context_init (ctx, gpe_context);
988 media_interface_setup_brc_init_reset (encoder_context);
989 media_alloc_resource_brc_init_reset (ctx, encoder_context);
990 return;
991 }
992 #if 0
993 VOID
994 media_alloc_resource_brc_update (VADriverContextP ctx,
995 MEDIA_ENCODER_CTX * encoder_context)
996 {
997 MEDIA_DRV_CONTEXT *drv_ctx = (MEDIA_DRV_CONTEXT *) (ctx->pDriverData);
998 BRC_UPDATE_CONTEXT *distortion_ctx = &encoder_context->brc_update_context;
999 }
1000 #endif
1001 VOID
media_brc_update_context_init(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)1002 media_brc_update_context_init (VADriverContextP ctx,
1003 MEDIA_ENCODER_CTX * encoder_context)
1004 {
1005 BRC_UPDATE_CONTEXT *distortion_ctx = &encoder_context->brc_update_context;
1006 MEDIA_GPE_CTX *gpe_context = &distortion_ctx->gpe_context;
1007 gpe_context->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
1008 gpe_context->curbe.length = CURBE_TOTAL_DATA_LENGTH;
1009 gpe_context->vfe_state.max_num_threads = 280 - 1; //60 - 1;
1010 gpe_context->vfe_state.num_urb_entries = 16; //64;
1011 gpe_context->vfe_state.gpgpu_mode = 0;
1012 gpe_context->vfe_state.urb_entry_size = 120; //121; //16;
1013 gpe_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
1014 gpe_context_vfe_scoreboardinit_vp8 (gpe_context);
1015 media_gpe_load_kernels (ctx, gpe_context, &media_hybrid_vp8_kernels[11], 1);
1016 gpe_context->idrt_size = sizeof (struct media_interface_descriptor_data); //* MAX_INTERFACE_DESC_GEN6;
1017 gpe_context->curbe_size = CURBE_TOTAL_DATA_LENGTH;
1018 gpe_context->sampler_size = 0;
1019
1020 media_gpe_context_init (ctx, gpe_context);
1021
1022 encoder_context->brc_distortion_buffer_supported = 1;
1023 encoder_context->brc_constant_buffer_supported = 1;
1024
1025 media_interface_setup_brc_update (encoder_context);
1026 //FIXME:This function is not doing anything.Remove this later if not required
1027 #if 0
1028 media_alloc_resource_brc_update (ctx, encoder_context);
1029 #endif
1030 return;
1031 }
1032
1033 VOID
media_alloc_resource_scaling(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)1034 media_alloc_resource_scaling (VADriverContextP ctx,
1035 MEDIA_ENCODER_CTX * encoder_context)
1036 {
1037 UINT down_scaled_width4x, downscaled_height_4x;
1038 UINT down_scaled_width16x, downscaled_height_16x;
1039 UINT down_scaled_width32x, downscaled_height_32x;
1040 MEDIA_DRV_CONTEXT *drv_ctx = (MEDIA_DRV_CONTEXT *) (ctx->pDriverData);
1041 SCALING_CONTEXT *scaling_context = &encoder_context->scaling_context;
1042 down_scaled_width4x = encoder_context->frame_width / 4;
1043 downscaled_height_4x = encoder_context->frame_height / 4;
1044 down_scaled_width4x = ALIGN (down_scaled_width4x, 16);
1045 downscaled_height_4x = (downscaled_height_4x + 1) >> 1;
1046 downscaled_height_4x = 2 * ALIGN (downscaled_height_4x, 32);
1047
1048 scaling_context->scaled_4x_surface.width = down_scaled_width4x;
1049 scaling_context->scaled_4x_surface.height = downscaled_height_4x;
1050 scaling_context->scaled_4x_surface.surface_array_spacing = 0x1;
1051 scaling_context->scaled_4x_surface.tiling = I915_TILING_NONE;
1052 scaling_context->scaled_4x_surface.pitch = 0x80; //hardcoded..need to fix this later
1053 media_allocate_resource (&scaling_context->scaled_4x_surface,
1054 drv_ctx->drv_data.bufmgr,
1055 (const BYTE *) "scaled surface 4x", 0x1000, 4096);
1056 MEDIA_DRV_ASSERT (scaling_context->scaled_4x_surface.bo);
1057
1058 down_scaled_width16x = encoder_context->frame_width / 16;
1059 downscaled_height_16x = encoder_context->frame_height / 16;
1060 down_scaled_width16x = ALIGN (down_scaled_width16x, 16);
1061 downscaled_height_16x = (downscaled_height_16x + 1) >> 1;
1062 downscaled_height_16x = 2 * ALIGN (downscaled_height_16x, 32);
1063
1064 scaling_context->scaled_16x_surface.width = down_scaled_width16x;
1065 scaling_context->scaled_16x_surface.height = downscaled_height_16x;
1066 scaling_context->scaled_16x_surface.surface_array_spacing = 0x1;
1067 scaling_context->scaled_16x_surface.tiling = I915_TILING_NONE;
1068 scaling_context->scaled_16x_surface.pitch = 0x80; //hardcoded..need to fix this later
1069 media_allocate_resource (&scaling_context->scaled_16x_surface,
1070 drv_ctx->drv_data.bufmgr,
1071 (const BYTE *) "scaled surface 16x", 0x1000, 4096);
1072 MEDIA_DRV_ASSERT (scaling_context->scaled_16x_surface.bo);
1073
1074 down_scaled_width32x = encoder_context->frame_width / 32;
1075 downscaled_height_32x = encoder_context->frame_height / 32;
1076 down_scaled_width32x = ALIGN (down_scaled_width32x, 16);
1077 downscaled_height_32x = (downscaled_height_32x + 1) >> 1;
1078 downscaled_height_32x = 2 * ALIGN (downscaled_height_32x, 32);
1079
1080 scaling_context->scaled_32x_surface.width = down_scaled_width32x;
1081 scaling_context->scaled_32x_surface.height = downscaled_height_32x;
1082 scaling_context->scaled_32x_surface.surface_array_spacing = 0x1;
1083 scaling_context->scaled_32x_surface.tiling = I915_TILING_NONE;
1084 scaling_context->scaled_32x_surface.pitch = 0x80; //hardcoded..need to fix this later
1085 media_allocate_resource (&scaling_context->scaled_32x_surface,
1086 drv_ctx->drv_data.bufmgr,
1087 (const BYTE *) "scaled surface 32x", 0x1000, 4096);
1088 MEDIA_DRV_ASSERT (scaling_context->scaled_32x_surface.bo);
1089
1090 }
1091
1092 VOID
media_scaling_context_init(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)1093 media_scaling_context_init (VADriverContextP ctx,
1094 MEDIA_ENCODER_CTX * encoder_context)
1095 {
1096 SCALING_CONTEXT *scaling_context = &encoder_context->scaling_context;
1097 MEDIA_GPE_CTX *gpe_context = &scaling_context->gpe_context;
1098
1099 gpe_context->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
1100 gpe_context->curbe.length = CURBE_TOTAL_DATA_LENGTH;
1101 gpe_context->vfe_state.max_num_threads = 280 - 1; //60 - 1;
1102 gpe_context->vfe_state.num_urb_entries = 16; //64;
1103 gpe_context->vfe_state.gpgpu_mode = 0;
1104 gpe_context->vfe_state.urb_entry_size = 121; //16;
1105 gpe_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
1106 gpe_context_vfe_scoreboardinit_vp8 (gpe_context);
1107
1108 /*media_gpe_load_kernels (ctx, gpe_context, media_hybrid_vp8_kernels, 1); */
1109 #if 0
1110 gpe_context->surface_state_binding_table.res.bo_size =
1111 (SURFACE_STATE_PADDED_SIZE + sizeof (UINT)) * MAX_MEDIA_SURFACES_GEN6;
1112 #endif
1113 gpe_context->idrt_size =
1114 sizeof (struct media_interface_descriptor_data) * MAX_INTERFACE_DESC_GEN6;
1115 gpe_context->curbe_size = CURBE_TOTAL_DATA_LENGTH;
1116 gpe_context->sampler_size = 0;
1117 media_gpe_context_init (ctx, gpe_context);
1118 media_alloc_resource_scaling (ctx, encoder_context);
1119 }
1120
1121 void
media_encoder_init_vp8(VADriverContextP ctx,MEDIA_ENCODER_CTX * encoder_context)1122 media_encoder_init_vp8 (VADriverContextP ctx,
1123 MEDIA_ENCODER_CTX * encoder_context)
1124 {
1125 MEDIA_DRV_CONTEXT *drv_ctx = (MEDIA_DRV_CONTEXT *) (ctx->pDriverData);
1126 encoder_context->codec = CODEC_VP8;
1127 encoder_context->prev_target_bit_rate=0;
1128 //encoder_context->picture_width = picture_width;
1129 //encoder_context->picture_height = picture_height;
1130
1131 if (IS_HASWELL (drv_ctx->drv_data.device_id))
1132 {
1133 encoder_context->num_of_kernels =
1134 sizeof (media_hybrid_vp8_kernels) / sizeof (MEDIA_KERNEL);
1135 encoder_context->disable_multi_ref = 0;
1136 media_encoder_context_params_init (drv_ctx, encoder_context);
1137 media_scaling_context_init (ctx, encoder_context);
1138 media_me_context_init (ctx, encoder_context);
1139 media_mbenc_context_init (ctx, encoder_context);
1140 media_mbpak_context_init_vp8 (ctx, encoder_context);
1141 media_brc_init_reset_context_init (ctx, encoder_context);
1142 media_brc_update_context_init (ctx, encoder_context);
1143 encoder_context->set_curbe_i_vp8_mbenc = media_set_curbe_i_vp8_mbenc;
1144 encoder_context->set_curbe_p_vp8_mbenc = media_set_curbe_p_vp8_mbenc;
1145 encoder_context->set_curbe_vp8_mbpak = media_set_curbe_vp8_mbpak;
1146 encoder_context->set_curbe_vp8_brc_init_reset = media_set_curbe_vp8_brc_init_reset;
1147 encoder_context->set_curbe_vp8_brc_update = media_set_curbe_vp8_brc_update;
1148 encoder_context->set_curbe_scaling = mediadrv_set_curbe_scaling;
1149 encoder_context->set_curbe_vp8_me = media_set_curbe_vp8_me;
1150 encoder_context->surface_state_vp8_mbenc =
1151 media_surface_state_vp8_mbenc;
1152 encoder_context->surface_state_vp8_mbpak =
1153 media_surface_state_vp8_mbpak;
1154 encoder_context->surface_state_vp8_brc_init_reset =
1155 media_surface_state_vp8_brc_init_reset;
1156 encoder_context->surface_state_vp8_brc_update =
1157 media_surface_state_vp8_brc_update;
1158 encoder_context->surface_state_scaling =
1159 media_surface_state_scaling;
1160 encoder_context->surface_state_vp8_me =
1161 media_surface_state_vp8_me;
1162 encoder_context->init_brc_update_constant_data_vp8 =
1163 media_encode_init_brc_update_constant_data_vp8_g75;
1164 encoder_context->media_add_surface_state = media_add_surface_state;
1165 encoder_context->media_add_binding_table = media_add_binding_table;
1166 encoder_context->media_object_walker_pak_init=media_object_walker_pak_init;
1167 encoder_context->media_object_walker_mbenc_init =media_object_walker_mbenc_init;
1168 encoder_context->gpe_context_vfe_scoreboardinit_pak_p1=gpe_context_vfe_scoreboardinit_pak_p1;
1169 encoder_context->gpe_context_vfe_scoreboardinit_pak_p2=gpe_context_vfe_scoreboardinit_pak_p2;
1170 encoder_context->mediadrv_gen_state_base_address_cmd =
1171 mediadrv_gen_state_base_address_cmd;
1172 encoder_context->mediadrv_gen_media_vfe_state_cmd =
1173 mediadrv_gen_media_vfe_state_cmd;
1174 encoder_context->media_object_walker_cmd=
1175 media_object_walker_cmd;
1176 encoder_context->initialize_brc_distortion_buffer = media_init_brc_distortion_buffer_g75;
1177 }
1178 else if (IS_GEN7 (drv_ctx->drv_data.device_id))
1179 {
1180 encoder_context->num_of_kernels =
1181 sizeof (media_hybrid_vp8_kernels_g7) / sizeof (MEDIA_KERNEL);
1182 encoder_context->disable_multi_ref = 1;
1183 media_encoder_context_params_init (drv_ctx, encoder_context);
1184 media_scaling_context_init_g7 (ctx, encoder_context);
1185 media_me_context_init_g7 (ctx, encoder_context);
1186 media_mbenc_context_init_g7 (ctx, encoder_context);
1187 media_mbpak_context_init_vp8_g7 (ctx, encoder_context);
1188 media_brc_init_reset_context_init_g7(ctx, encoder_context);
1189 media_brc_update_context_init_g7(ctx, encoder_context);
1190 encoder_context->set_curbe_i_vp8_mbenc = media_set_curbe_i_vp8_mbenc_g7;
1191 encoder_context->set_curbe_p_vp8_mbenc = media_set_curbe_p_vp8_mbenc_g7;
1192 encoder_context->set_curbe_vp8_mbpak = media_set_curbe_vp8_mbpak_g7;
1193 encoder_context->set_curbe_vp8_brc_init_reset = media_set_curbe_vp8_brc_init_reset_g7;
1194 encoder_context->set_curbe_vp8_brc_update = media_set_curbe_vp8_brc_update_g7;
1195 encoder_context->set_curbe_scaling = mediadrv_set_curbe_scaling;
1196 encoder_context->set_curbe_vp8_me = media_set_curbe_vp8_me_g7;
1197 encoder_context->surface_state_vp8_mbenc =
1198 media_surface_state_vp8_mbenc_g7;
1199 encoder_context->surface_state_vp8_mbpak =
1200 media_surface_state_vp8_mbpak_g7;
1201 encoder_context->surface_state_vp8_brc_init_reset =
1202 media_surface_state_vp8_brc_init_reset_g7;
1203 encoder_context->surface_state_vp8_brc_update =
1204 media_surface_state_vp8_brc_update_g7;
1205 encoder_context->surface_state_scaling =
1206 media_surface_state_scaling;
1207 encoder_context->surface_state_vp8_me =
1208 media_surface_state_vp8_me_g7;
1209 encoder_context->init_brc_update_constant_data_vp8 =
1210 media_encode_init_brc_update_constant_data_vp8_g7;
1211 encoder_context->media_add_surface_state = media_add_surface_state;
1212 encoder_context->media_add_binding_table = media_add_binding_table;
1213 encoder_context->media_object_walker_pak_init=media_object_walker_pak_init;
1214 encoder_context->media_object_walker_mbenc_init =media_object_walker_mbenc_init;
1215 encoder_context->gpe_context_vfe_scoreboardinit_pak_p1=gpe_context_vfe_scoreboardinit_pak_p1;
1216 encoder_context->gpe_context_vfe_scoreboardinit_pak_p2=gpe_context_vfe_scoreboardinit_pak_p2;
1217 encoder_context->mediadrv_gen_state_base_address_cmd =
1218 mediadrv_gen_state_base_address_cmd;
1219 encoder_context->mediadrv_gen_media_vfe_state_cmd =
1220 mediadrv_gen_media_vfe_state_cmd;
1221 encoder_context->media_object_walker_cmd=
1222 media_object_walker_cmd;
1223 encoder_context->initialize_brc_distortion_buffer = media_init_brc_distortion_buffer_g7;
1224 }
1225 else
1226 {
1227 printf ("Platform not supported");
1228 MEDIA_DRV_ASSERT (0);
1229 }
1230 }
1231