4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Haejeong Kim <backto.kim@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #ifndef _MMFILE_FORMATS_H_
23 #define _MMFILE_FORMATS_H_
32 #define MMFILE_VIDEO_STREAM 0
33 #define MMFILE_AUDIO_STREAM 1
35 #define MMFILE_FORMAT_SUCCESS 1
36 #define MMFILE_FORMAT_FAIL 0
39 #define MM_FILE_SET_MEDIA_FILE_SRC(Media, Filename) do { \
40 (Media).type = MM_FILE_SRC_TYPE_FILE; \
41 (Media).file.path = ((strstr(Filename, "file://") != NULL) ? Filename+7 : Filename); \
44 #define MM_FILE_SET_MEDIA_MEM_SRC(Media, Memory, Size, Format) do { \
45 (Media).type = MM_FILE_SRC_TYPE_MEMORY; \
46 (Media).memory.ptr = (Memory); \
47 (Media).memory.size = (Size); \
48 (Media).memory.format = (Format); \
54 MM_FILE_SRC_TYPE_FILE,
55 MM_FILE_SRC_TYPE_MEMORY,
58 typedef struct _mm_file_source {
67 int format; /* _mmfileformats */
73 typedef struct _mmfilesteam {
87 typedef struct _mmfileformatframe {
88 unsigned int frameSize;
89 unsigned int frameWidth;
90 unsigned int frameHeight;
91 unsigned int configLenth;
92 unsigned char *frameData;
94 unsigned int timestamp;
95 unsigned int frameNumber;
99 typedef struct _MMFileFormatContext MMFileFormatContext;
101 struct _MMFileFormatContext {
104 int commandType; /* TAG or CONTENTS */
106 MMFileSourceType *filesrc; /*ref only*/
109 /* contents information */
110 int duration; /* milliseconds */
112 int videoTotalTrackNum;
113 int audioTotalTrackNum;
117 MMFileFormatStream *streams[MAXSTREAMS];
120 MMFileFormatFrame *thumbNail;
133 char *classification;
141 unsigned char *artwork;
155 char *stitchingSoftware;
156 char *projectionType;
165 int croppedAreaImageWidth;
166 int croppedAreaImageHeight;
169 MMFILE_AMBISONIC_TYPE ambisonicType;
170 MMFILE_AMBISONIC_FORMAT ambisonicFormat;
171 MMFILE_AMBISONIC_ORDER ambisonicOrder;
172 unsigned stereoModeV2;
173 char *metadataSourceV2;
176 unsigned posePitchV2;
178 unsigned cbmpLayoutV2;
179 unsigned cbmpPaddingV2;
180 unsigned equiBoundsTopV2;
181 unsigned equiBoundsBottomV2;
182 unsigned equiBoundsLeftV2;
183 unsigned equiBoundsRightV2;
186 void *privateFormatData;
187 void *privateCodecData;
189 /* function pointer */
190 int (*ReadStream)(MMFileFormatContext *);
191 int (*ReadFrame)(MMFileFormatContext *, unsigned int, MMFileFormatFrame *);
192 int (*ReadTag)(MMFileFormatContext *);
193 int (*Close)(MMFileFormatContext *);
196 #ifndef __MMFILE_DYN_LOADING__
197 int mmfile_format_open(MMFileFormatContext **formatContext, MMFileSourceType *fileSrc);
198 int mmfile_format_read_stream(MMFileFormatContext *formatContext);
199 int mmfile_format_read_frame(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame);
200 int mmfile_format_read_tag(MMFileFormatContext *formatContext);
201 int mmfile_format_close(MMFileFormatContext *formatContext);
208 #endif /* _MMFILE_FORMATS_H_ */