singe/thirdparty/rockchip-mpp/mpp/common/jpege_syntax.h
2026-09-10 20:17:28 -05:00

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