summaryrefslogtreecommitdiffstats
path: root/libvideoeditor/vss/common/inc/M4Common_types.h
blob: 9e6a0fbefb9e20da3bb181e6f5e080edb1132a10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 ************************************************************************
 * @file   M4Common_Types.h
 * @brief  defines common structures
 * @note
 *
 ************************************************************************
*/
#ifndef M4COMMON_TYPES_H
#define M4COMMON_TYPES_H

#include "M4OSA_Types.h"
#include "M4OSA_Memory.h"

/**
 ************************************************************************
 * structure M4COMMON_MetadataType
 ************************************************************************
*/
typedef enum
{
    M4COMMON_kUnknownMetaDataType,
    /* Local files */
    M4COMMON_kTagID3v1,                /**<  Metadata from TAG ID3 V1 */
    M4COMMON_kTagID3v2,                /**<  Metadata from TAG ID3 V2 */
    M4COMMON_kASFContentDesc,        /**<  Metadata from ASF content description  */

    M4COMMON_k3GppAssetMovieBox,    /**<  Metadata from a 3gpp file (movie box) */
    M4COMMON_k3GppAssetTrackBox,    /**<  Metadata from a 3gpp file (track box) */

    /* Streaming */
    M4COMMON_kMetaDataSdpSession,    /**<  Metadata from an SDP file (Session level) */
    M4COMMON_kMetaDataSdpAudio,        /**<  Metadata from an SDP file (media audio level) */
    M4COMMON_kMetaDataSdpVideo,        /**<  Metadata from an SDP file (media video level) */

    M4COMMON_kJpegExif                /**< EXIF in JPEG */
} M4COMMON_MetadataType;

/**
 ************************************************************************
 * enumeration    M4VPS_EncodingFormat
 * @brief        Text encoding format
 ************************************************************************
*/
typedef enum
{
    M4COMMON_kEncFormatUnknown    = 0,      /**< Unknown format                                 */
    M4COMMON_kEncFormatASCII    = 1,        /**< ISO-8859-1. Terminated with $00                */
    M4COMMON_kEncFormatUTF8        = 2,     /**< UTF-8 encoded Unicode . Terminated with $00    */
    M4COMMON_kEncFormatUTF16    = 3         /**< UTF-16 encoded Unicode. Terminated with $00 00 */
}  M4COMMON_EncodingFormat;

/**
 ************************************************************************
 * structure    M4VPS_String
 * @brief        This structure defines string attribute
 ************************************************************************
*/
typedef struct
{
    M4OSA_Void*            m_pString;                /**< Pointer to text        */
    M4OSA_UInt32        m_uiSize;                /**< Text size in bytes        */
    M4COMMON_EncodingFormat    m_EncodingFormat;    /**< Text encoding format    */

} M4COMMON_String;

/**
 ************************************************************************
 * structure    M4COMMON_Buffer
 * @brief        This structure defines generic buffer attribute
 ************************************************************************
*/
typedef struct
{
    M4OSA_MemAddr8         m_pBuffer;        /**< Pointer to buffer        */
    M4OSA_UInt32        m_size;            /**< size of buffer in bytes    */
} M4COMMON_Buffer;

typedef enum
{
    M4COMMON_kMimeType_NONE,
    M4COMMON_kMimeType_JPG,
    M4COMMON_kMimeType_PNG,
    M4COMMON_kMimeType_BMP,   /* bitmap, with header */
    M4COMMON_kMimeType_RGB24, /* raw RGB 24 bits */
    M4COMMON_kMimeType_RGB565, /* raw, RGB 16 bits */
    M4COMMON_kMimeType_YUV420,
    M4COMMON_kMimeType_MPEG4_IFrame /* RC: to support PV art */

} M4COMMON_MimeType;

/* picture type definition from id3v2 tag*/
typedef enum
{
    M4COMMON_kPicType_Other                = 0x00,
    M4COMMON_kPicType_32_32_Icon            = 0x01,
    M4COMMON_kPicType_Other_Icon            = 0x02,
    M4COMMON_kPicType_FrontCover            = 0x03,
    M4COMMON_kPicType_BackCover            = 0x04,
    M4COMMON_kPicType_LeafletPage            = 0x05,
    M4COMMON_kPicType_Media                = 0x06,
    M4COMMON_kPicType_LeadArtist            = 0x07,
    M4COMMON_kPicType_Artist                = 0x08,
    M4COMMON_kPicType_Conductor            = 0x09,
    M4COMMON_kPicType_Orchestra            = 0x0A,
    M4COMMON_kPicType_Composer            = 0x0B,
    M4COMMON_kPicType_Lyricist            = 0x0C,
    M4COMMON_kPicType_RecordingLocation    = 0x0D,
    M4COMMON_kPicType_DuringRecording        = 0x0E,
    M4COMMON_kPicType_DuringPerformance    = 0x0F,
    M4COMMON_kPicType_MovieScreenCapture    = 0x10,
    M4COMMON_kPicType_BrightColouredFish    = 0x11,
    M4COMMON_kPicType_Illustration        = 0x12,
    M4COMMON_kPicType_ArtistLogo            = 0x13,
    M4COMMON_kPicType_StudioLogo            = 0x14
} M4COMMON_PictureType;

