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