xref: /rockchip-linux_mpp/mpp/hal/rkenc/common/vepu5xx_common.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  * Copyright 2022 Rockchip Electronics Co. LTD
3*437bfbebSnyanmisaka  *
4*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
5*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
6*437bfbebSnyanmisaka  * You may obtain a copy of the License at
7*437bfbebSnyanmisaka  *
8*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
9*437bfbebSnyanmisaka  *
10*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
11*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
12*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
14*437bfbebSnyanmisaka  * limitations under the License.
15*437bfbebSnyanmisaka  */
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka #define MODULE_TAG "vepu5xx_common"
18*437bfbebSnyanmisaka 
19*437bfbebSnyanmisaka #include <string.h>
20*437bfbebSnyanmisaka 
21*437bfbebSnyanmisaka #include "mpp_debug.h"
22*437bfbebSnyanmisaka #include "mpp_common.h"
23*437bfbebSnyanmisaka #include "vepu5xx_common.h"
24*437bfbebSnyanmisaka 
25*437bfbebSnyanmisaka const VepuRgb2YuvCfg vepu_rgb2limit_yuv_cfg_set[] = {
26*437bfbebSnyanmisaka     /* MPP_BT601_FULL_RGB_TO_LIMIT_YUV */
27*437bfbebSnyanmisaka     {
28*437bfbebSnyanmisaka         .color = MPP_FRAME_SPC_RGB, .dst_range = MPP_FRAME_RANGE_UNSPECIFIED,
29*437bfbebSnyanmisaka         ._2y = {.r_coeff = 66, .g_coeff = 129, .b_coeff = 25, .offset = 16},
30*437bfbebSnyanmisaka         ._2u = {.r_coeff = -38, .g_coeff = -74, .b_coeff = 112, .offset = 128},
31*437bfbebSnyanmisaka         ._2v = {.r_coeff = 112, .g_coeff = -94, .b_coeff = -18, .offset = 128},
32*437bfbebSnyanmisaka     },
33*437bfbebSnyanmisaka     /* MPP_BT709_FULL_RGB_TO_LIMIT_YUV */
34*437bfbebSnyanmisaka     {
35*437bfbebSnyanmisaka         .color = MPP_FRAME_SPC_BT709, .dst_range = MPP_FRAME_RANGE_UNSPECIFIED,
36*437bfbebSnyanmisaka         ._2y = {.r_coeff = 47, .g_coeff = 157, .b_coeff = 16, .offset = 16},
37*437bfbebSnyanmisaka         ._2u = {.r_coeff = -26, .g_coeff = -87, .b_coeff = 112, .offset = 128},
38*437bfbebSnyanmisaka         ._2v = {.r_coeff = 112, .g_coeff = -102, .b_coeff = -10, .offset = 128},
39*437bfbebSnyanmisaka     },
40*437bfbebSnyanmisaka };
41*437bfbebSnyanmisaka 
42*437bfbebSnyanmisaka const VepuRgb2YuvCfg vepu_rgb2full_yuv_cfg_set[] = {
43*437bfbebSnyanmisaka     /* MPP_BT601_FULL_RGB_TO_FULL_YUV */
44*437bfbebSnyanmisaka     {
45*437bfbebSnyanmisaka         .color = MPP_FRAME_SPC_RGB, .dst_range = MPP_FRAME_RANGE_JPEG,
46*437bfbebSnyanmisaka         ._2y = {.r_coeff = 77, .g_coeff = 150, .b_coeff = 29, .offset = 0},
47*437bfbebSnyanmisaka         ._2u = {.r_coeff = -43, .g_coeff = -85, .b_coeff = 128, .offset = 128},
48*437bfbebSnyanmisaka         ._2v = {.r_coeff = 128, .g_coeff = -107, .b_coeff = -21, .offset = 128},
49*437bfbebSnyanmisaka     },
50*437bfbebSnyanmisaka     /* MPP_BT709_FULL_RGB_TO_FULL_YUV */
51*437bfbebSnyanmisaka     {
52*437bfbebSnyanmisaka         .color = MPP_FRAME_SPC_BT709, .dst_range = MPP_FRAME_RANGE_JPEG,
53*437bfbebSnyanmisaka         ._2y = {.r_coeff = 54, .g_coeff = 183, .b_coeff = 18, .offset = 0},
54*437bfbebSnyanmisaka         ._2u = {.r_coeff = -29, .g_coeff = -99, .b_coeff = 128, .offset = 128},
55*437bfbebSnyanmisaka         ._2v = {.r_coeff = 128, .g_coeff = -116, .b_coeff = -12, .offset = 128},
56*437bfbebSnyanmisaka     },
57*437bfbebSnyanmisaka };
58*437bfbebSnyanmisaka 
get_rgb2yuv_cfg(MppFrameColorRange range,MppFrameColorSpace color)59*437bfbebSnyanmisaka const VepuRgb2YuvCfg *get_rgb2yuv_cfg(MppFrameColorRange range, MppFrameColorSpace color)
60*437bfbebSnyanmisaka {
61*437bfbebSnyanmisaka     const VepuRgb2YuvCfg *cfg;
62*437bfbebSnyanmisaka     RK_U32 size;
63*437bfbebSnyanmisaka     RK_U32 i;
64*437bfbebSnyanmisaka 
65*437bfbebSnyanmisaka     /* only jpeg full range, others limit range */
66*437bfbebSnyanmisaka     if (range == MPP_FRAME_RANGE_JPEG) {
67*437bfbebSnyanmisaka         /* set default cfg BT.601 */
68*437bfbebSnyanmisaka         cfg = &vepu_rgb2full_yuv_cfg_set[0];
69*437bfbebSnyanmisaka         size = MPP_ARRAY_ELEMS(vepu_rgb2full_yuv_cfg_set);
70*437bfbebSnyanmisaka     } else {
71*437bfbebSnyanmisaka         /* set default cfg BT.601 */
72*437bfbebSnyanmisaka         cfg = &vepu_rgb2limit_yuv_cfg_set[0];
73*437bfbebSnyanmisaka         size = MPP_ARRAY_ELEMS(vepu_rgb2limit_yuv_cfg_set);
74*437bfbebSnyanmisaka     }
75*437bfbebSnyanmisaka 
76*437bfbebSnyanmisaka     for (i = 0; i < size; i++)
77*437bfbebSnyanmisaka         if (cfg[i].color == color)
78*437bfbebSnyanmisaka             return &cfg[i];
79*437bfbebSnyanmisaka 
80*437bfbebSnyanmisaka     return cfg;
81*437bfbebSnyanmisaka }
82*437bfbebSnyanmisaka 
83*437bfbebSnyanmisaka const RK_U32 vepu580_540_h264_flat_scl_tab[576] = {
84*437bfbebSnyanmisaka     /* 0x2200 */
85*437bfbebSnyanmisaka     0x2fbe3333, 0x2fbe4189, 0x2fbe3333, 0x2fbe4189, 0x2ca42fbe, 0x2ca43c79, 0x2ca42fbe, 0x2ca43c79,
86*437bfbebSnyanmisaka     0x3c794189, 0x3c7951ec, 0x3c794189, 0x3c7951ec, 0x2ca42fbe, 0x2ca43c79, 0x2ca42fbe, 0x2ca43c79,
87*437bfbebSnyanmisaka     0x2fbe3333, 0x2fbe4189, 0x2fbe3333, 0x2fbe4189, 0x2ca42fbe, 0x2ca43c79, 0x2ca42fbe, 0x2ca43c79,
88*437bfbebSnyanmisaka     0x3c794189, 0x3c7951ec, 0x3c794189, 0x3c7951ec, 0x2ca42fbe, 0x2ca43c79, 0x2ca42fbe, 0x2ca43c79,
89*437bfbebSnyanmisaka     0x2b322e8c, 0x2b323a84, 0x2b322e8c, 0x2b323a84, 0x2a4a2b32, 0x2a4a37d2, 0x2a4a2b32, 0x2a4a37d2,
90*437bfbebSnyanmisaka     0x37d23a84, 0x37d24ae6, 0x37d23a84, 0x37d24ae6, 0x2a4a2b32, 0x2a4a37d2, 0x2a4a2b32, 0x2a4a37d2,
91*437bfbebSnyanmisaka     0x2b322e8c, 0x2b323a84, 0x2b322e8c, 0x2b323a84, 0x2a4a2b32, 0x2a4a37d2, 0x2a4a2b32, 0x2a4a37d2,
92*437bfbebSnyanmisaka     0x37d23a84, 0x37d24ae6, 0x37d23a84, 0x37d24ae6, 0x2a4a2b32, 0x2a4a37d2, 0x2a4a2b32, 0x2a4a37d2,
93*437bfbebSnyanmisaka     0x25cb2762, 0x25cb31a6, 0x25cb2762, 0x25cb31a6, 0x22ef25cb, 0x22ef2ed1, 0x22ef25cb, 0x22ef2ed1,
94*437bfbebSnyanmisaka     0x2ed131a6, 0x2ed13e6a, 0x2ed131a6, 0x2ed13e6a, 0x22ef25cb, 0x22ef2ed1, 0x22ef25cb, 0x22ef2ed1,
95*437bfbebSnyanmisaka     0x25cb2762, 0x25cb31a6, 0x25cb2762, 0x25cb31a6, 0x22ef25cb, 0x22ef2ed1, 0x22ef25cb, 0x22ef2ed1,
96*437bfbebSnyanmisaka     0x2ed131a6, 0x2ed13e6a, 0x2ed131a6, 0x2ed13e6a, 0x22ef25cb, 0x22ef2ed1, 0x22ef25cb, 0x22ef2ed1,
97*437bfbebSnyanmisaka     0x22e32492, 0x22e32ed0, 0x22e32492, 0x22e32ed0, 0x202422e3, 0x20242bfb, 0x202422e3, 0x20242bfb,
98*437bfbebSnyanmisaka     0x2bfb2ed0, 0x2bfb3a41, 0x2bfb2ed0, 0x2bfb3a41, 0x202422e3, 0x20242bfb, 0x202422e3, 0x20242bfb,
99*437bfbebSnyanmisaka     0x22e32492, 0x22e32ed0, 0x22e32492, 0x22e32ed0, 0x202422e3, 0x20242bfb, 0x202422e3, 0x20242bfb,
100*437bfbebSnyanmisaka     0x2bfb2ed0, 0x2bfb3a41, 0x2bfb2ed0, 0x2bfb3a41, 0x202422e3, 0x20242bfb, 0x202422e3, 0x20242bfb,
101*437bfbebSnyanmisaka     0x1e3c2000, 0x1e3c28f6, 0x1e3c2000, 0x1e3c28f6, 0x1cb21e3c, 0x1cb22631, 0x1cb21e3c, 0x1cb22631,
102*437bfbebSnyanmisaka     0x263128f6, 0x26313367, 0x263128f6, 0x26313367, 0x1cb21e3c, 0x1cb22631, 0x1cb21e3c, 0x1cb22631,
103*437bfbebSnyanmisaka     0x1e3c2000, 0x1e3c28f6, 0x1e3c2000, 0x1e3c28f6, 0x1cb21e3c, 0x1cb22631, 0x1cb21e3c, 0x1cb22631,
104*437bfbebSnyanmisaka     0x263128f6, 0x26313367, 0x263128f6, 0x26313367, 0x1cb21e3c, 0x1cb22631, 0x1cb21e3c, 0x1cb22631,
105*437bfbebSnyanmisaka     0x1aae1c72, 0x1aae239e, 0x1aae1c72, 0x1aae239e, 0x191c1aae, 0x191c21c0, 0x191c1aae, 0x191c21c0,
106*437bfbebSnyanmisaka     0x21c0239e, 0x21c02d32, 0x21c0239e, 0x21c02d32, 0x191c1aae, 0x191c21c0, 0x191c1aae, 0x191c21c0,
107*437bfbebSnyanmisaka     0x1aae1c72, 0x1aae239e, 0x1aae1c72, 0x1aae239e, 0x191c1aae, 0x191c21c0, 0x191c1aae, 0x191c21c0,
108*437bfbebSnyanmisaka     0x21c0239e, 0x21c02d32, 0x21c0239e, 0x21c02d32, 0x191c1aae, 0x191c21c0, 0x191c1aae, 0x191c21c0,
109*437bfbebSnyanmisaka     0x00be0033, 0x00be0089, 0x00be0033, 0x00be0089, 0x00a400be, 0x00a40079, 0x00a400be, 0x00a40079,
110*437bfbebSnyanmisaka     0x00790089, 0x007900ec, 0x00790089, 0x007900ec, 0x00a400be, 0x00a40079, 0x00a400be, 0x00a40079,
111*437bfbebSnyanmisaka     0x00be0033, 0x00be0089, 0x00be0033, 0x00be0089, 0x00a400be, 0x00a40079, 0x00a400be, 0x00a40079,
112*437bfbebSnyanmisaka     0x00790089, 0x007900ec, 0x00790089, 0x007900ec, 0x00a400be, 0x00a40079, 0x00a400be, 0x00a40079,
113*437bfbebSnyanmisaka     0x0032008c, 0x00320084, 0x0032008c, 0x00320084, 0x004a0032, 0x004a00d2, 0x004a0032, 0x004a00d2,
114*437bfbebSnyanmisaka     0x00d20084, 0x00d200e6, 0x00d20084, 0x00d200e6, 0x004a0032, 0x004a00d2, 0x004a0032, 0x004a00d2,
115*437bfbebSnyanmisaka     0x0032008c, 0x00320084, 0x0032008c, 0x00320084, 0x004a0032, 0x004a00d2, 0x004a0032, 0x004a00d2,
116*437bfbebSnyanmisaka     0x00d20084, 0x00d200e6, 0x00d20084, 0x00d200e6, 0x004a0032, 0x004a00d2, 0x004a0032, 0x004a00d2,
117*437bfbebSnyanmisaka     0x00cb0062, 0x00cb00a6, 0x00cb0062, 0x00cb00a6, 0x00ef00cb, 0x00ef00d1, 0x00ef00cb, 0x00ef00d1,
118*437bfbebSnyanmisaka     0x00d100a6, 0x00d1006a, 0x00d100a6, 0x00d1006a, 0x00ef00cb, 0x00ef00d1, 0x00ef00cb, 0x00ef00d1,
119*437bfbebSnyanmisaka     0x00cb0062, 0x00cb00a6, 0x00cb0062, 0x00cb00a6, 0x00ef00cb, 0x00ef00d1, 0x00ef00cb, 0x00ef00d1,
120*437bfbebSnyanmisaka     0x00d100a6, 0x00d1006a, 0x00d100a6, 0x00d1006a, 0x00ef00cb, 0x00ef00d1, 0x00ef00cb, 0x00ef00d1,
121*437bfbebSnyanmisaka     0x00e30092, 0x00e300d0, 0x00e30092, 0x00e300d0, 0x002400e3, 0x002400fb, 0x002400e3, 0x002400fb,
122*437bfbebSnyanmisaka     0x00fb00d0, 0x00fb0041, 0x00fb00d0, 0x00fb0041, 0x002400e3, 0x002400fb, 0x002400e3, 0x002400fb,
123*437bfbebSnyanmisaka     0x00e30092, 0x00e300d0, 0x00e30092, 0x00e300d0, 0x002400e3, 0x002400fb, 0x002400e3, 0x002400fb,
124*437bfbebSnyanmisaka     0x00fb00d0, 0x00fb0041, 0x00fb00d0, 0x00fb0041, 0x002400e3, 0x002400fb, 0x002400e3, 0x002400fb,
125*437bfbebSnyanmisaka     0x003c0000, 0x003c00f6, 0x003c0000, 0x003c00f6, 0x00b2003c, 0x00b20031, 0x00b2003c, 0x00b20031,
126*437bfbebSnyanmisaka     0x003100f6, 0x00310067, 0x003100f6, 0x00310067, 0x00b2003c, 0x00b20031, 0x00b2003c, 0x00b20031,
127*437bfbebSnyanmisaka     0x003c0000, 0x003c00f6, 0x003c0000, 0x003c00f6, 0x00b2003c, 0x00b20031, 0x00b2003c, 0x00b20031,
128*437bfbebSnyanmisaka     0x003100f6, 0x00310067, 0x003100f6, 0x00310067, 0x00b2003c, 0x00b20031, 0x00b2003c, 0x00b20031,
129*437bfbebSnyanmisaka     0x00ae0072, 0x00ae009e, 0x00ae0072, 0x00ae009e, 0x001c00ae, 0x001c00c0, 0x001c00ae, 0x001c00c0,
130*437bfbebSnyanmisaka     0x00c0009e, 0x00c00032, 0x00c0009e, 0x00c00032, 0x001c00ae, 0x001c00c0, 0x001c00ae, 0x001c00c0,
131*437bfbebSnyanmisaka     0x00ae0072, 0x00ae009e, 0x00ae0072, 0x00ae009e, 0x001c00ae, 0x001c00c0, 0x001c00ae, 0x001c00c0,
132*437bfbebSnyanmisaka     0x00c0009e, 0x00c00032, 0x00c0009e, 0x00c00032, 0x001c00ae, 0x001c00c0, 0x001c00ae, 0x001c00c0,
133*437bfbebSnyanmisaka     0x002f0033, 0x002f0041, 0x002f0033, 0x002f0041, 0x002c002f, 0x002c003c, 0x002c002f, 0x002c003c,
134*437bfbebSnyanmisaka     0x003c0041, 0x003c0051, 0x003c0041, 0x003c0051, 0x002c002f, 0x002c003c, 0x002c002f, 0x002c003c,
135*437bfbebSnyanmisaka     0x002f0033, 0x002f0041, 0x002f0033, 0x002f0041, 0x002c002f, 0x002c003c, 0x002c002f, 0x002c003c,
136*437bfbebSnyanmisaka     0x003c0041, 0x003c0051, 0x003c0041, 0x003c0051, 0x002c002f, 0x002c003c, 0x002c002f, 0x002c003c,
137*437bfbebSnyanmisaka     0x002b002e, 0x002b003a, 0x002b002e, 0x002b003a, 0x002a002b, 0x002a0037, 0x002a002b, 0x002a0037,
138*437bfbebSnyanmisaka     0x0037003a, 0x0037004a, 0x0037003a, 0x0037004a, 0x002a002b, 0x002a0037, 0x002a002b, 0x002a0037,
139*437bfbebSnyanmisaka     0x002b002e, 0x002b003a, 0x002b002e, 0x002b003a, 0x002a002b, 0x002a0037, 0x002a002b, 0x002a0037,
140*437bfbebSnyanmisaka     0x0037003a, 0x0037004a, 0x0037003a, 0x0037004a, 0x002a002b, 0x002a0037, 0x002a002b, 0x002a0037,
141*437bfbebSnyanmisaka     0x01250127, 0x01250131, 0x01250127, 0x01250131, 0x01220125, 0x0122012e, 0x01220125, 0x0122012e,
142*437bfbebSnyanmisaka     0x012e0131, 0x012e013e, 0x012e0131, 0x012e013e, 0x01220125, 0x0122012e, 0x01220125, 0x0122012e,
143*437bfbebSnyanmisaka     0x01250127, 0x01250131, 0x01250127, 0x01250131, 0x01220125, 0x0122012e, 0x01220125, 0x0122012e,
144*437bfbebSnyanmisaka     0x012e0131, 0x012e013e, 0x012e0131, 0x012e013e, 0x01220125, 0x0122012e, 0x01220125, 0x0122012e,
145*437bfbebSnyanmisaka     0x01220124, 0x0122012e, 0x01220124, 0x0122012e, 0x01200122, 0x0120012b, 0x01200122, 0x0120012b,
146*437bfbebSnyanmisaka     0x012b012e, 0x012b013a, 0x012b012e, 0x012b013a, 0x01200122, 0x0120012b, 0x01200122, 0x0120012b,
147*437bfbebSnyanmisaka     0x01220124, 0x0122012e, 0x01220124, 0x0122012e, 0x01200122, 0x0120012b, 0x01200122, 0x0120012b,
148*437bfbebSnyanmisaka     0x012b012e, 0x012b013a, 0x012b012e, 0x012b013a, 0x01200122, 0x0120012b, 0x01200122, 0x0120012b,
149*437bfbebSnyanmisaka     0x001e0020, 0x001e0028, 0x001e0020, 0x001e0028, 0x001c001e, 0x001c0026, 0x001c001e, 0x001c0026,
150*437bfbebSnyanmisaka     0x00260028, 0x00260033, 0x00260028, 0x00260033, 0x001c001e, 0x001c0026, 0x001c001e, 0x001c0026,
151*437bfbebSnyanmisaka     0x001e0020, 0x001e0028, 0x001e0020, 0x001e0028, 0x001c001e, 0x001c0026, 0x001c001e, 0x001c0026,
152*437bfbebSnyanmisaka     0x00260028, 0x00260033, 0x00260028, 0x00260033, 0x001c001e, 0x001c0026, 0x001c001e, 0x001c0026,
153*437bfbebSnyanmisaka     0x001a001c, 0x001a0023, 0x001a001c, 0x001a0023, 0x0019001a, 0x00190021, 0x0019001a, 0x00190021,
154*437bfbebSnyanmisaka     0x00210023, 0x0021002d, 0x00210023, 0x0021002d, 0x0019001a, 0x00190021, 0x0019001a, 0x00190021,
155*437bfbebSnyanmisaka     0x001a001c, 0x001a0023, 0x001a001c, 0x001a0023, 0x0019001a, 0x00190021, 0x0019001a, 0x00190021,
156*437bfbebSnyanmisaka     0x00210023, 0x0021002d, 0x00210023, 0x0021002d, 0x0019001a, 0x00190021, 0x0019001a, 0x00190021,
157*437bfbebSnyanmisaka };
158*437bfbebSnyanmisaka 
159*437bfbebSnyanmisaka const RK_U32 klut_weight[24] = {
160*437bfbebSnyanmisaka     0x50800080, 0x00330000, 0xA1000100, 0x00660000, 0x42000200, 0x00CC0001,
161*437bfbebSnyanmisaka     0x84000400, 0x01980002, 0x08000800, 0x03300005, 0x10001000, 0x0660000A,
162*437bfbebSnyanmisaka     0x20002000, 0x0CC00014, 0x40004000, 0x19800028, 0x80008000, 0x33000050,
163*437bfbebSnyanmisaka     0x00010000, 0x660000A1, 0x00020000, 0xCC000142, 0xFF83FFFF, 0x000001FF
164*437bfbebSnyanmisaka };
165*437bfbebSnyanmisaka 
166*437bfbebSnyanmisaka const RK_U32 lamd_satd_qp[52] = {
167*437bfbebSnyanmisaka     0x00000183, 0x000001b2, 0x000001e7, 0x00000223, 0x00000266, 0x000002b1, 0x00000305, 0x00000364,
168*437bfbebSnyanmisaka     0x000003ce, 0x00000445, 0x000004cb, 0x00000562, 0x0000060a, 0x000006c8, 0x0000079c, 0x0000088b,
169*437bfbebSnyanmisaka     0x00000996, 0x00000ac3, 0x00000c14, 0x00000d8f, 0x00000f38, 0x00001115, 0x0000132d, 0x00001586,
170*437bfbebSnyanmisaka     0x00001829, 0x00001b1e, 0x00001e70, 0x0000222b, 0x0000265a, 0x00002b0c, 0x00003052, 0x0000363c,
171*437bfbebSnyanmisaka     0x00003ce1, 0x00004455, 0x00004cb4, 0x00005618, 0x000060a3, 0x00006c79, 0x000079c2, 0x000088ab,
172*437bfbebSnyanmisaka     0x00009967, 0x0000ac30, 0x0000c147, 0x0000d8f2, 0x0000f383, 0x00011155, 0x000132ce, 0x00015861,
173*437bfbebSnyanmisaka     0x0001828d, 0x0001b1e4, 0x0001e706, 0x000222ab
174*437bfbebSnyanmisaka };
175*437bfbebSnyanmisaka 
176*437bfbebSnyanmisaka const RK_U32 lamd_moda_qp[52] = {
177*437bfbebSnyanmisaka     0x00000049, 0x0000005c, 0x00000074, 0x00000092, 0x000000b8, 0x000000e8, 0x00000124, 0x00000170,
178*437bfbebSnyanmisaka     0x000001cf, 0x00000248, 0x000002df, 0x0000039f, 0x0000048f, 0x000005bf, 0x0000073d, 0x0000091f,
179*437bfbebSnyanmisaka     0x00000b7e, 0x00000e7a, 0x0000123d, 0x000016fb, 0x00001cf4, 0x0000247b, 0x00002df6, 0x000039e9,
180*437bfbebSnyanmisaka     0x000048f6, 0x00005bed, 0x000073d1, 0x000091ec, 0x0000b7d9, 0x0000e7a2, 0x000123d7, 0x00016fb2,
181*437bfbebSnyanmisaka     0x0001cf44, 0x000247ae, 0x0002df64, 0x00039e89, 0x00048f5c, 0x0005bec8, 0x00073d12, 0x00091eb8,
182*437bfbebSnyanmisaka     0x000b7d90, 0x000e7a23, 0x00123d71, 0x0016fb20, 0x001cf446, 0x00247ae1, 0x002df640, 0x0039e88c,
183*437bfbebSnyanmisaka     0x0048f5c3, 0x005bec81, 0x0073d119, 0x0091eb85
184*437bfbebSnyanmisaka };
185*437bfbebSnyanmisaka 
186*437bfbebSnyanmisaka const RK_U32 lamd_modb_qp[52] = {
187*437bfbebSnyanmisaka     0x00000070, 0x00000089, 0x000000b0, 0x000000e0, 0x00000112, 0x00000160, 0x000001c0, 0x00000224,
188*437bfbebSnyanmisaka     0x000002c0, 0x00000380, 0x00000448, 0x00000580, 0x00000700, 0x00000890, 0x00000b00, 0x00000e00,
189*437bfbebSnyanmisaka     0x00001120, 0x00001600, 0x00001c00, 0x00002240, 0x00002c00, 0x00003800, 0x00004480, 0x00005800,
190*437bfbebSnyanmisaka     0x00007000, 0x00008900, 0x0000b000, 0x0000e000, 0x00011200, 0x00016000, 0x0001c000, 0x00022400,
191*437bfbebSnyanmisaka     0x0002c000, 0x00038000, 0x00044800, 0x00058000, 0x00070000, 0x00089000, 0x000b0000, 0x000e0000,
192*437bfbebSnyanmisaka     0x00112000, 0x00160000, 0x001c0000, 0x00224000, 0x002c0000, 0x00380000, 0x00448000, 0x00580000,
193*437bfbebSnyanmisaka     0x00700000, 0x00890000, 0x00b00000, 0x00e00000
194*437bfbebSnyanmisaka };
195*437bfbebSnyanmisaka 
196*437bfbebSnyanmisaka const RK_U32 lamd_satd_qp_510[52] = {
197*437bfbebSnyanmisaka     0x00000243, 0x00000289, 0x000002DA, 0x00000333, 0x00000397, 0x00000408, 0x00000487, 0x00000514,
198*437bfbebSnyanmisaka     0x000005B5, 0x00000667, 0x000007C9, 0x000008BD, 0x00000B52, 0x00000CB5, 0x00000E44, 0x00001002,
199*437bfbebSnyanmisaka     0x000011F9, 0x0000142D, 0x00001523, 0x000017BA, 0x00001AA2, 0x0000199F, 0x00001CC2, 0x00002049,
200*437bfbebSnyanmisaka     0x0000243C, 0x000032D8, 0x00002DA8, 0x0000333F, 0x00003985, 0x00004092, 0x00004879, 0x000065B0,
201*437bfbebSnyanmisaka     0x000062EC, 0x000088AA, 0x00007CA2, 0x0000AC30, 0x00009D08, 0x0000B043, 0x0000C5D9, 0x0000EF29,
202*437bfbebSnyanmisaka     0x00010C74, 0x00012D54, 0x000121E9, 0x00014569, 0x00018BB4, 0x0001BC2A, 0x0001F28E, 0x00020490,
203*437bfbebSnyanmisaka     0x000243D3, 0x00028AD4, 0x0002DA89, 0x000333FF,
204*437bfbebSnyanmisaka };
205*437bfbebSnyanmisaka 
206*437bfbebSnyanmisaka static const RK_S32 zeros[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
207*437bfbebSnyanmisaka 
208*437bfbebSnyanmisaka static VepuFmtCfg vepu5xx_yuv_cfg[MPP_FMT_YUV_BUTT] = {
209*437bfbebSnyanmisaka     { /* MPP_FMT_YUV420SP */
210*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV420SP,
211*437bfbebSnyanmisaka         .alpha_swap = 0,
212*437bfbebSnyanmisaka         .rbuv_swap = 0,
213*437bfbebSnyanmisaka         .src_range = 0,
214*437bfbebSnyanmisaka         .src_endian = 0,
215*437bfbebSnyanmisaka         .weight = zeros,
216*437bfbebSnyanmisaka         .offset = zeros,
217*437bfbebSnyanmisaka     },
218*437bfbebSnyanmisaka     { /* MPP_FMT_YUV420SP_10BIT */
219*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
220*437bfbebSnyanmisaka         .alpha_swap = 0,
221*437bfbebSnyanmisaka         .rbuv_swap = 0,
222*437bfbebSnyanmisaka         .src_range = 0,
223*437bfbebSnyanmisaka         .src_endian = 0,
224*437bfbebSnyanmisaka         .weight = zeros,
225*437bfbebSnyanmisaka         .offset = zeros,
226*437bfbebSnyanmisaka     },
227*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422SP */
228*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV422SP,
229*437bfbebSnyanmisaka         .alpha_swap = 0,
230*437bfbebSnyanmisaka         .rbuv_swap = 0,
231*437bfbebSnyanmisaka         .src_range = 0,
232*437bfbebSnyanmisaka         .src_endian = 0,
233*437bfbebSnyanmisaka         .weight = zeros,
234*437bfbebSnyanmisaka         .offset = zeros,
235*437bfbebSnyanmisaka     },
236*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422SP_10BIT */
237*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
238*437bfbebSnyanmisaka         .alpha_swap = 0,
239*437bfbebSnyanmisaka         .rbuv_swap = 0,
240*437bfbebSnyanmisaka         .src_range = 0,
241*437bfbebSnyanmisaka         .src_endian = 0,
242*437bfbebSnyanmisaka         .weight = zeros,
243*437bfbebSnyanmisaka         .offset = zeros,
244*437bfbebSnyanmisaka     },
245*437bfbebSnyanmisaka     { /* MPP_FMT_YUV420P */
246*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV420P,
247*437bfbebSnyanmisaka         .alpha_swap = 0,
248*437bfbebSnyanmisaka         .rbuv_swap = 0,
249*437bfbebSnyanmisaka         .src_range = 0,
250*437bfbebSnyanmisaka         .src_endian = 0,
251*437bfbebSnyanmisaka         .weight = zeros,
252*437bfbebSnyanmisaka         .offset = zeros,
253*437bfbebSnyanmisaka     },
254*437bfbebSnyanmisaka     { /* MPP_FMT_YUV420SP_VU   */
255*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV420SP,
256*437bfbebSnyanmisaka         .alpha_swap = 0,
257*437bfbebSnyanmisaka         .rbuv_swap = 1,
258*437bfbebSnyanmisaka         .src_range = 0,
259*437bfbebSnyanmisaka         .src_endian = 0,
260*437bfbebSnyanmisaka         .weight = zeros,
261*437bfbebSnyanmisaka         .offset = zeros,
262*437bfbebSnyanmisaka     },
263*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422P */
264*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV422P,
265*437bfbebSnyanmisaka         .alpha_swap = 0,
266*437bfbebSnyanmisaka         .rbuv_swap = 0,
267*437bfbebSnyanmisaka         .src_range = 0,
268*437bfbebSnyanmisaka         .src_endian = 0,
269*437bfbebSnyanmisaka         .weight = zeros,
270*437bfbebSnyanmisaka         .offset = zeros,
271*437bfbebSnyanmisaka     },
272*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422SP_VU */
273*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV422SP,
274*437bfbebSnyanmisaka         .alpha_swap = 0,
275*437bfbebSnyanmisaka         .rbuv_swap = 0,
276*437bfbebSnyanmisaka         .src_range = 0,
277*437bfbebSnyanmisaka         .src_endian = 0,
278*437bfbebSnyanmisaka         .weight = zeros,
279*437bfbebSnyanmisaka         .offset = zeros,
280*437bfbebSnyanmisaka     },
281*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422_YUYV */
282*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUYV422,
283*437bfbebSnyanmisaka         .alpha_swap = 0,
284*437bfbebSnyanmisaka         .rbuv_swap = 0,
285*437bfbebSnyanmisaka         .src_range = 0,
286*437bfbebSnyanmisaka         .src_endian = 0,
287*437bfbebSnyanmisaka         .weight = zeros,
288*437bfbebSnyanmisaka         .offset = zeros,
289*437bfbebSnyanmisaka     },
290*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422_YVYU */
291*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUYV422,
292*437bfbebSnyanmisaka         .alpha_swap = 0,
293*437bfbebSnyanmisaka         .rbuv_swap = 1,
294*437bfbebSnyanmisaka         .src_range = 0,
295*437bfbebSnyanmisaka         .src_endian = 0,
296*437bfbebSnyanmisaka         .weight = zeros,
297*437bfbebSnyanmisaka         .offset = zeros,
298*437bfbebSnyanmisaka     },
299*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422_UYVY */
300*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_UYVY422,
301*437bfbebSnyanmisaka         .alpha_swap = 0,
302*437bfbebSnyanmisaka         .rbuv_swap = 0,
303*437bfbebSnyanmisaka         .src_range = 0,
304*437bfbebSnyanmisaka         .src_endian = 0,
305*437bfbebSnyanmisaka         .weight = zeros,
306*437bfbebSnyanmisaka         .offset = zeros,
307*437bfbebSnyanmisaka     },
308*437bfbebSnyanmisaka     { /* MPP_FMT_YUV422_VYUY */
309*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_UYVY422,
310*437bfbebSnyanmisaka         .alpha_swap = 0,
311*437bfbebSnyanmisaka         .rbuv_swap = 1,
312*437bfbebSnyanmisaka         .src_range = 0,
313*437bfbebSnyanmisaka         .src_endian = 0,
314*437bfbebSnyanmisaka         .weight = zeros,
315*437bfbebSnyanmisaka         .offset = zeros,
316*437bfbebSnyanmisaka     },
317*437bfbebSnyanmisaka     { /* MPP_FMT_YUV400 */
318*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV400,
319*437bfbebSnyanmisaka         .alpha_swap = 0,
320*437bfbebSnyanmisaka         .rbuv_swap = 0,
321*437bfbebSnyanmisaka         .src_range = 0,
322*437bfbebSnyanmisaka         .src_endian = 0,
323*437bfbebSnyanmisaka         .weight = zeros,
324*437bfbebSnyanmisaka         .offset = zeros,
325*437bfbebSnyanmisaka     },
326*437bfbebSnyanmisaka     { /* MPP_FMT_YUV440SP */
327*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
328*437bfbebSnyanmisaka         .alpha_swap = 0,
329*437bfbebSnyanmisaka         .rbuv_swap = 0,
330*437bfbebSnyanmisaka         .src_range = 0,
331*437bfbebSnyanmisaka         .src_endian = 0,
332*437bfbebSnyanmisaka         .weight = zeros,
333*437bfbebSnyanmisaka         .offset = zeros,
334*437bfbebSnyanmisaka     },
335*437bfbebSnyanmisaka     { /* MPP_FMT_YUV411SP */
336*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
337*437bfbebSnyanmisaka         .alpha_swap = 0,
338*437bfbebSnyanmisaka         .rbuv_swap = 0,
339*437bfbebSnyanmisaka         .src_range = 0,
340*437bfbebSnyanmisaka         .src_endian = 0,
341*437bfbebSnyanmisaka         .weight = zeros,
342*437bfbebSnyanmisaka         .offset = zeros,
343*437bfbebSnyanmisaka     },
344*437bfbebSnyanmisaka     { /* MPP_FMT_YUV444SP */
345*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV444SP,
346*437bfbebSnyanmisaka         .alpha_swap = 0,
347*437bfbebSnyanmisaka         .rbuv_swap = 0,
348*437bfbebSnyanmisaka         .src_range = 0,
349*437bfbebSnyanmisaka         .src_endian = 0,
350*437bfbebSnyanmisaka         .weight = zeros,
351*437bfbebSnyanmisaka         .offset = zeros,
352*437bfbebSnyanmisaka     },
353*437bfbebSnyanmisaka 
354*437bfbebSnyanmisaka     { /* MPP_FMT_YUV444P */
355*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_YUV444P,
356*437bfbebSnyanmisaka         .alpha_swap = 0,
357*437bfbebSnyanmisaka         .rbuv_swap = 1,
358*437bfbebSnyanmisaka         .src_range = 0,
359*437bfbebSnyanmisaka         .src_endian = 0,
360*437bfbebSnyanmisaka         .weight = zeros,
361*437bfbebSnyanmisaka         .offset = zeros,
362*437bfbebSnyanmisaka     },
363*437bfbebSnyanmisaka 
364*437bfbebSnyanmisaka     { /* MPP_FMT_YUV444SP_10BIT */
365*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
366*437bfbebSnyanmisaka         .alpha_swap = 0,
367*437bfbebSnyanmisaka         .rbuv_swap = 0,
368*437bfbebSnyanmisaka         .src_range = 0,
369*437bfbebSnyanmisaka         .src_endian = 0,
370*437bfbebSnyanmisaka         .weight = zeros,
371*437bfbebSnyanmisaka         .offset = zeros,
372*437bfbebSnyanmisaka     },
373*437bfbebSnyanmisaka 
374*437bfbebSnyanmisaka     { /* MPP_FMT_AYUV2BPP */
375*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_AYUV2BPP,
376*437bfbebSnyanmisaka         .alpha_swap = 0,
377*437bfbebSnyanmisaka         .rbuv_swap = 0,
378*437bfbebSnyanmisaka         .src_range = 0,
379*437bfbebSnyanmisaka         .src_endian = 0,
380*437bfbebSnyanmisaka         .weight = zeros,
381*437bfbebSnyanmisaka         .offset = zeros,
382*437bfbebSnyanmisaka     },
383*437bfbebSnyanmisaka 
384*437bfbebSnyanmisaka     { /* MPP_FMT_AYUV1BPP */
385*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_AYUV1BPP,
386*437bfbebSnyanmisaka         .alpha_swap = 0,
387*437bfbebSnyanmisaka         .rbuv_swap = 0,
388*437bfbebSnyanmisaka         .src_range = 0,
389*437bfbebSnyanmisaka         .src_endian = 0,
390*437bfbebSnyanmisaka         .weight = zeros,
391*437bfbebSnyanmisaka         .offset = zeros,
392*437bfbebSnyanmisaka     },
393*437bfbebSnyanmisaka };
394*437bfbebSnyanmisaka 
395*437bfbebSnyanmisaka static VepuFmtCfg vepu5xx_rgb_cfg[MPP_FMT_RGB_BUTT - MPP_FRAME_FMT_RGB] = {
396*437bfbebSnyanmisaka     { /* MPP_FMT_RGB565 */
397*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGR565,
398*437bfbebSnyanmisaka         .alpha_swap = 0,
399*437bfbebSnyanmisaka         .rbuv_swap = 1,
400*437bfbebSnyanmisaka         .src_range = 0,
401*437bfbebSnyanmisaka         .src_endian = 1,
402*437bfbebSnyanmisaka         .weight = zeros,
403*437bfbebSnyanmisaka         .offset = zeros,
404*437bfbebSnyanmisaka     },
405*437bfbebSnyanmisaka     { /* MPP_FMT_BGR565 */
406*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGR565,
407*437bfbebSnyanmisaka         .alpha_swap = 0,
408*437bfbebSnyanmisaka         .rbuv_swap = 0,
409*437bfbebSnyanmisaka         .src_range = 0,
410*437bfbebSnyanmisaka         .src_endian = 1,
411*437bfbebSnyanmisaka         .weight = zeros,
412*437bfbebSnyanmisaka         .offset = zeros,
413*437bfbebSnyanmisaka     },
414*437bfbebSnyanmisaka     { /* MPP_FMT_RGB555 */
415*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
416*437bfbebSnyanmisaka         .alpha_swap = 0,
417*437bfbebSnyanmisaka         .rbuv_swap = 0,
418*437bfbebSnyanmisaka         .src_range = 0,
419*437bfbebSnyanmisaka         .src_endian = 0,
420*437bfbebSnyanmisaka         .weight = zeros,
421*437bfbebSnyanmisaka         .offset = zeros,
422*437bfbebSnyanmisaka     },
423*437bfbebSnyanmisaka     { /* MPP_FMT_BGR555 */
424*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
425*437bfbebSnyanmisaka         .alpha_swap = 0,
426*437bfbebSnyanmisaka         .rbuv_swap = 0,
427*437bfbebSnyanmisaka         .src_range = 0,
428*437bfbebSnyanmisaka         .src_endian = 0,
429*437bfbebSnyanmisaka         .weight = zeros,
430*437bfbebSnyanmisaka         .offset = zeros,
431*437bfbebSnyanmisaka     },
432*437bfbebSnyanmisaka     { /* MPP_FMT_RGB444 */
433*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
434*437bfbebSnyanmisaka         .alpha_swap = 0,
435*437bfbebSnyanmisaka         .rbuv_swap = 0,
436*437bfbebSnyanmisaka         .src_range = 0,
437*437bfbebSnyanmisaka         .src_endian = 0,
438*437bfbebSnyanmisaka         .weight = zeros,
439*437bfbebSnyanmisaka         .offset = zeros,
440*437bfbebSnyanmisaka     },
441*437bfbebSnyanmisaka     { /* MPP_FMT_BGR444 */
442*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
443*437bfbebSnyanmisaka         .alpha_swap = 0,
444*437bfbebSnyanmisaka         .rbuv_swap = 0,
445*437bfbebSnyanmisaka         .src_range = 0,
446*437bfbebSnyanmisaka         .src_endian = 0,
447*437bfbebSnyanmisaka         .weight = zeros,
448*437bfbebSnyanmisaka         .offset = zeros,
449*437bfbebSnyanmisaka     },
450*437bfbebSnyanmisaka     { /* MPP_FMT_RGB888 */
451*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGR888,
452*437bfbebSnyanmisaka         .alpha_swap = 0,
453*437bfbebSnyanmisaka         .rbuv_swap = 0,
454*437bfbebSnyanmisaka         .src_range = 0,
455*437bfbebSnyanmisaka         .src_endian = 0,
456*437bfbebSnyanmisaka         .weight = zeros,
457*437bfbebSnyanmisaka         .offset = zeros,
458*437bfbebSnyanmisaka     },
459*437bfbebSnyanmisaka     { /* MPP_FMT_BGR888 */
460*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGR888,
461*437bfbebSnyanmisaka         .alpha_swap = 0,
462*437bfbebSnyanmisaka         .rbuv_swap = 1,
463*437bfbebSnyanmisaka         .src_range = 0,
464*437bfbebSnyanmisaka         .src_endian = 0,
465*437bfbebSnyanmisaka         .weight = zeros,
466*437bfbebSnyanmisaka         .offset = zeros,
467*437bfbebSnyanmisaka     },
468*437bfbebSnyanmisaka     { /* MPP_FMT_RGB101010 */
469*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
470*437bfbebSnyanmisaka         .alpha_swap = 0,
471*437bfbebSnyanmisaka         .rbuv_swap = 0,
472*437bfbebSnyanmisaka         .src_range = 0,
473*437bfbebSnyanmisaka         .src_endian = 0,
474*437bfbebSnyanmisaka         .weight = zeros,
475*437bfbebSnyanmisaka         .offset = zeros,
476*437bfbebSnyanmisaka     },
477*437bfbebSnyanmisaka     { /* MPP_FMT_BGR101010 */
478*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BUTT,
479*437bfbebSnyanmisaka         .alpha_swap = 0,
480*437bfbebSnyanmisaka         .rbuv_swap = 0,
481*437bfbebSnyanmisaka         .src_range = 0,
482*437bfbebSnyanmisaka         .src_endian = 0,
483*437bfbebSnyanmisaka         .weight = zeros,
484*437bfbebSnyanmisaka         .offset = zeros,
485*437bfbebSnyanmisaka     },
486*437bfbebSnyanmisaka     { /* MPP_FMT_ARGB8888 */
487*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGRA8888,
488*437bfbebSnyanmisaka         .alpha_swap = 1,
489*437bfbebSnyanmisaka         .rbuv_swap = 1,
490*437bfbebSnyanmisaka         .src_range = 0,
491*437bfbebSnyanmisaka         .src_endian = 0,
492*437bfbebSnyanmisaka         .weight = zeros,
493*437bfbebSnyanmisaka         .offset = zeros,
494*437bfbebSnyanmisaka     },
495*437bfbebSnyanmisaka     { /* MPP_FMT_ABGR8888 */
496*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGRA8888,
497*437bfbebSnyanmisaka         .alpha_swap = 1,
498*437bfbebSnyanmisaka         .rbuv_swap = 0,
499*437bfbebSnyanmisaka         .src_range = 0,
500*437bfbebSnyanmisaka         .src_endian = 0,
501*437bfbebSnyanmisaka         .weight = zeros,
502*437bfbebSnyanmisaka         .offset = zeros,
503*437bfbebSnyanmisaka     },
504*437bfbebSnyanmisaka     { /* MPP_FMT_BGRA8888 */
505*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGRA8888,
506*437bfbebSnyanmisaka         .alpha_swap = 0,
507*437bfbebSnyanmisaka         .rbuv_swap = 0,
508*437bfbebSnyanmisaka         .src_range = 0,
509*437bfbebSnyanmisaka         .src_endian = 0,
510*437bfbebSnyanmisaka         .weight = zeros,
511*437bfbebSnyanmisaka         .offset = zeros,
512*437bfbebSnyanmisaka     },
513*437bfbebSnyanmisaka     { /* MPP_FMT_RGBA8888 */
514*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_BGRA8888,
515*437bfbebSnyanmisaka         .alpha_swap = 0,
516*437bfbebSnyanmisaka         .rbuv_swap = 1,
517*437bfbebSnyanmisaka         .src_endian = 0,
518*437bfbebSnyanmisaka         .src_range = 0,
519*437bfbebSnyanmisaka         .weight = zeros,
520*437bfbebSnyanmisaka         .offset = zeros,
521*437bfbebSnyanmisaka     },
522*437bfbebSnyanmisaka     { /* MPP_FMT_ARGB4444 */
523*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_ARGB4444,
524*437bfbebSnyanmisaka         .alpha_swap = 0,
525*437bfbebSnyanmisaka         .rbuv_swap = 1,
526*437bfbebSnyanmisaka         .src_endian = 0,
527*437bfbebSnyanmisaka         .src_range = 0,
528*437bfbebSnyanmisaka         .weight = zeros,
529*437bfbebSnyanmisaka         .offset = zeros,
530*437bfbebSnyanmisaka     },
531*437bfbebSnyanmisaka     { /* MPP_FMT_ARGB1555 */
532*437bfbebSnyanmisaka         .format = VEPU5xx_FMT_ARGB1555,
533*437bfbebSnyanmisaka         .alpha_swap = 0,
534*437bfbebSnyanmisaka         .rbuv_swap = 1,
535*437bfbebSnyanmisaka         .src_endian = 0,
536*437bfbebSnyanmisaka         .src_range = 0,
537*437bfbebSnyanmisaka         .weight = zeros,
538*437bfbebSnyanmisaka         .offset = zeros,
539*437bfbebSnyanmisaka     },
540*437bfbebSnyanmisaka };
541*437bfbebSnyanmisaka 
copy2osd2(MppEncOSDData2 * dst,MppEncOSDData * src1,MppEncOSDData2 * src2)542*437bfbebSnyanmisaka MPP_RET copy2osd2(MppEncOSDData2* dst, MppEncOSDData *src1, MppEncOSDData2 *src2)
543*437bfbebSnyanmisaka {
544*437bfbebSnyanmisaka     MPP_RET ret = MPP_OK;
545*437bfbebSnyanmisaka     RK_U32 i = 0;
546*437bfbebSnyanmisaka 
547*437bfbebSnyanmisaka     if (src1) {
548*437bfbebSnyanmisaka         dst->num_region = src1->num_region;
549*437bfbebSnyanmisaka         for (i = 0; i < src1->num_region; i++) {
550*437bfbebSnyanmisaka             dst->region[i].enable       = src1->region[i].enable;
551*437bfbebSnyanmisaka             dst->region[i].inverse      = src1->region[i].inverse;
552*437bfbebSnyanmisaka             dst->region[i].start_mb_x   = src1->region[i].start_mb_x;
553*437bfbebSnyanmisaka             dst->region[i].start_mb_y   = src1->region[i].start_mb_y;
554*437bfbebSnyanmisaka             dst->region[i].num_mb_x     = src1->region[i].num_mb_x;
555*437bfbebSnyanmisaka             dst->region[i].num_mb_y     = src1->region[i].num_mb_y;
556*437bfbebSnyanmisaka             dst->region[i].buf_offset   = src1->region[i].buf_offset;
557*437bfbebSnyanmisaka             dst->region[i].buf          = src1->buf;
558*437bfbebSnyanmisaka         }
559*437bfbebSnyanmisaka         ret = MPP_OK;
560*437bfbebSnyanmisaka     } else if (src2) {
561*437bfbebSnyanmisaka         memcpy(dst, src2, sizeof(MppEncOSDData2));
562*437bfbebSnyanmisaka         ret = MPP_OK;
563*437bfbebSnyanmisaka     } else {
564*437bfbebSnyanmisaka         ret = MPP_NOK;
565*437bfbebSnyanmisaka     }
566*437bfbebSnyanmisaka     return ret;
567*437bfbebSnyanmisaka }
568*437bfbebSnyanmisaka 
vepu5xx_set_fmt(VepuFmtCfg * cfg,MppFrameFormat format)569*437bfbebSnyanmisaka MPP_RET vepu5xx_set_fmt(VepuFmtCfg * cfg, MppFrameFormat format)
570*437bfbebSnyanmisaka {
571*437bfbebSnyanmisaka     VepuFmtCfg *fmt = NULL;
572*437bfbebSnyanmisaka     MPP_RET ret = MPP_OK;
573*437bfbebSnyanmisaka 
574*437bfbebSnyanmisaka     format &= MPP_FRAME_FMT_MASK;
575*437bfbebSnyanmisaka 
576*437bfbebSnyanmisaka     if (MPP_FRAME_FMT_IS_YUV(format))
577*437bfbebSnyanmisaka         fmt = &vepu5xx_yuv_cfg[format - MPP_FRAME_FMT_YUV];
578*437bfbebSnyanmisaka     else if (MPP_FRAME_FMT_IS_RGB(format))
579*437bfbebSnyanmisaka         fmt = &vepu5xx_rgb_cfg[format - MPP_FRAME_FMT_RGB];
580*437bfbebSnyanmisaka     else {
581*437bfbebSnyanmisaka         memset(cfg, 0, sizeof(*cfg));
582*437bfbebSnyanmisaka         cfg->format = VEPU5xx_FMT_BUTT;
583*437bfbebSnyanmisaka     }
584*437bfbebSnyanmisaka 
585*437bfbebSnyanmisaka     if (fmt && fmt->format != VEPU5xx_FMT_BUTT)
586*437bfbebSnyanmisaka         memcpy(cfg, fmt, sizeof(*cfg));
587*437bfbebSnyanmisaka     else {
588*437bfbebSnyanmisaka         mpp_err_f("unsupport frame format %x\n", format);
589*437bfbebSnyanmisaka         cfg->format = VEPU5xx_FMT_BUTT;
590*437bfbebSnyanmisaka         ret = MPP_NOK;
591*437bfbebSnyanmisaka     }
592*437bfbebSnyanmisaka 
593*437bfbebSnyanmisaka     return ret;
594*437bfbebSnyanmisaka }