xref: /rockchip-linux_mpp/mpp/hal/vpu/jpege/hal_jpege_base.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  * Copyright 2015 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 #ifndef __HAL_JPEGE_BASE_H__
18*437bfbebSnyanmisaka #define __HAL_JPEGE_BASE_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "mpp_device.h"
21*437bfbebSnyanmisaka #include "hal_enc_task.h"
22*437bfbebSnyanmisaka 
23*437bfbebSnyanmisaka #include "vepu_common.h"
24*437bfbebSnyanmisaka 
25*437bfbebSnyanmisaka #include "jpege_syntax.h"
26*437bfbebSnyanmisaka #include "hal_jpege_hdr.h"
27*437bfbebSnyanmisaka 
28*437bfbebSnyanmisaka typedef struct hal_jpege_ctx_s {
29*437bfbebSnyanmisaka     MppDev              dev;
30*437bfbebSnyanmisaka     MppClientType       type;
31*437bfbebSnyanmisaka 
32*437bfbebSnyanmisaka     JpegeBits           bits;
33*437bfbebSnyanmisaka     /* NOTE: regs should reserve space for extra_info */
34*437bfbebSnyanmisaka     void                *regs;
35*437bfbebSnyanmisaka     void                *regs_out;
36*437bfbebSnyanmisaka     RK_U32              reg_size;
37*437bfbebSnyanmisaka     RK_S32              task_cnt;
38*437bfbebSnyanmisaka     RK_S32              task_idx;
39*437bfbebSnyanmisaka 
40*437bfbebSnyanmisaka     MppEncCfgSet        *cfg;
41*437bfbebSnyanmisaka     JpegeSyntax         syntax;
42*437bfbebSnyanmisaka     JpegeFeedback       feedback;
43*437bfbebSnyanmisaka 
44*437bfbebSnyanmisaka     /* For part encode mode */
45*437bfbebSnyanmisaka     RK_U32              mcu_h;
46*437bfbebSnyanmisaka     RK_U32              mcu_y;
47*437bfbebSnyanmisaka     RK_U8               *base;
48*437bfbebSnyanmisaka     size_t              size;
49*437bfbebSnyanmisaka     RK_U32              sw_bit;
50*437bfbebSnyanmisaka     RK_U32              part_bytepos;
51*437bfbebSnyanmisaka     RK_U32              part_x_fill;
52*437bfbebSnyanmisaka     RK_U32              part_y_fill;
53*437bfbebSnyanmisaka     RK_U32              rst_marker_idx;
54*437bfbebSnyanmisaka 
55*437bfbebSnyanmisaka     HalJpegeRc          hal_rc;
56*437bfbebSnyanmisaka     RK_S32              hal_start_pos;
57*437bfbebSnyanmisaka     VepuStrideCfg       stride_cfg;
58*437bfbebSnyanmisaka 
59*437bfbebSnyanmisaka     void                *ctx_ext;
60*437bfbebSnyanmisaka } HalJpegeCtx;
61*437bfbebSnyanmisaka 
62*437bfbebSnyanmisaka extern const RK_U32 qp_reorder_table[QUANTIZE_TABLE_SIZE];
63*437bfbebSnyanmisaka extern const RK_U16 jpege_restart_marker[8];
64*437bfbebSnyanmisaka 
65*437bfbebSnyanmisaka #ifdef __cplusplus
66*437bfbebSnyanmisaka extern "C" {
67*437bfbebSnyanmisaka #endif
68*437bfbebSnyanmisaka 
69*437bfbebSnyanmisaka void get_msb_lsb_at_pos(RK_U32 *msb, RK_U32 *lsb, RK_U8 *buf, RK_U32 bytepos);
70*437bfbebSnyanmisaka 
71*437bfbebSnyanmisaka #ifdef __cplusplus
72*437bfbebSnyanmisaka }
73*437bfbebSnyanmisaka #endif
74*437bfbebSnyanmisaka 
75*437bfbebSnyanmisaka #endif /* __HAL_JPEGE_BASE_H__ */
76