• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 : 48�52.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