📄 jpeg.h
字号:
kal_uint8 component_id2;
kal_uint8 component_id3;
kal_uint8 q_table_id1; /* Q table ID of component 1*/
kal_uint8 q_table_id2; /* Q table ID of component 2*/
kal_uint8 q_table_id3; /* Q table ID of component 3*/
kal_uint8 progressive_decode_times;
kal_uint16 interleave_mcu_increament_index;
kal_uint16 non_interleav_mcu_increament_index_y;
kal_uint16 non_interleav_mcu_increament_index_u;
kal_uint16 non_interleav_mcu_increament_index_v;
kal_uint32 thumbnail_offset;
kal_uint32 jpeg_decoder_ctrl_reg;
kal_uint32 reset_jpeg_file_size;
kal_uint8 jfif_mode;
kal_uint32 thumbnail_size;
} jpeg_parameter_struct;
typedef struct
{
kal_bool jpeg_thumbnail_mode; /* decode thumbnail or not */
kal_uint8 jpeg_decode_retry_flag;
kal_uint32 jpeg_file_handle; /* JPEG file handler */
kal_uint32 jpeg_file_buffer_address; /* the start address of JPEG file located */
kal_uint32 jpeg_file_size; /* the size of JPEG file to be decoded */
kal_uint32 jpeg_file_buffer_size; /* the buffer size for JPEG file to be decoded */
kal_uint32 rest_jpeg_file_size; /* the rest JPEG file size that waiting for decode */
kal_uint32 intmem_start_address; /* internal memory start address for hardware engine buffer */
kal_uint32 intmem_size; /* internal memory size for hardware engine buffer */
kal_uint32 extmem_start_address; /* external memroy start address for hardware engine buffer */
kal_uint32 extmem_size; /* external memory size for hardware engine buffer */
kal_uint32 image_buffer_address; /* image buffer address for jpeg decode result */
kal_uint32 image_buffer_size; /* image buffer size for jpeg decode result */
kal_uint16 image_width; /* the image width after decoder and resizer */
/* for MT6228 and MT6229, the image width is for LCD display */
kal_uint16 image_height; /* the image height after decoder and resizer */
/* for MT6228 and MT6229 the image height is for LCD display */
kal_uint16 image_clip_x1; /* clip window start x for clipping decoded image */
kal_uint16 image_clip_x2; /* clip window end x for clipping decoded image */
kal_uint16 image_clip_y1; /* clip window start y for clipping decoded image */
kal_uint16 image_clip_y2; /* clip window end y for clipping decoded image */
#if (!defined(__MTK_TARGET__) || defined(__SW_JPEG_CODEC_SUPPORT__) || defined(JPEG_DRV_V3))
kal_bool image_pitch_mode; /* KAL_TRUE or KAL_FALSE for block mode of decoded image */
kal_uint8 image_data_format; /* IMGDMA_IBW_OUTPUT_RGB565 or IMGDMA_IBW_OUTPUT_RGB888 */
kal_uint16 image_pitch_bytes; /* pitch width */
kal_bool memory_output; /* output another image for TV output */
kal_uint16 memory_output_width; /* image width for TV output */
kal_uint16 memory_output_height; /* image height for TV output */
kal_uint32 memory_output_buffer_address;
kal_uint32 memory_output_buffer_size;
#endif
void (*jpeg_decode_cb) (kal_uint8 return_code); /* call back function for jpeg decoder */
} jpeg_decode_process_struct;
#if (defined(JPEG_DRV_V2)||defined(JPEG_DRV_V3))
typedef struct
{
IMGDMA_DATA_TYPE_ENUM type; /* RGB565 or RGB888 */
IMGDMA_DATA_ORDER_ENUM data_order; /* BGR888 or RGB888 */
kal_uint32 image_buffer_address; /* the RGB565 image buffer start address */
kal_uint32 intmem_start_address; /* internal memory start address for hardware engine buffer */
kal_uint32 intmem_size; /* internal memory size for hardware engine buffer */
kal_uint32 extmem_start_address; /* external memroy start address for hardware engine buffer */
kal_uint32 extmem_size; /* external memory size for hardware engine buffer */
kal_uint16 image_width; /* the width of image source */
kal_uint16 image_height; /* the height of image source */
kal_uint16 target_width; /* the width of target image */
kal_uint16 target_height; /* the height of target image */
kal_uint8 image_quality; /* the image quality after encoded */
kal_uint8 jpeg_gray_mode; /* encode a file as gray mode or not */
kal_uint32 jpeg_file_start_address; /* the start address for encoded JPEG file */
kal_uint32 jpeg_file_buffer_size; /* the maximum size of jpeg file after encode */
#if (defined(JPEG_DRV_V3))
kal_uint8 jpeg_yuv_mode; /* YUV420, YUV422 or Gray mode*/
kal_bool thumbnail_mode; /* add thumbnail in JPEG file or not */
kal_uint16 thumbnail_width;
kal_uint16 thumbnail_height;
kal_bool overlay_frame_mode; /* KAL_TRUE or KAL_FALSE */
kal_uint8 overlay_color_depth; /* 1/2/4/8 bpp */
kal_uint8 overlay_frame_source_key; /* source key of the overlay frame buffer */
kal_uint16 overlay_frame_width; /* overlay frame width */
kal_uint16 overlay_frame_height; /* overlay frame height */
kal_uint32 overlay_frame_buffer_address; /* bsae address of the overlay frame buffer */
#endif
void (*jpeg_encode_cb) (kal_uint8 return_code); /* call back function for jpeg encoder */
} jpeg_encode_process_struct;
typedef struct
{
kal_uint32 intmem_start_address; /* internal memory start address for hardware engine buffer */
kal_uint32 intmem_size; /* internal memory size for hardware engine buffer */
kal_uint32 extmem_start_address; /* external memroy start address for hardware engine buffer */
kal_uint32 extmem_size; /* external memory size for hardware engine buffer */
IMGDMA_DATA_TYPE_ENUM type; /* RGB565 or RGB888 */
IMGDMA_DATA_ORDER_ENUM data_order; /* BGR888 or RGB888 */
kal_uint32 src_image_address; /* the source image buffer start address */
kal_uint32 dest_image_address; /* the destination image buffer start address */
kal_uint32 dest_buffer_size; /* the buffer size of destination image buffer size */
kal_uint16 src_width; /* the width of image source */
kal_uint16 src_height; /* the height of image source */
kal_uint16 src_pitch; /* the pitch width of image source */
kal_uint16 target_width; /* the width of target image */
kal_uint16 target_height; /* the height of target image */
kal_uint16 target_pitch; /* the pitch width of target image */
kal_uint16 image_clip_x1; /* image clip window start x */
kal_uint16 image_clip_x2; /* image clip window end x */
kal_uint16 image_clip_y1; /* image clip window start y */
kal_uint16 image_clip_y2; /* image clip window end x */
#if (defined(JPEG_DRV_V3))
kal_bool image_pitch_mode; /* KAL_TRUE or KAL_FALSE for block mode of decoded image */
kal_uint8 image_data_format; /* IMGDMA_IBW_OUTPUT_RGB565 or IMGDMA_IBW_OUTPUT_RGB888 */
kal_uint16 image_pitch_bytes; /* pitch width */
#endif
} resize_struct;
#if (defined(JPEG_DRV_V3))
typedef struct
{
kal_uint32 jpeg_file_handle; /* JPEG file handler */
kal_uint32 jpeg_file_buffer_address; /* the start address of JPEG file located */
kal_uint32 jpeg_file_size; /* the size of JPEG file to be decoded */
kal_uint32 jpeg_file_buffer_size; /* the buffer size for JPEG file to be decoded */
kal_uint32 rest_jpeg_file_size; /* the rest JPEG file size that waiting for decode */
kal_uint32 intmem_start_address; /* internal memory start address for hardware engine buffer */
kal_uint32 intmem_size; /* internal memory size for hardware engine buffer */
kal_uint32 extmem_start_address; /* external memroy start address for hardware engine buffer */
kal_uint32 extmem_size; /* external memory size for hardware engine buffer */
kal_uint16 target_width; /* the width of target image */
kal_uint16 target_height; /* the height of target image */
kal_uint8 image_quality; /* the image quality after encoded */
kal_uint32 target_jpeg_file_address; /* the start address for encoded JPEG file */
kal_uint32 target_jpeg_file_buffer_size; /* the maximum size of jpeg file after encode */
kal_uint8 jpeg_yuv_mode; /* YUV420, YUV422 or Gray mode*/
kal_bool thumbnail_mode;
kal_uint16 thumbnail_width;
kal_uint16 thumbnail_height;
kal_bool overlay_frame_mode; /* KAL_TRUE or KAL_FALSE */
kal_uint8 overlay_color_depth; /* 1/2/4/8 bpp */
kal_uint8 overlay_frame_source_key;
kal_uint16 overlay_frame_width;
kal_uint16 overlay_frame_height;
kal_uint32 overlay_frame_buffer_address;
} jpeg_file_resize_struct;
#endif
#define JPEG_ENCODER_COLOR_MODE KAL_FALSE
#define JPEG_ENCODER_GRAY_MODE KAL_TRUE
#endif /* MT6219 */
/* definition of Jpeg decode process return code */
#define JPEG_DECODE_SUCCESS 0x00
#define JPEG_DECODE_DECODING 0x01
#define JPEG_DECODE_INT_BUFFER_NOT_ENOUGH 0x02
#define JPEG_DECODE_EXT_BUFFER_NOT_ENOUGH 0x03
#define JPEG_DECODE_TARGET_BUFFER_NOT_ENOUGH 0x04
#define JPEG_DECODE_NO_UV_COMPONENT 0x05 /* only for MT6218B */
#define JPEG_DECODE_DECODER_OVERFLOW_FAIL 0x06 /* JPEG decoder overflow */
#define JPEG_DECODE_DECODER_BREAK_FAIL 0x07 /* JPEG file end can't find */
#define JPEG_DECODE_DECODER_TIMEOUT_FAIL 0x08 /* JPEG decoder decode timeout fail */
#define JPEG_DECODE_RESIZER_FAIL 0x09 /* resizer resize fail */
#define JPEG_DECODE_RESIZER_TIMEOUT_FAIL 0x0A /* Resizer timeout fail */
#define JPEG_DECODE_WRONG_JPEG_FILE 0x0B
#define JPEG_DECODE_UNSUPPORT_FORMAT 0x0C
#define JPEG_DECODE_BUFFER_SIZE_FAIL 0x0D /* JPEG decoder buffer sizer fail */
#define JPEG_DECODE_TARGET_SIZE_FAIL 0x0E
#define JPEG_DECODE_NO_THUMBNAIL_FAIL 0x0F /* Retry jpeg thumbnail but no thumbnail found */
#define JPEG_DECODE_SRC_WIDHT_TOO_LARGE_FAIL 0x10
#define JPEG_DECODE_SRC_HEIGHT_TOO_LARGE_FAIL 0x11
#define JPEG_DECODE_TARGET_WIDTH_TOO_LARGE_FAIL 0x12
#define JPEG_DECODE_TARGET_HEIGHT_TOO_LARGE_FAIL 0x13
#define JPEG_DECODE_DIMENSION_FAIL 0x10
#define JPEG_DECODE_FILE_READ_ERROR 0x20
#define JPEG_DECODE_RGB_THUMBNAIL 0x80
/* definition of JPEG encode process return code */
#define JPEG_ENCODE_SUCCESS 0x80
#define JPEG_ENCODE_BUFFER_FULL 0x81
/* definition for jpeg decode result */
#define JPEG_DECODE_FILE_OVERFLOW 0x01
#define JPEG_DECODE_BREAK 0x02
#define JPEG_DECODE_COMPLETE 0x04
#define jpeg_DRM_read_file(jpeg_file_handle,jpg_file_ptr,jpeg_file_buffer_size,fs_read_size)\
if(DRM_read_file(jpeg_file_handle, jpg_file_ptr, jpeg_file_buffer_size, fs_read_size)!=FS_NO_ERROR)\
{\
jpeg_drm_read_error_count++;\
jpeg_driver_status=JPEG_DECODE_FILE_READ_ERROR;\
return JPEG_DECODE_FILE_READ_ERROR;}
#define jpeg_DRM_seek_file(jpeg_file_handle, jpeg_file_index, FS_FILE_BEGIN)\
if(DRM_seek_file(jpeg_file_handle, jpeg_file_index, FS_FILE_BEGIN)<0)\
{\
jpeg_drm_seek_error_count++;\
jpeg_driver_status=JPEG_DECODE_FILE_READ_ERROR;\
return JPEG_DECODE_FILE_READ_ERROR;}
#if (defined(JPEG_DRV_V2)||defined(JPEG_DRV_V3))
#define JPEG_DECODE_IMG_DMA_COMPLETE 0x08
#endif
/* definition of resizer result */
#define JPEG_RESIZER_RESIZING 0x00
#define JPEG_RESIZER_COMPLETE 0x01
#define JPEG_RESIZER_FAIL 0x02
extern jpeg_parameter_struct jpeg_file_para;
extern jpeg_decode_process_struct jpeg_decode_config_data;
extern volatile JPEG_DECODER_STATE_ENUM jpeg_decoder_operation_state;
#if (defined(JPEG_DRV_V2)||defined(JPEG_DRV_V3))
kal_uint8 config_jpeg_encoder(jpeg_encode_process_struct *jpeg_data);
kal_uint32 jpeg_encode_process(jpeg_encode_process_struct *jpeg_encode_para);
kal_uint8 exit_jpeg_encode_process(void);
kal_uint32 jpeg_encode_snapshot_process(jpeg_encode_process_struct *jpeg_encode_para);
kal_uint8 image_resize_process(resize_struct *resize_para);
extern jpeg_encode_process_struct jpeg_encode_config_data;
extern resize_struct image_resize_data;
extern volatile JPEG_ENCODER_STATE_ENUM jpeg_encoder_operation_state;
extern kal_uint8 jpeg_encoder_encode_result;
#endif
void jpeg_codec_power_up(void);
void jpeg_codec_power_down(void);
void jpeg_codec_init(void);
void jpeg_codec_deinit(void);
kal_uint32 jpeg_decode_time_estimate(void);
void get_jpeg_resize_size(kal_uint32 jpg_file_handle,kal_uint32 jpg_file_start_address,
kal_uint32 jpg_file_buffer_size,
kal_uint16 *display_width, kal_uint16 *display_height,
kal_uint16 *resize_width, kal_uint16 *resize_height);
void get_jpeg_file_size(kal_uint32 jpg_file_handle,kal_uint32 jpg_file_start_address,
kal_uint32 jpg_file_buffer_size,kal_uint16 *image_width,
kal_uint16 *image_height);
kal_uint8 stop_jpeg_decode_process(void);
kal_uint8 jpeg_decode_process(jpeg_decode_process_struct *jpeg_decode_para);
void jpeg_video_play_callback(kal_uint8 return_code);
void start_jpeg_video_play(lcd_frame_update_struct *lcd_para);
kal_uint8 jpeg_video_play(jpeg_decode_process_struct *jpeg_decode_para,
kal_uint16 *frame_buf_ptr, kal_uint16 frame_buf_width,kal_bool update_to_lcd);
void stop_jpeg_video_play(void);
kal_uint32 decode_jpeg_next_block(void);
void jfif_thumbnail_swap(kal_uint32 jpeg_file_addr);
#if (defined(JPEG_DRV_V3))
kal_uint32 jpeg_resize_process(jpeg_file_resize_struct *jpeg_resize_para);
#endif
//#endif /* MT6217, MT6218B, MT6219,MT6226, MT6227, MT6228, MT6229 */
#endif /* _JPEG_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -