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