1 /*
2 * Copyright (c) 2019, 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 "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23 //!
24 //! \file encode_av1_vdenc_const_settings.cpp
25 //! \brief Defines the common interface for av1 vdenc const settings
26 //! \details The encode feature manager is further sub-divided by platform type
27 //! this file is for the base interface which is shared by all components.
28 //!
29
30 #include "encode_av1_vdenc_const_settings.h"
31 #include "codec_def_common_av1.h"
32 #include "codec_def_encode.h"
33 #include "encode_utils.h"
34 #include "mhw_vdbox_vdenc_cmdpar.h"
35 #include "mos_utilities.h"
36 #include <array>
37 #include <cstdint>
38 #include <functional>
39 #include <vector>
40
41 namespace encode
42 {
43 // 8 slots designed for {TU1,TU2,TU3,TU4,TU5,TU6,TU7,Potential_feature}
44 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par39[NUM_TARGET_USAGE_MODES] = { 12, 12, 12, 8, 8, 8, 4, 4 };
45 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par38[NUM_TARGET_USAGE_MODES] = { 4, 4, 4, 3, 3, 3, 2, 2 };
46 const uint32_t Av1VdencTUConstSettings::vdencCmd2Par85Table0[NUM_TARGET_USAGE_MODES] = { 1, 1, 1, 3, 3, 3, 3, 3 };
47 const uint32_t Av1VdencTUConstSettings::vdencCmd2Par85Table1[NUM_TARGET_USAGE_MODES] = { 1, 1, 1, 1, 1, 1, 0, 0 };
48 const bool Av1VdencTUConstSettings::vdencCmd2Par86[NUM_TARGET_USAGE_MODES] = { false, false, false, false, false, false, true, true };
49 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par87Table0[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 2, 2, 2, 2, 2 };
50 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par87Table1[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 2, 2, 2, 2, 2 };
51 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par87Table2[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 2, 2, 2, 2, 2 };
52 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par87Table3[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 2, 2, 2, 2, 2 };
53 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table0[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 1, 1, 1, 1, 1 };
54 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table1[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 3, 3, 3, 3, 3 };
55 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table2[NUM_TARGET_USAGE_MODES] = {3, 3, 3, 3, 3, 3, 2, 2 };
56 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table3[NUM_TARGET_USAGE_MODES] = { 0, 0, 0, 0, 0, 0, 0, 0 };
57 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table4[NUM_TARGET_USAGE_MODES] = { 1, 1, 1, 1, 1, 1, 1, 1 };
58 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table5[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 3, 3, 3, 3, 3 };
59 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table6[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 1, 1, 1, 1, 1 };
60 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table7[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 1, 1, 1, 1, 1 };
61 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table8[NUM_TARGET_USAGE_MODES] = { 7, 7, 7, 7, 7, 7, 1, 1 };
62 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table9[NUM_TARGET_USAGE_MODES] = { 3, 3, 3, 1, 1, 1, 1, 1 };
63 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table10[NUM_TARGET_USAGE_MODES] = { 7, 7, 7, 3, 3, 3, 2, 2 };
64 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par88Table11[NUM_TARGET_USAGE_MODES] = { 0, 0, 0, 0, 0, 0, 0, 0 };
65 const bool Av1VdencTUConstSettings::vdencCmd2Par89[NUM_TARGET_USAGE_MODES] = { false, false, false, false, false, false, true, true };
66 const bool Av1VdencTUConstSettings::vdencCmd2Par94[NUM_TARGET_USAGE_MODES] = { false, false, false, true, true, true, true, true };
67 const bool Av1VdencTUConstSettings::vdencCmd2Par95[NUM_TARGET_USAGE_MODES] = { false, false, false, false, false, false, true, true };
68 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par98[NUM_TARGET_USAGE_MODES] = { 0, 0, 0, 0, 0, 0, 1, 1 };
69 const bool Av1VdencTUConstSettings::vdencCmd2Par97[NUM_TARGET_USAGE_MODES] = { false, false, false, true, true, false, false, false };
70 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par100[NUM_TARGET_USAGE_MODES] = { 0, 0, 0, 0, 0, 0, 0, 0 };
71 const uint8_t Av1VdencTUConstSettings::vdencCmd2Par96[NUM_TARGET_USAGE_MODES] = { 0, 0, 0, 0, 0, 0, 3, 3};
72 const uint16_t Av1VdencTUConstSettings::vdencCmd2Par93[NUM_TARGET_USAGE_MODES] = { 0xffff, 0xffff, 0xffff, 0xff00, 0xff00, 0xff00, 0x8000, 0x8000 };
73 const uint16_t Av1VdencTUConstSettings::vdencCmd2Par92[NUM_TARGET_USAGE_MODES] = { 0xffff, 0xffff, 0xffff, 0xff00, 0xff00, 0xff00, 0xfffc, 0xfffc };
74 const bool Av1VdencTUConstSettings::vdencCmd2Par23[NUM_TARGET_USAGE_MODES] = { false, false, false, false, false, false, false, false };
75
76 constexpr int8_t Av1VdencBrcConstSettings::instRateThresholdI[4] = { 30, 50, 90, 115 };
77 constexpr int8_t Av1VdencBrcConstSettings::instRateThresholdP[4] = { 30, 50, 70, 120 };
78 constexpr double Av1VdencBrcConstSettings::devThresholdFpNegI[4] = { 0.80, 0.60, 0.34, 0.2 };
79 constexpr double Av1VdencBrcConstSettings::devThresholdFpPosI[4] = { 0.2, 0.4, 0.66, 0.9 };
80 constexpr double Av1VdencBrcConstSettings::devThresholdFpNegPB[4] = { 0.90, 0.66, 0.46, 0.3 };
81 constexpr double Av1VdencBrcConstSettings::devThresholdFpPosPB[4] = { 0.3, 0.46, 0.70, 0.90 };
82 constexpr double Av1VdencBrcConstSettings::devThresholdVbrNeg[4] = { 0.90, 0.70, 0.50, 0.3 };
83 constexpr double Av1VdencBrcConstSettings::devThresholdVbrPos[4] = { 0.4, 0.5, 0.75, 0.90 };
84 constexpr uint8_t Av1VdencBrcConstSettings::QPThresholds[4] = { 40, 80, 120, 180 };
85 constexpr uint16_t Av1VdencBrcConstSettings::startGlobalAdjustFrame[4] = {10,50,100,150};
86 constexpr uint8_t Av1VdencBrcConstSettings::globalRateRatioThreshold[6] = {40, 75, 97, 103, 125, 160};
87 constexpr int8_t Av1VdencBrcConstSettings::globalRateRatioThresholdQP[7] = {-6, -4, -2, 0, 2, 4, 6};
88 constexpr uint8_t Av1VdencBrcConstSettings::startGlobalAdjustMult[5] = {1, 1, 3, 2, 1};
89 constexpr uint8_t Av1VdencBrcConstSettings::startGlobalAdjustDiv[5] = {40, 5, 5, 3, 1};
90 constexpr uint8_t Av1VdencBrcConstSettings::distortionThresh[9] = { 4,30,60,80, 120,140,200,255, 0 };
91 constexpr uint8_t Av1VdencBrcConstSettings::distortionThreshB[9] = { 2,20,40,70, 130,160,200,255, 0 };
92 constexpr uint8_t Av1VdencBrcConstSettings::maxFrameMultI[5] = { 8, 9, 10, 11, 12 };
93 constexpr uint8_t Av1VdencBrcConstSettings::maxFrameMultP[5] = { 4, 5, 6, 6, 7 };
94 constexpr int8_t Av1VdencBrcConstSettings::av1DeltaQpI[][5] =
95 {
96 {2, 6, 10, 14, 18, },
97 {2, 4, 6, 10, 14, },
98 {0, 0, 2, 4, 8, },
99 {0, 0, 0, 2, 4, },
100 {-2, 0, 0, 0, 2, },
101 {-6, -4, -2, 0, 0, },
102 {-10, -8, -4, -2, 0, },
103 {-14, -12, -8, -4, -2, },
104 {-18, -14, -10, -4, -2, },
105 };
106
107 constexpr int8_t Av1VdencBrcConstSettings::av1DeltaQpP[][5] =
108 {
109 {2, 4, 10, 16, 20, },
110 {2, 4, 8, 12, 16, },
111 {0, 2, 4, 8, 12, },
112 {0, 0, 0, 2, 4, },
113 {-2, 0, 0, 0, 2, },
114 {-4, -2, -2, 0, 0, },
115 {-6, -4, -2, -2, 0, },
116 {-10, -6, -4, -2, 0, },
117 {-14, -12, -8, -4, -2, },
118 };
119
120 constexpr int8_t Av1VdencBrcConstSettings::av1DistortionsDeltaQpI[][9] =
121 {
122 { 0, 0, 0, 0, 0, 8, 12, 16, 20 },
123 { 0, 0, 0, 0, 0, 6, 10, 14, 18 },
124 {-2, 0, 0, 0, 0, 6, 8, 12, 14 },
125 {-4, -2, 0, 0, 0, 2, 4, 6, 10 },
126 {-6, -4, -2, 0, 0, 0, 2, 6, 10 },
127 {-8, -4, -2, 0, 0, 0, 2, 6, 10 },
128 {-10,-6, -4, -2, 0, 0, 2, 6, 10 },
129 {-12,-8, -4, -2, 0, 0, 2, 6, 10 },
130 {-12,-8, -4, -2, 0, 0, 2, 6, 10 },
131 };
132
133 constexpr int8_t Av1VdencBrcConstSettings::av1DistortionsDeltaQpP[][9] =
134 {
135 { 0, 0, 0, 0, 0, 6, 10, 14, 18 },
136 { 0, 0, 0, 0, 0, 6, 10, 12, 16 },
137 {-2, 0, 0, 0, 0, 6, 10, 14, 16 },
138 {-4, -2, 0, 0, 0, 4, 8, 10, 12 },
139 {-6, -4, -2, 0, 0, 0, 2, 8, 10 },
140 {-8, -4, -2, 0, 0, 0, 2, 8, 10 },
141 {-8, -4, -2, -2, 0, 0, 0, 8, 10 },
142 {-8, -6, -4, -2, 0, 0, 0, 2, 10 },
143 {-10,-8, -4, -2, 0, 0, 0, 2, 8 },
144 };
145
146 constexpr uint8_t Av1VdencBrcConstSettings::loopFilterLevelTabLuma[256] = {
147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2,
151 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
152 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6,
153 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10,
154 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15,
155 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 19, 19, 20, 20, 20,
156 21, 21, 21, 22, 22, 22, 23, 23, 24, 24, 24, 25, 25, 25, 26, 26,
157 27, 27, 27, 28, 28, 29, 29, 29, 30, 30, 31, 31, 31, 32, 32, 33,
158 33, 34, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 41,
159 41, 42, 42, 43, 44, 45, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55,
160 56, 58, 59, 61, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
161 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
162 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63
163 };
164
165 constexpr uint8_t Av1VdencBrcConstSettings::loopFilterLevelTabChroma[256] = {
166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
169 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2,
170 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
171 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
172 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
173 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8,
174 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10,
175 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15,
176 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 30, 31, 31, 31, 31,
177 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
178 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
179 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
180 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
181 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31
182 };
183
184 const uint32_t Av1VdencBrcConstSettings::hucModeCostsIFrame[52 * 6] =
185 {
186 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
187 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
188 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
189 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
190 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
191 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
192 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
193 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
194 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
195 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
196 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
197 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
198 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
199 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
200 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
201 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
202 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
203 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
204 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
205 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
206 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
207 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
208 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
209 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
210 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
211 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
212 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
213 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
214 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
215 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
216 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
217 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
218 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
219 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
220 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
221 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
222 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
223 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
224 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
225 };
226
227 const uint32_t Av1VdencBrcConstSettings::hucModeCostsPFrame[52 * 6] =
228 {
229 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
230 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
231 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
232 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
233 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
234 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
235 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
236 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
237 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
238 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
239 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
240 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
241 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
242 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
243 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
244 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
245 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
246 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
247 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
248 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
249 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
250 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
251 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
252 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
253 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
254 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
255 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
256 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
257 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
258 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
259 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
260 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
261 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
262 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
263 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
264 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
265 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515,
266 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000,
267 0x00000000, 0x00000000, 0x10102f1e, 0x001e1515, 0x00000000, 0x00000000, 0x00000000, 0x00000000
268 };
269
EncodeAv1VdencConstSettings(PMOS_INTERFACE osInterface)270 EncodeAv1VdencConstSettings::EncodeAv1VdencConstSettings(PMOS_INTERFACE osInterface) : VdencConstSettings(osInterface)
271 {
272 m_osInterface = osInterface;
273 ENCODE_CHK_NULL_NO_STATUS_RETURN(m_osInterface);
274 m_featureSetting = MOS_New(Av1VdencFeatureSettings);
275 }
276
Update(void * params)277 MOS_STATUS EncodeAv1VdencConstSettings::Update(void *params)
278 {
279 ENCODE_FUNC_CALL();
280
281 EncoderParams *encodeParams = (EncoderParams *)params;
282
283 PCODEC_AV1_ENCODE_SEQUENCE_PARAMS av1SeqParams =
284 static_cast<PCODEC_AV1_ENCODE_SEQUENCE_PARAMS>(encodeParams->pSeqParams);
285 ENCODE_CHK_NULL_RETURN(av1SeqParams);
286 m_av1SeqParams = av1SeqParams;
287
288 PCODEC_AV1_ENCODE_PICTURE_PARAMS av1PicParams =
289 static_cast<PCODEC_AV1_ENCODE_PICTURE_PARAMS>(encodeParams->pPicParams);
290 ENCODE_CHK_NULL_RETURN(av1PicParams);
291 m_av1PicParams = av1PicParams;
292
293 return MOS_STATUS_SUCCESS;
294 }
295
PrepareConstSettings()296 MOS_STATUS EncodeAv1VdencConstSettings::PrepareConstSettings()
297 {
298 ENCODE_FUNC_CALL();
299
300 ENCODE_CHK_STATUS_RETURN(SetTUSettings());
301 ENCODE_CHK_STATUS_RETURN(SetTable());
302 ENCODE_CHK_STATUS_RETURN(SetVdencCmd1Settings());
303 ENCODE_CHK_STATUS_RETURN(SetVdencCmd2Settings());
304 ENCODE_CHK_STATUS_RETURN(SetBrcSettings());
305
306 return MOS_STATUS_SUCCESS;
307 }
308
SetCommonSettings()309 MOS_STATUS EncodeAv1VdencConstSettings::SetCommonSettings()
310 {
311 ENCODE_FUNC_CALL();
312
313 //TBD
314
315 return MOS_STATUS_SUCCESS;
316 }
317
SetBrcSettings()318 MOS_STATUS EncodeAv1VdencConstSettings::SetBrcSettings()
319 {
320 ENCODE_FUNC_CALL();
321
322 ENCODE_CHK_NULL_RETURN(m_featureSetting);
323
324 auto setting = static_cast<Av1VdencFeatureSettings *>(m_featureSetting);
325 ENCODE_CHK_NULL_RETURN(setting);
326
327 #define SET_TABLE(X) setting->brcSettings.X.data = (void *)Av1VdencBrcConstSettings::X;\
328 setting->brcSettings.X.size = sizeof(Av1VdencBrcConstSettings::X);
329
330 SET_TABLE(instRateThresholdP);
331 SET_TABLE(instRateThresholdI);
332 SET_TABLE(devThresholdFpNegI);
333 SET_TABLE(devThresholdFpPosI);
334 SET_TABLE(devThresholdFpNegPB);
335 SET_TABLE(devThresholdFpPosPB);
336 SET_TABLE(devThresholdVbrNeg);
337 SET_TABLE(devThresholdVbrPos);
338
339 SET_TABLE(QPThresholds);
340 SET_TABLE(startGlobalAdjustFrame);
341 SET_TABLE(globalRateRatioThreshold);
342 SET_TABLE(globalRateRatioThresholdQP);
343 SET_TABLE(startGlobalAdjustMult);
344 SET_TABLE(startGlobalAdjustDiv);
345 SET_TABLE(distortionThresh);
346 SET_TABLE(distortionThreshB);
347 SET_TABLE(maxFrameMultI);
348 SET_TABLE(maxFrameMultP);
349 SET_TABLE(av1DeltaQpI);
350 SET_TABLE(av1DeltaQpP);
351 SET_TABLE(av1DistortionsDeltaQpI);
352 SET_TABLE(av1DistortionsDeltaQpP);
353 SET_TABLE(loopFilterLevelTabLuma);
354 SET_TABLE(loopFilterLevelTabChroma);
355 SET_TABLE(hucModeCostsIFrame);
356 SET_TABLE(hucModeCostsPFrame);
357
358 #undef SET_TABLE
359
360 #define SET_DATA(X) setting->brcSettings.X = Av1VdencBrcConstSettings::X;
361
362 SET_DATA(numInstRateThresholds);
363 SET_DATA(devStdFPS);
364 SET_DATA(bpsRatioLow);
365 SET_DATA(bpsRatioHigh);
366 SET_DATA(postMultPB);
367 SET_DATA(negMultPB);
368 SET_DATA(posMultVBR);
369 SET_DATA(negMultVBR);
370 SET_DATA(numDevThreshlds);
371
372 SET_DATA(numQpThresholds);
373 SET_DATA(numGlobalRateRatioThreshlds);
374 SET_DATA(numStartGlobalAdjusts);
375 SET_DATA(numDistortionThresholds);
376
377 #undef SET_DATA
378
379 return MOS_STATUS_SUCCESS;
380 }
381
SetVdencCmd1Settings()382 MOS_STATUS EncodeAv1VdencConstSettings::SetVdencCmd1Settings()
383 {
384 ENCODE_FUNC_CALL();
385 ENCODE_CHK_NULL_RETURN(m_featureSetting);
386
387 auto setting = static_cast<Av1VdencFeatureSettings*>(m_featureSetting);
388 ENCODE_CHK_NULL_RETURN(setting);
389
390 setting->vdencCmd1Settings = {
391 VDENC_CMD1_LAMBDA()
392 {
393 auto qp = m_av1PicParams->base_qindex;
394 bool isIntra = AV1_KEY_OR_INRA_FRAME(m_av1PicParams->PicFlags.fields.frame_type);
395 static const std::array<
396 std::array<
397 uint16_t,
398 256>,
399 2>
400 par1Array =
401 {{
402 {1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4,
403 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7,
404 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10,
405 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13,
406 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 16, 16,
407 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21,
408 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29,
409 30, 30, 31, 31, 31, 32, 33, 33, 34, 35, 35, 36, 36, 37, 38, 38, 39, 40, 40,
410 41, 42, 43, 43, 44, 45, 46, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
411 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 71, 72, 73, 75, 76, 78, 79, 81,
412 82, 84, 85, 87, 89, 90, 92, 94, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115,
413 117, 120, 122, 124, 126, 129, 131, 134, 137, 139, 142, 145, 147, 150, 153, 156, 159, 162, 165,
414 168, 172, 175, 178, 182, 185, 189, 193, 196, 200, 204, 208, 212, 216, 221, 225, 229, 234, 238,
415 243, 248, 252, 257, 262, 267, 273, 278, 283},
416 {1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4,
417 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7,
418 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
419 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12,
420 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
421 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 20, 21,
422 21, 21, 22, 22, 22, 23, 23, 23, 24, 24, 25, 25, 26, 26, 26, 27, 27, 28, 28,
423 29, 29, 30, 30, 30, 31, 32, 32, 33, 33, 34, 35, 35, 36, 36, 37, 38, 38, 39,
424 40, 41, 41, 42, 43, 44, 44, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 54, 55,
425 56, 57, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 70, 71, 72, 74, 75, 77, 78,
426 80, 81, 83, 84, 86, 87, 89, 91, 92, 94, 96, 98, 99, 101, 103, 105, 107, 109, 111,
427 114, 116, 118, 120, 122, 125, 127, 130, 132, 135, 137, 140, 143, 145, 148, 151, 154, 157, 160,
428 163, 166, 169, 173, 176, 179, 183, 186, 190, 194, 198, 201, 205, 209, 213, 218, 222, 226, 231,
429 235, 240, 244, 249, 254, 259, 264, 269, 274},
430 }};
431 par.vdencCmd1Par1 = par1Array[isIntra ? 0 : 1][qp];
432
433 static const std::array<
434 std::array<
435 uint16_t,
436 256>,
437 2>
438 par0Array =
439 {{
440 {0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4,
441 4, 4, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12,
442 12, 13, 13, 14, 14, 15, 16, 16, 17, 18, 18, 19, 20, 20, 21, 22, 22, 23, 24,
443 25, 25, 26, 27, 28, 29, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40,
444 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61,
445 62, 65, 67, 70, 73, 75, 78, 81, 84, 86, 89, 92, 95, 98, 102, 105, 108, 111, 114,
446 118, 121, 125, 128, 132, 135, 139, 144, 150, 156, 162, 168, 174, 180, 186, 192, 199, 206, 212,
447 219, 226, 233, 240, 248, 257, 267, 278, 288, 299, 309, 320, 332, 343, 355, 366, 378, 391, 406,
448 422, 438, 454, 471, 488, 505, 523, 541, 559, 581, 604, 627, 650, 674, 698, 723, 748, 774, 805,
449 836, 867, 900, 932, 966, 1000, 1039, 1080, 1121, 1163, 1205, 1249, 1299, 1349, 1401, 1454, 1508,
450 1562, 1624, 1687, 1751, 1817, 1884, 1958, 2034, 2112, 2191, 2272, 2361, 2452, 2545, 2640, 2745,
451 2851, 2960, 3071, 3192, 3316, 3442, 3570, 3711, 3854, 3999, 4158, 4319, 4484, 4662, 4843, 5029,
452 5228, 5432, 5640, 5863, 6091, 6323, 6572, 6825, 7097, 7374, 7656, 7957, 8264, 8591, 8925, 9280,
453 9642, 10026, 10418, 10833, 11257, 11705, 12162, 12646, 13138, 13659, 14189, 14748, 15318, 15919,
454 16551, 17195, 17872, 18584, 19309, 20070},
455 {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4,
456 4, 4, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12,
457 12, 13, 14, 14, 15, 15, 16, 16, 17, 18, 18, 19, 20, 20, 21, 22, 22, 23, 24, 25,
458 25, 26, 27, 28, 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
459 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 61, 63, 66, 68,
460 71, 73, 76, 78, 81, 84, 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, 117, 120, 123, 127,
461 130, 135, 140, 146, 151, 157, 163, 168, 174, 180, 186, 193, 199, 205, 212, 218, 225, 232, 241, 250,
462 260, 270, 280, 290, 300, 311, 321, 332, 343, 354, 366, 380, 395, 410, 425, 441, 457, 473, 490, 506,
463 523, 544, 565, 587, 609, 631, 654, 677, 701, 725, 754, 783, 812, 842, 873, 905, 936, 973, 1011, 1050,
464 1089, 1129, 1170, 1216, 1264, 1312, 1362, 1412, 1463, 1521, 1580, 1640, 1702, 1764, 1834, 1905, 1978,
465 2052, 2128, 2211, 2297, 2384, 2473, 2570, 2670, 2772, 2876, 2989, 3105, 3223, 3344, 3475, 3609, 3745,
466 3894, 4045, 4199, 4366, 4536, 4709, 4897, 5087, 5282, 5491, 5704, 5921, 6154, 6392, 6646, 6906, 7170,
467 7452, 7740, 8046, 8359, 8691, 9030, 9390, 9757, 10146, 10542, 10962, 11390, 11843, 12304, 12792, 13288,
468 13812, 14346, 14908, 15500, 16104, 16738, 17404, 18084, 18796},
469 }};
470 par.vdencCmd1Par0 = par0Array[isIntra ? 0 : 1][qp];
471
472 static const std::array<
473 std::array<
474 uint8_t,
475 8>,
476 2>
477 par2Array =
478 {{
479 {0, 2, 3, 5, 6, 8, 9, 11},
480 {0, 2, 3, 5, 6, 8, 9, 11},
481 }};
482 static const std::array< uint8_t, 12> par3Array = {4, 14, 24, 34, 44, 54, 64, 74, 84, 94, 104, 114};
483 static const std::array< uint8_t, 12> par4Array = { 3, 9, 14, 19, 24, 29, 34, 39, 44, 49, 54, 60};
484 for (auto i = 0; i < 8; i++)
485 {
486 par.vdencCmd1Par2[i] = par2Array[isIntra? 0 : 1][i];
487 par.vdencCmd1Par3[i] = par3Array[i];
488 par.vdencCmd1Par4[i] = par4Array[i];
489 }
490 for (auto i = 8; i < 12; i++)
491 {
492 par.vdencCmd1Par3[i] = par3Array[i];
493 par.vdencCmd1Par4[i] = par4Array[i];
494 }
495
496 return MOS_STATUS_SUCCESS;
497 },
498
499 VDENC_CMD1_LAMBDA()
500 {
501
502 par.vdencCmd1Par50 = 5;
503 par.vdencCmd1Par49 = 5;
504 par.vdencCmd1Par48 = 5;
505 par.vdencCmd1Par47 = 5;
506 par.vdencCmd1Par54 = 12;
507 par.vdencCmd1Par53 = 12;
508 par.vdencCmd1Par52 = 12;
509 par.vdencCmd1Par51 = 12;
510
511 par.vdencCmd1Par58 = 18;
512 par.vdencCmd1Par57 = 18;
513 par.vdencCmd1Par56 = 18;
514 par.vdencCmd1Par55 = 18;
515 par.vdencCmd1Par74 = 16;
516 par.vdencCmd1Par73 = 16;
517 par.vdencCmd1Par72 = 16;
518 par.vdencCmd1Par71 = 16;
519
520 par.vdencCmd1Par62 = 16;
521 par.vdencCmd1Par61 = 16;
522 par.vdencCmd1Par60 = 16;
523 par.vdencCmd1Par59 = 16;
524 par.vdencCmd1Par78 = 16;
525 par.vdencCmd1Par77 = 16;
526 par.vdencCmd1Par76 = 16;
527 par.vdencCmd1Par75 = 16;
528
529 par.vdencCmd1Par66 = 16;
530 par.vdencCmd1Par65 = 16;
531 par.vdencCmd1Par64 = 16;
532 par.vdencCmd1Par63 = 16;
533 par.vdencCmd1Par82 = 16;
534 par.vdencCmd1Par81 = 16;
535 par.vdencCmd1Par80 = 16;
536 par.vdencCmd1Par79 = 16;
537
538 par.vdencCmd1Par70 = 22;
539 par.vdencCmd1Par69 = 22;
540 par.vdencCmd1Par68 = 22;
541 par.vdencCmd1Par67 = 22;
542 par.vdencCmd1Par86 = 26;
543 par.vdencCmd1Par85 = 26;
544 par.vdencCmd1Par84 = 26;
545 par.vdencCmd1Par83 = 26;
546
547 return MOS_STATUS_SUCCESS;
548 },
549
550 VDENC_CMD1_LAMBDA()
551 {
552 bool isIntra = AV1_KEY_OR_INRA_FRAME(m_av1PicParams->PicFlags.fields.frame_type);
553 if (isIntra)
554 {
555 par.vdencCmd1Par23 = 42;
556 par.vdencCmd1Par24 = 0;
557 par.vdencCmd1Par25 = 0;
558 par.vdencCmd1Par26 = 0;
559 par.vdencCmd1Par27 = 0;
560 par.vdencCmd1Par28 = 0;
561 par.vdencCmd1Par29 = 0;
562 par.vdencCmd1Par30 = 0;
563 par.vdencCmd1Par31 = 0;
564 par.vdencCmd1Par32 = 0;
565 par.vdencCmd1Par33 = 0;
566 par.vdencCmd1Par34 = 21;
567 par.vdencCmd1Par36 = 21;
568 par.vdencCmd1Par37 = 47;
569 par.vdencCmd1Par38 = 16;
570 par.vdencCmd1Par39 = 16;
571 par.vdencCmd1Par42 = 58;
572 par.vdencCmd1Par43 = 20;
573 par.vdencCmd1Par40 = 30;
574 par.vdencCmd1Par41 = 30;
575 par.vdencCmd1Par44 = 0;
576 par.vdencCmd1Par45 = 20;
577 par.vdencCmd1Par46 = 0;
578 }
579 else if (isLowDelay)
580 {
581 par.vdencCmd1Par6 = 3;
582 par.vdencCmd1Par5 = 6;
583 par.vdencCmd1Par7 = 10;
584 par.vdencCmd1Par8[0] = 5;
585 par.vdencCmd1Par9[0] = 6;
586 par.vdencCmd1Par12[0] = 23;
587 par.vdencCmd1Par13[0] = 26;
588 par.vdencCmd1Par10[0] = 5;
589 par.vdencCmd1Par11[0] = 0;
590 par.vdencCmd1Par14[0] = 21;
591 par.vdencCmd1Par15[0] = 0;
592 par.vdencCmd1Par16 = 92;
593 par.vdencCmd1Par17 = 19;
594 par.vdencCmd1Par18 = 92;
595 par.vdencCmd1Par19 = 18;
596 par.vdencCmd1Par23 = 54;
597 par.vdencCmd1Par20 = 15;
598 par.vdencCmd1Par21 = 4;
599 par.vdencCmd1Par22 = 4;
600 par.vdencCmd1Par24 = 0;
601 par.vdencCmd1Par25 = 0;
602 par.vdencCmd1Par26 = 0;
603 par.vdencCmd1Par27 = 0;
604 par.vdencCmd1Par28 = 0;
605 par.vdencCmd1Par29 = 0;
606 par.vdencCmd1Par30 = 0;
607 par.vdencCmd1Par31 = 0;
608 par.vdencCmd1Par32 = 0;
609 par.vdencCmd1Par33 = 0;
610 par.vdencCmd1Par34 = 21;
611 par.vdencCmd1Par36 = 21;
612 par.vdencCmd1Par37 = 23;
613 par.vdencCmd1Par38 = 24;
614 par.vdencCmd1Par39 = 27;
615 par.vdencCmd1Par40 = 41;
616 par.vdencCmd1Par41 = 68;
617 par.vdencCmd1Par42 = 37;
618 par.vdencCmd1Par43 = 37;
619 par.vdencCmd1Par44 = 0;
620 par.vdencCmd1Par45 = 12;
621 par.vdencCmd1Par46 = 0;
622 par.vdencCmd1Par87 = 20;
623 par.vdencCmd1Par88 = 20;
624 par.vdencCmd1Par89 = 20;
625 }
626 else
627 {
628 par.vdencCmd1Par6 = 3;
629 par.vdencCmd1Par5 = 6;
630 par.vdencCmd1Par7 = 10;
631 par.vdencCmd1Par8[0] = 5;
632 par.vdencCmd1Par9[0] = 6;
633 par.vdencCmd1Par12[0] = 23;
634 par.vdencCmd1Par13[0] = 26;
635 par.vdencCmd1Par10[0] = 5;
636 par.vdencCmd1Par11[0] = 0;
637 par.vdencCmd1Par14[0] = 21;
638 par.vdencCmd1Par15[0] = 0;
639 par.vdencCmd1Par16 = 92;
640 par.vdencCmd1Par17 = 19;
641 par.vdencCmd1Par18 = 92;
642 par.vdencCmd1Par19 = 18;
643 par.vdencCmd1Par21 = 4;
644 par.vdencCmd1Par22 = 4;
645 par.vdencCmd1Par23 = 54;
646 par.vdencCmd1Par20 = 15;
647 par.vdencCmd1Par24 = 0;
648 par.vdencCmd1Par25 = 0;
649 par.vdencCmd1Par26 = 0;
650 par.vdencCmd1Par27 = 0;
651 par.vdencCmd1Par28 = 0;
652 par.vdencCmd1Par29 = 0;
653 par.vdencCmd1Par30 = 0;
654 par.vdencCmd1Par31 = 0;
655 par.vdencCmd1Par32 = 0;
656 par.vdencCmd1Par33 = 0;
657 par.vdencCmd1Par34 = 21;
658 par.vdencCmd1Par36 = 21;
659 par.vdencCmd1Par37 = 23;
660 par.vdencCmd1Par38 = 24;
661 par.vdencCmd1Par39 = 27;
662 par.vdencCmd1Par40 = 41;
663 par.vdencCmd1Par41 = 68;
664 par.vdencCmd1Par42 = 37;
665 par.vdencCmd1Par43 = 37;
666 par.vdencCmd1Par44 = 3;
667 par.vdencCmd1Par45 = 12;
668 par.vdencCmd1Par46 = 12;
669 par.vdencCmd1Par87 = 20;
670 par.vdencCmd1Par88 = 20;
671 par.vdencCmd1Par89 = 20;
672 }
673
674 return MOS_STATUS_SUCCESS;
675 }
676 };
677
678 return MOS_STATUS_SUCCESS;
679 }
680
681 } // namespace encode
682