Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 /**
     17  ************************************************************************
     18  * @file   M4Common_Types.h
     19  * @brief  defines common structures
     20  * @note
     21  *
     22  ************************************************************************
     23 */
     24 #ifndef M4COMMON_TYPES_H
     25 #define M4COMMON_TYPES_H
     26 
     27 #include "M4OSA_Types.h"
     28 #include "M4OSA_Memory.h"
     29 
     30 /**
     31  ************************************************************************
     32  * structure M4COMMON_MetadataType
     33  ************************************************************************
     34 */
     35 typedef enum
     36 {
     37     M4COMMON_kUnknownMetaDataType,
     38     /* Local files */
     39     M4COMMON_kTagID3v1,                /**<  Metadata from TAG ID3 V1 */
     40     M4COMMON_kTagID3v2,                /**<  Metadata from TAG ID3 V2 */
     41     M4COMMON_kASFContentDesc,        /**<  Metadata from ASF content description  */
     42 
     43     M4COMMON_k3GppAssetMovieBox,    /**<  Metadata from a 3gpp file (movie box) */
     44     M4COMMON_k3GppAssetTrackBox,    /**<  Metadata from a 3gpp file (track box) */
     45 
     46     /* Streaming */
     47     M4COMMON_kMetaDataSdpSession,    /**<  Metadata from an SDP file (Session level) */
     48     M4COMMON_kMetaDataSdpAudio,        /**<  Metadata from an SDP file (media audio level) */
     49     M4COMMON_kMetaDataSdpVideo,        /**<  Metadata from an SDP file (media video level) */
     50 
     51     M4COMMON_kJpegExif                /**< EXIF in JPEG */
     52 } M4COMMON_MetadataType;
     53 
     54 /**
     55  ************************************************************************
     56  * enumeration    M4VPS_EncodingFormat
     57  * @brief        Text encoding format
     58  ************************************************************************
     59 */
     60 typedef enum
     61 {
     62     M4COMMON_kEncFormatUnknown    = 0,      /**< Unknown format                                 */
     63     M4COMMON_kEncFormatASCII    = 1,        /**< ISO-8859-1. Terminated with $00                */
     64     M4COMMON_kEncFormatUTF8        = 2,     /**< UTF-8 encoded Unicode . Terminated with $00    */
     65     M4COMMON_kEncFormatUTF16    = 3         /**< UTF-16 encoded Unicode. Terminated with $00 00 */
     66 }  M4COMMON_EncodingFormat;
     67 
     68 /**
     69  ************************************************************************
     70  * structure    M4VPS_String
     71  * @brief        This structure defines string attribute
     72  ************************************************************************
     73 */
     74 typedef struct
     75 {
     76     M4OSA_Void*            m_pString;                /**< Pointer to text        */
     77     M4OSA_UInt32        m_uiSize;                /**< Text size in bytes        */
     78     M4COMMON_EncodingFormat    m_EncodingFormat;    /**< Text encoding format    */
     79 
     80 } M4COMMON_String;
     81 
     82 /**
     83  ************************************************************************
     84  * structure    M4COMMON_Buffer
     85  * @brief        This structure defines generic buffer attribute
     86  ************************************************************************
     87 */
     88 typedef struct
     89 {
     90     M4OSA_MemAddr8         m_pBuffer;        /**< Pointer to buffer        */
     91     M4OSA_UInt32        m_size;            /**< size of buffer in bytes    */
     92 } M4COMMON_Buffer;
     93 
     94 typedef enum
     95 {
     96     M4COMMON_kMimeType_NONE,
     97     M4COMMON_kMimeType_JPG,
     98     M4COMMON_kMimeType_PNG,
     99     M4COMMON_kMimeType_BMP,   /* bitmap, with header */
    100     M4COMMON_kMimeType_RGB24, /* raw RGB 24 bits */
    101     M4COMMON_kMimeType_RGB565, /* raw, RGB 16 bits */
    102     M4COMMON_kMimeType_YUV420,
    103     M4COMMON_kMimeType_MPEG4_IFrame /* RC: to support PV art */
    104 
    105 } M4COMMON_MimeType;
    106 
    107 /* picture type definition from id3v2 tag*/
    108 typedef enum
    109 {
    110     M4COMMON_kPicType_Other                = 0x00,
    111     M4COMMON_kPicType_32_32_Icon            = 0x01,
    112     M4COMMON_kPicType_Other_Icon            = 0x02,
    113     M4COMMON_kPicType_FrontCover            = 0x03,
    114     M4COMMON_kPicType_BackCover            = 0x04,
    115     M4COMMON_kPicType_LeafletPage            = 0x05,
    116     M4COMMON_kPicType_Media                = 0x06,
    117     M4COMMON_kPicType_LeadArtist            = 0x07,
    118     M4COMMON_kPicType_Artist                = 0x08,
    119     M4COMMON_kPicType_Conductor            = 0x09,
    120     M4COMMON_kPicType_Orchestra            = 0x0A,
    121     M4COMMON_kPicType_Composer            = 0x0B,
    122     M4COMMON_kPicType_Lyricist            = 0x0C,
    123     M4COMMON_kPicType_RecordingLocation    = 0x0D,
    124     M4COMMON_kPicType_DuringRecording        = 0x0E,
    125     M4COMMON_kPicType_DuringPerformance    = 0x0F,
    126     M4COMMON_kPicType_MovieScreenCapture    = 0x10,
    127     M4COMMON_kPicType_BrightColouredFish    = 0x11,
    128     M4COMMON_kPicType_Illustration        = 0x12,
    129     M4COMMON_kPicType_ArtistLogo            = 0x13,
    130     M4COMMON_kPicType_StudioLogo            = 0x14
    131 } M4COMMON_PictureType;
    132 
    133 /**
    134  ******************************************************************************
    135  * enum        M4COMMON_Orientation
    136  * @brief        This enum defines the possible orientation of a frame as described
    137  *            in the EXIF standard.
    138  ******************************************************************************
    139 */
    140 typedef enum
    141 {
    142     M4COMMON_kOrientationUnknown = 0,
    143     M4COMMON_kOrientationTopLeft,
    144     M4COMMON_kOrientationTopRight,
    145     M4COMMON_kOrientationBottomRight,
    146     M4COMMON_kOrientationBottomLeft,
    147     M4COMMON_kOrientationLeftTop,
    148     M4COMMON_kOrientationRightTop,
    149     M4COMMON_kOrientationRightBottom,
    150     M4COMMON_kOrientationLeftBottom
    151 }M4COMMON_Orientation ;
    152 
    153 /**
    154  ******************************************************************************
    155  * structure    M4EXIFC_Location
    156  * @brief        The Image GPS location (example : 4852.21' )
    157  ******************************************************************************
    158 */
    159 typedef struct
    160 {
    161     M4OSA_Float    degrees;
    162     M4OSA_Float    minsec;
    163 } M4COMMON_Location;
    164 
    165 /**
    166  ************************************************************************
    167  * structure    M4COMMON_MetaDataAlbumArt
    168  * @brief        This structure defines fields of a album art
    169  ************************************************************************
    170 */
    171 typedef struct
    172 {
    173     M4COMMON_MimeType    m_mimeType;
    174     M4OSA_UInt32        m_uiSize;
    175     M4OSA_Void*            m_pData;
    176 
    177     M4COMMON_String        m_pDescription;
    178 
    179 } M4COMMON_MetaDataAlbumArt;
    180 
    181 /**
    182  ************************************************************************
    183  * structure    M4COMMON_MetaDataFields
    184  * @brief        This structure defines fields of metadata information
    185  ************************************************************************
    186 */
    187 typedef struct
    188 {
    189     M4COMMON_MetadataType    m_MetadataType;
    190 
    191     /* Meta data fields */
    192     M4COMMON_String    m_pTitle;            /**< Title for the media  */
    193     M4COMMON_String    m_pArtist;            /**< Performer or artist */
    194     M4COMMON_String    m_pAlbum;            /**< Album title for the media */
    195     M4COMMON_String    m_pAuthor;            /**< Author of the media */
    196     M4COMMON_String    m_pGenre;            /**< Genre (category and style) of the media */
    197     M4COMMON_String    m_pDescription;        /**< Caption or description for the media */
    198     M4COMMON_String    m_pCopyRights;        /**< Notice about organization holding copyright
    199                                                      for the media file */
    200     M4COMMON_String    m_pRecordingYear;    /**< Recording year for the media */
    201     M4COMMON_String    m_pRating;            /**< Media rating */
    202 
    203     M4COMMON_String    m_pClassification;    /**< Classification of the media */
    204     M4COMMON_String    m_pKeyWords;        /**< Media keywords */
    205     M4COMMON_String    m_pLocation;        /**< Location information */
    206     M4COMMON_String    m_pUrl;                /**< Reference of the resource */
    207 
    208     M4OSA_UInt8        m_uiTrackNumber;    /**< Track number for the media*/
    209     M4OSA_UInt32    m_uiDuration;        /**< The track duration in milliseconds */
    210 
    211     M4COMMON_MetaDataAlbumArt    m_albumArt;    /**< AlbumArt description */
    212     M4COMMON_String                m_pMood;    /**< Mood of the media */
    213 
    214     /**< Modifs ACO 4/12/07 : add Exif specific infos */
    215     M4COMMON_String    m_pCreationDateTime;    /**< date and time original image was generated */
    216     M4COMMON_String    m_pLastChangeDateTime;    /**< file change date and time */
    217     M4COMMON_String    m_pManufacturer;        /**< manufacturer of image input equipment */
    218     M4COMMON_String    m_pModel;                /**< model of image input equipment */
    219     M4COMMON_String    m_pSoftware;            /**< software used */
    220     M4COMMON_Orientation m_Orientation;        /**< Orientation of the picture */
    221 
    222     /**< Modifs FS 29/08/08 : additionnal Exif infos */
    223     M4OSA_UInt32    m_width;            /**< image width in pixels */
    224     M4OSA_UInt32    m_height;            /**< image height in pixels */
    225     M4OSA_UInt32    m_thumbnailSize;    /**< size of the thumbnail */
    226     M4COMMON_String    m_pLatitudeRef;        /**< Latitude reference */
    227     M4COMMON_Location m_latitude;        /**< Latitude */
    228     M4COMMON_String    m_pLongitudeRef;    /**< Longitude reference */
    229     M4COMMON_Location m_longitude;        /**< Longitude  */
    230 
    231 } M4COMMON_MetaDataFields;
    232 
    233 
    234 #endif /*M4COMMON_TYPES_H*/
    235 
    236