xref: /rockchip-linux_mpp/mpp/hal/vpu/jpegd/hal_jpegd_common.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  *
3*437bfbebSnyanmisaka  * Copyright 2015 - 2017 Rockchip Electronics Co. LTD
4*437bfbebSnyanmisaka  *
5*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
6*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
7*437bfbebSnyanmisaka  * You may obtain a copy of the License at
8*437bfbebSnyanmisaka  *
9*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
10*437bfbebSnyanmisaka  *
11*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
12*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
13*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
15*437bfbebSnyanmisaka  * limitations under the License.
16*437bfbebSnyanmisaka  */
17*437bfbebSnyanmisaka #ifndef __HAL_JPEGD_COMMON_H__
18*437bfbebSnyanmisaka #define __HAL_JPEGD_COMMON_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "hal_jpegd_base.h"
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka #define BRIGHTNESS                                  4    /* -128 ~ 127 */
23*437bfbebSnyanmisaka #define CONTRAST                                    0    /* -64 ~ 64 */
24*437bfbebSnyanmisaka #define SATURATION                                  0    /* -64 ~ 128 */
25*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV422INTERLAVE                0
26*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV420SEMI                     1
27*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV420PLANAR                   2
28*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV400                         3
29*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV422SEMI                     4
30*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV420SEMITIELED               5
31*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV440SEMI                     6
32*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV444_SEMI                    7
33*437bfbebSnyanmisaka #define PP_IN_FORMAT_YUV411_SEMI                    8
34*437bfbebSnyanmisaka 
35*437bfbebSnyanmisaka #define PP_OUT_FORMAT_RGB565                        0
36*437bfbebSnyanmisaka #define PP_OUT_FORMAT_ARGB                          1
37*437bfbebSnyanmisaka #define PP_OUT_FORMAT_YUV422INTERLAVE               3
38*437bfbebSnyanmisaka #define PP_OUT_FORMAT_YUV420INTERLAVE               5
39*437bfbebSnyanmisaka 
40*437bfbebSnyanmisaka #define MIN_WIDTH                         (48)      /* 48 Bytes */
41*437bfbebSnyanmisaka #define MIN_HEIGHT                        (48)      /* 48 Bytes */
42*437bfbebSnyanmisaka #define MAX_WIDTH                         (8*1024)  /* 4K Bytes */
43*437bfbebSnyanmisaka #define MAX_HEIGHT                        (8*1024)  /* 4K Bytes */
44*437bfbebSnyanmisaka #define MAX_STREAM_LENGTH                 (MAX_WIDTH * MAX_HEIGHT) /* 16M Bytes */
45*437bfbebSnyanmisaka 
46*437bfbebSnyanmisaka static const RK_U8 zzOrder[64] = {
47*437bfbebSnyanmisaka     0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5,
48*437bfbebSnyanmisaka     12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28,
49*437bfbebSnyanmisaka     35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
50*437bfbebSnyanmisaka     58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
51*437bfbebSnyanmisaka };
52*437bfbebSnyanmisaka 
53*437bfbebSnyanmisaka #define PP_RGB_CFG_LENTH (10)
54*437bfbebSnyanmisaka typedef struct PpRgbCfg_t {
55*437bfbebSnyanmisaka     MppFrameFormat fmt;
56*437bfbebSnyanmisaka     RK_U8   pp_out_fmt;
57*437bfbebSnyanmisaka     RK_U8   out_endian;
58*437bfbebSnyanmisaka     RK_U8   swap_16;
59*437bfbebSnyanmisaka     RK_U8   swap_32;
60*437bfbebSnyanmisaka     RK_U8   rgb_in_32;
61*437bfbebSnyanmisaka     RK_U8   r_padd;
62*437bfbebSnyanmisaka     RK_U8   g_padd;
63*437bfbebSnyanmisaka     RK_U8   b_padd;
64*437bfbebSnyanmisaka     RK_U8   r_dither;
65*437bfbebSnyanmisaka     RK_U8   g_dither;
66*437bfbebSnyanmisaka     RK_U8   b_dither;
67*437bfbebSnyanmisaka     RK_U32  r_mask;
68*437bfbebSnyanmisaka     RK_U32  g_mask;
69*437bfbebSnyanmisaka     RK_U32  b_mask;
70*437bfbebSnyanmisaka } PpRgbCfg;
71*437bfbebSnyanmisaka 
72*437bfbebSnyanmisaka PpRgbCfg* get_pp_rgb_Cfg(MppFrameFormat fmt);
73*437bfbebSnyanmisaka RK_U32 jpegd_vdpu_tail_0xFF_patch(MppBuffer stream, RK_U32 length);
74*437bfbebSnyanmisaka 
75*437bfbebSnyanmisaka void jpegd_write_qp_ac_dc_table(JpegdHalCtx *ctx,
76*437bfbebSnyanmisaka                                 JpegdSyntax*syntax);
77*437bfbebSnyanmisaka 
78*437bfbebSnyanmisaka MPP_RET jpegd_setup_output_fmt(JpegdHalCtx *ctx, JpegdSyntax *syntax,
79*437bfbebSnyanmisaka                                RK_S32 output);
80*437bfbebSnyanmisaka 
81*437bfbebSnyanmisaka MPP_RET jpeg_image_check_size(RK_U32 hor_stride, RK_U32 ver_stride);
82*437bfbebSnyanmisaka 
83*437bfbebSnyanmisaka #endif /* __HAL_JPEGD_COMMON_H__ */
84