xref: /rockchip-linux_mpp/mpp/common/jpege_syntax.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 __JPEGE_SYNTAX_H__
18*437bfbebSnyanmisaka #define __JPEGE_SYNTAX_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "mpp_frame.h"
21*437bfbebSnyanmisaka #include "rk_venc_cmd.h"
22*437bfbebSnyanmisaka 
23*437bfbebSnyanmisaka #define MAX_NUMBER_OF_COMPONENTS 3
24*437bfbebSnyanmisaka #define DCT_SIZE 8
25*437bfbebSnyanmisaka 
26*437bfbebSnyanmisaka typedef enum EntroyTblClass_t {
27*437bfbebSnyanmisaka     TABLE_DC = 0,
28*437bfbebSnyanmisaka     TABLE_AC = 1,
29*437bfbebSnyanmisaka } EntroyTblClass;
30*437bfbebSnyanmisaka 
31*437bfbebSnyanmisaka typedef union JPEGCompInfo_t {
32*437bfbebSnyanmisaka     struct {
33*437bfbebSnyanmisaka         RK_U32 component_id     : 8;
34*437bfbebSnyanmisaka         RK_U32 h_sample_factor  : 8;
35*437bfbebSnyanmisaka         RK_U32 v_sample_factor  : 8;
36*437bfbebSnyanmisaka         RK_U32 tbl_selector     : 8;
37*437bfbebSnyanmisaka     };
38*437bfbebSnyanmisaka     RK_U32 val;
39*437bfbebSnyanmisaka } JPEGCompInfo;
40*437bfbebSnyanmisaka 
41*437bfbebSnyanmisaka typedef struct JpegeSyntax_t {
42*437bfbebSnyanmisaka     RK_U32              width;
43*437bfbebSnyanmisaka     RK_U32              height;
44*437bfbebSnyanmisaka     RK_U32              hor_stride;
45*437bfbebSnyanmisaka     RK_U32              ver_stride;
46*437bfbebSnyanmisaka     RK_U32              mcu_hor_cnt;
47*437bfbebSnyanmisaka     RK_U32              mcu_ver_cnt;
48*437bfbebSnyanmisaka     RK_U32              mcu_cnt;
49*437bfbebSnyanmisaka     RK_U32              mcu_width;
50*437bfbebSnyanmisaka     RK_U32              mcu_height;
51*437bfbebSnyanmisaka     MppFrameFormat      format;
52*437bfbebSnyanmisaka     MppFrameChromaFormat format_out;
53*437bfbebSnyanmisaka     MppFrameColorSpace  color;
54*437bfbebSnyanmisaka     MppEncRotationCfg   rotation;
55*437bfbebSnyanmisaka     RK_S32              mirroring;
56*437bfbebSnyanmisaka     RK_U32              offset_x;
57*437bfbebSnyanmisaka     RK_U32              offset_y;
58*437bfbebSnyanmisaka 
59*437bfbebSnyanmisaka     /* For quantization table */
60*437bfbebSnyanmisaka     RK_S32              q_mode;
61*437bfbebSnyanmisaka     RK_S32              quant;
62*437bfbebSnyanmisaka     RK_S32              q_factor;
63*437bfbebSnyanmisaka     RK_S32              qf_min;
64*437bfbebSnyanmisaka     RK_S32              qf_max;
65*437bfbebSnyanmisaka     RK_U8               *qtable_y;
66*437bfbebSnyanmisaka     RK_U8               *qtable_u;
67*437bfbebSnyanmisaka     RK_U8               *qtable_v;
68*437bfbebSnyanmisaka 
69*437bfbebSnyanmisaka     /*
70*437bfbebSnyanmisaka      * For color conversion
71*437bfbebSnyanmisaka      *
72*437bfbebSnyanmisaka      * 0 = bt601
73*437bfbebSnyanmisaka      * 1 = bt709
74*437bfbebSnyanmisaka      * 2 = user defined
75*437bfbebSnyanmisaka      */
76*437bfbebSnyanmisaka     RK_U32              color_conversion_type;
77*437bfbebSnyanmisaka     RK_U32              coeffA;
78*437bfbebSnyanmisaka     RK_U32              coeffB;
79*437bfbebSnyanmisaka     RK_U32              coeffC;
80*437bfbebSnyanmisaka     RK_U32              coeffE;
81*437bfbebSnyanmisaka     RK_U32              coeffF;
82*437bfbebSnyanmisaka 
83*437bfbebSnyanmisaka     /* For slice encoding mode */
84*437bfbebSnyanmisaka     RK_U32              slice_enable;
85*437bfbebSnyanmisaka     RK_U32              slice_size_mb_rows;
86*437bfbebSnyanmisaka 
87*437bfbebSnyanmisaka     /*
88*437bfbebSnyanmisaka      * For unit type and density
89*437bfbebSnyanmisaka      *
90*437bfbebSnyanmisaka      * units_type   0 - no unit
91*437bfbebSnyanmisaka      *              1 - dots per inch
92*437bfbebSnyanmisaka      *              2 - dots per cm
93*437bfbebSnyanmisaka      *
94*437bfbebSnyanmisaka      * X/Y density  specify the pixel aspect ratio
95*437bfbebSnyanmisaka      */
96*437bfbebSnyanmisaka     RK_U32              units_type;
97*437bfbebSnyanmisaka     RK_U32              density_x;
98*437bfbebSnyanmisaka     RK_U32              density_y;
99*437bfbebSnyanmisaka 
100*437bfbebSnyanmisaka     /* For comment header */
101*437bfbebSnyanmisaka     RK_U32              comment_length;
102*437bfbebSnyanmisaka     RK_U8               *comment_data;
103*437bfbebSnyanmisaka 
104*437bfbebSnyanmisaka     /* For jpeg low delay slice encoding */
105*437bfbebSnyanmisaka     RK_U32              low_delay;
106*437bfbebSnyanmisaka     RK_U32              part_rows;
107*437bfbebSnyanmisaka     RK_U32              restart_ri;
108*437bfbebSnyanmisaka 
109*437bfbebSnyanmisaka     RK_U32              nb_components;
110*437bfbebSnyanmisaka     JPEGCompInfo        comp_info[MAX_NUMBER_OF_COMPONENTS];
111*437bfbebSnyanmisaka } JpegeSyntax;
112*437bfbebSnyanmisaka 
113*437bfbebSnyanmisaka typedef struct JpegeFeedback_t {
114*437bfbebSnyanmisaka     RK_U32 hw_status;       /* zero -> correct; non-zero -> error */
115*437bfbebSnyanmisaka     RK_U32 stream_length;
116*437bfbebSnyanmisaka } JpegeFeedback;
117*437bfbebSnyanmisaka 
118*437bfbebSnyanmisaka #endif
119