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_
31 #define MMFILE_VIDEO_STREAM 0
32 #define MMFILE_AUDIO_STREAM 1
34 #define MMFILE_FORMAT_SUCCESS 1
35 #define MMFILE_FORMAT_FAIL 0
38 #define MM_FILE_SET_MEDIA_FILE_SRC(Media, Filename) do { \
39 (Media).type = MM_FILE_SRC_TYPE_FILE; \
40 (Media).file.path = ((strstr(Filename, "file://")!=NULL) ? Filename+7:Filename); \
43 #define MM_FILE_SET_MEDIA_MEM_SRC(Media, Memory, Size, Format) do { \
44 (Media).type = MM_FILE_SRC_TYPE_MEMORY; \
45 (Media).memory.ptr = (Memory); \
46 (Media).memory.size = (Size); \
47 (Media).memory.format = (Format); \
53 MM_FILE_SRC_TYPE_FILE,
54 MM_FILE_SRC_TYPE_MEMORY,
57 typedef struct _mm_file_source {
66 int format; /* _mmfileformats */
72 typedef struct _mmfilesteam {
86 typedef struct _mmfileformatframe {
87 unsigned char bCompressed;
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 */
105 int pre_checked; /*filefomat already detected.*/
107 MMFileSourceType *filesrc; /*ref only*/
110 /* contents information */
111 int duration; /* milliseconds */
113 int videoTotalTrackNum;
114 int audioTotalTrackNum;
118 MMFileFormatStream *streams[MAXSTREAMS];
121 MMFileFormatFrame *thumbNail;
134 char *classification;
141 unsigned char *artwork;
155 void *privateFormatData;
156 void *privateCodecData;
158 /* function pointer */
159 int (*ReadStream)(MMFileFormatContext *);
160 int (*ReadFrame)(MMFileFormatContext *, unsigned int, MMFileFormatFrame *);
161 int (*ReadTag)(MMFileFormatContext *);
162 int (*Close)(MMFileFormatContext *);
165 #ifndef __MMFILE_DYN_LOADING__
166 int mmfile_format_open(MMFileFormatContext **formatContext, MMFileSourceType *fileSrc);
167 int mmfile_format_read_stream(MMFileFormatContext *formatContext);
168 int mmfile_format_read_frame(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame);
169 int mmfile_format_read_tag(MMFileFormatContext *formatContext);
170 int mmfile_format_close(MMFileFormatContext *formatContext);
177 #endif /* _MMFILE_FORMATS_H_ */