SAMV71 Xplained Ultra Software Package 1.4

libjpeg.h

00001 /* ----------------------------------------------------------------------------
00002  *         ATMEL Microcontroller Software Support
00003  * ----------------------------------------------------------------------------
00004  * Copyright (c) 2009, Atmel Corporation
00005  *
00006  * All rights reserved.
00007  *
00008  * Redistribution and use in source and binary forms, with or without
00009  * modification, are permitted provided that the following conditions are met:
00010  *
00011  * - Redistributions of source code must retain the above copyright notice,
00012  * this list of conditions and the disclaimer below.
00013  *
00014  * Atmel's name may not be used to endorse or promote products derived from
00015  * this software without specific prior written permission.
00016  *
00017  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
00018  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00019  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
00020  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
00021  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00022  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
00023  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00024  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00025  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
00026  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027  * ----------------------------------------------------------------------------
00028  */
00029 
00030 #ifndef _LIB_JPEG_
00031 #define _LIB_JPEG_
00032 
00033 
00034 /*----------------------------------------------------------------------------
00035  *        Headers
00036  *----------------------------------------------------------------------------*/
00037 #include <stdint.h>
00038 #include <string.h>
00039 #include "include/jpeglib.h"
00040 
00041 /*----------------------------------------------------------------------------
00042  *        Local definitions
00043  *----------------------------------------------------------------------------*/
00044 typedef enum _EJpegInput
00045 {
00046     JPG_DATA_UNKNOWN,        /* error/unspecified */
00047     JPG_DATA_GRAYSCALE,      /* monochrome */
00048     JPG_DATA_RGB,            /* red/green/blue */
00049     JPG_DATA_YCbCr,          /* Y/Cb/Cr (also known as YUV) */
00050     JPG_DATA_CMYK,           /* C/M/Y/K */
00051     JPG_DATA_YCCK            /* Y/Cb/Cr/K */
00052 } EJpegInput ;
00053 
00054 typedef enum _EJpegMethod
00055 {
00056     JPG_METHOD_ISLOW,        /* slow but accurate integer algorithm */
00057     JPG_METHOD_IFAST,        /* faster, less accurate integer method */
00058     JPG_METHOD_FLOAT         /* floating-point: accurate, fast on fast HW */
00059 } EJpegMethod ;
00060 
00061 typedef struct _SJPEGData
00062 {
00063     // Source
00064     uint8_t* pucSrc;
00065         
00066     uint32_t dwSrcLength ;
00067 
00068     // Destination
00069     uint8_t* pucDst ;
00070     uint32_t dwDstLength ;
00071 
00072     // Dimensions
00073     uint32_t dwHeight ;
00074     uint32_t dwWidth ;
00075     uint32_t dwBPP ;
00076 
00077     // JPEG algo parameters
00078     uint32_t dwQuality ;
00079     EJpegInput eInput ;
00080     EJpegMethod eMethod ;
00081 
00082     uint32_t (*cbk)( uint8_t*, uint32_t ) ;
00083 } SJpegData ;
00084 
00085 /*------------------------------------------------------------------------------
00086  *         Exported functions
00087  *------------------------------------------------------------------------------*/
00088 
00089 extern uint32_t JpegData_Init( SJpegData* pData ) ;
00090 extern uint32_t JpegData_SetSource( SJpegData* pData, uint8_t* pucSrc, uint32_t dwSrcLength ) ;
00091 
00092 
00093 extern uint32_t JpegData_SetDestination( SJpegData* pData, uint8_t* pucDst, uint32_t dwDstLength ) ;
00094 extern uint32_t JpegData_SetDimensions( SJpegData* pData, uint32_t dwWidth, uint32_t dwHeight, uint32_t dwBPP ) ;
00095 extern uint32_t JpegData_SetParameters( SJpegData* pData, uint32_t dwQuality, EJpegInput eInput, EJpegMethod eMethod ) ;
00096 extern uint32_t JpegData_SetCallback( SJpegData* pData, uint32_t (*cbk)( uint8_t*, uint32_t ) ) ;
00097 
00098 extern uint32_t ijg_compress( SJpegData* pData ) ;
00099 
00100 extern uint32_t ijg_compress_raw_no_padding( SJpegData* pData );
00101 extern uint32_t ijg_decompress( SJpegData* pData ) ;
00102 
00103 #endif // _LIB_JPEG_
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines