17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*
27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License.
67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at
77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and
147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License.
157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file    M4EXIFC_CommonAPI.h
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    EXIF common data header
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    The types, structures and macros defined in this file allow reading
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            and writing EXIF JPEG images compliant spec EXIF 2.2
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __M4_EXIF_COMMON_API_H__
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __M4_EXIF_COMMON_API_H__
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4TOOL_VersionInfo.h"
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4Common_types.h"
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Debug.h"
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Error.h"
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h"
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Memory.h"
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CoreID.h"
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" {
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * type M4EXIFC_Context
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_Void*    M4EXIFC_Context;
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Errors & Warnings
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_NO_ERR              0x00000000    /**< invalid parameter */
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_ERR_PARAMETER       0x00000001    /**< invalid parameter */
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_ERR_ALLOC           0x00000002    /**< allocation error */
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_ERR_BAD_CONTEXT     0x00000003    /**< invalid context */
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_ERR_NOT_COMPLIANT   0x00000004    /**< the image in buffer is not
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                       JPEG compliant */
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_ERR_NO_APP_FOUND    0x00000005    /**< the JPEG image does not contain any APP1
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                        Exif 2.2 compliant */
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_WAR_NO_THUMBNAIL    0x00000006    /**< the Exif part does not contain any
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                        thumbnail */
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4EXIFC_ERR_APP_TRUNCATED   0x00000007    /**< The APP1 section in input buffer is
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                        not complete */
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * structure    M4EXIFC_BasicTags
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This structure stores the basic tags values.
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This Exif reader focuses on a set of "Entry Tags".
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                This structure contains the corresponding "Entry Values" of these tags.
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                M4EXIFC_Char* fields of structure are Null terminated Strings.
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Int32        width;                /**< image width in pixels */
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Int32        height;               /**< image height in pixels */
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *creationDateTime;     /**< date and time original image was generated */
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *lastChangeDateTime;   /**< file change date and time */
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *description;          /**< image title */
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *make;                 /**< manufacturer of image input equipment */
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *model;                /**< model of image input equipment */
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *software;             /**< software used */
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *artist;               /**< person who created the image */
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *copyright;            /**< copyright holder */
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4COMMON_Orientation orientation;        /**< orientation of image */
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Int32        thumbnailSize;        /**< size of the thumbnail */
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8        *thumbnailImg;        /**< pointer to the thumbnail in main image buffer*/
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *latitudeRef;          /**< latitude reference */
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4COMMON_Location latitude;              /**< latitude */
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char        *longitudeRef;         /**< longitude reference */
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4COMMON_Location longitude;             /**< longitude */
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4EXIFC_BasicTags;
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4EXIFC_getVersion    (M4_VersionInfo *pVersion)
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    get the version numbers of the exif library.
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    This function retrieves the version numbers in a structure.
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pVersion:    (OUT)        the structure containing version numbers
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:                there is no error
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4EXIFC_ERR_PARAMETER:        (Debug only) the parameter is M4EXIFC_NULL.
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4EXIFC_getVersion (M4_VersionInfo *pVersion);
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus*/
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __M4_EXIF_COMMON_API_H__ */
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
119