You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.4 KiB
122 lines
3.4 KiB
13 years ago
|
#ifndef __JPEG_API_H__
|
||
|
#define __JPEG_API_H__
|
||
|
|
||
|
#define JPEG_DRIVER_NAME "/dev/s5p-jpeg"
|
||
|
|
||
|
#define MAX_JPEG_WIDTH 3264
|
||
|
#define MAX_JPEG_HEIGHT 2448
|
||
|
|
||
|
#define MAX_JPEG_RES (MAX_JPEG_WIDTH * MAX_JPEG_HEIGHT)
|
||
|
|
||
|
#define JPEG_STREAM_BUF_SIZE MAX_JPEG_RES
|
||
|
#define JPEG_FRAME_BUF_SIZE (MAX_JPEG_RES * 3)
|
||
|
|
||
|
#define JPEG_TOTAL_BUF_SIZE (JPEG_STREAM_BUF_SIZE + JPEG_FRAME_BUF_SIZE)
|
||
|
|
||
|
#define JPEG_IOCTL_MAGIC 'J'
|
||
|
|
||
|
#define IOCTL_JPEG_DEC_EXE _IO(JPEG_IOCTL_MAGIC, 1)
|
||
|
#define IOCTL_JPEG_ENC_EXE _IO(JPEG_IOCTL_MAGIC, 2)
|
||
|
#define IOCTL_GET_DEC_IN_BUF _IO(JPEG_IOCTL_MAGIC, 3)
|
||
|
#define IOCTL_GET_DEC_OUT_BUF _IO(JPEG_IOCTL_MAGIC, 4)
|
||
|
#define IOCTL_GET_ENC_IN_BUF _IO(JPEG_IOCTL_MAGIC, 5)
|
||
|
#define IOCTL_GET_ENC_OUT_BUF _IO(JPEG_IOCTL_MAGIC, 6)
|
||
|
#define IOCTL_SET_DEC_PARAM _IO(JPEG_IOCTL_MAGIC, 7)
|
||
|
#define IOCTL_SET_ENC_PARAM _IO(JPEG_IOCTL_MAGIC, 8)
|
||
|
|
||
|
enum jpeg_ret_type{
|
||
|
JPEG_FAIL,
|
||
|
JPEG_OK,
|
||
|
JPEG_ENCODE_FAIL,
|
||
|
JPEG_ENCODE_OK,
|
||
|
JPEG_DECODE_FAIL,
|
||
|
JPEG_DECODE_OK,
|
||
|
JPEG_OUT_OF_MEMORY,
|
||
|
JPEG_UNKNOWN_ERROR
|
||
|
};
|
||
|
|
||
|
enum jpeg_img_quality_level {
|
||
|
QUALITY_LEVEL_1 = 0, /* high */
|
||
|
QUALITY_LEVEL_2,
|
||
|
QUALITY_LEVEL_3,
|
||
|
QUALITY_LEVEL_4, /* low */
|
||
|
};
|
||
|
|
||
|
/* raw data image format */
|
||
|
enum jpeg_frame_format {
|
||
|
YUV_422, /* decode output, encode input */
|
||
|
YUV_420, /* decode output, encode output */
|
||
|
RGB_565, /* encode input */
|
||
|
};
|
||
|
|
||
|
/* jpeg data format */
|
||
|
enum jpeg_stream_format {
|
||
|
JPEG_422, /* decode input, encode output */
|
||
|
JPEG_420, /* decode input, encode output */
|
||
|
JPEG_444, /* decode input*/
|
||
|
JPEG_GRAY, /* decode input*/
|
||
|
JPEG_RESERVED,
|
||
|
};
|
||
|
|
||
|
enum jpeg_test_mode {
|
||
|
encode_mode,
|
||
|
decode_mode,
|
||
|
};
|
||
|
|
||
|
struct jpeg_dec_param {
|
||
|
unsigned int width;
|
||
|
unsigned int height;
|
||
|
unsigned int size;
|
||
|
enum jpeg_stream_format in_fmt;
|
||
|
enum jpeg_frame_format out_fmt;
|
||
|
};
|
||
|
|
||
|
struct jpeg_enc_param {
|
||
|
unsigned int width;
|
||
|
unsigned int height;
|
||
|
unsigned int size;
|
||
|
enum jpeg_frame_format in_fmt;
|
||
|
enum jpeg_stream_format out_fmt;
|
||
|
enum jpeg_img_quality_level quality;
|
||
|
};
|
||
|
|
||
|
struct jpeg_args{
|
||
|
char *in_buf;
|
||
|
unsigned int in_cookie;
|
||
|
unsigned int in_buf_size;
|
||
|
char *out_buf;
|
||
|
unsigned int out_cookie;
|
||
|
unsigned int out_buf_size;
|
||
|
char *mmapped_addr;
|
||
|
struct jpeg_dec_param *dec_param;
|
||
|
struct jpeg_enc_param *enc_param;
|
||
|
};
|
||
|
|
||
|
struct jpeg_lib {
|
||
|
int jpeg_fd;
|
||
|
struct jpeg_args args;
|
||
|
};
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
int api_jpeg_decode_init();
|
||
|
int api_jpeg_encode_init();
|
||
|
int api_jpeg_decode_deinit(int dev_fd);
|
||
|
int api_jpeg_encode_deinit(int dev_fd);
|
||
|
void *api_jpeg_get_decode_in_buf(int dev_fd, unsigned int size);
|
||
|
void *api_jpeg_get_encode_in_buf(int dev_fd, unsigned int size);
|
||
|
void *api_jpeg_get_decode_out_buf(int dev_fd);
|
||
|
void *api_jpeg_get_encode_out_buf(int dev_fd);
|
||
|
void api_jpeg_set_decode_param(struct jpeg_dec_param *param);
|
||
|
void api_jpeg_set_encode_param(struct jpeg_enc_param *param);
|
||
|
enum jpeg_ret_type api_jpeg_decode_exe(int dev_fd,
|
||
|
struct jpeg_dec_param *dec_param);
|
||
|
enum jpeg_ret_type api_jpeg_encode_exe(int dev_fd,
|
||
|
struct jpeg_enc_param *enc_param);
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif//__JPEG_API_H__
|