118 lines
3.2 KiB
C
118 lines
3.2 KiB
C
/*
|
|
* Copyright 2015 Rockchip Electronics Co. LTD
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef JPEGE_SYNTAX_H
|
|
#define JPEGE_SYNTAX_H
|
|
|
|
#include "mpp_frame.h"
|
|
#include "rk_venc_cmd.h"
|
|
|
|
#define MAX_NUMBER_OF_COMPONENTS 3
|
|
#define DCT_SIZE 8
|
|
|
|
typedef enum EntroyTblClass_t {
|
|
TABLE_DC = 0,
|
|
TABLE_AC = 1,
|
|
} EntroyTblClass;
|
|
|
|
typedef union JPEGCompInfo_t {
|
|
struct {
|
|
RK_U32 component_id : 8;
|
|
RK_U32 h_sample_factor : 8;
|
|
RK_U32 v_sample_factor : 8;
|
|
RK_U32 tbl_selector : 8;
|
|
};
|
|
RK_U32 val;
|
|
} JPEGCompInfo;
|
|
|
|
typedef struct JpegeSyntax_t {
|
|
RK_U32 width;
|
|
RK_U32 height;
|
|
RK_U32 hor_stride;
|
|
RK_U32 ver_stride;
|
|
RK_U32 mcu_hor_cnt;
|
|
RK_U32 mcu_ver_cnt;
|
|
RK_U32 mcu_cnt;
|
|
RK_U32 mcu_width;
|
|
RK_U32 mcu_height;
|
|
MppFrameFormat format;
|
|
MppFrameChromaFormat format_out;
|
|
MppFrameColorSpace color;
|
|
MppEncRotationCfg rotation;
|
|
RK_S32 mirroring;
|
|
RK_U32 offset_x;
|
|
RK_U32 offset_y;
|
|
|
|
/* For quantization table */
|
|
RK_S32 q_mode;
|
|
RK_S32 quant;
|
|
RK_S32 q_factor;
|
|
RK_S32 qf_min;
|
|
RK_S32 qf_max;
|
|
RK_U8 *qtable_y;
|
|
RK_U8 *qtable_u;
|
|
RK_U8 *qtable_v;
|
|
|
|
/*
|
|
* For color conversion
|
|
*
|
|
* 0 = bt601
|
|
* 1 = bt709
|
|
* 2 = user defined
|
|
*/
|
|
RK_U32 color_conversion_type;
|
|
RK_U32 coeffA;
|
|
RK_U32 coeffB;
|
|
RK_U32 coeffC;
|
|
RK_U32 coeffE;
|
|
RK_U32 coeffF;
|
|
|
|
/* For slice encoding mode */
|
|
RK_U32 slice_enable;
|
|
RK_U32 slice_size_mb_rows;
|
|
|
|
/*
|
|
* For unit type and density
|
|
*
|
|
* units_type 0 - no unit
|
|
* 1 - dots per inch
|
|
* 2 - dots per cm
|
|
*
|
|
* X/Y density specify the pixel aspect ratio
|
|
*/
|
|
RK_U32 units_type;
|
|
RK_U32 density_x;
|
|
RK_U32 density_y;
|
|
|
|
/* For comment header */
|
|
RK_U32 comment_length;
|
|
RK_U8 *comment_data;
|
|
|
|
/* For jpeg low delay slice encoding */
|
|
RK_U32 low_delay;
|
|
RK_U32 part_rows;
|
|
RK_U32 restart_ri;
|
|
|
|
RK_U32 nb_components;
|
|
JPEGCompInfo comp_info[MAX_NUMBER_OF_COMPONENTS];
|
|
} JpegeSyntax;
|
|
|
|
typedef struct JpegeFeedback_t {
|
|
RK_U32 hw_status; /* zero -> correct; non-zero -> error */
|
|
RK_U32 stream_length;
|
|
} JpegeFeedback;
|
|
|
|
#endif
|