diff options
Diffstat (limited to 'libs3cjpeg/JpegEncoder.h')
-rw-r--r-- | libs3cjpeg/JpegEncoder.h | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/libs3cjpeg/JpegEncoder.h b/libs3cjpeg/JpegEncoder.h deleted file mode 100644 index b95b1b1..0000000 --- a/libs3cjpeg/JpegEncoder.h +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright Samsung Electronics Co.,LTD. - * Copyright (C) 2010 The Android Open Source Project - * - * 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. - * - * JPEG DRIVER MODULE (JpegEncoder.h) - * Author : ge.lee -- initial version - * Date : 03 June 2010 - * Purpose : This file implements the JPEG encoder APIs as needed by Camera HAL - */ -#ifndef __JPG_API_H__ -#define __JPG_API_H__ - -#include <stdint.h> -#include <sys/ioctl.h> - -#include "Exif.h" - -namespace android { -#define MAX_JPG_WIDTH 800 -#define MAX_JPG_HEIGHT 480 -#define MAX_JPG_RESOLUTION (MAX_JPG_WIDTH * MAX_JPG_HEIGHT) - -#define MAX_JPG_THUMBNAIL_WIDTH 320 -#define MAX_JPG_THUMBNAIL_HEIGHT 240 -#define MAX_JPG_THUMBNAIL_RESOLUTION (MAX_JPG_THUMBNAIL_WIDTH * \ - MAX_JPG_THUMBNAIL_HEIGHT) - -#define MAX_RGB_WIDTH 800 -#define MAX_RGB_HEIGHT 480 -#define MAX_RGB_RESOLUTION (MAX_RGB_WIDTH * MAX_RGB_HEIGHT) - -/*******************************************************************************/ -/* define JPG & image memory */ -/* memory area is 4k(PAGE_SIZE) aligned because of VirtualCopyEx() */ -#define JPG_STREAM_BUF_SIZE \ - (MAX_JPG_RESOLUTION / PAGE_SIZE + 1) * PAGE_SIZE -#define JPG_STREAM_THUMB_BUF_SIZE \ - (MAX_JPG_THUMBNAIL_RESOLUTION / PAGE_SIZE + 1) * PAGE_SIZE -#define JPG_FRAME_BUF_SIZE \ - ((MAX_JPG_RESOLUTION * 3) / PAGE_SIZE + 1) * PAGE_SIZE -#define JPG_FRAME_THUMB_BUF_SIZE \ - ((MAX_JPG_THUMBNAIL_RESOLUTION * 3) / PAGE_SIZE + 1) * PAGE_SIZE -#define JPG_RGB_BUF_SIZE \ - ((MAX_RGB_RESOLUTION * 4) / PAGE_SIZE + 1) * PAGE_SIZE - -#define JPG_TOTAL_BUF_SIZE (JPG_STREAM_BUF_SIZE + \ - JPG_STREAM_THUMB_BUF_SIZE + \ - JPG_FRAME_BUF_SIZE + \ - JPG_FRAME_THUMB_BUF_SIZE + \ - JPG_RGB_BUF_SIZE) - -#define JPG_MAIN_START 0x00 -#define JPG_THUMB_START JPG_STREAM_BUF_SIZE -#define IMG_MAIN_START (JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE) -#define IMG_THUMB_START (IMG_MAIN_START + JPG_FRAME_BUF_SIZE) -/*******************************************************************************/ - -#define JPG_DRIVER_NAME "/dev/s3c-jpg" - -#define JPEG_IOCTL_MAGIC 'J' -#define IOCTL_JPG_DECODE _IO(JPEG_IOCTL_MAGIC, 1) -#define IOCTL_JPG_ENCODE _IO(JPEG_IOCTL_MAGIC, 2) -#define IOCTL_JPG_GET_STRBUF _IO(JPEG_IOCTL_MAGIC, 3) -#define IOCTL_JPG_GET_FRMBUF _IO(JPEG_IOCTL_MAGIC, 4) -#define IOCTL_JPG_GET_THUMB_STRBUF _IO(JPEG_IOCTL_MAGIC, 5) -#define IOCTL_JPG_GET_THUMB_FRMBUF _IO(JPEG_IOCTL_MAGIC, 6) -#define IOCTL_JPG_GET_PHY_FRMBUF _IO(JPEG_IOCTL_MAGIC, 7) -#define IOCTL_JPG_GET_PHY_THUMB_FRMBUF _IO(JPEG_IOCTL_MAGIC, 8) - -typedef enum { - JPEG_SET_ENCODE_WIDTH, - JPEG_SET_ENCODE_HEIGHT, - JPEG_SET_ENCODE_QUALITY, - JPEG_SET_ENCODE_IN_FORMAT, - JPEG_SET_SAMPING_MODE, - JPEG_SET_THUMBNAIL_WIDTH, - JPEG_SET_THUMBNAIL_HEIGHT -} jpeg_conf; - -typedef enum { - JPG_FAIL, - JPG_SUCCESS, - OK_HD_PARSING, - ERR_HD_PARSING, - OK_ENC_OR_DEC, - ERR_ENC_OR_DEC, - ERR_UNKNOWN -} jpg_return_status; - -typedef enum { - JPG_RGB16, - JPG_YCBYCR, - JPG_TYPE_UNKNOWN -} image_type_t; - -typedef enum { - JPG_444, - JPG_422, - JPG_420, - JPG_400, - RESERVED1, - RESERVED2, - JPG_411, - JPG_SAMPLE_UNKNOWN -} sample_mode_t; - -typedef enum { - YCBCR_422, - YCBCR_420, - YCBCR_SAMPLE_UNKNOWN -} out_mode_t; - -typedef enum { - JPG_MODESEL_YCBCR = 1, - JPG_MODESEL_RGB, - JPG_MODESEL_UNKNOWN -} in_mode_t; - -typedef enum { - JPG_MAIN, - JPG_THUMBNAIL -} encode_type_t; - -typedef enum { - JPG_QUALITY_LEVEL_1, /* high */ - JPG_QUALITY_LEVEL_2, - JPG_QUALITY_LEVEL_3, - JPG_QUALITY_LEVEL_4 /* low */ -} image_quality_type_t; - -typedef struct { - sample_mode_t sample_mode; - encode_type_t dec_type; - out_mode_t out_format; - uint32_t width; - uint32_t height; - uint32_t data_size; - uint32_t file_size; -} jpg_dec_proc_param; - -typedef struct { - sample_mode_t sample_mode; - encode_type_t enc_type; - in_mode_t in_format; - image_quality_type_t quality; - uint32_t width; - uint32_t height; - uint32_t data_size; - uint32_t file_size; - uint32_t set_framebuf; -} jpg_enc_proc_param; - -typedef struct { - char *in_buf; - char *phy_in_buf; - int in_buf_size; - char *out_buf; - char *phy_out_buf; - int out_buf_size; - char *in_thumb_buf; - char *phy_in_thumb_buf; - int in_thumb_buf_size; - char *out_thumb_buf; - char *phy_out_thumb_buf; - int out_thumb_buf_size; - char *mmapped_addr; - jpg_dec_proc_param *dec_param; - jpg_enc_proc_param *enc_param; - jpg_enc_proc_param *thumb_enc_param; -} jpg_args; - -class JpegEncoder { -public: - JpegEncoder(); - virtual ~JpegEncoder(); - - int openHardware(); - jpg_return_status setConfig(jpeg_conf type, int32_t value); - void *getInBuf(uint64_t size); - void *getOutBuf(uint64_t *size); - void *getThumbInBuf(uint64_t size); - void *getThumbOutBuf(uint64_t *size); - jpg_return_status encode(unsigned int *size, exif_attribute_t *exifInfo); - jpg_return_status encodeThumbImg(unsigned int *size, bool useMain = true); - jpg_return_status makeExif(unsigned char *exifOut, - exif_attribute_t *exifIn, - unsigned int *size, - bool useMainbufForThumb = false); - -private: - jpg_return_status checkMcu(sample_mode_t sampleMode, uint32_t width, uint32_t height, bool isThumb); - bool pad(char *srcBuf, uint32_t srcWidth, uint32_t srcHight, - char *dstBuf, uint32_t dstWidth, uint32_t dstHight); - bool scaleDownYuv422(char *srcBuf, uint32_t srcWidth, uint32_t srcHight, - char *dstBuf, uint32_t dstWidth, uint32_t dstHight); - - inline void writeExifIfd(unsigned char **pCur, - unsigned short tag, - unsigned short type, - unsigned int count, - uint32_t value); - inline void writeExifIfd(unsigned char **pCur, - unsigned short tag, - unsigned short type, - unsigned int count, - unsigned char *pValue); - inline void writeExifIfd(unsigned char **pCur, - unsigned short tag, - unsigned short type, - unsigned int count, - rational_t *pValue, - unsigned int *offset, - unsigned char *start); - inline void writeExifIfd(unsigned char **pCur, - unsigned short tag, - unsigned short type, - unsigned int count, - unsigned char *pValue, - unsigned int *offset, - unsigned char *start); - int mDevFd; - jpg_args mArgs; - - bool available; - -}; -}; -#endif /* __JPG_API_H__ */ |