/**
 ******************************************************************************
 * enum        M4COMMON_Orientation
 * @brief        This enum defines the possible orientation of a frame as described
 *            in the EXIF standard.
 ******************************************************************************
*/
typedef enum
{
    M4COMMON_kOrientationUnknown = 0,
    M4COMMON_kOrientationTopLeft,
    M4COMMON_kOrientationTopRight,
    M4COMMON_kOrientationBottomRight,
    M4COMMON_kOrientationBottomLeft,
    M4COMMON_kOrientationLeftTop,
    M4COMMON_kOrientationRightTop,
    M4COMMON_kOrientationRightBottom,
    M4COMMON_kOrientationLeftBottom
}M4COMMON_Orientation ;

/**
 ******************************************************************************
 * structure    M4EXIFC_Location
 * @brief        The Image GPS location (example : 48°52.21' )
 ******************************************************************************
*/
typedef struct
{
    M4OSA_Float    degrees;
    M4OSA_Float    minsec;
} M4COMMON_Location;

/**
 ************************************************************************
 * structure    M4COMMON_MetaDataAlbumArt
 * @brief        This structure defines fields of a album art
 ************************************************************************
*/
typedef struct
{
    M4COMMON_MimeType    m_mimeType;
    M4OSA_UInt32        m_uiSize;
    M4OSA_Void*            m_pData;

    M4COMMON_String        m_pDescription;

} M4COMMON_MetaDataAlbumArt;

/**
 ************************************************************************
 * structure    M4COMMON_MetaDataFields
 * @brief        This structure defines fields of metadata information
 ************************************************************************
*/
typedef struct
{
    M4COMMON_MetadataType    m_MetadataType;

    /* Meta data fields */
    M4COMMON_String    m_pTitle;            /**< Title for the media  */
    M4COMMON_String    m_pArtist;            /**< Performer or artist */
    M4COMMON_String    m_pAlbum;            /**< Album title for the media */
    M4COMMON_String    m_pAuthor;            /**< Author of the media */
    M4COMMON_String    m_pGenre;            /**< Genre (category and style) of the media */
    M4COMMON_String    m_pDescription;        /**< Caption or description for the media */
    M4COMMON_String    m_pCopyRights;        /**< Notice about organization holding copyright
                                                     for the media file */
    M4COMMON_String    m_pRecordingYear;    /**< Recording year for the media */
    M4COMMON_String    m_pRating;            /**< Media rating */

    M4COMMON_String    m_pClassification;    /**< Classification of the media */
    M4COMMON_String    m_pKeyWords;        /**< Media keywords */
    M4COMMON_String    m_pLocation;        /**< Location information */
    M4COMMON_String    m_pUrl;                /**< Reference of the resource */

    M4OSA_UInt8        m_uiTrackNumber;    /**< Track number for the media*/
    M4OSA_UInt32    m_uiDuration;        /**< The track duration in milliseconds */

    M4COMMON_MetaDataAlbumArt    m_albumArt;    /**< AlbumArt description */
    M4COMMON_String                m_pMood;    /**< Mood of the media */

    /**< Modifs ACO 4/12/07 : add Exif specific infos */
    M4COMMON_String    m_pCreationDateTime;    /**< date and time original image was generated */
    M4COMMON_String    m_pLastChangeDateTime;    /**< file change date and time */
    M4COMMON_String    m_pManufacturer;        /**< manufacturer of image input equipment */
    M4COMMON_String    m_pModel;                /**< model of image input equipment */
    M4COMMON_String    m_pSoftware;            /**< software used */
    M4COMMON_Orientation m_Orientation;        /**< Orientation of the picture */

    /**< Modifs FS 29/08/08 : additionnal Exif infos */
    M4OSA_UInt32    m_width;            /**< image width in pixels */
    M4OSA_UInt32    m_height;            /**< image height in pixels */
    M4OSA_UInt32    m_thumbnailSize;    /**< size of the thumbnail */
    M4COMMON_String    m_pLatitudeRef;        /**< Latitude reference */
    M4COMMON_Location m_latitude;        /**< Latitude */
    M4COMMON_String    m_pLongitudeRef;    /**< Longitude reference */
    M4COMMON_Location m_longitude;        /**< Longitude  */

} M4COMMON_MetaDataFields;


#endif /*M4COMMON_TYPES_H*/