⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpeg.h

📁 最新MTK手机软件源码
💻 H
📖 第 1 页 / 共 5 页
字号:
	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 + -